From cf1b4c60a7005b1dcd2f7e5c4b2ce5ec01c7501e Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期四, 28 九月 2023 10:19:00 +0800
Subject: [PATCH] 1.库存盘点修改、验证

---
 controllers/location_product_amount.go |   61 ++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go
index d7594dc..2d76187 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -203,3 +203,64 @@
 
 	util.ResponseFormat(c, code.Success, "淇敼鎴愬姛")
 }
+
+// finish
+//
+//	@Tags		搴撳瓨鐩樼偣
+//	@Summary	搴旂敤銆侀獙璇�
+//	@Produce	application/json
+//	@Param		object  body  request.FinishLocationProductAmount true  "鍏ュ弬"
+//	@Success	200	{object}	util.Response	"鎴愬姛"
+//	@Router		/api-wms/v1/locationProductAmount/finish [post]
+func (slf LocationProductAmountController) Finish(c *gin.Context) {
+	var reqParams request.FinishLocationProductAmount
+	if err := c.BindJSON(&reqParams); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if reqParams.LocationProductAmountId == 0 {
+		util.ResponseFormat(c, code.RequestParamError, "locationProductAmountId涓�0")
+		return
+	}
+	if reqParams.OperationId == 0 {
+		util.ResponseFormat(c, code.RequestParamError, "operationId涓�0")
+		return
+	}
+	operationSearch := models.NewOperationSearch().SetPreload(true)
+	operationSearch.SetOrm(operationSearch.Orm.InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation_details.product_id=? and wms_operation.id=?", reqParams.ProductId, reqParams.OperationId))
+	operation, err := operationSearch.First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏈壘鍒扮浉鍏充俊鎭�:"+err.Error())
+		return
+	}
+	if operation.Status != constvar.OperationStatus_Ready {
+		util.ResponseFormat(c, code.RequestError, "璇ラ獙璇佹棤娉曞畬鎴�")
+		return
+	}
+	material, err := models.NewMaterialSearch().SetID(reqParams.ProductId).First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestError, err.Error())
+		return
+	}
+	locProdtAmount, err := models.NewLocationProductAmountSearch().SetID(reqParams.LocationProductAmountId).First()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestError, err.Error())
+		return
+	}
+	if err := models.WithTransaction(func(tx *gorm.DB) error {
+		if err := models.NewOperationSearch().SetOrm(tx).SetID(reqParams.OperationId).Update(&models.Operation{Status: constvar.OperationStatus_Finish}); err != nil {
+			return err
+		}
+		if err := models.NewMaterialSearch().SetOrm(tx).SetID(reqParams.ProductId).Update(&models.Material{Amount: material.Amount.Add(operation.Details[0].Amount)}); err != nil {
+			return err
+		}
+		if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(reqParams.LocationProductAmountId).Update(&models.LocationProductAmount{Amount: locProdtAmount.Amount.Add(operation.Details[0].Amount)}); err != nil {
+			return err
+		}
+		return nil
+	}); err != nil {
+		util.ResponseFormat(c, code.RequestError, err.Error())
+		return
+	}
+	util.ResponseFormat(c, code.Success, "鎿嶄綔鎴愬姛")
+}

--
Gitblit v1.8.0