zhangqian
2024-04-07 a8914a16b23e93f6bfd12bcfd5cbe8b24cf7eb84
models/location_product_amount.go
@@ -11,9 +11,15 @@
type (
   LocationProductAmount struct {
      WmsModel
      Id                int             `json:"id"  gorm:"column:id;primary_key;AUTO_INCREMENT"`
      LocationProductId int             `json:"locationProductId" gorm:"type:int;not null;comment:上架规则id"` //上架规则id
      LocationProduct   LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"`
      Id int `json:"id"  gorm:"column:id;primary_key;AUTO_INCREMENT"`
      //LocationProductId int             `json:"locationProductId" gorm:"type:int;not null;comment:上架规则id"` //上架规则id
      //LocationProduct   LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"`
      LocationId        int             `json:"locationId" gorm:"type:int;not null;comment:位置id"` //位置id
      Location          Location        `json:"location" gorm:"foreignKey:LocationId;references:id"`
      ProductCategoryID int             `json:"productCategoryId" gorm:"type:int;not null;comment:产品种类id"` //产品种类id
      ProductCategory   ProductCategory `json:"productCategory" gorm:"foreignKey:ProductCategoryID;references:Id"`
      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:日期"`          //日期
   }
@@ -26,22 +32,27 @@
      Keyword  string
      Orm      *gorm.DB
      Preload  bool
      //LocationProductIds []int
      LocationIds []int
      ProductIds  []string
      Ids         []int
   }
   LocationProductAmountWithOperation struct {
      //LocationProductAmount LocationProductAmount `json:"locationProductAmount"`
      LocationProductAmountId int                      `json:"locationProductAmount" gorm:"location_product_amount_id"`
      LocationId              int                      `json:"locationId" gorm:"column:location_id"`
      LocationName            string                   `json:"locationName" gorm:"column:location_name"`
      ProductId               string                   `json:"productId" gorm:"column:product_id"`
      ProductName             string                   `json:"productName" gorm:"column:product_name"`
      Amount                  decimal.Decimal          `json:"amount" gorm:"column:amount"`
      Unit                    string                   `json:"unit" gorm:"column:unit"`
      CreateDate              string                   `json:"createDate" gorm:"column:create_date"`
      AdjustAmount            decimal.Decimal          `json:"adjustAmount" gorm:"column:adjust_amount"`
      DifferenceAmount        decimal.Decimal          `json:"differenceAmount" gorm:"-"`
      OperationId             int                      `json:"operationId" gorm:"column:operation_id"`
      Status                  constvar.OperationStatus `json:"status" gorm:"status"`
      LocationProductAmountId int                        `json:"locationProductAmountId" gorm:"location_product_amount_id"`
      LocationId              int                        `json:"locationId" gorm:"column:location_id"`
      LocationName            string                     `json:"locationName" gorm:"column:location_name"`
      ProductId               string                     `json:"productId" gorm:"column:product_id"`
      ProductName             string                     `json:"productName" gorm:"column:product_name"`
      Amount                  decimal.Decimal            `json:"amount" gorm:"column:amount"`
      Unit                    string                     `json:"unit" gorm:"column:unit"`
      CreateDate              string                     `json:"createDate" gorm:"column:create_date"`
      AdjustAmount            decimal.Decimal            `json:"adjustAmount" gorm:"column:adjust_amount"`
      DifferenceAmount        decimal.Decimal            `json:"differenceAmount" gorm:"-"`
      OperationId             int                        `json:"operationId" gorm:"column:operation_id"`
      Status                  constvar.OperationStatus   `json:"status" gorm:"status"`
      BaseOperationType       constvar.BaseOperationType `json:"baseOperationType" gorm:"base_operation_type"`
   }
)
@@ -73,6 +84,11 @@
   return slf
}
func (slf *LocationProductAmountSearch) SetIds(ids []int) *LocationProductAmountSearch {
   slf.Ids = ids
   return slf
}
func (slf *LocationProductAmountSearch) SetKeyword(keyword string) *LocationProductAmountSearch {
   slf.Keyword = keyword
   return slf
@@ -83,8 +99,23 @@
   return slf
}
func (slf *LocationProductAmountSearch) SetLocationProductId(id int) *LocationProductAmountSearch {
   slf.LocationProductId = id
func (slf *LocationProductAmountSearch) SetProductId(productId string) *LocationProductAmountSearch {
   slf.ProductId = productId
   return slf
}
func (slf *LocationProductAmountSearch) SetLocationId(locationId int) *LocationProductAmountSearch {
   slf.LocationId = locationId
   return slf
}
func (slf *LocationProductAmountSearch) SetProductIds(ids []string) *LocationProductAmountSearch {
   slf.ProductIds = ids
   return slf
}
func (slf *LocationProductAmountSearch) SetLocationIds(ids []int) *LocationProductAmountSearch {
   slf.LocationIds = ids
   return slf
}
@@ -99,14 +130,37 @@
   }
   if slf.Keyword != "" {
      db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
      db = db.Joins("left join wms_location on wms_location_product_amount.location_id = wms_location.id").
         Joins("left join material on wms_location_product_amount.product_id = material.id").
         Joins("left join wms_product_category on wms_location_product_amount.product_category_id = wms_product_category.id").
         Where("wms_location.name like ?", "%"+slf.Keyword+"%").Or("material.name like ?", "%"+slf.Keyword+"%").
         Or("wms_product_category.name like ?", "%"+slf.Keyword+"%")
   }
   if slf.Preload {
      db = db.Model(&LocationProductAmount{}).Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product")
      db = db.Model(&LocationProductAmount{}).Preload("Location").Preload("Product").Preload("ProductCategory")
   }
   if slf.LocationProductId != 0 {
      db = db.Where("location_product_id=?", slf.LocationProductId)
   //if slf.LocationProductId != 0 {
   //   db = db.Where("location_product_id=?", slf.LocationProductId)
   //}
   if len(slf.ProductIds) > 0 {
      db = db.Where("product_id in (?)", slf.ProductIds)
   }
   if len(slf.LocationIds) > 0 {
      db = db.Where("location_id in (?)", slf.LocationIds)
   }
   if slf.LocationId != 0 {
      db = db.Where("location_id = ?", slf.LocationId)
   }
   if slf.ProductId != "" {
      db = db.Where("product_id=?", slf.ProductId)
   }
   if len(slf.Ids) > 0 {
      db = db.Where("id in (?)", slf.Ids)
   }
   return db
@@ -194,3 +248,33 @@
   return records, nil
}
func (slf *LocationProductAmountSearch) FirstRes() (*LocationProductAmount, *gorm.DB) {
   var (
      record = new(LocationProductAmount)
      db     = slf.build()
   )
   return record, db.First(&record)
}
func (slf *LocationProductAmountSearch) Count() (int64, error) {
   var (
      total int64
      db    = slf.build()
   )
   err := db.Count(&total).Error
   return total, err
}
func (slf *LocationProductAmountSearch) 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
}