From d20acf38c36c11ee4428c3e74a17f5870dc61b51 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期四, 16 十一月 2023 09:51:00 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/SRM

---
 api/v1/purchase/purchase.go |   61 ++++++++++++++++++++++++------
 1 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index 67aec20..c037be0 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -1,9 +1,9 @@
 package purchase
 
 import (
+	"context"
 	"fmt"
 	"github.com/gin-gonic/gin"
-	"github.com/mitchellh/mapstructure"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
 	"srm/global"
@@ -11,6 +11,7 @@
 	"srm/model/common/response"
 	"srm/model/purchase"
 	purchaserequest "srm/model/purchase/request"
+	"srm/proto/purchase_wms"
 	"strconv"
 	"strings"
 	"time"
@@ -44,7 +45,7 @@
 	}
 
 	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
@@ -56,6 +57,7 @@
 	purchaseRecord.Creator = "admin"
 	purchaseRecord.Number = fmt.Sprintf("CG%v", time.Now().Unix())
 	purchaseRecord.Principal = "admin"
+	purchaseRecord.OrderType = "閲囪喘璁㈠崟"
 
 	if !purchaseRecord.WholeDiscountType.IsValid(purchaseRecord.TotalPrice, purchaseRecord.WholeDiscount) {
 		response.FailWithMessage("鏁村崟鎶樻墸鏁板�间笉姝g‘", c)
@@ -75,7 +77,7 @@
 			return
 		}
 		global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err))
-		response.FailWithMessage("鍒涘缓澶辫触", c)
+		response.FailWithMessage(err.Error(), c)
 		return
 	}
 	response.OkWithMessage("鍒涘缓鎴愬姛", c)
@@ -123,7 +125,7 @@
 	}
 
 	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
 	}
@@ -167,7 +169,7 @@
 		return
 	}
 	respProductList := make([]*purchaseRes.PurchaseProducts, len(productList))
-	err = mapstructure.Decode(productList, &respProductList)
+	err = utils.AssignTo(productList, &respProductList)
 	if err != nil {
 		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
 		response.FailWithMessage("鑾峰彇澶辫触", c)
@@ -177,7 +179,7 @@
 		respProductList[k].Amount = item.Amount
 		respProductList[k].Price = item.Price
 		respProductList[k].Total = item.Total
-		err = mapstructure.Decode(item.Product, &respProductList[k])
+		err = utils.AssignTo(item.Product, &respProductList[k])
 		if err != nil {
 			global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
 			response.FailWithMessage("鑾峰彇澶辫触", c)
@@ -231,14 +233,49 @@
 // @Produce   application/json
 // @Param		id	path		int	true	"閲囪喘鍗旾D"
 // @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(&params)
+	if err != nil {
+		global.GVA_LOG.Error("Submit failed", zap.Error(err))
+		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	err := service.NewPurchaseService().Submit(uint(id))
+	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)
+		_, err = client.PurchaseToWms(context.Background(), &purchase_wms.PurchaseToWmsRequest{
+			Number:       data.Number,
+			SupplierName: data.Supplier.Name,
+			Product:      product,
+		})
+		if err != nil {
+			global.GVA_LOG.Error("grpc璋冪敤澶辫触!", zap.Error(err))
+			response.FailWithMessage("grpc璋冪敤澶辫触", c)
+			return
+		}
+	}
+
+	err = service.NewPurchaseService().Submit(params.Id, params.Status)
 	if err != nil {
 		global.GVA_LOG.Error("鏇存柊澶辫触!", zap.Error(err))
 		response.FailWithMessage("鏇存柊澶辫触", c)
@@ -265,7 +302,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
 	}

--
Gitblit v1.8.0