From 1cd1206c18ed14dd9ebf2baf477f46c847a271b0 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 15 三月 2024 16:39:19 +0800
Subject: [PATCH] merge

---
 api/v1/product.go |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/api/v1/product.go b/api/v1/product.go
index 8f11a30..a61ea18 100644
--- a/api/v1/product.go
+++ b/api/v1/product.go
@@ -156,6 +156,31 @@
 		ctx.Ok()
 		return
 	}
+	first, err := model.NewSalesDetailsSearch().SetPreload(true).SetNumber(number).First()
+	if err != nil {
+		ctx.FailWithMsg(ecode.DBErr, "鏌ヨ閿�鍞槑缁嗗嚭閿�")
+		return
+	}
+	productInfo := make([]response.SalesDetailsProductInfo, 0)
+	amountMap := make(map[string]int64)
+	overMap := make(map[string]int64)
+	for _, p := range first.Products {
+		amountMap[p.Number] = 0
+		overMap[p.Number] = 0
+		var sdpi response.SalesDetailsProductInfo
+		sdpi.ProductId = p.Number
+		sdpi.ProductName = p.Name
+		sdpi.Specs = p.Specs
+		sdpi.Unit = p.Unit
+		sdpi.Amount = p.Amount
+		sdpi.Cost = p.Cost
+		sdpi.Price = p.Price
+		sdpi.Total = p.Total
+		sdpi.Profit = p.Profit
+		sdpi.Margin = p.Margin
+		productInfo = append(productInfo, sdpi)
+	}
+
 	client := product.NewProductServiceClient(grpc_init.CrmApsGrpcServiceConn)
 	info, err := client.GetProductOrder(ctx.GetCtx(), &product.GetProductOrderRequest{SalesDetailsNumber: number})
 	if err != nil {
@@ -164,6 +189,7 @@
 		return
 	}
 	var result response.Info
+	//鍒堕�犱俊鎭�
 	var list []response.WorkOrderInfo
 	for _, orderInfo := range info.List {
 		var wo response.WorkOrderInfo
@@ -179,10 +205,22 @@
 		wo.Unit = orderInfo.Unit
 		wo.Amount = orderInfo.Amount
 		wo.FinishAmount = orderInfo.FinishAmount
+		at := amountMap[orderInfo.ProductId] + orderInfo.Amount
+		amountMap[orderInfo.ProductId] = at
+		fat := overMap[orderInfo.ProductId] + orderInfo.FinishAmount
+		overMap[orderInfo.ProductId] = fat
 		list = append(list, wo)
+	}
+	for i := 0; i < len(productInfo); i++ {
+		productInfo[i].MakeAmount = amountMap[productInfo[i].ProductId]
+		amountMap[productInfo[i].ProductId] = 0
+		productInfo[i].MakeFinishAmount = overMap[productInfo[i].ProductId]
+		productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId]
+		overMap[productInfo[i].ProductId] = 0
 	}
 	result.MakeInfo = list
 
+	//閲囪喘淇℃伅
 	var purchaseInfo []response.Purchase
 	for _, pl := range info.PurchaseList {
 		var p response.Purchase
@@ -197,10 +235,22 @@
 		p.Unit = pl.Unit
 		p.Amount = pl.Amount
 		p.FinishAmount = pl.FinishAmount
+		at := amountMap[pl.ProductId] + pl.Amount
+		amountMap[pl.ProductId] = at
+		fat := overMap[pl.ProductId] + pl.FinishAmount
+		overMap[pl.ProductId] = fat
 		purchaseInfo = append(purchaseInfo, p)
+	}
+	for i := 0; i < len(productInfo); i++ {
+		productInfo[i].PurchaseAmount = amountMap[productInfo[i].ProductId]
+		amountMap[productInfo[i].ProductId] = 0
+		productInfo[i].PurchaseFinishAmount = overMap[productInfo[i].ProductId]
+		productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId]
+		overMap[productInfo[i].ProductId] = 0
 	}
 	result.PurchaseInfo = purchaseInfo
 
+	//濮斿淇℃伅
 	var outsourcingList []response.OutsourcingInfo
 	for _, outsourcingInfo := range info.OutsourcingList {
 		var oi response.OutsourcingInfo
@@ -215,8 +265,20 @@
 		oi.Unit = outsourcingInfo.Unit
 		oi.Amount = outsourcingInfo.Amount
 		oi.FinishAmount = outsourcingInfo.FinishAmount
+		at := amountMap[outsourcingInfo.ProductId] + outsourcingInfo.Amount
+		amountMap[outsourcingInfo.ProductId] = at
+		fat := overMap[outsourcingInfo.ProductId] + outsourcingInfo.FinishAmount
+		overMap[outsourcingInfo.ProductId] = fat
 		outsourcingList = append(outsourcingList, oi)
 	}
+	for i := 0; i < len(productInfo); i++ {
+		productInfo[i].OutsourcingAmount = amountMap[productInfo[i].ProductId]
+		amountMap[productInfo[i].ProductId] = 0
+		productInfo[i].OutsourcingFinishAmount = overMap[productInfo[i].ProductId]
+		productInfo[i].FinishAmount = productInfo[i].FinishAmount + overMap[productInfo[i].ProductId]
+		overMap[productInfo[i].ProductId] = 0
+	}
 	result.OutsourcingInfo = outsourcingList
+	result.ProductInfo = productInfo
 	ctx.OkWithDetailed(result)
 }

--
Gitblit v1.8.0