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

---
 constvar/const.go                      |    3 
 models/location_product.go             |   18 +
 models/db.go                           |    2 
 request/location_product_amount.go     |    8 
 controllers/location_product.go        |    2 
 docs/swagger.yaml                      |  193 +++++++++++
 docs/docs.go                           |  301 +++++++++++++++++
 docs/swagger.json                      |  299 +++++++++++++++++
 controllers/location_product_amount.go |  127 +++++--
 router/router.go                       |   16 
 10 files changed, 903 insertions(+), 66 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index f92ca9a..5c6a63f 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -126,7 +126,8 @@
 	LocationTypeInventoryLoss                         // 搴撳瓨鎹熷け
 	LocationTypeProduction                            // 鐢熶骇
 	LocationTypeTransit                               // 涓浆浣嶇疆
-	LocationTypeDisuse
+	LocationTypeDisuse                                //鎶ュ簾浣嶇疆
+	LocationTypeAdjust                                //搴撳瓨鐩樼偣
 )
 
 func (t LocationType) Valid() bool {
diff --git a/controllers/location_product.go b/controllers/location_product.go
index 07d012b..f7a1dc6 100644
--- a/controllers/location_product.go
+++ b/controllers/location_product.go
@@ -89,7 +89,7 @@
 // @Tags      涓婃灦瑙勫垯
 // @Summary   淇敼涓婃灦瑙勫垯
 // @Produce   application/json
-// @Param     object  body request.UpdateLocationProduct true  "鍏ュ簱淇℃伅"
+// @Param     object  body request.UpdateLocationProduct true  "淇敼鍙傛暟"
 // @Success   200 {object} util.Response "鎴愬姛"
 // @Router    /api-wms/v1/locationProduct/update [post]
 func (slf LocationProductController) Update(c *gin.Context) {
diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go
index 701a205..c3fc1b8 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -3,6 +3,10 @@
 import (
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
+	"strconv"
+	"time"
 	"wms/constvar"
 	"wms/extend/code"
 	"wms/extend/util"
@@ -19,7 +23,7 @@
 // @Produce   application/json
 // @Param		 object  body  request.PageInfo true  "鏌ヨ鍙傛暟"
 // @Success   200 {object} util.Response	"鎴愬姛"
-// @Router    /api-wms/v1/locationProduct/list [post]
+// @Router    /api-wms/v1/locationProductamount/list [post]
 func (slf LocationProductAmountController) List(c *gin.Context) {
 	var params request.PageInfo
 	if err := c.BindJSON(&params); err != nil {
@@ -63,40 +67,87 @@
 // @Produce   application/json
 // @Param     object  body  request.AddLocationProductAmount true  "鍏ュ簱/鍑哄簱淇℃伅"
 // @Success   200 {object} util.Response "鎴愬姛"
-// @Router    /api-wms/v1/operation/operation [post]
-//func (slf LocationProductAmountController) Add(c *gin.Context) {
-//	var reqParams request.AddLocationProductAmount
-//	if err := c.BindJSON(&reqParams); err != nil {
-//		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
-//		return
-//	}
-//	if reqParams.LocationProductAmountId==0 {
-//		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父锛宭ocationProductAmountId涓�0")
-//		return
-//	}
-//	locAmount:=models.LocationProductAmount{
-//		LocationProductId: reqParams.LocationProductAmountId
-//	}
-//	operationType, err := models.NewOperationTypeSearch().SetID(uint(params.OperationTypeId)).First()
-//	if err != nil {
-//		util.ResponseFormat(c, code.RequestParamError, err.Error())
-//		return
-//	}
-//	//////
-//	if location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeCustomer)).First(); err != nil {
-//		return err
-//	} else {
-//		params.ToLocationID = location.Id
-//	}
-//
-//
-//	params.Status = constvar.OperationStatus_Ready
-//	params.Number = strconv.FormatInt(time.Now().Unix(), 10)
-//	params.BaseOperationType = operationType.BaseOperationType
-//	if err := models.NewOperationSearch().Create(&params); err != nil {
-//		logx.Errorf("Operation create err: %v", err)
-//		util.ResponseFormat(c, code.SaveFail, "娣诲姞澶辫触锛�"+err.Error())
-//		return
-//	}
-//	util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
-//}
+// @Router    /api-wms/v1/locationProductamount/add [post]
+func (slf LocationProductAmountController) Add(c *gin.Context) {
+	var reqParams request.AddLocationProductAmount
+	if err := c.BindJSON(&reqParams); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if reqParams.LocationId == 0 {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父锛岃閫夋嫨浣嶇疆")
+		return
+	}
+	if reqParams.ProductId == "" {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父锛岃閫夋嫨浜у搧")
+		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_operaton.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),
+	}
+	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:    reqParams.LocationId,
+		ToLocationID:      location.Id,
+	}
+
+	//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/docs/docs.go b/docs/docs.go
index 20caec6..b6dbbbf 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -467,6 +467,184 @@
                 }
             }
         },
+        "/api-wms/v1/locationProduct/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "娣诲姞涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "description": "鏂板涓婃灦瑙勫垯",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddLocationProduct"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "鍒犻櫎涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "id",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/list": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "涓婃灦瑙勫垯鍒楄〃",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.PageInfo"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/update": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "淇敼涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "description": "淇敼鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateLocationProduct"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProductamount/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "搴撳瓨鐩樼偣"
+                ],
+                "summary": "娣诲姞搴撳瓨鐩樼偣淇℃伅",
+                "parameters": [
+                    {
+                        "description": "鍏ュ簱/鍑哄簱淇℃伅",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddLocationProductAmount"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProductamount/list": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "搴撳瓨鐩樼偣"
+                ],
+                "summary": "搴撳瓨鐩樼偣鍒楄〃",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.PageInfo"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/operation/finish/{id}": {
             "put": {
                 "produces": [
@@ -1467,9 +1645,13 @@
             "enum": [
                 1,
                 2,
-                3
+                3,
+                4,
+                5
             ],
             "x-enum-comments": {
+                "BaseOperationTypeAdjust": "搴撳瓨鐩樼偣",
+                "BaseOperationTypeDisuse": "鎶ュ簾",
                 "BaseOperationTypeIncoming": "鏀惰揣",
                 "BaseOperationTypeInternal": "鍐呴儴璋冩嫧",
                 "BaseOperationTypeOutgoing": "浜よ揣"
@@ -1477,7 +1659,9 @@
             "x-enum-varnames": [
                 "BaseOperationTypeIncoming",
                 "BaseOperationTypeOutgoing",
-                "BaseOperationTypeInternal"
+                "BaseOperationTypeInternal",
+                "BaseOperationTypeDisuse",
+                "BaseOperationTypeAdjust"
             ]
         },
         "constvar.CostingMethod": {
@@ -1560,10 +1744,12 @@
                 5,
                 6,
                 7,
-                8
+                8,
+                9
             ],
             "x-enum-comments": {
                 "LocationTypeCustomer": "瀹㈡埛浣嶇疆",
+                "LocationTypeDisuse": "鎶ュ簾浣嶇疆",
                 "LocationTypeInternal": "鍐呴儴浣嶇疆",
                 "LocationTypeInventoryLoss": "搴撳瓨鎹熷け",
                 "LocationTypeProduction": "鐢熶骇",
@@ -1579,7 +1765,8 @@
                 "LocationTypeInventoryLoss",
                 "LocationTypeProduction",
                 "LocationTypeTransit",
-                "LocationTypeDisuse"
+                "LocationTypeDisuse",
+                "LocationTypeAdjust"
             ]
         },
         "constvar.MaterialMode": {
@@ -1798,7 +1985,7 @@
                 },
                 "parentId": {
                     "description": "涓婄骇id",
-                    "type": "string"
+                    "type": "integer"
                 },
                 "recentlyCount": {
                     "description": "鏈�杩戠洏鐐�",
@@ -2016,6 +2203,14 @@
         "models.Operation": {
             "type": "object",
             "properties": {
+                "baseOperationType": {
+                    "description": "鍩虹浣滀笟绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.BaseOperationType"
+                        }
+                    ]
+                },
                 "comment": {
                     "type": "string"
                 },
@@ -2311,6 +2506,50 @@
                 }
             }
         },
+        "request.AddLocationProduct": {
+            "type": "object",
+            "properties": {
+                "areaId": {
+                    "description": "鍖哄煙id",
+                    "type": "integer"
+                },
+                "locationId": {
+                    "description": "浣嶇疆id",
+                    "type": "integer"
+                },
+                "productCategoryId": {
+                    "description": "浜у搧绉嶇被id",
+                    "type": "integer"
+                },
+                "productId": {
+                    "description": "浜у搧id",
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddLocationProductAmount": {
+            "type": "object",
+            "properties": {
+                "adjustAmount": {
+                    "description": "宸��",
+                    "type": "number"
+                },
+                "decimal": {
+                    "description": "搴撳瓨鏁伴噺",
+                    "type": "number"
+                },
+                "difference_amount": {
+                    "description": "璁℃暟鏁伴噺",
+                    "type": "number"
+                },
+                "locationId": {
+                    "type": "integer"
+                },
+                "productId": {
+                    "type": "string"
+                }
+            }
+        },
         "request.AddOperation": {
             "type": "object",
             "properties": {
@@ -2583,6 +2822,19 @@
                 }
             }
         },
+        "request.PageInfo": {
+            "type": "object",
+            "properties": {
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                }
+            }
+        },
         "request.QueryDisuseList": {
             "type": "object",
             "properties": {
@@ -2658,8 +2910,10 @@
             "type": "object",
             "properties": {
                 "amount": {
-                    "description": "ProductName    string                   ` + "`" + `json:\"productName\"` + "`" + `",
                     "type": "number"
+                },
+                "baseOperationType": {
+                    "$ref": "#/definitions/constvar.BaseOperationType"
                 },
                 "fromLocationId": {
                     "type": "integer"
@@ -2668,7 +2922,6 @@
                     "type": "integer"
                 },
                 "number": {
-                    "description": "Unit           string                   ` + "`" + `json:\"unit\"` + "`" + `",
                     "type": "string"
                 },
                 "operationDate": {
@@ -2688,9 +2941,41 @@
                 }
             }
         },
+        "request.UpdateLocationProduct": {
+            "type": "object",
+            "properties": {
+                "areaId": {
+                    "description": "鍖哄煙id",
+                    "type": "integer"
+                },
+                "id": {
+                    "type": "integer"
+                },
+                "locationId": {
+                    "description": "浣嶇疆id",
+                    "type": "integer"
+                },
+                "productCategoryId": {
+                    "description": "浜у搧绉嶇被id",
+                    "type": "integer"
+                },
+                "productId": {
+                    "description": "浜у搧id",
+                    "type": "string"
+                }
+            }
+        },
         "request.UpdateOperation": {
             "type": "object",
             "properties": {
+                "baseOperationType": {
+                    "description": "鍩虹浣滀笟绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.BaseOperationType"
+                        }
+                    ]
+                },
                 "comment": {
                     "description": "澶囨敞",
                     "type": "string"
@@ -2876,8 +3161,6 @@
 	Description:      "",
 	InfoInstanceName: "swagger",
 	SwaggerTemplate:  docTemplate,
-	LeftDelim:        "{{",
-	RightDelim:       "}}",
 }
 
 func init() {
diff --git a/docs/swagger.json b/docs/swagger.json
index 801bf26..2224517 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -455,6 +455,184 @@
                 }
             }
         },
+        "/api-wms/v1/locationProduct/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "娣诲姞涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "description": "鏂板涓婃灦瑙勫垯",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddLocationProduct"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "鍒犻櫎涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "id",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/list": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "涓婃灦瑙勫垯鍒楄〃",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.PageInfo"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProduct/update": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓婃灦瑙勫垯"
+                ],
+                "summary": "淇敼涓婃灦瑙勫垯",
+                "parameters": [
+                    {
+                        "description": "淇敼鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateLocationProduct"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProductamount/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "搴撳瓨鐩樼偣"
+                ],
+                "summary": "娣诲姞搴撳瓨鐩樼偣淇℃伅",
+                "parameters": [
+                    {
+                        "description": "鍏ュ簱/鍑哄簱淇℃伅",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddLocationProductAmount"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/locationProductamount/list": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "搴撳瓨鐩樼偣"
+                ],
+                "summary": "搴撳瓨鐩樼偣鍒楄〃",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.PageInfo"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/operation/finish/{id}": {
             "put": {
                 "produces": [
@@ -1455,9 +1633,13 @@
             "enum": [
                 1,
                 2,
-                3
+                3,
+                4,
+                5
             ],
             "x-enum-comments": {
+                "BaseOperationTypeAdjust": "搴撳瓨鐩樼偣",
+                "BaseOperationTypeDisuse": "鎶ュ簾",
                 "BaseOperationTypeIncoming": "鏀惰揣",
                 "BaseOperationTypeInternal": "鍐呴儴璋冩嫧",
                 "BaseOperationTypeOutgoing": "浜よ揣"
@@ -1465,7 +1647,9 @@
             "x-enum-varnames": [
                 "BaseOperationTypeIncoming",
                 "BaseOperationTypeOutgoing",
-                "BaseOperationTypeInternal"
+                "BaseOperationTypeInternal",
+                "BaseOperationTypeDisuse",
+                "BaseOperationTypeAdjust"
             ]
         },
         "constvar.CostingMethod": {
@@ -1548,10 +1732,12 @@
                 5,
                 6,
                 7,
-                8
+                8,
+                9
             ],
             "x-enum-comments": {
                 "LocationTypeCustomer": "瀹㈡埛浣嶇疆",
+                "LocationTypeDisuse": "鎶ュ簾浣嶇疆",
                 "LocationTypeInternal": "鍐呴儴浣嶇疆",
                 "LocationTypeInventoryLoss": "搴撳瓨鎹熷け",
                 "LocationTypeProduction": "鐢熶骇",
@@ -1567,7 +1753,8 @@
                 "LocationTypeInventoryLoss",
                 "LocationTypeProduction",
                 "LocationTypeTransit",
-                "LocationTypeDisuse"
+                "LocationTypeDisuse",
+                "LocationTypeAdjust"
             ]
         },
         "constvar.MaterialMode": {
@@ -1786,7 +1973,7 @@
                 },
                 "parentId": {
                     "description": "涓婄骇id",
-                    "type": "string"
+                    "type": "integer"
                 },
                 "recentlyCount": {
                     "description": "鏈�杩戠洏鐐�",
@@ -2004,6 +2191,14 @@
         "models.Operation": {
             "type": "object",
             "properties": {
+                "baseOperationType": {
+                    "description": "鍩虹浣滀笟绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.BaseOperationType"
+                        }
+                    ]
+                },
                 "comment": {
                     "type": "string"
                 },
@@ -2299,6 +2494,50 @@
                 }
             }
         },
+        "request.AddLocationProduct": {
+            "type": "object",
+            "properties": {
+                "areaId": {
+                    "description": "鍖哄煙id",
+                    "type": "integer"
+                },
+                "locationId": {
+                    "description": "浣嶇疆id",
+                    "type": "integer"
+                },
+                "productCategoryId": {
+                    "description": "浜у搧绉嶇被id",
+                    "type": "integer"
+                },
+                "productId": {
+                    "description": "浜у搧id",
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddLocationProductAmount": {
+            "type": "object",
+            "properties": {
+                "adjustAmount": {
+                    "description": "宸��",
+                    "type": "number"
+                },
+                "decimal": {
+                    "description": "搴撳瓨鏁伴噺",
+                    "type": "number"
+                },
+                "difference_amount": {
+                    "description": "璁℃暟鏁伴噺",
+                    "type": "number"
+                },
+                "locationId": {
+                    "type": "integer"
+                },
+                "productId": {
+                    "type": "string"
+                }
+            }
+        },
         "request.AddOperation": {
             "type": "object",
             "properties": {
@@ -2571,6 +2810,19 @@
                 }
             }
         },
+        "request.PageInfo": {
+            "type": "object",
+            "properties": {
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                }
+            }
+        },
         "request.QueryDisuseList": {
             "type": "object",
             "properties": {
@@ -2646,8 +2898,10 @@
             "type": "object",
             "properties": {
                 "amount": {
-                    "description": "ProductName    string                   `json:\"productName\"`",
                     "type": "number"
+                },
+                "baseOperationType": {
+                    "$ref": "#/definitions/constvar.BaseOperationType"
                 },
                 "fromLocationId": {
                     "type": "integer"
@@ -2656,7 +2910,6 @@
                     "type": "integer"
                 },
                 "number": {
-                    "description": "Unit           string                   `json:\"unit\"`",
                     "type": "string"
                 },
                 "operationDate": {
@@ -2676,9 +2929,41 @@
                 }
             }
         },
+        "request.UpdateLocationProduct": {
+            "type": "object",
+            "properties": {
+                "areaId": {
+                    "description": "鍖哄煙id",
+                    "type": "integer"
+                },
+                "id": {
+                    "type": "integer"
+                },
+                "locationId": {
+                    "description": "浣嶇疆id",
+                    "type": "integer"
+                },
+                "productCategoryId": {
+                    "description": "浜у搧绉嶇被id",
+                    "type": "integer"
+                },
+                "productId": {
+                    "description": "浜у搧id",
+                    "type": "string"
+                }
+            }
+        },
         "request.UpdateOperation": {
             "type": "object",
             "properties": {
+                "baseOperationType": {
+                    "description": "鍩虹浣滀笟绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.BaseOperationType"
+                        }
+                    ]
+                },
                 "comment": {
                     "description": "澶囨敞",
                     "type": "string"
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 81acff3..fa7b60e 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -4,8 +4,12 @@
     - 1
     - 2
     - 3
+    - 4
+    - 5
     type: integer
     x-enum-comments:
+      BaseOperationTypeAdjust: 搴撳瓨鐩樼偣
+      BaseOperationTypeDisuse: 鎶ュ簾
       BaseOperationTypeIncoming: 鏀惰揣
       BaseOperationTypeInternal: 鍐呴儴璋冩嫧
       BaseOperationTypeOutgoing: 浜よ揣
@@ -13,6 +17,8 @@
     - BaseOperationTypeIncoming
     - BaseOperationTypeOutgoing
     - BaseOperationTypeInternal
+    - BaseOperationTypeDisuse
+    - BaseOperationTypeAdjust
   constvar.CostingMethod:
     enum:
     - 1
@@ -78,9 +84,11 @@
     - 6
     - 7
     - 8
+    - 9
     type: integer
     x-enum-comments:
       LocationTypeCustomer: 瀹㈡埛浣嶇疆
+      LocationTypeDisuse: 鎶ュ簾浣嶇疆
       LocationTypeInternal: 鍐呴儴浣嶇疆
       LocationTypeInventoryLoss: 搴撳瓨鎹熷け
       LocationTypeProduction: 鐢熶骇
@@ -96,6 +104,7 @@
     - LocationTypeProduction
     - LocationTypeTransit
     - LocationTypeDisuse
+    - LocationTypeAdjust
   constvar.MaterialMode:
     enum:
     - 鍘熸潗鏂�
@@ -257,7 +266,7 @@
         type: string
       parentId:
         description: 涓婄骇id
-        type: string
+        type: integer
       recentlyCount:
         description: 鏈�杩戠洏鐐�
         type: string
@@ -422,6 +431,10 @@
     type: object
   models.Operation:
     properties:
+      baseOperationType:
+        allOf:
+        - $ref: '#/definitions/constvar.BaseOperationType'
+        description: 鍩虹浣滀笟绫诲瀷
       comment:
         type: string
       companyID:
@@ -619,6 +632,37 @@
       toLocationId:
         type: integer
     type: object
+  request.AddLocationProduct:
+    properties:
+      areaId:
+        description: 鍖哄煙id
+        type: integer
+      locationId:
+        description: 浣嶇疆id
+        type: integer
+      productCategoryId:
+        description: 浜у搧绉嶇被id
+        type: integer
+      productId:
+        description: 浜у搧id
+        type: string
+    type: object
+  request.AddLocationProductAmount:
+    properties:
+      adjustAmount:
+        description: 宸��
+        type: number
+      decimal:
+        description: 搴撳瓨鏁伴噺
+        type: number
+      difference_amount:
+        description: 璁℃暟鏁伴噺
+        type: number
+      locationId:
+        type: integer
+      productId:
+        type: string
+    type: object
   request.AddOperation:
     properties:
       comment:
@@ -808,6 +852,15 @@
       sourceNumber:
         type: string
     type: object
+  request.PageInfo:
+    properties:
+      page:
+        description: 椤电爜
+        type: integer
+      pageSize:
+        description: 姣忛〉澶у皬
+        type: integer
+    type: object
   request.QueryDisuseList:
     properties:
       number:
@@ -860,14 +913,14 @@
   request.UpdateDisuse:
     properties:
       amount:
-        description: ProductName    string                   `json:"productName"`
         type: number
+      baseOperationType:
+        $ref: '#/definitions/constvar.BaseOperationType'
       fromLocationId:
         type: integer
       id:
         type: integer
       number:
-        description: Unit           string                   `json:"unit"`
         type: string
       operationDate:
         type: string
@@ -880,8 +933,29 @@
       toLocationId:
         type: integer
     type: object
+  request.UpdateLocationProduct:
+    properties:
+      areaId:
+        description: 鍖哄煙id
+        type: integer
+      id:
+        type: integer
+      locationId:
+        description: 浣嶇疆id
+        type: integer
+      productCategoryId:
+        description: 浜у搧绉嶇被id
+        type: integer
+      productId:
+        description: 浜у搧id
+        type: string
+    type: object
   request.UpdateOperation:
     properties:
+      baseOperationType:
+        allOf:
+        - $ref: '#/definitions/constvar.BaseOperationType'
+        description: 鍩虹浣滀笟绫诲瀷
       comment:
         description: 澶囨敞
         type: string
@@ -1279,6 +1353,119 @@
       summary: 淇敼浣嶇疆
       tags:
       - 浣嶇疆
+  /api-wms/v1/locationProduct/add:
+    post:
+      parameters:
+      - description: 鏂板涓婃灦瑙勫垯
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddLocationProduct'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 娣诲姞涓婃灦瑙勫垯
+      tags:
+      - 涓婃灦瑙勫垯
+  /api-wms/v1/locationProduct/delete/{id}:
+    delete:
+      parameters:
+      - description: id
+        in: path
+        name: id
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 鍒犻櫎涓婃灦瑙勫垯
+      tags:
+      - 涓婃灦瑙勫垯
+  /api-wms/v1/locationProduct/list:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.PageInfo'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 涓婃灦瑙勫垯鍒楄〃
+      tags:
+      - 涓婃灦瑙勫垯
+  /api-wms/v1/locationProduct/update:
+    post:
+      parameters:
+      - description: 淇敼鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateLocationProduct'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 淇敼涓婃灦瑙勫垯
+      tags:
+      - 涓婃灦瑙勫垯
+  /api-wms/v1/locationProductamount/add:
+    post:
+      parameters:
+      - description: 鍏ュ簱/鍑哄簱淇℃伅
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddLocationProductAmount'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 娣诲姞搴撳瓨鐩樼偣淇℃伅
+      tags:
+      - 搴撳瓨鐩樼偣
+  /api-wms/v1/locationProductamount/list:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.PageInfo'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 搴撳瓨鐩樼偣鍒楄〃
+      tags:
+      - 搴撳瓨鐩樼偣
   /api-wms/v1/operation/finish/{id}:
     put:
       parameters:
diff --git a/models/db.go b/models/db.go
index ed1c78b..8f47201 100644
--- a/models/db.go
+++ b/models/db.go
@@ -85,6 +85,8 @@
 		//Product{},
 		ProductCategory{},
 		Material{},
+		LocationProduct{},
+		LocationProductAmount{},
 	)
 	return err
 }
diff --git a/models/location_product.go b/models/location_product.go
index b3edb61..bc98181 100644
--- a/models/location_product.go
+++ b/models/location_product.go
@@ -69,6 +69,16 @@
 	return slf
 }
 
+func (slf *LocationProductSearch) SetProductId(productId string) *LocationProductSearch {
+	slf.ProductId = productId
+	return slf
+}
+
+func (slf *LocationProductSearch) SetLocationId(locationId int) *LocationProductSearch {
+	slf.LocationId = locationId
+	return slf
+}
+
 func (slf *LocationProductSearch) build() *gorm.DB {
 	var db = slf.Orm.Model(&LocationProduct{})
 
@@ -87,6 +97,14 @@
 		db = db.Model(&LocationProduct{}).Preload("Location").Preload("Area").Preload("ProductCategory").Preload("Product")
 	}
 
+	if slf.LocationId != 0 {
+		db = db.Where("location_id = ?", slf.LocationId)
+	}
+
+	if slf.ProductId != "" {
+		db = db.Where("product_id=?", slf.ProductId)
+	}
+
 	return db
 }
 
diff --git a/request/location_product_amount.go b/request/location_product_amount.go
index bc7fa2d..7b1ff44 100644
--- a/request/location_product_amount.go
+++ b/request/location_product_amount.go
@@ -3,9 +3,11 @@
 import "github.com/shopspring/decimal"
 
 type AddLocationProductAmount struct {
-	LocationProductAmountId int             `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id
-	AdjustAmount            decimal.Decimal `json:"adjustAmount" `           //宸��
-	DifferenceAmount        decimal.Decimal `json:"difference_amount"`       //璁℃暟鏁伴噺
+	LocationId       int             `json:"locationId"`
+	ProductId        string          `json:"productId"`
+	Amount           decimal.Decimal `json:"decimal"`           //搴撳瓨鏁伴噺
+	AdjustAmount     decimal.Decimal `json:"adjustAmount" `     //宸��
+	DifferenceAmount decimal.Decimal `json:"difference_amount"` //璁℃暟鏁伴噺
 }
 
 type UpdateLocationProductAmount struct {
diff --git a/router/router.go b/router/router.go
index c23bd3d..bac5f16 100644
--- a/router/router.go
+++ b/router/router.go
@@ -113,10 +113,18 @@
 	locationProductController := new(controllers.LocationProductController)
 	locationProductAPI := r.Group(urlPrefix + "/locationProduct")
 	{
-		locationProductAPI.GET("operationType", locationProductController.List)          // 鑾峰彇涓婃灦瑙勫垯鍒楄〃
-		locationProductAPI.POST("operationType", locationProductController.Add)          // 鏂板涓婃灦瑙勫垯
-		locationProductAPI.PUT("operationType/:id", locationProductController.Update)    // 淇敼涓婃灦瑙勫垯
-		locationProductAPI.DELETE("operationType/:id", locationProductController.Delete) // 鍒犻櫎涓婃灦瑙勫垯
+		locationProductAPI.POST("list", locationProductController.List)           // 鑾峰彇涓婃灦瑙勫垯鍒楄〃
+		locationProductAPI.POST("add", locationProductController.Add)             // 鏂板涓婃灦瑙勫垯
+		locationProductAPI.POST("update", locationProductController.Update)       // 淇敼涓婃灦瑙勫垯
+		locationProductAPI.DELETE("delete/:id", locationProductController.Delete) // 鍒犻櫎涓婃灦瑙勫垯
+	}
+
+	//搴撳瓨鐩樼偣
+	locationProductAmountController := new(controllers.LocationProductAmountController)
+	locationProductAmountAPI := r.Group(urlPrefix + "/locationProductAmount")
+	{
+		locationProductAmountAPI.POST("add", locationProductAmountController.Add)   //娣诲姞搴撳瓨鐩樼偣淇℃伅
+		locationProductAmountAPI.POST("list", locationProductAmountController.List) //鏌ョ湅搴撳瓨鐩樼偣鍒楄〃
 	}
 
 	return r

--
Gitblit v1.8.0