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, ¶ms) + 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