zhangqian
2024-04-07 a8914a16b23e93f6bfd12bcfd5cbe8b24cf7eb84
models/operation_type.go
@@ -34,16 +34,26 @@
      CreateBackorder               constvar.WhetherType       `json:"createBackorder" gorm:"column:create_backorder"`                 //创建欠单
      ReturnOperationTypeID         int                        `json:"returnOperationTypeID" gorm:"column:return_job_type_id"`         //退货类型ID
      ReturnOperationType           string                     `json:"returnOperationType" gorm:"-"`                                   //退货类型名称
      ReadyCount                    int                        `json:"readyCount" gorm:"-"`                                            //就绪数量
      FinishCount                   int                        `json:"finishCount" gorm:"-"`                                           //完成数量
      CancelCount                   int                        `json:"cancelCount" gorm:"-"`                                           //取消数量
   }
   OperationTypeSearch struct {
      OperationType
      Order    string
      PageNum  int
      PageSize int
      Keyword  string
      Orm      *gorm.DB
      Preload  bool
      Order        string
      PageNum      int
      PageSize     int
      Keyword      string
      Orm          *gorm.DB
      Preload      bool
      WarehouseIds []int
   }
   OperationTypeByStatus struct {
      Id     int                      `gorm:"column:id"`
      Status constvar.OperationStatus `gorm:"column:status"`
      Count  int                      `gorm:"column:count"`
   }
)
@@ -95,6 +105,16 @@
   return slf
}
func (slf *OperationTypeSearch) SetWarehouseId(warehouseId int) *OperationTypeSearch {
   slf.WarehouseId = warehouseId
   return slf
}
func (slf *OperationTypeSearch) SetWarehouseIds(warehouseIds []int) *OperationTypeSearch {
   slf.WarehouseIds = warehouseIds
   return slf
}
func (slf *OperationTypeSearch) build() *gorm.DB {
   var db = slf.Orm.Model(&OperationType{})
@@ -116,6 +136,18 @@
   if slf.Preload {
      db = db.Preload("Company").Preload("Warehouse").Preload("DefaultLocationSrc").Preload("DefaultLocationDest")
   }
   if slf.WarehouseId > 0 {
      db = db.Where("warehouse_id = ?", slf.WarehouseId)
   }
   if len(slf.WarehouseIds) > 0 {
      db = db.Where("warehouse_id in ?", slf.WarehouseIds)
   }
   if int(slf.BaseOperationType) != 0 {
      db = db.Where("base_operation_type = ?", slf.BaseOperationType)
   }
   return db
@@ -268,3 +300,21 @@
   return records, nil
}
func (slf *OperationTypeSearch) ListByStatusAndCount(idList []int) ([]*OperationTypeByStatus, error) {
   var (
      records = make([]*OperationTypeByStatus, 0)
      db      = slf.Orm
   )
   db = db.Table("wms_job_type").Select("wms_job_type.id,wms_operation.status,count(wms_operation.id) as count").InnerJoins("inner join wms_operation on wms_operation.operation_type_id=wms_job_type.id").Where("wms_operation.deleted_at is null").
      Group("wms_job_type.id,wms_operation.status")
   if len(idList) > 0 {
      db = db.Where("wms_job_type.id IN ?", idList)
   }
   if err := db.Find(&records).Error; err != nil {
      return records, fmt.Errorf("func ListByStatusAndCount err: %v, ", err)
   }
   return records, nil
}