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, ¶ms) + 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, ¶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) +} + // GetDeliveryList // @Tags SalesDetails // @Summary 鍙戣揣鏄庣粏 -- Gitblit v1.8.0