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"` MarketNumber string `gorm:"size:255;comment:庄口" json:"marketNumber"` //庄口编号 WorkshopId uint `json:"workshopId" 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 "silk_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 } func (slf *YieldRegisterSearch) Count() (int64, error) { var ( total int64 db = slf.build() ) if err := db.Count(&total).Error; err != nil { return total, fmt.Errorf("find count err: %v", err) } return total, nil } func (slf *YieldRegisterSearch) MaxAutoIncr() (int, error) { type Result struct { Max int } var ( result Result db = slf.build() ) err := db.Select("MAX(id) as max").Scan(&result).Error if err != nil { return result.Max, fmt.Errorf("max err: %v", err) } return result.Max, nil }