From 1572f45e72cc0fa15c029f9ee2a08474104435e6 Mon Sep 17 00:00:00 2001 From: selfcheer <selfcheer@gmail.com> Date: 星期五, 19 七月 2024 00:48:43 +0800 Subject: [PATCH] 采购单产品列表去掉过滤重复产品的逻辑 --- api/v1/purchase/purchase.go | 144 ++++++++++++++++++++++++++++------------------- 1 files changed, 85 insertions(+), 59 deletions(-) diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go index e571258..398c153 100644 --- a/api/v1/purchase/purchase.go +++ b/api/v1/purchase/purchase.go @@ -10,6 +10,7 @@ "srm/model/common/response" "srm/model/purchase" purchaserequest "srm/model/purchase/request" + "srm/proto/common" "srm/proto/purchase_wms" "strconv" "strings" @@ -238,13 +239,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,11 +261,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", - OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, + Number: data.Number, + SupplierName: data.Supplier.Name, + Product: product, + Source: "SRM_PURCHASE", + OperationSource: common.OperationSource_OperationSourcePurchase, + SalesDetailsNumber: data.SourceOrder, }) if err != nil { global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) @@ -394,59 +396,77 @@ 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 + 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 } } for _, confirm := range confirmInfo { if operation.ProductId == confirm.ProductId { - oi.SendAmount = confirm.OverReceiveAmount.IntPart() + pi.SendAmount = confirm.OverReceiveAmount.IntPart() break } } - operationInfos = append(operationInfos, oi) + inWarehouseInfos = append(inWarehouseInfos, iwi) + //productMap[operation.ProductId] = &pi + productInfos = append(productInfos, 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 + 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 { - oi.SendAmount = confirm.OverReceiveAmount.IntPart() + pi.SendAmount = confirm.OverReceiveAmount.IntPart() break } } - operationInfos = append(operationInfos, oi) + //productMap[pi.Number] = &pi + productInfos = append(productInfos, pi) } } + //for _, productInfo := range productMap { + // productInfos = append(productInfos, *productInfo) + //} + operationInfos.InWarehouseInfos = inWarehouseInfos + operationInfos.ProductInfos = productInfos response.OkWithData(operationInfos, c) } @@ -665,13 +685,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, - OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, + Number: purchaseData.Number, + SupplierName: purchaseData.Supplier.Name, + SupplierId: int64(purchaseData.SupplierId), + Product: product, + Source: "SRM_PURCHASE", + WarehouseName: purchaseData.Warehouse, + OperationSource: common.OperationSource_OperationSourcePurchase, + SalesDetailsNumber: purchaseData.SourceOrder, }) if err != nil { global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) @@ -739,22 +760,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, - OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, + Number: purchaseData.Number, + SupplierName: purchaseData.Supplier.Name, + SupplierId: int64(purchaseData.SupplierId), + Product: product, + Source: "SRM_PURCHASE", + WarehouseName: purchaseData.Warehouse, + OperationSource: common.OperationSource_OperationSourcePurchase, + SalesDetailsNumber: purchaseData.SourceOrder, }) if err != nil { global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) -- Gitblit v1.8.0