jiangshuai
2024-02-06 02a2176f7c5733a4e4c4429c2028bbb86a967ce7
api/v1/purchase/purchase.go
@@ -1,18 +1,17 @@
package purchase
import (
   "context"
   "github.com/gin-gonic/gin"
   "github.com/mitchellh/mapstructure"
   "go.uber.org/zap"
   "gorm.io/gorm"
   "srm/global"
   "srm/model/common/request"
   "srm/model/common/response"
   "srm/model/purchase"
   purchaserequest "srm/model/purchase/request"
   "srm/proto/purchase_wms"
   "strconv"
   "strings"
   //"srm/model/purchase"
   //"srm/model/purchase"
@@ -36,12 +35,14 @@
   var params purchaserequest.AddPurchase
   err := c.ShouldBindJSON(&params)
   if err != nil {
      global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
      response.FailWithMessage(err.Error(), c)
      return
   }
   var purchaseRecord purchase.Purchase
   if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
   if err := utils.AssignTo(params.Purchase, &purchaseRecord); err != nil {
      global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
      response.FailWithMessage(err.Error(), c)
      return
   }
@@ -50,6 +51,8 @@
   purchaseRecord.Status = purchase.OrderStatusConfirmed
   purchaseRecord.HandledBy = "admin"
   purchaseRecord.Creator = "admin"
   purchaseRecord.Principal = "admin"
   purchaseRecord.OrderType = "采购订单"
   if !purchaseRecord.WholeDiscountType.IsValid(purchaseRecord.TotalPrice, purchaseRecord.WholeDiscount) {
      response.FailWithMessage("整单折扣数值不正确", c)
@@ -69,7 +72,7 @@
         return
      }
      global.GVA_LOG.Error("创建失败!", zap.Error(err))
      response.FailWithMessage("创建失败", c)
      response.FailWithMessage(err.Error(), c)
      return
   }
   response.OkWithMessage("创建成功", c)
@@ -117,7 +120,7 @@
   }
   var purchaseRecord purchase.Purchase
   if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
   if err := utils.AssignTo(params.Purchase, &purchaseRecord); err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }
@@ -161,7 +164,7 @@
      return
   }
   respProductList := make([]*purchaseRes.PurchaseProducts, len(productList))
   err = mapstructure.Decode(productList, &respProductList)
   err = utils.AssignTo(productList, &respProductList)
   if err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
@@ -171,7 +174,7 @@
      respProductList[k].Amount = item.Amount
      respProductList[k].Price = item.Price
      respProductList[k].Total = item.Total
      err = mapstructure.Decode(item.Product, &respProductList[k])
      err = utils.AssignTo(item.Product, &respProductList[k])
      if err != nil {
         global.GVA_LOG.Error("获取失败!", zap.Error(err))
         response.FailWithMessage("获取失败", c)
@@ -188,11 +191,11 @@
// @Security  ApiKeyAuth
// @accept    application/json
// @Produce   application/json
// @Param     data  query     request.PageInfo                                        true  "页码, 每页大小"
// @Param     data  query     purchaserequest.PurchaseSearch                                        true  "参数"
// @Success   200   {object}  response.Response{data=response.PageResult,msg=string}  "分页获取采购单列表,返回包括列表,总数,页码,每页数量"
// @Router    /purchase/purchaseList [get]
func (e *PurchaseApi) GetPurchaseList(c *gin.Context) {
   var pageInfo request.PageInfo
   var pageInfo purchaserequest.PurchaseSearch
   err := c.ShouldBindQuery(&pageInfo)
   if err != nil {
      response.FailWithMessage(err.Error(), c)
@@ -225,14 +228,52 @@
// @Produce   application/json
// @Param      id   path      int   true   "采购单ID"
// @Success   200   {object}  response.Response{msg=string}  "提交采购单"
// @Router    /purchase/submit/{id} [post]
// @Router    /purchase/submit [post]
func (e *PurchaseApi) Submit(c *gin.Context) {
   id, _ := strconv.Atoi(c.Param("id"))
   if id == 0 {
      response.FailWithMessage("参数缺失", c)
   var params purchaserequest.SubmitPurchase
   err := c.ShouldBindJSON(&params)
   if err != nil {
      global.GVA_LOG.Error("Submit failed", zap.Error(err))
      response.FailWithMessage(err.Error(), c)
      return
   }
   err := service.NewPurchaseService().Submit(uint(id))
   warehouse := ""
   if params.Status == purchase.OrderStatusReceived {
      data, err := service.NewPurchaseService().GetPurchase(uint(params.Id))
      if err != nil {
         global.GVA_LOG.Error("获取失败!", zap.Error(err))
         response.FailWithMessage("获取失败", c)
         return
      }
      productList, err := service.NewPurchaseService().GetPurchaseProductList(uint(params.Id))
      if err != nil {
         global.GVA_LOG.Error("获取失败!", zap.Error(err))
         response.FailWithMessage("获取失败", c)
         return
      }
      product := make([]*purchase_wms.PurchaseProduct, 0)
      for _, products := range productList {
         var p purchase_wms.PurchaseProduct
         p.Id = products.Product.Number
         p.Amount = products.Amount.IntPart()
         product = append(product, &p)
      }
      client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
      resp, err := client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{
         Number:       data.Number,
         SupplierName: data.Supplier.Name,
         Product:      product,
         Source:       "SRM_PURCHASE",
      })
      if err != nil {
         global.GVA_LOG.Error("grpc调用失败!", zap.Error(err))
         response.FailWithMessage("grpc调用失败", c)
         return
      }
      warehouse = resp.Warehouse
   }
   err = service.NewPurchaseService().Submit(params.Id, params.Status, warehouse)
   if err != nil {
      global.GVA_LOG.Error("更新失败!", zap.Error(err))
      response.FailWithMessage("更新失败", c)
@@ -259,7 +300,7 @@
   }
   purchaseTypeList := make([]*purchase.PurchaseType, 0, len(params))
   if err := mapstructure.Decode(params, &purchaseTypeList); err != nil {
   if err := utils.AssignTo(params, &purchaseTypeList); err != nil {
      response.FailWithMessage(err.Error(), c)
      return
   }