zhangqian
2024-07-29 eae158f8d95df5f49c4e36d5b9ad00b62dbad9ec
controllers/product_controller.go
@@ -109,6 +109,7 @@
// @Summary   获取产品列表
// @Produce   application/json
// @Param     object  body  request.GetProductList true  "查询参数"
// @Param     Authorization   header string true "token"
// @Success   200 {object} util.ResponseList{data=[]models.Material}   "成功"
// @Router    /api-wms/v1/product/getProductList [post]
func (slf ProductController) GetProductList(c *gin.Context) {
@@ -121,7 +122,12 @@
   if params.PageInfo.Check() {
      search.SetPage(params.Page, params.PageSize)
   }
   products, total, err := search.SetPreload(true).SetKeyword(params.KeyWord).SetCategoryId(params.CategoryId).SetOrder("created_at desc").Find()
   products, total, err := search.SetPreload(true).
      SetKeyword(params.KeyWord).
      SetCategoryId(params.CategoryId).
      SetCategoryIds(params.CategoryIds).
      SetOrder("created_at desc").
      Find()
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "查找失败")
      return
@@ -136,32 +142,28 @@
      util.ResponseFormat(c, code.RequestParamError, "产品类型查找失败")
      return
   }
   categoryMap := models.CategoryMap(categories)
   for _, product := range products {
      for _, category := range categories {
         if product.CategoryId == int(category.ID) {
            product.CategoryName = category.Name
         }
      if product.CategoryId != 0 && categoryMap[product.CategoryId] != nil {
         product.CategoryName = categoryMap[product.CategoryId].Name
      }
      var reorderAmount request.ProductStatisticsAmount
      if err := models.NewOperationSearch().Orm.
         Table("wms_operation_details").
      var totalAmount decimal.Decimal
      db := models.NewOperationSearch().Orm
      if err := db.Table("wms_operation_details").
         InnerJoins("INNER JOIN wms_operation on wms_operation_details.operation_id=wms_operation.id").
         Select("wms_operation_details.product_id,SUM(wms_operation_details.amount) as total_count").
         Select("IFNULL(SUM(wms_operation_details.amount), 0) as total_count").
         Where("wms_operation_details.product_id=? and wms_operation.`status`=? and wms_operation.base_operation_type in (?)", product.ID, constvar.OperationStatus_Ready, []constvar.BaseOperationType{constvar.BaseOperationTypeIncoming, constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeDisuse}).
         Group("wms_operation_details.product_id").
         //Order("wms_operation_details.product_id").
         First(&reorderAmount).Error; err != nil {
         Scan(&totalAmount).Error; err != nil {
         if !errors.Is(err, gorm.ErrRecordNotFound) {
            util.ResponseFormat(c, code.RequestParamError, "产品数据统计失败")
            return
         } else {
            reorderAmount.TotalAmount = decimal.NewFromInt(0)
         }
      }
      product.PredictionAmount = product.Amount.Add(reorderAmount.TotalAmount)
      product.PredictionAmount = product.Amount.Add(totalAmount)
      var statisticsList []*request.ProductStatistics
      if err := models.NewOperationSearch().Orm.Table("wms_operation").
      db2 := models.NewOperationSearch().Orm
      if err := db2.Table("wms_operation").
         InnerJoins("INNER JOIN wms_operation_details on wms_operation_details.operation_id=wms_operation.id").
         Select("SUM(wms_operation_details.amount) as total_amount,wms_operation.base_operation_type").
         Where("wms_operation_details.product_id=? and wms_operation.`status`=? and wms_operation.base_operation_type in (?)", product.ID, constvar.OperationStatus_Finish, []constvar.BaseOperationType{constvar.BaseOperationTypeIncoming, constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeDisuse}).