From 7d80867c1d2d8340da8e106b4af2ceaba3fc9fc1 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 19 三月 2024 19:16:50 +0800
Subject: [PATCH] 增加发货完成按钮

---
 api/v1/salesDetails.go |  108 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go
index b57b78d..1de5dca 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,
@@ -376,6 +396,90 @@
 	ctx.OkWithDetailed(storeList)
 }
 
+// ConfirmOutput
+// @Tags		SalesDetails
+// @Summary	纭鍙戣揣
+// @Produce	application/json
+// @Param		object 	body request.ConfirmOutput	true	"鏄庣粏缂栫爜"
+// @Success	200	{object}	response.ListResponse
+// @Router		/api/salesDetails/confirmOutput [post]
+func (s *SalesDetailsApi) ConfirmOutput(c *gin.Context) {
+	var params request.ConfirmOutput
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+	if len(params.Products) == 0 || params.SaleDetailNumber == "" {
+		ctx.FailWithMsg(ecode.ParamsErr, "鍙傛暟缂哄け")
+		return
+	}
+	var flag bool
+	for _, p := range params.Products {
+		if p.OutputAmount.GreaterThan(decimal.Zero) {
+			flag = true
+		}
+	}
+	if !flag {
+		ctx.FailWithMsg(ecode.ParamsErr, "鍙戣揣鏁伴噺缂哄け")
+		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)
+}
+
 // GetDeliveryList
 // @Tags		SalesDetails
 // @Summary	鍙戣揣鏄庣粏

--
Gitblit v1.8.0