From 4f526b034a6e13a521ad71dcbdbea97043d6ea19 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 20 三月 2024 19:21:20 +0800
Subject: [PATCH] 发货信息字段完善

---
 api/v1/salesDetails.go |   79 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 3 deletions(-)

diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go
index 6d60f95..65c3401 100644
--- a/api/v1/salesDetails.go
+++ b/api/v1/salesDetails.go
@@ -254,7 +254,7 @@
 	}
 	number := c.Param("number")
 	client := product_inventory.NewProductInventoryServiceClient(grpc_init.ProductInventoryServiceConn)
-	info, err := client.GetInventoryProductInfo(ctx.GetCtx(), &product_inventory.GetInventoryProductInfoRequest{Number: number})
+	info, err := client.GetOrderInputAndOutputInfo(ctx.GetCtx(), &product_inventory.GetOrderInputAndOutputInfoRequest{Number: number})
 	if err != nil {
 		if strings.Contains(err.Error(), "record not found") {
 			ctx.Ok()
@@ -265,11 +265,25 @@
 		return
 	}
 	var list []response.ProductInfo
-	err = structx.AssignTo(info.ProductList, &list)
+	err = structx.AssignTo(info.OutputList, &list)
 	if err != nil {
 		ctx.FailWithMsg(ecode.UnknownErr, "杞崲閿欒")
 		return
 	}
+
+	products, err := salesDetailsService.GetProducts(number)
+	m := make(map[string]*model.Product)
+
+	for _, product := range products {
+		m[product.Number] = product
+	}
+	for k, v := range list {
+		if m[v.Number] == nil {
+			continue
+		}
+		list[k].OrderAmount = m[v.Number].Amount.String()
+	}
+
 	ctx.OkWithDetailed(list)
 }
 
@@ -322,6 +336,9 @@
 	inputProductMap := make(map[string]*response.StoreInfo)
 	outputProductMap := make(map[string]*response.OutputSimpleInfo)
 	for _, v := range grpcOutputList {
+		if productMap[v.Number] == nil {
+			continue
+		}
 		if outputProductMap[v.Number] == nil {
 			simpleInfo := &response.OutputSimpleInfo{
 				Number: v.Number,
@@ -335,6 +352,9 @@
 		}
 	}
 	for _, v := range grpcInputList {
+		if productMap[v.Number] == nil {
+			continue
+		}
 		if inputProductMap[v.Number] == nil {
 			storeInfo := &response.StoreInfo{
 				Number:      v.Number,
@@ -358,7 +378,7 @@
 		if storeInfo == nil { //娌℃湁鍏ュ簱淇℃伅
 			storeInfo = &response.StoreInfo{
 				Name:            product.Number,
-				Number:          product.Number,
+				Number:          product.Name,
 				OrderAmount:     product.Amount,
 				FinishAmount:    decimal.Decimal{},
 				LeftAmount:      product.Amount,
@@ -404,6 +424,59 @@
 		return
 	}
 
+	products := make([]*product_inventory.OutputProduct, 0, len(params.Products))
+	for _, product := range params.Products {
+		products = append(products, &product_inventory.OutputProduct{
+			Number: product.Number,
+			Amount: product.OutputAmount.String(),
+		})
+	}
+	client := product_inventory.NewProductInventoryServiceClient(grpc_init.ProductInventoryServiceConn)
+	_, err := client.OrderProductOutput(ctx.GetCtx(), &product_inventory.OrderProductOutputRequest{
+		OrderNumber: params.SaleDetailNumber,
+		Products:    products,
+	})
+
+	if err != nil {
+		logx.Errorf("product_inventory.OrderProductOutput err:%v, params:%v", err, params)
+		ctx.FailWithMsg(ecode.UnknownErr, "鍙戣揣澶辫触"+err.Error())
+		return
+	}
+
+	ctx.OkWithDetailed(nil)
+}
+
+// confirmOutputOver
+// @Tags    SalesDetails
+// @Summary	纭鍙戣揣
+// @Produce	application/json
+// @Param		object 	body request.ConfirmOutputOver	true	"鏄庣粏缂栫爜"
+// @Success	200	{object}	response.ListResponse
+// @Router		/api/salesDetails/confirmOutputOver [post]
+func (s *SalesDetailsApi) ConfirmOutputOver(c *gin.Context) {
+	var params request.ConfirmOutput
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+	if params.SaleDetailNumber == "" {
+		ctx.FailWithMsg(ecode.ParamsErr, "鍙傛暟缂哄け")
+		return
+	}
+
+	salesDetails, err := salesDetailsService.GetSalesDetailsByNumber(params.SaleDetailNumber)
+	if err == gorm.ErrRecordNotFound || salesDetails.Number != params.SaleDetailNumber {
+		ctx.FailWithMsg(ecode.ParamsErr, "閿�鍞鍗曚笉瀛樺湪")
+		return
+	}
+
+	err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).UpdateByMap(map[string]interface{}{"status": constvar.OverOutbound})
+
+	if err != nil {
+		ctx.FailWithMsg(ecode.DBErr, "淇敼澶辫触")
+		return
+	}
+
 	ctx.OkWithDetailed(nil)
 }
 

--
Gitblit v1.8.0