From cf1b4c60a7005b1dcd2f7e5c4b2ce5ec01c7501e Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期四, 28 九月 2023 10:19:00 +0800
Subject: [PATCH] 1.库存盘点修改、验证
---
models/material.go | 10 ++
request/location_product_amount.go | 6 +
docs/swagger.yaml | 31 +++++++
docs/docs.go | 47 +++++++++++
docs/swagger.json | 47 +++++++++++
controllers/location_product_amount.go | 61 +++++++++++++++
router/router.go | 1
7 files changed, 203 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, "鎿嶄綔鎴愬姛")
+}
diff --git a/docs/docs.go b/docs/docs.go
index 4f78bf4..ce8cdb9 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -750,6 +750,36 @@
}
}
},
+ "/api-wms/v1/locationProductAmount/finish": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "搴撳瓨鐩樼偣"
+ ],
+ "summary": "搴旂敤銆侀獙璇�",
+ "parameters": [
+ {
+ "description": "鍏ュ弬",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.FinishLocationProductAmount"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
"/api-wms/v1/locationProductAmount/list": {
"post": {
"produces": [
@@ -2956,6 +2986,23 @@
}
}
},
+ "request.FinishLocationProductAmount": {
+ "type": "object",
+ "properties": {
+ "locationProductAmountId": {
+ "description": "搴撳瓨鐩樼偣id",
+ "type": "integer"
+ },
+ "operationId": {
+ "description": "鍑哄叆搴搃d",
+ "type": "integer"
+ },
+ "productId": {
+ "description": "浜у搧id",
+ "type": "string"
+ }
+ }
+ },
"request.GetInventoryForms": {
"type": "object",
"properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 67b761c..a6dca38 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -738,6 +738,36 @@
}
}
},
+ "/api-wms/v1/locationProductAmount/finish": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "搴撳瓨鐩樼偣"
+ ],
+ "summary": "搴旂敤銆侀獙璇�",
+ "parameters": [
+ {
+ "description": "鍏ュ弬",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.FinishLocationProductAmount"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
"/api-wms/v1/locationProductAmount/list": {
"post": {
"produces": [
@@ -2944,6 +2974,23 @@
}
}
},
+ "request.FinishLocationProductAmount": {
+ "type": "object",
+ "properties": {
+ "locationProductAmountId": {
+ "description": "搴撳瓨鐩樼偣id",
+ "type": "integer"
+ },
+ "operationId": {
+ "description": "鍑哄叆搴搃d",
+ "type": "integer"
+ },
+ "productId": {
+ "description": "浜у搧id",
+ "type": "string"
+ }
+ }
+ },
"request.GetInventoryForms": {
"type": "object",
"properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index eecd6f1..fe5de96 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -799,6 +799,18 @@
required:
- code
type: object
+ request.FinishLocationProductAmount:
+ properties:
+ locationProductAmountId:
+ description: 搴撳瓨鐩樼偣id
+ type: integer
+ operationId:
+ description: 鍑哄叆搴搃d
+ type: integer
+ productId:
+ description: 浜у搧id
+ type: string
+ type: object
request.GetInventoryForms:
properties:
categoryIds:
@@ -1674,6 +1686,25 @@
summary: 娣诲姞搴撳瓨鐩樼偣淇℃伅
tags:
- 搴撳瓨鐩樼偣
+ /api-wms/v1/locationProductAmount/finish:
+ post:
+ parameters:
+ - description: 鍏ュ弬
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.FinishLocationProductAmount'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 搴旂敤銆侀獙璇�
+ tags:
+ - 搴撳瓨鐩樼偣
/api-wms/v1/locationProductAmount/list:
post:
parameters:
diff --git a/models/material.go b/models/material.go
index f22f5b9..77f3181 100644
--- a/models/material.go
+++ b/models/material.go
@@ -512,3 +512,13 @@
Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:鏁伴噺"` //鏁伴噺
Unit string `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`
}
+
+func (slf *MaterialSearch) Update(record *Material) error {
+ var db = slf.build()
+
+ if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
diff --git a/request/location_product_amount.go b/request/location_product_amount.go
index fac0745..82a7b48 100644
--- a/request/location_product_amount.go
+++ b/request/location_product_amount.go
@@ -18,3 +18,9 @@
Amount decimal.Decimal `json:"Amount"` //搴撳瓨鏁伴噺
ProductId string `json:"productId"` //浜у搧id
}
+
+type FinishLocationProductAmount struct {
+ LocationProductAmountId int `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id
+ OperationId int `json:"operationId"` //鍑哄叆搴搃d
+ ProductId string `json:"productId"` //浜у搧id
+}
diff --git a/router/router.go b/router/router.go
index 11a3378..271eb00 100644
--- a/router/router.go
+++ b/router/router.go
@@ -128,6 +128,7 @@
locationProductAmountAPI.POST("add", locationProductAmountController.Add) //娣诲姞搴撳瓨鐩樼偣淇℃伅
locationProductAmountAPI.POST("list", locationProductAmountController.List) //鏌ョ湅搴撳瓨鐩樼偣鍒楄〃
locationProductAmountAPI.POST("update", locationProductAmountController.Update) //淇敼搴撳瓨鐩樼偣淇℃伅
+ locationProductAmountAPI.POST("finish", locationProductAmountController.Finish) //搴旂敤銆侀獙璇佸簱瀛樼洏鐐逛俊鎭�
}
//鎶ヨ〃
--
Gitblit v1.8.0