zhangqian
2024-03-30 ab9212db94528e1a0b70868ab3808761ef94d25b
api/v1/purchase/purchase.go
@@ -238,13 +238,13 @@
      return
   }
   warehouse := ""
   data, err := service.NewPurchaseService().GetPurchase(uint(params.Id))
   if err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
      return
   }
   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))
@@ -260,10 +260,12 @@
      }
      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",
         Number:             data.Number,
         SupplierName:       data.Supplier.Name,
         Product:            product,
         Source:             "SRM_PURCHASE",
         OperationSource:    purchase_wms.OperationSource_OperationSourcePurchase,
         SalesDetailsNumber: data.SourceOrder,
      })
      if err != nil {
         global.GVA_LOG.Error("grpc调用失败!", zap.Error(err))
@@ -366,13 +368,20 @@
      response.FailWithMessage("参数缺失", c)
      return
   }
   data, err := service.NewPurchaseService().GetPurchase(uint(id))
   server := service.NewPurchaseService()
   data, err := server.GetPurchase(uint(id))
   if err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
      return
   }
   productList, err := service.NewPurchaseService().GetPurchaseProductList(uint(id))
   productList, err := server.GetPurchaseProductList(uint(id))
   if err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
      return
   }
   confirmInfo, err := server.GetPurchaseProductConfirmInfo(data.Number)
   if err != nil {
      global.GVA_LOG.Error("获取失败!", zap.Error(err))
      response.FailWithMessage("获取失败", c)
@@ -386,49 +395,75 @@
      return
   }
   operationInfos := make([]purchaseRes.OperationInfo, 0)
   var operationInfos purchaseRes.OperationInfo
   productInfos := make([]purchaseRes.ProductInfo, 0)
   inWarehouseInfos := make([]purchaseRes.InWarehouseInfo, 0)
   productMap := make(map[string]*purchaseRes.ProductInfo)
   if len(info.Operations) > 0 {
      for _, operation := range info.Operations {
         var oi purchaseRes.OperationInfo
         oi.Number = operation.ProductId
         oi.Name = operation.ProductName
         oi.OperationNumber = operation.Number
         oi.Status = operation.Status
         oi.Principal = data.Principal
         oi.WarehouseName = data.Warehouse
         if operation.OverTime != "" {
            oi.OverTime = operation.OverTime
            oi.OverAmount = operation.Amount
         } else {
            oi.SendAmount = operation.Amount
         var pi purchaseRes.ProductInfo
         var iwi purchaseRes.InWarehouseInfo
         if p, ok := productMap[operation.ProductId]; ok {
            pi = *p
         }
         pi.Number = operation.ProductId
         pi.Name = operation.ProductName
         iwi.Number = operation.ProductId
         iwi.Name = operation.ProductName
         iwi.OperationNumber = operation.Number
         iwi.Status = operation.Status
         iwi.Principal = data.Principal
         iwi.WarehouseName = data.Warehouse
         if operation.OverTime != "" && operation.Status == 4 {
            iwi.OverTime = operation.OverTime
            iwi.OverAmount = operation.Amount
            pi.OverAmount = pi.OverAmount + operation.Amount
         }
         for _, products := range productList {
            if products.Product.Number == operation.ProductId {
               oi.Amount = products.Amount
               oi.PurchasePrice = products.Price
               oi.Total = products.Total
               oi.Unit = products.Product.Unit
               oi.Specifications = products.Product.Specifications
               oi.ModelNumber = products.Product.ModelNumber
               pi.Amount = products.Amount
               pi.PurchasePrice = products.Price
               pi.Total = products.Total
               pi.Unit = products.Product.Unit
               pi.Specifications = products.Product.Specifications
               pi.ModelNumber = products.Product.ModelNumber
               break
            }
         }
         operationInfos = append(operationInfos, oi)
         for _, confirm := range confirmInfo {
            if operation.ProductId == confirm.ProductId {
               pi.SendAmount = confirm.OverReceiveAmount.IntPart()
               break
            }
         }
         inWarehouseInfos = append(inWarehouseInfos, iwi)
         productMap[operation.ProductId] = &pi
      }
   } else {
      for _, products := range productList {
         var oi purchaseRes.OperationInfo
         oi.Number = products.Product.Number
         oi.Name = products.Product.Name
         oi.Amount = products.Amount
         oi.PurchasePrice = products.Price
         oi.Total = products.Total
         oi.Unit = products.Product.Unit
         oi.Specifications = products.Product.Specifications
         oi.ModelNumber = products.Product.ModelNumber
         operationInfos = append(operationInfos, oi)
         var pi purchaseRes.ProductInfo
         pi.Number = products.Product.Number
         pi.Name = products.Product.Name
         pi.Amount = products.Amount
         pi.PurchasePrice = products.Price
         pi.Total = products.Total
         pi.Unit = products.Product.Unit
         pi.Specifications = products.Product.Specifications
         pi.ModelNumber = products.Product.ModelNumber
         for _, confirm := range confirmInfo {
            if products.Product.Number == confirm.ProductId {
               pi.SendAmount = confirm.OverReceiveAmount.IntPart()
               break
            }
         }
         productMap[pi.Number] = &pi
      }
   }
   for _, productInfo := range productMap {
      productInfos = append(productInfos, *productInfo)
   }
   operationInfos.InWarehouseInfos = inWarehouseInfos
   operationInfos.ProductInfos = productInfos
   response.OkWithData(operationInfos, c)
}
@@ -647,12 +682,14 @@
      }
      client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
      _, err = client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{
         Number:        purchaseData.Number,
         SupplierName:  purchaseData.Supplier.Name,
         SupplierId:    int64(purchaseData.SupplierId),
         Product:       product,
         Source:        "SRM_PURCHASE",
         WarehouseName: purchaseData.Warehouse,
         Number:             purchaseData.Number,
         SupplierName:       purchaseData.Supplier.Name,
         SupplierId:         int64(purchaseData.SupplierId),
         Product:            product,
         Source:             "SRM_PURCHASE",
         WarehouseName:      purchaseData.Warehouse,
         OperationSource:    purchase_wms.OperationSource_OperationSourcePurchase,
         SalesDetailsNumber: purchaseData.SourceOrder,
      })
      if err != nil {
         global.GVA_LOG.Error("grpc调用失败!", zap.Error(err))
@@ -720,21 +757,27 @@
   }
   product := make([]*purchase_wms.PurchaseProduct, 0)
   ids := make([]int, 0)
   productMap := make(map[string]int64)
   for _, inspection := range inspectionList {
      var p purchase_wms.PurchaseProduct
      p.Id = inspection.ProductId
      p.Amount = inspection.Amount.IntPart()
      product = append(product, &p)
      productMap[inspection.ProductId] = inspection.Amount.IntPart()
      ids = append(ids, int(inspection.ID))
   }
   for k, v := range productMap {
      var p purchase_wms.PurchaseProduct
      p.Id = k
      p.Amount = v
      product = append(product, &p)
   }
   client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
   _, err = client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{
      Number:        purchaseData.Number,
      SupplierName:  purchaseData.Supplier.Name,
      SupplierId:    int64(purchaseData.SupplierId),
      Product:       product,
      Source:        "SRM_PURCHASE",
      WarehouseName: purchaseData.Warehouse,
      Number:             purchaseData.Number,
      SupplierName:       purchaseData.Supplier.Name,
      SupplierId:         int64(purchaseData.SupplierId),
      Product:            product,
      Source:             "SRM_PURCHASE",
      WarehouseName:      purchaseData.Warehouse,
      OperationSource:    purchase_wms.OperationSource_OperationSourcePurchase,
      SalesDetailsNumber: purchaseData.SourceOrder,
   })
   if err != nil {
      global.GVA_LOG.Error("grpc调用失败!", zap.Error(err))
@@ -747,5 +790,11 @@
      response.FailWithMessage("质检失败", c)
      return
   }
   err = server.UpdatePurchaseStatus(purchaseData.Number, purchase.WaitInspection)
   if err != nil {
      global.GVA_LOG.Error("质检失败!", zap.Error(err))
      response.FailWithMessage("质检失败", c)
      return
   }
   response.OkWithMessage("质检成功", c)
}