zhangqian
2024-04-25 2d6875c93b25d0b7336c7fa11e066d213259fe2e
model/work_order.go
@@ -3,25 +3,25 @@
import (
   "apsClient/pkg/sqlitex"
   "fmt"
   "github.com/jinzhu/gorm"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
)
type (
   Order struct {
      gorm.Model  `json:"-"`
      WorkOrderID string          `gorm:"index;type:varchar(191);not null;comment:工单ID" json:"workOrderId"`
      OrderID     string          `gorm:"index;type:varchar(191);not null;comment:订单ID" json:"orderId"`
      ProductID   string          `gorm:"type:varchar(191);comment:产品ID" json:"productId"`
      ProductName string          `gorm:"type:varchar(191);comment:产品名称" json:"productName"`
      Parameter   string          `gorm:"type:varchar(1024);comment:参数需求" json:"parameter"`
      Customer    string          `gorm:"type:varchar(191);comment:客户编码" json:"customer"`
      DeliverDate string          `gorm:"type:varchar(100);comment:交货日期" json:"deliverDate"`
      CommonModel
      WorkOrderID string          `gorm:"index;type:varchar(191);not null" json:"workOrderId"`
      OrderID     string          `gorm:"index;type:varchar(191);not null" json:"orderId"`
      ProductID   string          `gorm:"type:varchar(191)" json:"productId"`
      ProductName string          `gorm:"type:varchar(191)" json:"productName"`
      Parameter   string          `gorm:"type:varchar(1024)" json:"parameter"`
      Customer    string          `gorm:"type:varchar(191)" json:"customer"`
      DeliverDate string          `gorm:"type:varchar(100)" json:"deliverDate"`
      OrderAttr   string          `json:"orderAttr"` // 订单属性拼接的字符串,即货物描述
      Amount      decimal.Decimal `gorm:"type:decimal(35,18);comment:数量" json:"amount"`
      Unit        string          `gorm:"type:varchar(100);comment:单位" json:"unit"`
      StartTime   int64           `gorm:"comment:计划开始时间" json:"startTime"`
      EndTime     int64           `gorm:"comment:计划结束时间" json:"endTime"`
      Amount      decimal.Decimal `gorm:"type:decimal(35,18)" json:"amount"`
      Unit        string          `gorm:"type:varchar(100)" json:"unit"`
      StartTime   int64           `json:"startTime"`
      EndTime     int64           `json:"endTime"`
      Status      OrderStatus
   }
@@ -33,18 +33,22 @@
      Orm          *gorm.DB
      Preload      bool
      StartTimeMax int64
      StartTimeMin int64
      StatusList   []OrderStatus
      WorkOrderIDs []string
   }
)
type OrderStatus int
const (
   OrderStatusUnFinished OrderStatus = 1
   OrderStatusFinished   OrderStatus = 2
   OrderStatusWaitProcess OrderStatus = 1
   OrderStatusProcessing  OrderStatus = 2
   OrderStatusFinished    OrderStatus = 3
)
func (slf *Order) TableName() string {
   return "Order"
   return "work_order"
}
func NewOrderSearch(db *gorm.DB) *OrderSearch {
@@ -73,9 +77,18 @@
   slf.StartTimeMax = ts
   return slf
}
func (slf *OrderSearch) SetStartTimeMin(ts int64) *OrderSearch {
   slf.StartTimeMin = ts
   return slf
}
func (slf *OrderSearch) SetStatus(status OrderStatus) *OrderSearch {
   slf.Status = status
   return slf
}
func (slf *OrderSearch) SetStatusList(statusList []OrderStatus) *OrderSearch {
   slf.StatusList = statusList
   return slf
}
@@ -89,6 +102,16 @@
   return slf
}
func (slf *OrderSearch) SetWorkOrderIds(workOrderIds []string) *OrderSearch {
   slf.WorkOrderIDs = workOrderIds
   return slf
}
func (slf *OrderSearch) SetId(id uint) *OrderSearch {
   slf.ID = id
   return slf
}
func (slf *OrderSearch) build() *gorm.DB {
   var db = slf.Orm.Model(&Order{})
@@ -96,16 +119,32 @@
      db = db.Order(slf.OrderBy)
   }
   if slf.ID != 0 {
      db = db.Where("id = ?", slf.ID)
   }
   if slf.WorkOrderID != "" {
      db = db.Where("work_order_id = ?", slf.WorkOrderID)
   }
   if len(slf.WorkOrderIDs) != 0 {
      db = db.Where("work_order_id in (?)", slf.WorkOrderIDs)
   }
   if slf.Status != 0 {
      db = db.Where("status = ?", slf.Status)
   }
   if len(slf.StatusList) != 0 {
      db = db.Where("status IN (?)", slf.StatusList)
   }
   if slf.StartTimeMax != 0 {
      db = db.Where("start_time <= ?", slf.StartTimeMax)
   }
   if slf.StartTimeMin != 0 {
      db = db.Where("start_time >= ?", slf.StartTimeMin)
   }
   if slf.Preload {
@@ -126,18 +165,17 @@
   return nil
}
// CreateBatch 批量插入
func (slf *OrderSearch) CreateBatch(records []*Order) error {
func (slf *OrderSearch) Updates(record *Order) error {
   var db = slf.build()
   if err := db.Create(&records).Error; err != nil {
      return fmt.Errorf("create batch err: %v, records: %+v", err, records)
   if err := db.Updates(record).Error; err != nil {
      return fmt.Errorf("save err: %v, record: %+v", err, record)
   }
   return nil
}
func (slf *OrderSearch) Save(record *Order) error {
func (slf *OrderSearch) Upsert(record *Order) error {
   var db = slf.build()
   if err := db.Save(record).Error; err != nil {