From 21c3a18da3d6cc53c7695d795a41dd6bee59f243 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期六, 23 三月 2024 16:31:34 +0800
Subject: [PATCH] 采购单全部合格入库

---
 api/v1/purchase/purchase.go  |   77 ++++++++++++++++++++++++++++++++++++++
 router/purchase/purchase.go  |    1 
 service/purchase/purchase.go |   13 ++++--
 3 files changed, 86 insertions(+), 5 deletions(-)

diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index 188cdb2..ebcaad4 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -526,7 +526,7 @@
 		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)
@@ -641,3 +641,78 @@
 	}
 	response.OkWithMessage("璐ㄦ鎴愬姛", c)
 }
+
+// AllProductInWarehouse
+// @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/allProductInWarehouse [post]
+func (e *PurchaseApi) AllProductInWarehouse(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
+	}
+	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,
+	})
+	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)
+}
diff --git a/router/purchase/purchase.go b/router/purchase/purchase.go
index 740c698..f582439 100644
--- a/router/purchase/purchase.go
+++ b/router/purchase/purchase.go
@@ -24,6 +24,7 @@
 		purchaseRouter.POST("savePurchaseProductConfirm", PurchaseApi.SavePurchaseProductConfirm)               // 纭鏀惰揣
 		purchaseRouter.POST("getPurchaseQualityInspectionInfo", PurchaseApi.GetPurchaseQualityInspectionInfo)   // 鑾峰彇閲囪喘璐ㄦ淇℃伅淇℃伅
 		purchaseRouter.POST("savePurchaseQualityInspectionInfo", PurchaseApi.SavePurchaseQualityInspectionInfo) // 淇濆瓨閲囪喘璐ㄦ淇℃伅淇℃伅
+		purchaseRouter.POST("allProductInWarehouse", PurchaseApi.AllProductInWarehouse)                         // 鍏ㄩ儴鍚堟牸鍏ュ簱
 	}
 
 	qualityInspectRouter := Router.Group("purchase")
diff --git a/service/purchase/purchase.go b/service/purchase/purchase.go
index 1fbe313..045ff67 100644
--- a/service/purchase/purchase.go
+++ b/service/purchase/purchase.go
@@ -120,6 +120,11 @@
 	return
 }
 
+func (slf *PurchaseService) GetPurchaseByNumber(number string) (purchase purchase.Purchase, err error) {
+	err = global.GVA_DB.Where("number = ?", number).Preload("Supplier").First(&purchase).Error
+	return
+}
+
 //@function: GetPurchaseList
 //@description: 鍒嗛〉鑾峰彇閲囪喘鍗曞垪琛�
 //@param: info request.PageInfo
@@ -354,9 +359,9 @@
 	return list, err
 }
 
-func (slf *PurchaseService) SavePurchaseQualityInspection(list []*purchase.PurchaseProductConfirm) (err error) {
+func (slf *PurchaseService) SavePurchaseQualityInspection(list []*purchase.PurchaseProductConfirm) ([]*purchase.PurchaseQualityInspection, error) {
 	if len(list) == 0 {
-		return errors.New("浜у搧鍒楄〃涓嶈兘涓虹┖")
+		return nil, errors.New("浜у搧鍒楄〃涓嶈兘涓虹┖")
 	}
 	purchaseNumber := list[0].PurchaseNumber
 	qualityList := make([]*purchase.PurchaseQualityInspection, 0)
@@ -374,8 +379,8 @@
 		pqi.Type = confirm.Type
 		qualityList = append(qualityList, &pqi)
 	}
-	err = global.GVA_DB.Model(purchase.PurchaseQualityInspection{}).Create(qualityList).Error
-	return err
+	err := global.GVA_DB.Model(purchase.PurchaseQualityInspection{}).Create(qualityList).Error
+	return qualityList, err
 }
 
 func (slf *PurchaseService) GetPurchaseQualityInspection(params purchaserequest.GetQualityInspectionInfo) ([]*purchase.PurchaseQualityInspection, error) {

--
Gitblit v1.8.0