liujiandao
2024-04-12 dae660c3b5b6a9b7b32f40e88a576b81a1054561
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
package models
 
import (
    "fmt"
    "github.com/shopspring/decimal"
    "gorm.io/gorm"
    "silkserver/pkg/mysqlx"
)
 
type (
    // YieldRegister 产量登记表
    YieldRegister struct {
        gorm.Model
        Number                  string                 `json:"number" gorm:"type:varchar(255);not null;comment:编号"`
        CreateTime              string                 `json:"createTime" gorm:"type:varchar(255);comment:创建时间"`
        MarketId                uint                   `json:"marketId" gorm:"type:int(11);comment:庄口id"`
        WorkshopNumber          string                 `json:"workshopNumber" gorm:"type:varchar(255);comment:车间编码"`
        GroupNumber             int                    `json:"groupNumber" gorm:"type:int(11);comment:组别"`
        Spec                    string                 `json:"spec" gorm:"type:varchar(255);comment:规格"`
        JieZhuang               string                 `json:"jieZhuang" gorm:"type:varchar(255);comment:是否结庄"`
        Level                   string                 `json:"level" gorm:"type:varchar(255);comment:等级"`
        Record                  decimal.Decimal        `json:"record" gorm:"type:decimal(12,2);comment:生产用时"`
        Circle                  int                    `json:"circle" gorm:"type:int(11);comment:回数"`
        FallingSilkCocoonNumber decimal.Decimal        `json:"fallingSilkCocoonNumber" gorm:"type:decimal(12,2);comment:落丝茧数"`
        BucketCocoonNumber      decimal.Decimal        `json:"bucketCocoonNumber" gorm:"type:decimal(12,2);comment:每桶茧数"`
        VehicleSpeed            decimal.Decimal        `json:"vehicleSpeed" gorm:"type:decimal(12,2);comment:实时车速"`
        TimeYi                  string                 `json:"timeYi" gorm:"type:varchar(255);comment:乙班时间"`
        TimeJia                 string                 `json:"timeJia" gorm:"type:varchar(255);comment:甲班时间"`
        GroupReelingdiscount    string                 `json:"groupReelingdiscount" gorm:"type:varchar(255);comment:车组缫折"`
        FallingSilkBucketOne    decimal.Decimal        `json:"fallingSilkBucketOne" gorm:"type:decimal(12,2);comment:落丝桶数1"`
        FallingSilkBucketTwo    decimal.Decimal        `json:"fallingSilkBucketTwo" gorm:"type:decimal(12,2);comment:落丝桶数2"`
        FallingSilkBucketThree  decimal.Decimal        `json:"fallingSilkBucketThree" gorm:"type:decimal(12,2);comment:落丝桶数3"`
        SelectOne               bool                   `json:"selectOne" gorm:"type:int(1);comment:落丝桶数1选中"`
        SelectTwo               bool                   `json:"selectTwo" gorm:"type:int(1);comment:落丝桶数2选中"`
        SelectThree             bool                   `json:"selectThree" gorm:"type:int(1);comment:落丝桶数3选中"`
        TheorySilkAmount        decimal.Decimal        `json:"theorySilkAmount" gorm:"type:decimal(12,2);comment:理论丝量"`
        HourYield               decimal.Decimal        `json:"hourYield" gorm:"type:decimal(12,2);comment:台时产量"`
        OneBack                 string                 `json:"oneBack" gorm:"type:varchar(255);comment:第一回"`
        TwoBack                 string                 `json:"twoBack" gorm:"type:varchar(255);comment:第二回"`
        ThreeBack               string                 `json:"threeBack" gorm:"type:varchar(255);comment:第三回"`
        Total                   decimal.Decimal        `json:"total" gorm:"type:decimal(12,2);comment:总产量"`
        Items                   []*YieldRegisterItem   `json:"items" gorm:"foreignKey:YieldRegisterId"`
        Circles                 []*YieldRegisterCircle `json:"circles" gorm:"foreignKey:YieldRegisterId"`
 
        MarketName   string `json:"marketName" gorm:"-"`   //庄口名
        WorkshopName string `json:"workshopName" gorm:"-"` //车间名
 
    }
    YieldRegisterSearch struct {
        YieldRegister
        Orm      *gorm.DB
        PageNum  int
        PageSize int
        Preload  bool
    }
)
 
func (slf YieldRegister) TableName() string {
    return "yield_register"
}
 
func NewYieldRegisterSearch() *YieldRegisterSearch {
    return &YieldRegisterSearch{Orm: mysqlx.GetDB()}
}
 
func (slf *YieldRegisterSearch) SetOrm(tx *gorm.DB) *YieldRegisterSearch {
    slf.Orm = tx
    return slf
}
 
func (slf *YieldRegisterSearch) SetPage(page, size int) *YieldRegisterSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
 
func (slf *YieldRegisterSearch) SetPreload(preload bool) *YieldRegisterSearch {
    slf.Preload = preload
    return slf
}
 
func (slf *YieldRegisterSearch) SetNumber(number string) *YieldRegisterSearch {
    slf.Number = number
    return slf
}
 
func (slf *YieldRegisterSearch) SetCreateTime(createTime string) *YieldRegisterSearch {
    slf.CreateTime = createTime
    return slf
}
 
func (slf *YieldRegisterSearch) SetMarketId(marketId uint) *YieldRegisterSearch {
    slf.MarketId = marketId
    return slf
}
 
func (slf *YieldRegisterSearch) SetWorkshopNumber(workshopNumber string) *YieldRegisterSearch {
    slf.WorkshopNumber = workshopNumber
    return slf
}
 
func (slf *YieldRegisterSearch) SetGroupNumber(groupNumber int) *YieldRegisterSearch {
    slf.GroupNumber = groupNumber
    return slf
}
 
func (slf *YieldRegisterSearch) SetSpec(spec string) *YieldRegisterSearch {
    slf.Spec = spec
    return slf
}
 
func (slf *YieldRegisterSearch) build() *gorm.DB {
    db := slf.Orm.Table(slf.TableName())
 
    if slf.Preload {
        db = db.Model(YieldRegister{}).Preload("Items").Preload("Circles")
    }
 
    if slf.Number != "" {
        db = db.Where("number = ?", slf.Number)
    }
 
    if slf.CreateTime != "" {
        db = db.Where("create_time = ?", slf.CreateTime)
    }
 
    if slf.WorkshopNumber != "" {
        db = db.Where("workshop_number = ?", slf.WorkshopNumber)
    }
 
    if slf.MarketId > 0 {
        db = db.Where("market_id = ?", slf.MarketId)
    }
 
    if slf.GroupNumber > 0 {
        db = db.Where("group_number = ?", slf.GroupNumber)
    }
 
    if slf.Spec != "" {
        db = db.Where("spec = ?", slf.Spec)
    }
    return db
}
 
// Create 单条插入
func (slf *YieldRegisterSearch) Create(record *YieldRegister) error {
    db := slf.build()
    err := db.Create(record).Error
    if err != nil {
        return fmt.Errorf("create err: %v, record: %+v", err, record)
    }
    return nil
}
 
func (slf *YieldRegisterSearch) First() (*YieldRegister, error) {
    var (
        record = new(YieldRegister)
        db     = slf.build()
    )
 
    if err := db.First(record).Error; err != nil {
        return record, err
    }
 
    return record, nil
}
 
func (slf *YieldRegisterSearch) Find() ([]*YieldRegister, int64, error) {
    var (
        records = make([]*YieldRegister, 0)
        total   int64
        db      = slf.build()
    )
 
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find count err: %v", err)
    }
    if slf.PageNum*slf.PageSize > 0 {
        db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
    }
    if err := db.Order("updated_at desc").Find(&records).Error; err != nil {
        return records, total, fmt.Errorf("find records err: %v", err)
    }
 
    return records, total, nil
}
 
func (slf *YieldRegisterSearch) FindNotTotal() ([]*YieldRegister, error) {
    var (
        records = make([]*YieldRegister, 0)
        db      = slf.build()
    )
 
    if err := db.Find(&records).Error; err != nil {
        return records, fmt.Errorf("find records err: %v", err)
    }
 
    return records, nil
}
 
func (slf *YieldRegisterSearch) Save(record *YieldRegister) error {
    var db = slf.build()
 
    if err := db.Omit("CreatedAt").Save(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
 
    return nil
}
 
func (slf *YieldRegisterSearch) Delete() error {
    var db = slf.build()
 
    if err := db.Unscoped().Delete(&YieldRegister{}).Error; err != nil {
        return err
    }
 
    return nil
}