zhangqian
2024-07-29 eae158f8d95df5f49c4e36d5b9ad00b62dbad9ec
models/location_product_amount.go
@@ -1,6 +1,7 @@
package models
import (
   "encoding/json"
   "fmt"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
@@ -21,7 +22,9 @@
      ProductId         string          `json:"productId" gorm:"type:varchar(191);not null;comment:产品id"` //产品id
      Product           Material        `json:"product" gorm:"foreignKey:ProductId;references:ID"`
      Amount            decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:库存数量"` //库存数量
      CreateDate        string          `json:"createDate" gorm:"type:varchar(63);comment:日期"`          //日期
      MoreUnitList      []UnitItems     `json:"amountMoreUnits" gorm:"-"`                               //在库数量多单位
      MoreUnitValue     string          `json:"-" gorm:"type:varchar(255);comment:多单位值"`
      CreateDate        string          `json:"createDate" gorm:"type:varchar(63);comment:日期"` //日期
   }
   LocationProductAmountSearch struct {
@@ -64,6 +67,37 @@
   return "wms_location_product_amount"
}
func (slf *LocationProductAmount) AfterFind(tx *gorm.DB) (err error) {
   if slf.MoreUnitValue != "" {
      var arr []UnitItems
      err := json.Unmarshal([]byte(slf.MoreUnitValue), &arr)
      if err != nil {
         return err
      }
      slf.MoreUnitList = arr
   }
   return
}
func (slf *LocationProductAmount) BeforeCreate(tx *gorm.DB) (err error) {
   if len(slf.MoreUnitList) != 0 {
      items := make([]UnitItems, 0)
      for k, item := range slf.MoreUnitList {
         if item.Unit != "" && !item.Amount.IsZero() {
            items = append(items, slf.MoreUnitList[k])
         }
      }
      str, err := json.Marshal(items)
      if err != nil {
         return err
      }
      slf.MoreUnitValue = string(str)
   }
   return
}
func NewLocationProductAmountSearch() *LocationProductAmountSearch {
   return &LocationProductAmountSearch{Orm: mysqlx.GetDB()}
}