From c7e82fd1d76b9fb25497d5aba4372bbfe13a8468 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 28 三月 2024 20:00:21 +0800 Subject: [PATCH] 采购入库增加来源 --- api/v1/purchase/purchase.go | 208 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 159 insertions(+), 49 deletions(-) diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go index 26e101b..753d8dc 100644 --- a/api/v1/purchase/purchase.go +++ b/api/v1/purchase/purchase.go @@ -226,7 +226,7 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param id path int true "閲囪喘鍗旾D" +// @Param data body purchaserequest.SubmitPurchase true "鍙傛暟" // @Success 200 {object} response.Response{msg=string} "鎻愪氦閲囪喘鍗�" // @Router /purchase/submit [post] func (e *PurchaseApi) Submit(c *gin.Context) { @@ -260,10 +260,11 @@ } client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn) resp, err := client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{ - Number: data.Number, - SupplierName: data.Supplier.Name, - Product: product, - Source: "SRM_PURCHASE", + Number: data.Number, + SupplierName: data.Supplier.Name, + Product: product, + Source: "SRM_PURCHASE", + OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, }) if err != nil { global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) @@ -387,33 +388,48 @@ } operationInfos := make([]purchaseRes.OperationInfo, 0) - for _, operation := range info.Operations { - var oi purchaseRes.OperationInfo - oi.Number = operation.ProductId - oi.Name = operation.ProductName - oi.OperationNumber = operation.Number - oi.Status = operation.Status - oi.Principal = data.Principal - oi.WarehouseName = data.Warehouse - if operation.OverTime != "" { - oi.OverTime = operation.OverTime - oi.OverAmount = operation.Amount - } else { + if len(info.Operations) > 0 { + for _, operation := range info.Operations { + var oi purchaseRes.OperationInfo + oi.Number = operation.ProductId + oi.Name = operation.ProductName + oi.OperationNumber = operation.Number + oi.Status = operation.Status + oi.Principal = data.Principal + oi.WarehouseName = data.Warehouse oi.SendAmount = operation.Amount - } - for _, products := range productList { - if products.Product.Number == operation.ProductId { - oi.Amount = products.Amount - oi.PurchasePrice = products.Price - oi.Total = products.Total - oi.Unit = products.Product.Unit - oi.Specifications = products.Product.Specifications - oi.ModelNumber = products.Product.ModelNumber - break + if operation.OverTime != "" { + oi.OverTime = operation.OverTime + oi.OverAmount = operation.Amount } + for _, products := range productList { + if products.Product.Number == operation.ProductId { + oi.Amount = products.Amount + oi.PurchasePrice = products.Price + oi.Total = products.Total + oi.Unit = products.Product.Unit + oi.Specifications = products.Product.Specifications + oi.ModelNumber = products.Product.ModelNumber + break + } + } + operationInfos = append(operationInfos, oi) } - operationInfos = append(operationInfos, oi) + } else { + for _, products := range productList { + var oi purchaseRes.OperationInfo + oi.Number = products.Product.Number + oi.Name = products.Product.Name + oi.Amount = products.Amount + oi.PurchasePrice = products.Price + oi.Total = products.Total + oi.Unit = products.Product.Unit + oi.Specifications = products.Product.Specifications + oi.ModelNumber = products.Product.ModelNumber + operationInfos = append(operationInfos, oi) + } } + response.OkWithData(operationInfos, c) } @@ -423,22 +439,39 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param id path int true "閲囪喘鍗旾D" true "閲囪喘鍗旾D" +// @Param data body purchaserequest.SubmitPurchase true "鍙傛暟" // @Success 200 {object} response.Response{msg=string} "鏂扮増鎻愪氦" -// @Router /purchase/newSubmit/{id} [get] +// @Router /purchase/newSubmit [post] func (e *PurchaseApi) NewSubmit(c *gin.Context) { - id, _ := strconv.Atoi(c.Param("id")) + var params purchaserequest.SubmitPurchase + err := c.ShouldBindJSON(¶ms) + if err != nil { + global.GVA_LOG.Error("Submit failed", zap.Error(err)) + response.FailWithMessage(err.Error(), c) + return + } + id := uint(params.Id) if id == 0 { response.FailWithMessage("鍙傛暟缂哄け", c) return } - data, err := service.NewPurchaseService().GetPurchase(uint(id)) + if params.Status == purchase.OrderStatusCanceled { + err = service.NewPurchaseService().Submit(params.Id, params.Status, "") + if err != nil { + global.GVA_LOG.Error("鎻愪氦澶辫触!", zap.Error(err)) + response.FailWithMessage("鎻愪氦澶辫触", c) + return + } + response.OkWithMessage("鎻愪氦鎴愬姛", c) + return + } + data, err := service.NewPurchaseService().GetPurchase(id) if err != nil { global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) response.FailWithMessage("鑾峰彇澶辫触", c) return } - productList, err := service.NewPurchaseService().GetPurchaseProductList(uint(id)) + productList, err := service.NewPurchaseService().GetPurchaseProductList(id) if err != nil { global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) response.FailWithMessage("鑾峰彇澶辫触", c) @@ -461,7 +494,7 @@ ppc.SurplusReceiveAmount = products.Amount list = append(list, &ppc) } - err = service.NewPurchaseService().SavePurchaseProductConfirm(list) + err = service.NewPurchaseService().SavePurchaseProductConfirm(list, true) if err != nil { global.GVA_LOG.Error("鎻愪氦澶辫触!", zap.Error(err)) @@ -519,14 +552,14 @@ } server := service.NewPurchaseService() - err = server.SavePurchaseProductConfirm(list) + err = server.SavePurchaseProductConfirm(list, false) if err != nil { global.GVA_LOG.Error("淇濆瓨澶辫触!", zap.Error(err)) response.FailWithMessage("淇濆瓨澶辫触", c) return } - err = server.SavePurchaseQualityInspection(list) + _, err = server.SavePurchaseQualityInspection(list) if err != nil { global.GVA_LOG.Error("淇濆瓨澶辫触!", zap.Error(err)) response.FailWithMessage("淇濆瓨澶辫触", c) @@ -585,6 +618,12 @@ return } server := service.PurchaseService{} + purchaseData, err := server.GetPurchase(params.PurchaseId) + if err != nil { + global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) + response.FailWithMessage("鑾峰彇澶辫触", c) + return + } if params.Status == purchase.Unqualified { err := server.UpdatePurchaseQualityInspection(params.Ids, params.Status) if err != nil { @@ -593,12 +632,6 @@ return } } else if params.Status == purchase.InWarehouse { - purchaseData, err := server.GetPurchase(params.PurchaseId) - if err != nil { - global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) - response.FailWithMessage("鑾峰彇澶辫触", c) - return - } inspectionList, err := server.GetPurchaseQualityInspectionList(params.Ids) if err != nil { global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) @@ -614,12 +647,13 @@ } client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn) _, err = client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{ - Number: purchaseData.Number, - SupplierName: purchaseData.Supplier.Name, - SupplierId: int64(purchaseData.SupplierId), - Product: product, - Source: "SRM_PURCHASE", - WarehouseName: purchaseData.Warehouse, + Number: purchaseData.Number, + SupplierName: purchaseData.Supplier.Name, + SupplierId: int64(purchaseData.SupplierId), + Product: product, + Source: "SRM_PURCHASE", + WarehouseName: purchaseData.Warehouse, + OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, }) if err != nil { global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) @@ -633,7 +667,7 @@ return } } - err = server.UpdatePurchaseStatus(params.PurchaseId, purchase.WaitInspection) + err = server.UpdatePurchaseStatus(purchaseData.Number, purchase.WaitInspection) if err != nil { global.GVA_LOG.Error("鐘舵�佹洿鏂板け璐�!", zap.Error(err)) response.FailWithMessage("鐘舵�佹洿鏂板け璐�", c) @@ -641,3 +675,79 @@ } response.OkWithMessage("璐ㄦ鎴愬姛", c) } + +// AllProductInWarehouse +// @Tags Purchase +// @Summary 鍏ㄩ儴鍚堟牸鍏ュ簱 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body purchaserequest.PurchaseProductConfirmInfo true "鍙傛暟" +// @Success 200 {object} response.Response{} "鑾峰彇纭淇℃伅" +// @Router /purchase/allProductInWarehouse [post] +func (e *PurchaseApi) AllProductInWarehouse(c *gin.Context) { + var params []*purchaserequest.PurchaseProductConfirmInfo + err := c.ShouldBindJSON(¶ms) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + list := make([]*purchase.PurchaseProductConfirm, 0, len(params)) + if err := utils.AssignTo(params, &list); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + server := service.NewPurchaseService() + err = server.SavePurchaseProductConfirm(list, false) + + if err != nil { + global.GVA_LOG.Error("淇濆瓨澶辫触!", zap.Error(err)) + response.FailWithMessage("淇濆瓨澶辫触", c) + return + } + inspectionList, err := server.SavePurchaseQualityInspection(list) + if err != nil { + global.GVA_LOG.Error("淇濆瓨澶辫触!", zap.Error(err)) + response.FailWithMessage("淇濆瓨澶辫触", c) + return + } + purchaseData, err := server.GetPurchaseByNumber(list[0].PurchaseNumber) + if err != nil { + global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) + response.FailWithMessage("鑾峰彇澶辫触", c) + return + } + product := make([]*purchase_wms.PurchaseProduct, 0) + ids := make([]int, 0) + for _, inspection := range inspectionList { + var p purchase_wms.PurchaseProduct + p.Id = inspection.ProductId + p.Amount = inspection.Amount.IntPart() + product = append(product, &p) + ids = append(ids, int(inspection.ID)) + } + client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn) + _, err = client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{ + Number: purchaseData.Number, + SupplierName: purchaseData.Supplier.Name, + SupplierId: int64(purchaseData.SupplierId), + Product: product, + Source: "SRM_PURCHASE", + WarehouseName: purchaseData.Warehouse, + OperationSource: purchase_wms.OperationSource_OperationSourcePurchase, + }) + if err != nil { + global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err)) + response.FailWithMessage("grpc璋冪敤澶辫触", c) + return + } + err = server.UpdatePurchaseQualityInspection(ids, purchase.InWarehouse) + if err != nil { + global.GVA_LOG.Error("璐ㄦ澶辫触!", zap.Error(err)) + response.FailWithMessage("璐ㄦ澶辫触", c) + return + } + response.OkWithMessage("璐ㄦ鎴愬姛", c) +} -- Gitblit v1.8.0