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"` //庄口编号
|
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
|
}
|