package model import ( "apsClient/model/request" "apsClient/pkg/sqlitex" "fmt" "github.com/shopspring/decimal" "gorm.io/gorm" ) //{ //"orderId": "0100000", //"productId": "PE500A01D/F", //"productName": "前纺毛布", //"parameter": "", //"customer": "1200", //"deliverDate": "2023-08-16", //"orderAttr": "产品类别:涤纶", //"amount": "1200", //"unit": "", //"startTime": 1692328320, //"endTime": 1692946800 //}, type ( ScheduleTask struct { gorm.Model `json:"-"` Id int `json:"id"` OrderId string `json:"orderId"` //订单id ProductId string `json:"productId"` //订单id ProductName string `json:"productName"` //产品名称 //Parameter string `json:"parameter"` //产品名称 //Customer string `json:"customer"` //DeliverDate string `json:"deliverDate"` //OrderAttr string `json:"orderAttr"` Amount decimal.Decimal `json:"amount"` Unit string `json:"unit"` StartTime int64 `json:"startTime"` EndTime int64 `json:"endTime"` Data string `json:"data"` //排程任务json串 TaskInfo request.DeliverScheduleTask `json:"taskInfo" gorm:"-"` //排程任务json串 //Procedures []*Procedures `json:"Procedures" gorm:"many2many:ScheduleTask_Procedures;"` } ScheduleTaskSearch struct { ScheduleTask Order string PageNum int PageSize int Orm *gorm.DB Preload bool } ) func (slf *ScheduleTask) TableName() string { return "schedule_task" } func NewScheduleTaskSearch(db *gorm.DB) *ScheduleTaskSearch { if db == nil { db = sqlitex.GetDB() } return &ScheduleTaskSearch{Orm: db} } func (slf *ScheduleTaskSearch) SetOrm(tx *gorm.DB) *ScheduleTaskSearch { slf.Orm = tx return slf } func (slf *ScheduleTaskSearch) SetPage(page, size int) *ScheduleTaskSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *ScheduleTaskSearch) SetOrder(order string) *ScheduleTaskSearch { slf.Order = order return slf } func (slf *ScheduleTaskSearch) SetPreload(preload bool) *ScheduleTaskSearch { slf.Preload = preload return slf } func (slf *ScheduleTaskSearch) SetEndTime(endTime int64) *ScheduleTaskSearch { slf.EndTime = endTime return slf } func (slf *ScheduleTaskSearch) build() *gorm.DB { var db = slf.Orm.Model(&ScheduleTask{}) if slf.Order != "" { db = db.Order(slf.Order) } if slf.EndTime > 0 { db = db.Where("end_time < ?", slf.EndTime) } //if slf.Preload { // db = db.Preload("Procedures") //} return db } // Create 单条插入 func (slf *ScheduleTaskSearch) Create(record *ScheduleTask) error { var db = slf.build() if err := db.Create(record).Error; err != nil { return fmt.Errorf("create err: %v, record: %+v", err, record) } return nil } // CreateBatch 批量插入 func (slf *ScheduleTaskSearch) CreateBatch(records []*ScheduleTask) error { var db = slf.build() if err := db.Create(&records).Error; err != nil { return fmt.Errorf("create batch err: %v, records: %+v", err, records) } return nil } func (slf *ScheduleTaskSearch) Save(record *ScheduleTask) error { var db = slf.build() if err := db.Save(record).Error; err != nil { return fmt.Errorf("save err: %v, record: %+v", err, record) } return nil } func (slf *ScheduleTaskSearch) UpdateByMap(upMap map[string]interface{}) error { var ( db = slf.build() ) if err := db.Updates(upMap).Error; err != nil { return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap) } return nil } func (slf *ScheduleTaskSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error { var ( db = slf.Orm.Table(slf.TableName()).Where(query, args...) ) if err := db.Updates(upMap).Error; err != nil { return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap) } return nil } func (slf *ScheduleTaskSearch) Delete() error { var db = slf.build() if err := db.Unscoped().Delete(&ScheduleTask{}).Error; err != nil { return err } return nil } func (slf *ScheduleTaskSearch) First() (*ScheduleTask, error) { var ( record = new(ScheduleTask) db = slf.build() ) if err := db.First(record).Error; err != nil { return record, err } return record, nil } func (slf *ScheduleTaskSearch) Find() ([]*ScheduleTask, int64, error) { var ( records = make([]*ScheduleTask, 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.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } return records, total, nil } func (slf *ScheduleTaskSearch) FindNotTotal() ([]*ScheduleTask, error) { var ( records = make([]*ScheduleTask, 0) db = slf.build() ) if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if err := db.Find(&records).Error; err != nil { return records, fmt.Errorf("find records err: %v", err) } return records, nil } // FindByQuery 指定条件查询. func (slf *ScheduleTaskSearch) FindByQuery(query string, args []interface{}) ([]*ScheduleTask, int64, error) { var ( records = make([]*ScheduleTask, 0) total int64 db = slf.Orm.Table(slf.TableName()).Where(query, args...) ) if err := db.Count(&total).Error; err != nil { return records, total, fmt.Errorf("find by query count err: %v", err) } if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if err := db.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args) } return records, total, nil } // FindByQueryNotTotal 指定条件查询&不查询总条数. func (slf *ScheduleTaskSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ScheduleTask, error) { var ( records = make([]*ScheduleTask, 0) db = slf.Orm.Table(slf.TableName()).Where(query, args...) ) if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if err := db.Find(&records).Error; err != nil { return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args) } return records, nil }