From 69f0410081da54e6cea8a04a07fd0119a8edc623 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期六, 30 三月 2024 11:38:42 +0800
Subject: [PATCH] 采购单修改
---
api/v1/purchase/purchase.go | 577 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 558 insertions(+), 19 deletions(-)
diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index 1d220d6..b81fe5a 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -1,18 +1,18 @@
package purchase
import (
+ "context"
"github.com/gin-gonic/gin"
- "github.com/mitchellh/mapstructure"
+ "github.com/shopspring/decimal"
"go.uber.org/zap"
"gorm.io/gorm"
"srm/global"
- "srm/model/common/request"
"srm/model/common/response"
"srm/model/purchase"
purchaserequest "srm/model/purchase/request"
+ "srm/proto/purchase_wms"
"strconv"
"strings"
-
//"srm/model/purchase"
//"srm/model/purchase"
@@ -29,24 +29,41 @@
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
-// @Param data body purchaserequest.AddPurchase true "閲囪喘鍗曠敤鎴峰悕, 閲囪喘鍗曟墜鏈哄彿鐮�"
+// @Param data body purchaserequest.AddPurchase true "閲囪喘鍗�,閲囪喘鍗曚骇鍝�"
// @Success 200 {object} response.Response{msg=string} "鍒涘缓閲囪喘鍗�"
// @Router /purchase/purchase [post]
func (e *PurchaseApi) CreatePurchase(c *gin.Context) {
var params purchaserequest.AddPurchase
err := c.ShouldBindJSON(¶ms)
if err != nil {
+ global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
response.FailWithMessage(err.Error(), c)
return
}
var purchaseRecord purchase.Purchase
- if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
+ if err := utils.AssignTo(params.Purchase, &purchaseRecord); err != nil {
+ global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
response.FailWithMessage(err.Error(), c)
return
}
purchaseRecord.ID = 0
+ purchaseRecord.Status = purchase.OrderStatusConfirmed
+ purchaseRecord.HandledBy = "admin"
+ purchaseRecord.Creator = "admin"
+ purchaseRecord.OrderType = "閲囪喘璁㈠崟"
+
+ if !purchaseRecord.WholeDiscountType.IsValid(purchaseRecord.TotalPrice, purchaseRecord.WholeDiscount) {
+ response.FailWithMessage("鏁村崟鎶樻墸鏁板�间笉姝g‘", c)
+ return
+ }
+
+ if !purchaseRecord.PriceAdjustmentType.IsValid(purchaseRecord.TotalPrice, purchaseRecord.PriceAdjustment) {
+ response.FailWithMessage("浠锋牸璋冩暣鏁板�间笉姝g‘", c)
+ return
+ }
+
err = service.NewPurchaseService().CreatePurchase(&purchaseRecord, params.ProductList)
if err != nil {
@@ -55,7 +72,7 @@
return
}
global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err))
- response.FailWithMessage("鍒涘缓澶辫触", c)
+ response.FailWithMessage(err.Error(), c)
return
}
response.OkWithMessage("鍒涘缓鎴愬姛", c)
@@ -103,11 +120,13 @@
}
var purchaseRecord purchase.Purchase
- if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
+ if err := utils.AssignTo(params.Purchase, &purchaseRecord); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
+ purchaseRecord.HandledBy = "admin"
+ purchaseRecord.Creator = "admin"
err = service.NewPurchaseService().UpdatePurchase(&purchaseRecord, params.ProductList)
if err != nil {
global.GVA_LOG.Error("鏇存柊澶辫触!", zap.Error(err))
@@ -144,7 +163,26 @@
response.FailWithMessage("鑾峰彇澶辫触", c)
return
}
- response.OkWithDetailed(purchaseRes.PurchaseResponse{Purchase: data, ProductList: productList}, "鑾峰彇鎴愬姛", c)
+ respProductList := make([]*purchaseRes.PurchaseProducts, len(productList))
+ err = utils.AssignTo(productList, &respProductList)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ for k, item := range productList {
+ respProductList[k].Amount = item.Amount
+ respProductList[k].Price = item.Price
+ respProductList[k].Total = item.Total
+ err = utils.AssignTo(item.Product, &respProductList[k])
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ }
+
+ response.OkWithDetailed(purchaseRes.PurchaseResponse{Purchase: data, ProductList: respProductList}, "鑾峰彇鎴愬姛", c)
}
// GetPurchaseList
@@ -153,11 +191,11 @@
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
-// @Param data query request.PageInfo true "椤电爜, 姣忛〉澶у皬"
+// @Param data query purchaserequest.PurchaseSearch true "鍙傛暟"
// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "鍒嗛〉鑾峰彇閲囪喘鍗曞垪琛�,杩斿洖鍖呮嫭鍒楄〃,鎬绘暟,椤电爜,姣忛〉鏁伴噺"
// @Router /purchase/purchaseList [get]
func (e *PurchaseApi) GetPurchaseList(c *gin.Context) {
- var pageInfo request.PageInfo
+ var pageInfo purchaserequest.PurchaseSearch
err := c.ShouldBindQuery(&pageInfo)
if err != nil {
response.FailWithMessage(err.Error(), c)
@@ -168,14 +206,14 @@
response.FailWithMessage(err.Error(), c)
return
}
- PurchaseList, total, err := service.NewPurchaseService().GetPurchaseList(pageInfo)
+ purchaseList, total, err := service.NewPurchaseService().GetPurchaseList(pageInfo)
if err != nil {
global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
response.FailWithMessage("鑾峰彇澶辫触"+err.Error(), c)
return
}
response.OkWithDetailed(response.PageResult{
- List: PurchaseList,
+ List: purchaseList,
Total: total,
Page: pageInfo.Page,
PageSize: pageInfo.PageSize,
@@ -188,16 +226,55 @@
// @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/{id} [post]
+// @Router /purchase/submit [post]
func (e *PurchaseApi) Submit(c *gin.Context) {
- id, _ := strconv.Atoi(c.Param("id"))
- if id == 0 {
- response.FailWithMessage("鍙傛暟缂哄け", c)
+ 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
}
- err := service.NewPurchaseService().Submit(uint(id))
+ warehouse := ""
+ if params.Status == purchase.OrderStatusReceived {
+ data, err := service.NewPurchaseService().GetPurchase(uint(params.Id))
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ productList, err := service.NewPurchaseService().GetPurchaseProductList(uint(params.Id))
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ product := make([]*purchase_wms.PurchaseProduct, 0)
+ for _, products := range productList {
+ var p purchase_wms.PurchaseProduct
+ p.Id = products.Product.Number
+ p.Amount = products.Amount.IntPart()
+ product = append(product, &p)
+ }
+ 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",
+ OperationSource: purchase_wms.OperationSource_OperationSourcePurchase,
+ })
+ if err != nil {
+ global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err))
+ response.FailWithMessage("grpc璋冪敤澶辫触", c)
+ return
+ }
+ warehouse = resp.Warehouse
+ }
+
+ err = service.NewPurchaseService().Submit(params.Id, params.Status, warehouse)
if err != nil {
global.GVA_LOG.Error("鏇存柊澶辫触!", zap.Error(err))
response.FailWithMessage("鏇存柊澶辫触", c)
@@ -224,7 +301,7 @@
}
purchaseTypeList := make([]*purchase.PurchaseType, 0, len(params))
- if err := mapstructure.Decode(params, &purchaseTypeList); err != nil {
+ if err := utils.AssignTo(params, &purchaseTypeList); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
@@ -256,3 +333,465 @@
}
response.OkWithDetailed(list, "鑾峰彇鎴愬姛", c)
}
+
+// GetWarehouseInfo
+// @Tags Purchase
+// @Summary 鑾峰彇浠撳簱鍒楄〃
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Success 200 {object} response.Response{data=[]purchase_wms.SrmGetWarehouseInfoResponse} "鑾峰彇閲囪喘绫诲瀷鍒楄〃"
+// @Router /purchase/getWarehouseInfo [get]
+func (e *PurchaseApi) GetWarehouseInfo(c *gin.Context) {
+ client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
+ info, err := client.SrmGetWarehouseInfo(context.Background(), &purchase_wms.SrmGetWarehouseInfoRequest{})
+ if err != nil {
+ global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err))
+ response.FailWithMessage("grpc璋冪敤澶辫触", c)
+ return
+ }
+ response.OkWithData(info, c)
+}
+
+// GetOperationInfo
+// @Tags Purchase
+// @Summary 鑾峰彇鎿嶄綔淇℃伅
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Success 200 {object} response.Response{data=[]purchaseRes.OperationInfo} "鑾峰彇鎿嶄綔淇℃伅"
+// @Router /purchase/getOperationInfo/{id} [get]
+func (e *PurchaseApi) GetOperationInfo(c *gin.Context) {
+ id, _ := strconv.Atoi(c.Param("id"))
+ if id == 0 {
+ response.FailWithMessage("鍙傛暟缂哄け", c)
+ return
+ }
+ server := service.NewPurchaseService()
+ data, err := server.GetPurchase(uint(id))
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ productList, err := server.GetPurchaseProductList(uint(id))
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ confirmInfo, err := server.GetPurchaseProductConfirmInfo(data.Number)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ client := purchase_wms.NewPurchaseServiceClient(purchase_wms.PurchaseConn)
+ info, err := client.SrmGetOperationInfo(context.Background(), &purchase_wms.SrmGetOperationInfoRequest{Number: data.Number})
+ if err != nil {
+ global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err))
+ response.FailWithMessage("grpc璋冪敤澶辫触", c)
+ return
+ }
+
+ var operationInfos purchaseRes.OperationInfo
+ productInfos := make([]purchaseRes.ProductInfo, 0)
+ inWarehouseInfos := make([]purchaseRes.InWarehouseInfo, 0)
+ productMap := make(map[string]*purchaseRes.ProductInfo)
+ if len(info.Operations) > 0 {
+ for _, operation := range info.Operations {
+ var pi purchaseRes.ProductInfo
+ var iwi purchaseRes.InWarehouseInfo
+ if p, ok := productMap[operation.ProductId]; ok {
+ pi = *p
+ }
+ pi.Number = operation.ProductId
+ pi.Name = operation.ProductName
+ iwi.Number = operation.ProductId
+ iwi.Name = operation.ProductName
+ iwi.OperationNumber = operation.Number
+ iwi.Status = operation.Status
+ iwi.Principal = data.Principal
+ iwi.WarehouseName = data.Warehouse
+ if operation.OverTime != "" {
+ iwi.OverTime = operation.OverTime
+ iwi.OverAmount = operation.Amount
+ pi.OverAmount = pi.OverAmount + operation.Amount
+ }
+ for _, products := range productList {
+ if products.Product.Number == operation.ProductId {
+ pi.Amount = products.Amount
+ pi.PurchasePrice = products.Price
+ pi.Total = products.Total
+ pi.Unit = products.Product.Unit
+ pi.Specifications = products.Product.Specifications
+ pi.ModelNumber = products.Product.ModelNumber
+ break
+ }
+ }
+ for _, confirm := range confirmInfo {
+ if operation.ProductId == confirm.ProductId {
+ pi.SendAmount = confirm.OverReceiveAmount.IntPart()
+ break
+ }
+ }
+ inWarehouseInfos = append(inWarehouseInfos, iwi)
+ productMap[operation.ProductId] = &pi
+ }
+ } else {
+ for _, products := range productList {
+ var pi purchaseRes.ProductInfo
+ pi.Number = products.Product.Number
+ pi.Name = products.Product.Name
+ pi.Amount = products.Amount
+ pi.PurchasePrice = products.Price
+ pi.Total = products.Total
+ pi.Unit = products.Product.Unit
+ pi.Specifications = products.Product.Specifications
+ pi.ModelNumber = products.Product.ModelNumber
+ for _, confirm := range confirmInfo {
+ if products.Product.Number == confirm.ProductId {
+ pi.SendAmount = confirm.OverReceiveAmount.IntPart()
+ break
+ }
+ }
+ productMap[pi.Number] = &pi
+ }
+ }
+ for _, productInfo := range productMap {
+ productInfos = append(productInfos, *productInfo)
+ }
+ operationInfos.InWarehouseInfos = inWarehouseInfos
+ operationInfos.ProductInfos = productInfos
+
+ response.OkWithData(operationInfos, c)
+}
+
+// NewSubmit
+// @Tags Purchase
+// @Summary 鏂扮増鎻愪氦
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body purchaserequest.SubmitPurchase true "鍙傛暟"
+// @Success 200 {object} response.Response{msg=string} "鏂扮増鎻愪氦"
+// @Router /purchase/newSubmit [post]
+func (e *PurchaseApi) NewSubmit(c *gin.Context) {
+ 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
+ }
+ 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(id)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ list := make([]*purchase.PurchaseProductConfirm, 0)
+ for _, products := range productList {
+ var ppc purchase.PurchaseProductConfirm
+ ppc.PurchaseNumber = data.Number
+ ppc.Principal = data.Principal
+ ppc.ProductId = products.Product.Number
+ ppc.ProductName = products.Product.Name
+ ppc.Unit = products.Product.Unit
+ ppc.Specs = products.Product.Specifications
+ ppc.Type = products.Product.ModelNumber
+ ppc.Amount = products.Amount
+ ppc.OverReceiveAmount = decimal.NewFromInt(0)
+ ppc.NotReceiveAmount = products.Amount
+ ppc.NowReceiveAmount = decimal.NewFromInt(0)
+ ppc.SurplusReceiveAmount = products.Amount
+ list = append(list, &ppc)
+ }
+ err = service.NewPurchaseService().SavePurchaseProductConfirm(list, true)
+
+ if err != nil {
+ global.GVA_LOG.Error("鎻愪氦澶辫触!", zap.Error(err))
+ response.FailWithMessage("鎻愪氦澶辫触", c)
+ return
+ }
+ response.OkWithMessage("鎻愪氦鎴愬姛", c)
+}
+
+// GetPurchaseProductConfirmInfo
+// @Tags Purchase
+// @Summary 鑾峰彇纭淇℃伅
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param number path string true "閲囪喘鍗曠紪鐮�"
+// @Success 200 {object} response.Response{data=[]purchase.PurchaseProductConfirm} "鑾峰彇纭淇℃伅"
+// @Router /purchase/getPurchaseProductConfirmInfo/{number} [get]
+func (e *PurchaseApi) GetPurchaseProductConfirmInfo(c *gin.Context) {
+ number := c.Param("number")
+ if number == "" {
+ response.FailWithMessage("鍙傛暟缂哄け", c)
+ return
+ }
+ info, err := service.NewPurchaseService().GetPurchaseProductConfirmInfo(number)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇纭淇℃伅澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇纭淇℃伅澶辫触", c)
+ return
+ }
+ response.OkWithData(info, c)
+}
+
+// SavePurchaseProductConfirm
+// @Tags Purchase
+// @Summary 纭鏀惰揣
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body []purchaserequest.PurchaseProductConfirmInfo true "list"
+// @Success 200 {object} response.Response{msg=string} "纭鏀惰揣"
+// @Router /purchase/savePurchaseProductConfirm [post]
+func (e *PurchaseApi) SavePurchaseProductConfirm(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
+ }
+ _, err = server.SavePurchaseQualityInspection(list)
+ if err != nil {
+ global.GVA_LOG.Error("淇濆瓨澶辫触!", zap.Error(err))
+ response.FailWithMessage("淇濆瓨澶辫触", c)
+ return
+ }
+ response.OkWithMessage("淇濆瓨鎴愬姛", c)
+}
+
+// GetPurchaseQualityInspectionInfo
+// @Tags Purchase
+// @Summary 鑾峰彇閲囪喘璐ㄦ淇℃伅淇℃伅
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body purchaserequest.GetQualityInspectionInfo true "鍙傛暟"
+// @Success 200 {object} response.Response{data=[]purchase.PurchaseProductConfirm} "鑾峰彇纭淇℃伅"
+// @Router /purchase/getPurchaseQualityInspectionInfo [post]
+func (e *PurchaseApi) GetPurchaseQualityInspectionInfo(c *gin.Context) {
+ var params purchaserequest.GetQualityInspectionInfo
+ err := c.ShouldBindJSON(¶ms)
+ if err != nil {
+ response.FailWithMessage(err.Error(), c)
+ return
+ }
+ if params.PurchaseNumber == "" {
+ response.FailWithMessage("閲囪喘鍗曠紪鐮佷笉鑳戒负绌�", c)
+ return
+ }
+ infos, err := service.NewPurchaseService().GetPurchaseQualityInspection(params)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇閲囪喘璐ㄦ淇℃伅淇℃伅!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇閲囪喘璐ㄦ淇℃伅淇℃伅", c)
+ return
+ }
+ response.OkWithData(infos, c)
+}
+
+// SavePurchaseQualityInspectionInfo
+// @Tags Purchase
+// @Summary 淇濆瓨閲囪喘璐ㄦ淇℃伅淇℃伅
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body purchaserequest.SaveQualityInspectionInfo true "鍙傛暟"
+// @Success 200 {object} response.Response{data=[]purchase.PurchaseProductConfirm} "鑾峰彇纭淇℃伅"
+// @Router /purchase/savePurchaseQualityInspectionInfo [post]
+func (e *PurchaseApi) SavePurchaseQualityInspectionInfo(c *gin.Context) {
+ var params purchaserequest.SaveQualityInspectionInfo
+ err := c.ShouldBindJSON(¶ms)
+ if err != nil {
+ response.FailWithMessage(err.Error(), c)
+ return
+ }
+ if params.PurchaseId == 0 || len(params.Ids) == 0 {
+ response.FailWithMessage("閲囪喘鍗曠紪鐮佸拰id涓嶈兘涓虹┖", c)
+ 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 {
+ global.GVA_LOG.Error("璐ㄦ澶辫触!", zap.Error(err))
+ response.FailWithMessage("璐ㄦ澶辫触", c)
+ return
+ }
+ } else if params.Status == purchase.InWarehouse {
+ inspectionList, err := server.GetPurchaseQualityInspectionList(params.Ids)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ product := make([]*purchase_wms.PurchaseProduct, 0)
+ for _, inspection := range inspectionList {
+ var p purchase_wms.PurchaseProduct
+ p.Id = inspection.ProductId
+ p.Amount = inspection.Amount.IntPart()
+ product = append(product, &p)
+ }
+ 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(params.Ids, params.Status)
+ if err != nil {
+ global.GVA_LOG.Error("璐ㄦ澶辫触!", zap.Error(err))
+ response.FailWithMessage("璐ㄦ澶辫触", c)
+ return
+ }
+ }
+ err = server.UpdatePurchaseStatus(purchaseData.Number, purchase.WaitInspection)
+ if err != nil {
+ global.GVA_LOG.Error("鐘舵�佹洿鏂板け璐�!", zap.Error(err))
+ response.FailWithMessage("鐘舵�佹洿鏂板け璐�", c)
+ return
+ }
+ 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)
+ productMap := make(map[string]int64)
+ for _, inspection := range inspectionList {
+ productMap[inspection.ProductId] = inspection.Amount.IntPart()
+ ids = append(ids, int(inspection.ID))
+ }
+ for k, v := range productMap {
+ var p purchase_wms.PurchaseProduct
+ p.Id = k
+ p.Amount = v
+ product = append(product, &p)
+ }
+ 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
+ }
+ err = server.UpdatePurchaseStatus(purchaseData.Number, purchase.WaitInspection)
+ if err != nil {
+ global.GVA_LOG.Error("璐ㄦ澶辫触!", zap.Error(err))
+ response.FailWithMessage("璐ㄦ澶辫触", c)
+ return
+ }
+ response.OkWithMessage("璐ㄦ鎴愬姛", c)
+}
--
Gitblit v1.8.0