From cb660c4be22610730966db2a4a36c3a7c008b579 Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期三, 27 九月 2023 17:23:01 +0800
Subject: [PATCH] 1.二期一部分代码

---
 controllers/product_controller.go      |   30 +++++
 models/location_product_amount.go      |    1 
 request/location_product_amount.go     |    1 
 request/product_request.go             |    6 +
 docs/swagger.yaml                      |   39 ++++++
 docs/docs.go                           |   64 ++++++++++
 docs/swagger.json                      |   64 ++++++++++
 controllers/location_product_amount.go |   96 +++++++++++++++
 router/router.go                       |    2 
 9 files changed, 298 insertions(+), 5 deletions(-)

diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go
index 5e0b383..c2c1c16 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -48,7 +48,8 @@
 					wms_location_product_amount.amount,
 					material.unit,
 					wms_location_product_amount.create_date,
-					wms_operation_details.amount as adjust_amount`).
+					wms_operation_details.amount as adjust_amount,
+					wms_operation.id as operation_id`).
 		InnerJoins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").
 		InnerJoins("inner join wms_location on wms_location.id=wms_location_product.location_id").
 		InnerJoins("inner join wms_operation_details on wms_operation_details.product_id=wms_location_product.product_id").
@@ -125,11 +126,12 @@
 		util.ResponseFormat(c, code.RequestParamError, err.Error())
 		return
 	}
-	reqParams.AdjustAmount = reqParams.Amount.Sub(reqParams.DifferenceAmount)
-	//reqParams.AdjustAmount = reqParams.DifferenceAmount.Sub(reqParams.Amount)
+	//reqParams.AdjustAmount = reqParams.Amount.Sub(reqParams.DifferenceAmount)
+	reqParams.AdjustAmount = reqParams.DifferenceAmount.Sub(reqParams.Amount)
 	locAmount := models.LocationProductAmount{
 		LocationProductId: locProduct.Id,
 		Amount:            decimal.NewFromInt(0),
+		CreateDate:        time.Now().Format("2006-01-02 15:04:05"),
 	}
 	detail := &models.OperationDetails{
 		ProductId: reqParams.ProductId,
@@ -142,8 +144,8 @@
 		Comment:           "搴撳瓨鐩樼偣",
 		BaseOperationType: constvar.BaseOperationTypeAdjust,
 		Details:           []*models.OperationDetails{detail},
-		FromLocationID:    reqParams.LocationId,
-		ToLocationID:      location.Id,
+		FromLocationID:    location.Id,
+		ToLocationID:      reqParams.LocationId,
 	}
 
 	//if reqParams.AdjustAmount.GreaterThanOrEqual(decimal.NewFromInt(0)) {
@@ -169,3 +171,87 @@
 
 	util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
 }
+
+// Add
+// @Tags      搴撳瓨鐩樼偣
+// @Summary   淇敼搴撳瓨鐩樼偣淇℃伅
+// @Produce   application/json
+// @Param     object  body  request.UpdateLocationProductAmount true  "鍏ュ簱/鍑哄簱淇℃伅"
+// @Success   200 {object} util.Response "鎴愬姛"
+// @Router    /api-wms/v1/locationProductAmount/update [post]
+//func (slf LocationProductAmountController) Update(c *gin.Context) {
+//	var reqParams request.UpdateLocationProductAmount
+//	if err := c.BindJSON(&reqParams); err != nil {
+//		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+//		return
+//	}
+//
+//	var existCount int64
+//	if err := models.NewOperationSearch().Orm.Table("wms_operation").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation.from_location_id=? and wms_operation_details.product_id=? and wms_operation.base_operation_type=? and wms_operation.status=?", reqParams.LocationId, reqParams.ProductId, constvar.BaseOperationTypeAdjust, constvar.OperationStatus_Ready).Count(&existCount).Error; err != nil {
+//		util.ResponseFormat(c, code.RequestParamError, err.Error())
+//		return
+//	}
+//	if existCount > 0 {
+//		util.ResponseFormat(c, code.RequestError, "璇ュ晢鍝佸湪宸查�変腑鐨勪綅缃瓨鍦ㄦ湭楠岃瘉鐨勫簱瀛樼洏鐐逛俊鎭紝鏃犳硶缁х画娣诲姞鐩稿叧淇℃伅")
+//		return
+//	}
+//
+//	locProduct, err := models.NewLocationProductSearch().SetLocationId(reqParams.LocationId).SetProductId(reqParams.ProductId).First()
+//	if err != nil {
+//		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父锛屾湭鎵惧埌璇ヤ笂鏋惰鍒�")
+//		return
+//	}
+//	if locProduct.Id == 0 {
+//		util.ResponseFormat(c, code.RequestError, "涓嶅瓨鍦ㄨ涓婃灦瑙勫垯锛屾棤娉曡繘琛屽簱瀛樼洏鐐�")
+//		return
+//	}
+//	location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeAdjust)).First()
+//	if err != nil {
+//		util.ResponseFormat(c, code.RequestParamError, err.Error())
+//		return
+//	}
+//	//reqParams.AdjustAmount = reqParams.Amount.Sub(reqParams.DifferenceAmount)
+//	reqParams.AdjustAmount = reqParams.DifferenceAmount.Sub(reqParams.Amount)
+//	locAmount := models.LocationProductAmount{
+//		LocationProductId: locProduct.Id,
+//		Amount:            decimal.NewFromInt(0),
+//		CreateDate:        time.Now().Format("2006-01-02 15:04:05"),
+//	}
+//	detail := &models.OperationDetails{
+//		ProductId: reqParams.ProductId,
+//		Amount:    reqParams.AdjustAmount,
+//	}
+//	operation := models.Operation{
+//		Number:            strconv.FormatInt(time.Now().Unix(), 10),
+//		Status:            constvar.OperationStatus_Ready,
+//		OperationDate:     time.Now().Format("2006-01-02 15:04:05"),
+//		Comment:           "搴撳瓨鐩樼偣",
+//		BaseOperationType: constvar.BaseOperationTypeAdjust,
+//		Details:           []*models.OperationDetails{detail},
+//		FromLocationID:    location.Id,
+//		ToLocationID:      reqParams.LocationId,
+//	}
+//
+//	//if reqParams.AdjustAmount.GreaterThanOrEqual(decimal.NewFromInt(0)) {
+//	//	operation.FromLocationID = Location.Id
+//	//	operation.ToLocationID = reqParams.LocationId
+//	//} else {
+//	//	operation.FromLocationID = reqParams.LocationId
+//	//	operation.ToLocationID = Location.Id
+//	//}
+//
+//	if err := models.WithTransaction(func(tx *gorm.DB) error {
+//		if err := models.NewOperationSearch().SetOrm(tx).Create(&operation); err != nil {
+//			return err
+//		}
+//		if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&locAmount); err != nil {
+//			return err
+//		}
+//		return nil
+//	}); err != nil {
+//		util.ResponseFormat(c, code.RequestError, err.Error())
+//		return
+//	}
+//
+//	util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
+//}
diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index c1f3d00..333d2b0 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -566,3 +566,33 @@
 	}
 	util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
 }
+
+// ListHistory
+// @Tags      浜у搧
+// @Summary   浜у搧浣嶇疆鍘嗗彶淇℃伅
+// @Produce   application/json
+// @Param		 object  body  request.QueryOperationHistory true  "鏌ヨ鍙傛暟"
+// @Success   200 {object} util.ResponseList{data=[]models.Operation}	"鎴愬姛"
+// @Router    /api-wms/v1/product/listHistory [post]
+func (slf ProductController) ListHistory(c *gin.Context) {
+	var params request.QueryOperationHistory
+	if err := c.BindJSON(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error())
+		return
+	}
+	if !params.PageInfo.Check() {
+		util.ResponseFormat(c, code.RequestParamError, "椤电爜淇℃伅閿欒")
+		return
+	}
+
+	search := models.NewOperationSearch().SetPage(params.Page, params.PageSize).SetPreload(true).SetOrder("created_at desc")
+	search.SetOrm(search.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.from_location_id=? or wms_operation.to_location_id=?)", params.ProductId, params.LocationId, params.LocationId))
+
+	list, total, err := search.Find()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error())
+		return
+	}
+
+	util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize)
+}
diff --git a/docs/docs.go b/docs/docs.go
index e2104ff..d20b847 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -1324,6 +1324,51 @@
                 }
             }
         },
+        "/api-wms/v1/product/listHistory": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "浜у搧浣嶇疆鍘嗗彶淇℃伅",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.QueryOperationHistory"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.Operation"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/product/listOperaton": {
             "post": {
                 "produces": [
@@ -2855,6 +2900,25 @@
                 }
             }
         },
+        "request.QueryOperationHistory": {
+            "type": "object",
+            "properties": {
+                "locationId": {
+                    "type": "integer"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                },
+                "productId": {
+                    "type": "string"
+                }
+            }
+        },
         "request.QueryOperationList": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index ff7fbba..330c147 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -1312,6 +1312,51 @@
                 }
             }
         },
+        "/api-wms/v1/product/listHistory": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "浜у搧浣嶇疆鍘嗗彶淇℃伅",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.QueryOperationHistory"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.Operation"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/product/listOperaton": {
             "post": {
                 "produces": [
@@ -2843,6 +2888,25 @@
                 }
             }
         },
+        "request.QueryOperationHistory": {
+            "type": "object",
+            "properties": {
+                "locationId": {
+                    "type": "integer"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                },
+                "productId": {
+                    "type": "string"
+                }
+            }
+        },
         "request.QueryOperationList": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 706069c..a87ffb6 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -875,6 +875,19 @@
       sourceNumber:
         type: string
     type: object
+  request.QueryOperationHistory:
+    properties:
+      locationId:
+        type: integer
+      page:
+        description: 椤电爜
+        type: integer
+      pageSize:
+        description: 姣忛〉澶у皬
+        type: integer
+      productId:
+        type: string
+    type: object
   request.QueryOperationList:
     properties:
       page:
@@ -1890,6 +1903,32 @@
       summary: 鎶ュ簾鍒楄〃
       tags:
       - 浜у搧
+  /api-wms/v1/product/listHistory:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.QueryOperationHistory'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            allOf:
+            - $ref: '#/definitions/util.ResponseList'
+            - properties:
+                data:
+                  items:
+                    $ref: '#/definitions/models.Operation'
+                  type: array
+              type: object
+      summary: 浜у搧浣嶇疆鍘嗗彶淇℃伅
+      tags:
+      - 浜у搧
   /api-wms/v1/product/listOperaton:
     post:
       parameters:
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index c2ee64c..1f77ec0 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -38,6 +38,7 @@
 		CreateDate       string          `json:"createDate" gorm:"column:create_date"`
 		AdjustAmount     decimal.Decimal `json:"adjustAmount" gorm:"column:adjust_amount"`
 		DifferenceAmount decimal.Decimal `json:"differenceAmount" gorm:"-"`
+		OperationId      int             `json:"operationId" gorm:"column:operation_id"`
 	}
 )
 
diff --git a/request/location_product_amount.go b/request/location_product_amount.go
index 78adb84..faa7b02 100644
--- a/request/location_product_amount.go
+++ b/request/location_product_amount.go
@@ -14,4 +14,5 @@
 	LocationProductAmountId int             `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id
 	AdjustAmount            decimal.Decimal `json:"adjustAmount" `           //宸��
 	DifferenceAmount        decimal.Decimal `json:"differenceAmount"`        //璁℃暟鏁伴噺
+	OperationId             int             `json:"operationId"`             //鍑哄叆搴搃d
 }
diff --git a/request/product_request.go b/request/product_request.go
index c0e7ea7..6cdafe1 100644
--- a/request/product_request.go
+++ b/request/product_request.go
@@ -44,3 +44,9 @@
 	OperationDate     string                     `json:"operationDate"`
 	BaseOperationType constvar.BaseOperationType `json:"baseOperationType"`
 }
+
+type QueryOperationHistory struct {
+	PageInfo
+	ProductId  string `json:"productId"`
+	LocationId int    `json:"locationId"`
+}
diff --git a/router/router.go b/router/router.go
index bac5f16..5b7dfba 100644
--- a/router/router.go
+++ b/router/router.go
@@ -107,6 +107,8 @@
 		productAPI.POST("listDisuse", productController.ListDisuse)        //鏌ョ湅浜у搧鐨勫巻鍙插嚭鍏ュ簱淇℃伅
 		productAPI.PUT("finishDisuse/:id", productController.FinishDisuse) //鎶ュ簾楠岃瘉
 		productAPI.POST("updateDisuse", productController.UpdateDisuse)    //淇敼鎶ュ簾淇℃伅
+		productAPI.POST("listHistory", productController.ListHistory)      //浜у搧浣嶇疆鍘嗗彶璁板綍
+
 	}
 
 	// 涓婃灦瑙勫垯

--
Gitblit v1.8.0