From 0fd3231799d9185af352dcbc4f8e14df5e0f0233 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期五, 22 三月 2024 10:53:38 +0800
Subject: [PATCH] 采购单到货与质检信息操作

---
 api/v1/purchase/purchase.go |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index c847f43..316a704 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
 	"srm/global"
@@ -415,3 +416,223 @@
 	}
 	response.OkWithData(operationInfos, c)
 }
+
+// NewSubmit
+// @Tags      Purchase
+// @Summary   鏂扮増鎻愪氦
+// @Security  ApiKeyAuth
+// @accept    application/json
+// @Produce   application/json
+// @Param		id	path		int	true	"閲囪喘鍗旾D"                                           true  "閲囪喘鍗旾D"
+// @Success   200   {object}  response.Response{msg=string}  "鏂扮増鎻愪氦"
+// @Router    /purchase/newSubmit/{id} [get]
+func (e *PurchaseApi) NewSubmit(c *gin.Context) {
+	id, _ := strconv.Atoi(c.Param("id"))
+	if id == 0 {
+		response.FailWithMessage("鍙傛暟缂哄け", c)
+		return
+	}
+	data, err := service.NewPurchaseService().GetPurchase(uint(id))
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+		return
+	}
+	productList, err := service.NewPurchaseService().GetPurchaseProductList(uint(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)
+
+	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(&params)
+	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)
+
+	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(&params)
+	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.GetQualityInspectionInfo   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(&params)
+	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{}
+	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 {
+		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))
+			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,
+		})
+		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
+		}
+	}
+
+	response.OkWithMessage("璐ㄦ鎴愬姛", c)
+}

--
Gitblit v1.8.0