From 6dec2342316aecf4084c8f4efb43f33fbb72892f Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期二, 09 四月 2024 14:07:43 +0800
Subject: [PATCH] 更新计量单位字典

---
 controllers/product_controller.go |   49 ++++++++
 request/product_request.go        |    9 +
 docs/swagger.yaml                 |   75 +++++++++++
 docs/docs.go                      |  111 +++++++++++++++++-
 docs/swagger.json                 |  111 +++++++++++++++++-
 router/router.go                  |    1 
 6 files changed, 337 insertions(+), 19 deletions(-)

diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index b91d30f..a99ac83 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -16,6 +16,7 @@
 	"wms/models"
 	"wms/pkg/logx"
 	"wms/pkg/mysqlx"
+	"wms/pkg/structx"
 	"wms/request"
 )
 
@@ -777,3 +778,51 @@
 	}
 	util.ResponseFormatList(c, code.Success, dicts, int(total))
 }
+
+// SaveUnitDict
+//
+//	@Tags		鏁版嵁瀛楀吀
+//	@Summary	鏇存柊璁¢噺鍗曚綅瀛楀吀
+//	@Produce	application/json
+//	@Param		object	body		request.SaveUnitDict	true	"鍙傛暟"
+//	@Success	200		{object}	util.Response			"鎴愬姛"
+//	@Router		/api-wms/v1/product/saveUnitDict [post]
+func (slf ProductController) SaveUnitDict(c *gin.Context) {
+	var reqParams request.SaveUnitDict
+	var params []*models.UnitDict
+	if err := c.BindJSON(&reqParams); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if err := structx.AssignTo(reqParams.Data, &params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲閿欒")
+		return
+	}
+
+	for i, v := range params {
+		if len(v.Name) == 0 {
+			util.ResponseFormat(c, code.RequestParamError, "鍚嶇О涓虹┖")
+			return
+		}
+		v.Sort = i + 1
+	}
+
+	err := models.WithTransaction(func(tx *gorm.DB) error {
+		err := models.NewUnitDictSearch().SetOrm(tx).Delete()
+		if err != nil {
+			return err
+		}
+
+		err = models.NewUnitDictSearch().SetOrm(tx).CreateBatch(params)
+		if err != nil {
+			return err
+		}
+		return nil
+	})
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触")
+		return
+	}
+
+	util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
+}
diff --git a/docs/docs.go b/docs/docs.go
index 07d8fc6..b81598e 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -2116,6 +2116,36 @@
                 }
             }
         },
+        "/api-wms/v1/product/saveUnitDict": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鏁版嵁瀛楀吀"
+                ],
+                "summary": "鏇存柊璁¢噺鍗曚綅瀛楀吀",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.SaveUnitDict"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/product/updateDisuse": {
             "post": {
                 "produces": [
@@ -2836,6 +2866,33 @@
                 "MaterialModeVirtual"
             ]
         },
+        "constvar.OperationSource": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6
+            ],
+            "x-enum-comments": {
+                "OperationSourceOutsourcing": "濮斿鍏ュ簱",
+                "OperationSourceOutsourcingApply": "濮斿棰嗘枡",
+                "OperationSourceProduction": "鐢熶骇鍏ュ簱",
+                "OperationSourceProductionApply": "鐢熶骇棰嗘枡",
+                "OperationSourcePurchase": "閲囪喘鍏ュ簱",
+                "OperationSourceSaleDelivery": "閿�鍞彂璐�"
+            },
+            "x-enum-varnames": [
+                "OperationSourcePurchase",
+                "OperationSourceProduction",
+                "OperationSourceOutsourcing",
+                "OperationSourceProductionApply",
+                "OperationSourceOutsourcingApply",
+                "OperationSourceSaleDelivery"
+            ]
+        },
         "constvar.OperationStatus": {
             "type": "integer",
             "enum": [
@@ -3121,6 +3178,18 @@
                 },
                 "updateTime": {
                     "type": "string"
+                },
+                "warehouse": {
+                    "description": "浠撳簱",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/models.Warehouse"
+                        }
+                    ]
+                },
+                "warehouseId": {
+                    "description": "浠撳簱ID",
+                    "type": "integer"
                 }
             }
         },
@@ -3480,6 +3549,14 @@
                     "description": "FromLocationID    int                      ` + "`" + `json:\"fromLocationId\"   gorm:\"type:int;not null;comment:婧愪綅缃甶d\"` + "`" + `         //婧愪綅缃甶d\nFromLocation      Location                 ` + "`" + `json:\"fromLocation\"     gorm:\"foreignKey:FromLocationID;references:Id\"` + "`" + ` //婧愪綅缃甛nToLocationID      int                      ` + "`" + `json:\"toLocationId\"    gorm:\"type:int;not null;comment:鐩爣浣嶇疆id\"` + "`" + `         //鐩爣浣嶇疆id\nToLocation        Location                 ` + "`" + `json:\"toLocation\"      gorm:\"foreignKey:ToLocationID;references:Id\"` + "`" + `    //鐩爣浣嶇疆",
                     "type": "string"
                 },
+                "operationSource": {
+                    "description": "鎿嶄綔鏉ユ簮",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.OperationSource"
+                        }
+                    ]
+                },
                 "operationTypeId": {
                     "description": "浣滀笟绫诲瀷id",
                     "type": "integer"
@@ -3495,6 +3572,9 @@
                     "type": "string"
                 },
                 "receiverPhone": {
+                    "type": "string"
+                },
+                "salesDetailsNumber": {
                     "type": "string"
                 },
                 "source": {
@@ -3725,9 +3805,6 @@
         },
         "models.Warehouse": {
             "type": "object",
-            "required": [
-                "code"
-            ],
             "properties": {
                 "active": {
                     "description": "鏄惁鍚敤锛屼紶true灏辫",
@@ -3743,9 +3820,7 @@
                 },
                 "code": {
                     "description": "浠撳簱缂栫爜",
-                    "type": "string",
-                    "maxLength": 5,
-                    "minLength": 1
+                    "type": "string"
                 },
                 "company": {
                     "$ref": "#/definitions/models.Company"
@@ -3768,7 +3843,7 @@
                     "type": "integer"
                 },
                 "locationId": {
-                    "description": "浣嶇疆id",
+                    "description": "榛樿浣嶇疆id",
                     "type": "integer"
                 },
                 "name": {
@@ -4466,6 +4541,28 @@
                 }
             }
         },
+        "request.SaveUnitDict": {
+            "type": "object",
+            "properties": {
+                "data": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UnitDict"
+                    }
+                }
+            }
+        },
+        "request.UnitDict": {
+            "type": "object",
+            "properties": {
+                "isDefault": {
+                    "type": "boolean"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "request.UpdateCompany": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 6285131..a6c10ac 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -2104,6 +2104,36 @@
                 }
             }
         },
+        "/api-wms/v1/product/saveUnitDict": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鏁版嵁瀛楀吀"
+                ],
+                "summary": "鏇存柊璁¢噺鍗曚綅瀛楀吀",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.SaveUnitDict"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/product/updateDisuse": {
             "post": {
                 "produces": [
@@ -2824,6 +2854,33 @@
                 "MaterialModeVirtual"
             ]
         },
+        "constvar.OperationSource": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4,
+                5,
+                6
+            ],
+            "x-enum-comments": {
+                "OperationSourceOutsourcing": "濮斿鍏ュ簱",
+                "OperationSourceOutsourcingApply": "濮斿棰嗘枡",
+                "OperationSourceProduction": "鐢熶骇鍏ュ簱",
+                "OperationSourceProductionApply": "鐢熶骇棰嗘枡",
+                "OperationSourcePurchase": "閲囪喘鍏ュ簱",
+                "OperationSourceSaleDelivery": "閿�鍞彂璐�"
+            },
+            "x-enum-varnames": [
+                "OperationSourcePurchase",
+                "OperationSourceProduction",
+                "OperationSourceOutsourcing",
+                "OperationSourceProductionApply",
+                "OperationSourceOutsourcingApply",
+                "OperationSourceSaleDelivery"
+            ]
+        },
         "constvar.OperationStatus": {
             "type": "integer",
             "enum": [
@@ -3109,6 +3166,18 @@
                 },
                 "updateTime": {
                     "type": "string"
+                },
+                "warehouse": {
+                    "description": "浠撳簱",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/models.Warehouse"
+                        }
+                    ]
+                },
+                "warehouseId": {
+                    "description": "浠撳簱ID",
+                    "type": "integer"
                 }
             }
         },
@@ -3468,6 +3537,14 @@
                     "description": "FromLocationID    int                      `json:\"fromLocationId\"   gorm:\"type:int;not null;comment:婧愪綅缃甶d\"`         //婧愪綅缃甶d\nFromLocation      Location                 `json:\"fromLocation\"     gorm:\"foreignKey:FromLocationID;references:Id\"` //婧愪綅缃甛nToLocationID      int                      `json:\"toLocationId\"    gorm:\"type:int;not null;comment:鐩爣浣嶇疆id\"`         //鐩爣浣嶇疆id\nToLocation        Location                 `json:\"toLocation\"      gorm:\"foreignKey:ToLocationID;references:Id\"`    //鐩爣浣嶇疆",
                     "type": "string"
                 },
+                "operationSource": {
+                    "description": "鎿嶄綔鏉ユ簮",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.OperationSource"
+                        }
+                    ]
+                },
                 "operationTypeId": {
                     "description": "浣滀笟绫诲瀷id",
                     "type": "integer"
@@ -3483,6 +3560,9 @@
                     "type": "string"
                 },
                 "receiverPhone": {
+                    "type": "string"
+                },
+                "salesDetailsNumber": {
                     "type": "string"
                 },
                 "source": {
@@ -3713,9 +3793,6 @@
         },
         "models.Warehouse": {
             "type": "object",
-            "required": [
-                "code"
-            ],
             "properties": {
                 "active": {
                     "description": "鏄惁鍚敤锛屼紶true灏辫",
@@ -3731,9 +3808,7 @@
                 },
                 "code": {
                     "description": "浠撳簱缂栫爜",
-                    "type": "string",
-                    "maxLength": 5,
-                    "minLength": 1
+                    "type": "string"
                 },
                 "company": {
                     "$ref": "#/definitions/models.Company"
@@ -3756,7 +3831,7 @@
                     "type": "integer"
                 },
                 "locationId": {
-                    "description": "浣嶇疆id",
+                    "description": "榛樿浣嶇疆id",
                     "type": "integer"
                 },
                 "name": {
@@ -4454,6 +4529,28 @@
                 }
             }
         },
+        "request.SaveUnitDict": {
+            "type": "object",
+            "properties": {
+                "data": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UnitDict"
+                    }
+                }
+            }
+        },
+        "request.UnitDict": {
+            "type": "object",
+            "properties": {
+                "isDefault": {
+                    "type": "boolean"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "request.UpdateCompany": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 7c2ffd4..7ffb926 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -184,6 +184,29 @@
     - MaterialModeConsumables
     - MaterialModeOther
     - MaterialModeVirtual
+  constvar.OperationSource:
+    enum:
+    - 1
+    - 2
+    - 3
+    - 4
+    - 5
+    - 6
+    type: integer
+    x-enum-comments:
+      OperationSourceOutsourcing: 濮斿鍏ュ簱
+      OperationSourceOutsourcingApply: 濮斿棰嗘枡
+      OperationSourceProduction: 鐢熶骇鍏ュ簱
+      OperationSourceProductionApply: 鐢熶骇棰嗘枡
+      OperationSourcePurchase: 閲囪喘鍏ュ簱
+      OperationSourceSaleDelivery: 閿�鍞彂璐�
+    x-enum-varnames:
+    - OperationSourcePurchase
+    - OperationSourceProduction
+    - OperationSourceOutsourcing
+    - OperationSourceProductionApply
+    - OperationSourceOutsourcingApply
+    - OperationSourceSaleDelivery
   constvar.OperationStatus:
     enum:
     - 1
@@ -394,6 +417,13 @@
           gorm:"foreignKey:CompanyId"`                       //鍏徃
       updateTime:
         type: string
+      warehouse:
+        allOf:
+        - $ref: '#/definitions/models.Warehouse'
+        description: 浠撳簱
+      warehouseId:
+        description: 浠撳簱ID
+        type: integer
     type: object
   models.LogisticCompany:
     properties:
@@ -653,6 +683,10 @@
           ToLocationID      int                      `json:"toLocationId"    gorm:"type:int;not null;comment:鐩爣浣嶇疆id"`         //鐩爣浣嶇疆id
           ToLocation        Location                 `json:"toLocation"      gorm:"foreignKey:ToLocationID;references:Id"`    //鐩爣浣嶇疆
         type: string
+      operationSource:
+        allOf:
+        - $ref: '#/definitions/constvar.OperationSource'
+        description: 鎿嶄綔鏉ユ簮
       operationTypeId:
         description: 浣滀笟绫诲瀷id
         type: integer
@@ -664,6 +698,8 @@
       receiverName:
         type: string
       receiverPhone:
+        type: string
+      salesDetailsNumber:
         type: string
       source:
         type: string
@@ -825,8 +861,6 @@
         type: boolean
       code:
         description: 浠撳簱缂栫爜
-        maxLength: 5
-        minLength: 1
         type: string
       company:
         $ref: '#/definitions/models.Company'
@@ -843,7 +877,7 @@
         description: 鍏ュ悜杩愯緭
         type: integer
       locationId:
-        description: 浣嶇疆id
+        description: 榛樿浣嶇疆id
         type: integer
       name:
         description: 浠撳簱鍚嶇О
@@ -869,8 +903,6 @@
       warehouseLocation:
         description: 搴撳瓨浣嶇疆
         type: string
-    required:
-    - code
     type: object
   request.AddCompany:
     properties:
@@ -1331,6 +1363,20 @@
         description: 姣忛〉澶у皬
         type: integer
       productId:
+        type: string
+    type: object
+  request.SaveUnitDict:
+    properties:
+      data:
+        items:
+          $ref: '#/definitions/request.UnitDict'
+        type: array
+    type: object
+  request.UnitDict:
+    properties:
+      isDefault:
+        type: boolean
+      name:
         type: string
     type: object
   request.UpdateCompany:
@@ -2981,6 +3027,25 @@
       summary: 浜у搧鍘嗗彶鍑哄叆搴撲俊鎭�
       tags:
       - 浜у搧
+  /api-wms/v1/product/saveUnitDict:
+    post:
+      parameters:
+      - description: 鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.SaveUnitDict'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 鏇存柊璁¢噺鍗曚綅瀛楀吀
+      tags:
+      - 鏁版嵁瀛楀吀
   /api-wms/v1/product/updateDisuse:
     post:
       parameters:
diff --git a/request/product_request.go b/request/product_request.go
index 8402959..e9e10a1 100644
--- a/request/product_request.go
+++ b/request/product_request.go
@@ -60,3 +60,12 @@
 	ProductId   string          `gorm:"column:product_id"`
 	TotalAmount decimal.Decimal `gorm:"column:total_amount"`
 }
+
+type UnitDict struct {
+	Name      string `gorm:"unique;type:varchar(191);not null;comment:鍚嶇О" json:"name"`
+	IsDefault bool   `gorm:"type:tinyint(1);comment:鏄惁榛樿" json:"isDefault"`
+}
+
+type SaveUnitDict struct {
+	Data []*UnitDict `json:"data"`
+}
diff --git a/router/router.go b/router/router.go
index 7bd6d6d..b28aef4 100644
--- a/router/router.go
+++ b/router/router.go
@@ -122,6 +122,7 @@
 		productAPI.PUT("cancelDisuse/:id", productController.CancelDisuse) //鍙栨秷鎶ュ簾
 		productAPI.GET("getUserInfo", productController.GetUserInfo)       //鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
 		productAPI.GET("getUnitInfo", productController.GetUnitInfo)       //鑾峰彇鍗曚綅淇℃伅
+		productAPI.POST("saveUnitDict", productController.SaveUnitDict)    //鏇存柊璁¢噺鍗曚綅瀛楀吀
 
 	}
 

--
Gitblit v1.8.0