zhangqian
2024-07-04 c950586b718ae6fc198bedf424609a4ac94cb5d1
models/operation_details.go
@@ -4,6 +4,7 @@
   "fmt"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
   "wms/constvar"
   "wms/pkg/mysqlx"
)
@@ -11,9 +12,10 @@
   // OperationDetails 操作明细表
   OperationDetails struct {
      WmsModel
      Id          int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
      OperationID int    `json:"operationId" gorm:"index;type:int;not null;comment:操作记录id"` //操作id
      ProductId   string `json:"productId" gorm:"type:varchar(191);not null;comment:产品id"`  //产品id
      Id                int                        `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
      OperationID       int                        `json:"operationId" gorm:"index;type:int;not null;comment:操作记录id"`     //操作id
      BaseOperationType constvar.BaseOperationType `json:"baseOperationType" gorm:"type:tinyint;not null;comment:基础作业类型"` //基础作业类型
      ProductId         string                     `json:"productId" gorm:"type:varchar(191);not null;comment:产品id"`      //产品id
      //ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:产品名称"` //产品名称
      Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:数量"` //数量
      //Unit        string          `json:"unit" gorm:"type:varchar(31);comment:单位"`                    //单位
@@ -29,9 +31,10 @@
      AuxiliaryUnit    string          `json:"auxiliaryUnit" gorm:"type:varchar(191);comment:辅助单位"`
      Remark           string          `gorm:"type:varchar(1024);comment:备注" json:"remark"`
      IsInternalOutput bool            `json:"isInternalOutput"` //是否调拨产生的出库
      DealerType       string          `json:"dealerType"`       //出入库类型
      Cost      decimal.Decimal `json:"cost" gorm:"-"`      //成本单价
      SalePrice decimal.Decimal `json:"salePrice" gorm:"-"` //销售单价
      Cost      decimal.Decimal `json:"cost" `      //成本单价
      SalePrice decimal.Decimal `json:"salePrice" ` //销售单价
   }
   OperationDetailsSearch struct {
@@ -105,6 +108,11 @@
   return slf
}
func (slf *OperationDetailsSearch) SetBaseOperationType(baseOperationType constvar.BaseOperationType) *OperationDetailsSearch {
   slf.BaseOperationType = baseOperationType
   return slf
}
func (slf *OperationDetailsSearch) build() *gorm.DB {
   var db = slf.Orm.Model(&OperationDetails{})
@@ -136,6 +144,10 @@
   if slf.Fields != "" {
      db = db.Select(slf.Fields)
   }
   if slf.BaseOperationType != 0 {
      db = db.Where("base_operation_type = ?", slf.BaseOperationType)
   }
   return db
@@ -312,3 +324,20 @@
   }
   return result, nil
}
type GroupByDealerTypeWarehouse struct {
   DealerType string
   ProductID  string
   Sum        decimal.Decimal
}
func (slf *OperationDetailsSearch) GroupMultiSumAmount() ([]*GroupByDealerTypeWarehouse, error) {
   var (
      db     = slf.build()
      result = make([]*GroupByDealerTypeWarehouse, 0)
   )
   if err := db.Select("sum(amount) as sum, dealer_type, product_id").Group("product_id, dealer_type").Scan(&result).Error; err != nil {
      return nil, fmt.Errorf("select group err: %v", err)
   }
   return result, nil
}