From 6856a595e0523216c16c03c58110f4ce80fa88b5 Mon Sep 17 00:00:00 2001 From: jiangshuai <291802688@qq.com> Date: 星期四, 28 九月 2023 10:33:04 +0800 Subject: [PATCH] 1.合并代码 --- controllers/location_product_amount.go | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 0 deletions(-) diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go index d7594dc..0e909f3 100644 --- a/controllers/location_product_amount.go +++ b/controllers/location_product_amount.go @@ -12,6 +12,7 @@ "wms/extend/util" "wms/models" "wms/request" + "wms/response" ) type LocationProductAmountController struct { @@ -172,6 +173,32 @@ util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛") } +// GetRuleList +// @Tags 搴撳瓨鐩樼偣 +// @Summary 鑾峰彇涓婃灦瑙勫垯 +// @Produce application/json +// @Param object body request.GetRuleList true "鏌ヨ淇℃伅" +// @Success 200 {object} util.ResponseList{data=[]response.RuleList} "鎴愬姛" +// @Router /api-wms/v1/locationProductAmount/getRuleList [post] +func (slf LocationProductAmountController) GetRuleList(c *gin.Context) { + var params request.GetRuleList + if err := c.BindJSON(¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + return + } + list, err := models.NewLocationProductSearch().SetProductId(params.ProductId).SetLocationId(params.LocationId).Find() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, err.Error()) + return + } + var ruleList response.RuleList + for _, l := range list { + ruleList.LocationList = append(ruleList.LocationList, l.Location) + ruleList.ProductList = append(ruleList.ProductList, l.Product) + } + util.ResponseFormat(c, code.Success, ruleList) +} + // Add // @Tags 搴撳瓨鐩樼偣 // @Summary 淇敼搴撳瓨鐩樼偣淇℃伅 @@ -203,3 +230,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