From 4041b5571482c5515d15857f59b14a72045350c6 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 23 十月 2023 12:05:20 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS

---
 controllers/product_controller.go      |    4 
 models/operation_type.go               |    4 +
 controllers/operation_type.go          |   42 ++++++++++
 controllers/operation.go               |   17 ++-
 models/location_product_amount.go      |   25 +++---
 docs/swagger.yaml                      |   22 +++++
 request/operation.go                   |    5 
 request/operation_type.go              |    4 +
 docs/docs.go                           |   35 +++++++-
 docs/swagger.json                      |   33 +++++++
 controllers/location_product_amount.go |    2 
 router/router.go                       |    3 
 12 files changed, 163 insertions(+), 33 deletions(-)

diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go
index 23c0ff3..f895a6c 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -71,6 +71,7 @@
 		if res := models.NewOperationSearch().Orm.Preload("Details", "product_id=?", v.ProductId).Where("wms_operation.base_operation_type=? and wms_operation.status=? and wms_operation.to_location_id=?", constvar.BaseOperationTypeAdjust, constvar.OperationStatus_Ready, v.LocationId).First(&operation); res.Error != nil {
 			if errors.Is(res.Error, gorm.ErrRecordNotFound) {
 				records[k].Status = constvar.OperationStatus_Finish
+				records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
 				continue
 			} else {
 				util.ResponseFormat(c, code.RequestError, fmt.Errorf("find operation err: %v", res.Error.Error()))
@@ -84,6 +85,7 @@
 			records[k].OperationId = operation.Id
 			records[k].Status = operation.Status
 		}
+		records[k].BaseOperationType = constvar.BaseOperationTypeAdjust
 	}
 	util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize)
 }
diff --git a/controllers/operation.go b/controllers/operation.go
index dc07598..7f0bad0 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -128,8 +128,8 @@
 		return errors.New("璇峰~鍏ユ簮鍗曞彿")
 	}
 
-	if params.OperationTypeId == 0 {
-		return errors.New("operationTypeId涓�0")
+	if params.OperationTypeId == 0 || int(params.BaseOperationType) == 0 {
+		return errors.New("鏈瘑鍒璁板綍绫诲瀷")
 	}
 
 	if params.OperationDate == "" {
@@ -177,6 +177,9 @@
 	search.SetPage(params.Page, params.PageSize)
 	if params.Number != "" {
 		search.SetKeyword(params.Number)
+	}
+	if int(params.Status) != 0 {
+		search.SetStatus(params.Status)
 	}
 	list, total, err := search.SetOperationTypeId(params.OperationTypeId).SetPreload(true).SetOrder("created_at desc").Find()
 	if err != nil {
@@ -440,14 +443,14 @@
 	util.ResponseFormat(c, code.Success, "鎿嶄綔鎴愬姛")
 }
 
-// ListAll
+// listTransfer
 // @Tags      鍏ュ簱/鍑哄簱
-// @Summary   璋冩嫧
+// @Summary   搴撳瓨璋冩嫧鍒楄〃
 // @Produce   application/json
 // @Param     object  body  request.OperationAllList true  "鍙傛暟"
 // @Success   200 {object} util.Response "鎴愬姛"
-// @Router    /api-wms/v1/operation/listAll [post]
-func (slf OperationController) ListAll(c *gin.Context) {
+// @Router    /api-wms/v1/operation/listTransfer [post]
+func (slf OperationController) ListTransfer(c *gin.Context) {
 	var params request.OperationAllList
 	if err := c.BindJSON(&params); err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error())
@@ -463,7 +466,7 @@
 	if params.Number != "" {
 		search.SetKeyword(params.Number)
 	}
-	list, total, err := search.SetPreload(true).SetOrder("created_at desc").Find()
+	list, total, err := search.SetPreload(true).SetBaseOperationType(constvar.BaseOperationTypeInternal).SetOrder("created_at desc").Find()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error())
 		return
diff --git a/controllers/operation_type.go b/controllers/operation_type.go
index 8737781..0ce0a9b 100644
--- a/controllers/operation_type.go
+++ b/controllers/operation_type.go
@@ -166,3 +166,45 @@
 	}
 	util.ResponseFormat(c, code.UpdateSuccess, "鍒犻櫎鎴愬姛")
 }
+
+// ListTransfer
+// @Tags      涓氬姟绫诲瀷
+// @Summary   璋冩嫧绫诲瀷鍒楄〃
+// @Produce   application/json
+// @Param     object  query    request.ListTransfer true  "鏌ヨ鍙傛暟"
+// @Success   200   {object}  util.ResponseList  "鎴愬姛"
+// @Router    /api-wms/v1/operationType/listTransfer [get]
+func (slf OperationTypeController) ListTransfer(c *gin.Context) {
+	var params request.GetOperationTypeList
+	if err := c.ShouldBindQuery(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, err.Error())
+		return
+	}
+	list, total, err := models.NewOperationTypeSearch().SetPage(params.Page, params.PageSize).SetBaseOperationType(constvar.BaseOperationTypeInternal).SetKeyword(params.Keyword).SetOrder("id desc").SetPreload(true).Find()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触")
+		return
+	}
+	var idList []int
+	for _, v := range list {
+		idList = append(idList, v.Id)
+	}
+	statistics, err := models.NewOperationTypeSearch().ListByStatusAndCount(idList)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestError, err.Error())
+		return
+	}
+	mapStatistics := make(map[string]*models.OperationTypeByStatus, 0)
+	for _, v := range statistics {
+		mapStatistics[strconv.Itoa(v.Id)+string(v.Status)] = v
+	}
+	for k, v := range list {
+		if value, ok := mapStatistics[strconv.Itoa(v.Id)+string(constvar.OperationStatus_Ready)]; ok {
+			list[k].ReadyCount = value.Count
+		}
+		if value, ok := mapStatistics[strconv.Itoa(v.Id)+string(constvar.OperationStatus_Finish)]; ok {
+			list[k].FinishCount = value.Count
+		}
+	}
+	util.ResponseFormatListWithPage(c, code.Success, list, cast.ToInt(total), params.Page, params.PageSize)
+}
diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index 54ac018..9dee846 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -391,9 +391,7 @@
 		return
 	}
 
-	//db := models.NewOperationSearch().Orm.Table("wms_operation").Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation.from_location_id,wms_operation.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,wms_operation_details.product_name,wms_operation_details.unit,wms_operation_details.amount").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id")
-
-	db := models.NewOperationSearch().Orm.Table("wms_operation").Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation.from_location_id,wms_operation.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,material.name as product_name,material.unit,wms_operation_details.amount").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").InnerJoins("inner join material on material.id=wms_operation_details.product_id")
+	db := models.NewOperationSearch().Orm.Table("wms_operation").Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation.from_location_id,wms_operation.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,material.name as product_name,material.unit,wms_operation_details.amount").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").InnerJoins("inner join material on material.id=wms_operation_details.product_id").Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeDisuse)
 
 	if params.Number != "" {
 		db = db.Where("wms_operation.number like ? or wms_operation.source_number like ? or material.name like ?", fmt.Sprintf("%%%v%%", params.Number), fmt.Sprintf("%%%v%%", params.Number), fmt.Sprintf("%%%v%%", params.Number))
diff --git a/docs/docs.go b/docs/docs.go
index 5255a2b..364970e 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -943,7 +943,7 @@
                 }
             }
         },
-        "/api-wms/v1/operation/listAll": {
+        "/api-wms/v1/operation/listTransfer": {
             "post": {
                 "produces": [
                     "application/json"
@@ -951,7 +951,7 @@
                 "tags": [
                     "鍏ュ簱/鍑哄簱"
                 ],
-                "summary": "璋冩嫧",
+                "summary": "搴撳瓨璋冩嫧鍒楄〃",
                 "parameters": [
                     {
                         "description": "鍙傛暟",
@@ -1056,6 +1056,32 @@
                         "description": "鎴愬姛",
                         "schema": {
                             "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/operationType/listTransfer": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓氬姟绫诲瀷"
+                ],
+                "summary": "璋冩嫧绫诲瀷鍒楄〃",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "name": "keyword",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.ResponseList"
                         }
                     }
                 }
@@ -3192,6 +3218,9 @@
                 "pageSize": {
                     "description": "姣忛〉澶у皬",
                     "type": "integer"
+                },
+                "status": {
+                    "$ref": "#/definitions/constvar.OperationStatus"
                 }
             }
         },
@@ -3721,8 +3750,6 @@
 	Description:      "",
 	InfoInstanceName: "swagger",
 	SwaggerTemplate:  docTemplate,
-	LeftDelim:        "{{",
-	RightDelim:       "}}",
 }
 
 func init() {
diff --git a/docs/swagger.json b/docs/swagger.json
index 54e4fa3..aa533b1 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -931,7 +931,7 @@
                 }
             }
         },
-        "/api-wms/v1/operation/listAll": {
+        "/api-wms/v1/operation/listTransfer": {
             "post": {
                 "produces": [
                     "application/json"
@@ -939,7 +939,7 @@
                 "tags": [
                     "鍏ュ簱/鍑哄簱"
                 ],
-                "summary": "璋冩嫧",
+                "summary": "搴撳瓨璋冩嫧鍒楄〃",
                 "parameters": [
                     {
                         "description": "鍙傛暟",
@@ -1044,6 +1044,32 @@
                         "description": "鎴愬姛",
                         "schema": {
                             "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/operationType/listTransfer": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "涓氬姟绫诲瀷"
+                ],
+                "summary": "璋冩嫧绫诲瀷鍒楄〃",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "name": "keyword",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.ResponseList"
                         }
                     }
                 }
@@ -3180,6 +3206,9 @@
                 "pageSize": {
                     "description": "姣忛〉澶у皬",
                     "type": "integer"
+                },
+                "status": {
+                    "$ref": "#/definitions/constvar.OperationStatus"
                 }
             }
         },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index b126c9c..4f54f49 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -914,6 +914,8 @@
       pageSize:
         description: 姣忛〉澶у皬
         type: integer
+      status:
+        $ref: '#/definitions/constvar.OperationStatus'
     type: object
   request.PageInfo:
     properties:
@@ -1844,7 +1846,7 @@
       summary: 鍏ュ簱/鍑哄簱鍒楄〃
       tags:
       - 鍏ュ簱/鍑哄簱
-  /api-wms/v1/operation/listAll:
+  /api-wms/v1/operation/listTransfer:
     post:
       parameters:
       - description: 鍙傛暟
@@ -1860,7 +1862,7 @@
           description: 鎴愬姛
           schema:
             $ref: '#/definitions/util.Response'
-      summary: 璋冩嫧
+      summary: 搴撳瓨璋冩嫧鍒楄〃
       tags:
       - 鍏ュ簱/鍑哄簱
   /api-wms/v1/operation/operation:
@@ -1919,6 +1921,22 @@
       summary: 淇敼鍏ュ簱/鍑哄簱淇℃伅
       tags:
       - 鍏ュ簱/鍑哄簱
+  /api-wms/v1/operationType/listTransfer:
+    get:
+      parameters:
+      - in: query
+        name: keyword
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.ResponseList'
+      summary: 璋冩嫧绫诲瀷鍒楄〃
+      tags:
+      - 涓氬姟绫诲瀷
   /api-wms/v1/operationType/operationType:
     get:
       parameters:
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index b51e00c..0700984 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -31,18 +31,19 @@
 
 	LocationProductAmountWithOperation struct {
 		//LocationProductAmount LocationProductAmount `json:"locationProductAmount"`
-		LocationProductAmountId int                      `json:"locationProductAmountId" gorm:"location_product_amount_id"`
-		LocationId              int                      `json:"locationId" gorm:"column:location_id"`
-		LocationName            string                   `json:"locationName" gorm:"column:location_name"`
-		ProductId               string                   `json:"productId" gorm:"column:product_id"`
-		ProductName             string                   `json:"productName" gorm:"column:product_name"`
-		Amount                  decimal.Decimal          `json:"amount" gorm:"column:amount"`
-		Unit                    string                   `json:"unit" gorm:"column:unit"`
-		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"`
-		Status                  constvar.OperationStatus `json:"status" gorm:"status"`
+		LocationProductAmountId int                        `json:"locationProductAmountId" gorm:"location_product_amount_id"`
+		LocationId              int                        `json:"locationId" gorm:"column:location_id"`
+		LocationName            string                     `json:"locationName" gorm:"column:location_name"`
+		ProductId               string                     `json:"productId" gorm:"column:product_id"`
+		ProductName             string                     `json:"productName" gorm:"column:product_name"`
+		Amount                  decimal.Decimal            `json:"amount" gorm:"column:amount"`
+		Unit                    string                     `json:"unit" gorm:"column:unit"`
+		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"`
+		Status                  constvar.OperationStatus   `json:"status" gorm:"status"`
+		BaseOperationType       constvar.BaseOperationType `json:"baseOperationType" gorm:"base_operation_type"`
 	}
 )
 
diff --git a/models/operation_type.go b/models/operation_type.go
index 5c1c4b3..ed03f46 100644
--- a/models/operation_type.go
+++ b/models/operation_type.go
@@ -135,6 +135,10 @@
 		db = db.Where("warehouse_id = ?", slf.WarehouseId)
 	}
 
+	if int(slf.BaseOperationType) != 0 {
+		db = db.Where("base_operation_type = ?", slf.BaseOperationType)
+	}
+
 	return db
 }
 
diff --git a/request/operation.go b/request/operation.go
index a507a13..ba5b594 100644
--- a/request/operation.go
+++ b/request/operation.go
@@ -40,8 +40,9 @@
 
 type OperationList struct {
 	PageInfo
-	OperationTypeId int    `json:"operationTypeId" form:"operationTypeId"`
-	Number          string `json:"number"`
+	OperationTypeId int                      `json:"operationTypeId" form:"operationTypeId"`
+	Number          string                   `json:"number"`
+	Status          constvar.OperationStatus `json:"status"`
 }
 
 type UpdateOperation struct {
diff --git a/request/operation_type.go b/request/operation_type.go
index a76c5d3..573eb4d 100644
--- a/request/operation_type.go
+++ b/request/operation_type.go
@@ -31,3 +31,7 @@
 	ID uint `gorm:"comment:涓婚敭ID;primaryKey;" json:"id"`
 	AddOperationType
 }
+
+type ListTransfer struct {
+	Keyword string `json:"keyword"`
+}
diff --git a/router/router.go b/router/router.go
index 1ac4c3f..4ac8ab8 100644
--- a/router/router.go
+++ b/router/router.go
@@ -68,6 +68,7 @@
 	operationTypeAPI := r.Group(urlPrefix + "/operationType")
 	{
 		operationTypeAPI.GET("operationType", operationTypeController.List)          // 鑾峰彇浣滀笟绫诲瀷鍒楄〃
+		operationTypeAPI.GET("listTransfer", operationTypeController.ListTransfer)   // 鑾峰彇浣滀笟绫诲瀷鍒楄〃
 		operationTypeAPI.POST("operationType", operationTypeController.Add)          // 鏂板浣滀笟绫诲瀷
 		operationTypeAPI.PUT("operationType/:id", operationTypeController.Update)    // 淇敼浣滀笟绫诲瀷
 		operationTypeAPI.DELETE("operationType/:id", operationTypeController.Delete) // 鍒犻櫎浣滀笟绫诲瀷
@@ -82,7 +83,7 @@
 		operationAPI.POST("update", operationController.Update)
 		operationAPI.DELETE("operation/:id", operationController.Delete)
 		operationAPI.PUT("finish/:id", operationController.Finish)
-		operationAPI.POST("listAll", operationController.ListAll)
+		operationAPI.POST("listTransfer", operationController.ListTransfer)
 
 	}
 

--
Gitblit v1.8.0