package models import ( "fmt" "gorm.io/gorm" "silkserver/constvar" "silkserver/pkg/mysqlx" ) // WorkshopManage 车间管理 type ( WorkshopManage struct { gorm.Model WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:车间编号"` WorkshopName string `json:"workshopName" gorm:"type:varchar(255);comment:车间名称"` Type constvar.WorkshopType `json:"type" gorm:"size:1;comment:类型(1车间、2分组)"` // 类型(1车间、2分组) ParentID string `json:"parentID" gorm:"size:11;comment:车间编号"` GroupNumber int `json:"groupNumber" gorm:"type:int(11);comment:组别"` StartCarNumber int `json:"startCarNumber" gorm:"type:int(11);comment:开始车号"` StartCarHalf constvar.CarFlag `json:"startCarHalf" gorm:"type:int(1);comment:开始半车标识(1左半车、2右半车)"` EndCarNumber int `json:"endCarNumber" gorm:"type:int(11);comment:结束车号"` EndCarHalf constvar.CarFlag `json:"endCarHalf" gorm:"type:int(1);comment:结束半车标识(1左半车、2右半车)"` CarFlag int `json:"carFlag" gorm:"type:int(1);comment:半车标志(0全车、1半车)"` Notes string `json:"notes" gorm:"type:varchar(255);comment:备注"` } WorkshopManageSearch struct { WorkshopManage WorkshopNumberArr []string PageNum int PageSize int Order string Orm *gorm.DB } ) func (slf WorkshopManage) TableName() string { return "silk_workshop_manage" } func NewWorkshopManageSearch() *WorkshopManageSearch { return &WorkshopManageSearch{Orm: mysqlx.GetDB()} } func (slf *WorkshopManageSearch) SetOrm(tx *gorm.DB) *WorkshopManageSearch { slf.Orm = tx return slf } func (slf *WorkshopManageSearch) SetPage(page, size int) *WorkshopManageSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *WorkshopManageSearch) SetId(id int) *WorkshopManageSearch { slf.ID = uint(id) return slf } func (slf *WorkshopManageSearch) SetType(types constvar.WorkshopType) *WorkshopManageSearch { slf.Type = types return slf } func (slf *WorkshopManageSearch) SetParentID(parentID string) *WorkshopManageSearch { slf.ParentID = parentID return slf } func (slf *WorkshopManageSearch) SetWorkshopNumber(workshopNumber string) *WorkshopManageSearch { slf.WorkshopNumber = workshopNumber return slf } func (slf *WorkshopManageSearch) SetWorkshopName(workshopName string) *WorkshopManageSearch { slf.WorkshopName = workshopName return slf } func (slf *WorkshopManageSearch) SetWorkshopNumberArr(workshopNumberArr []string) *WorkshopManageSearch { slf.WorkshopNumberArr = workshopNumberArr return slf } func (slf *WorkshopManageSearch) SetGroupNumber(groupNumber int) *WorkshopManageSearch { slf.GroupNumber = groupNumber return slf } func (slf *WorkshopManageSearch) SetOrder(order string) *WorkshopManageSearch { slf.Order = order return slf } func (slf *WorkshopManageSearch) build() *gorm.DB { db := slf.Orm.Table(slf.TableName()) if slf.ID > 0 { db = db.Where("id = ?", slf.ID) } if slf.Type > 0 { db = db.Where("`type` = ?", slf.Type) } if slf.ParentID != "" { db = db.Where("parent_id = ?", slf.ParentID) } if slf.WorkshopNumber != "" { db = db.Where("workshop_number = ?", slf.WorkshopNumber) } if len(slf.WorkshopNumberArr) > 0 { db = db.Where("workshop_number in (?)", slf.WorkshopNumberArr) } if slf.WorkshopName != "" { db = db.Where("workshop_name = ?", slf.WorkshopName) } if slf.GroupNumber != 0 { db = db.Where("group_number = ?", slf.GroupNumber) } return db } // Create 单条插入 func (slf *WorkshopManageSearch) Create(record *WorkshopManage) 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 *WorkshopManageSearch) First() (*WorkshopManage, error) { var ( record = new(WorkshopManage) db = slf.build() ) if err := db.First(record).Error; err != nil { return record, err } return record, nil } func (slf *WorkshopManageSearch) Find() ([]*WorkshopManage, int64, error) { var ( records = make([]*WorkshopManage, 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 slf.Order != "" { db = db.Order(slf.Order) } else { db = db.Order("updated_at desc") } if err := db.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } return records, total, nil } func (slf *WorkshopManageSearch) FindNotTotal() ([]*WorkshopManage, error) { var ( records = make([]*WorkshopManage, 0) db = slf.build() ) if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if slf.Order != "" { db = db.Order(slf.Order) } else { db = db.Order("updated_at desc") } if err := db.Find(&records).Error; err != nil { return records, fmt.Errorf("find records err: %v", err) } return records, nil } func (slf *WorkshopManageSearch) Save(record *WorkshopManage) 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 *WorkshopManageSearch) Delete() error { var db = slf.build() if err := db.Unscoped().Delete(&WorkshopManage{}).Error; err != nil { return err } return nil } func (slf *WorkshopManageSearch) 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 *WorkshopManageSearch) 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 }