From b97b0ba40ae012e59cd3bba0960f485aae86bb13 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期二, 26 九月 2023 09:31:04 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS

---
 controllers/product_controller.go |   20 +
 models/operation_type.go          |   25 ++
 controllers/operation_type.go     |   30 ++
 controllers/operation.go          |    6 
 models/operation.go               |    2 
 request/product_request.go        |   28 +-
 docs/swagger.yaml                 |  116 +---------
 request/operation.go              |   11 
 docs/docs.go                      |  180 +---------------
 models/operation_details.go       |   13 
 docs/swagger.json                 |  180 +---------------
 11 files changed, 133 insertions(+), 478 deletions(-)

diff --git a/controllers/operation.go b/controllers/operation.go
index 9d6fa9b..872fb4c 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -115,9 +115,9 @@
 		if v.ProductId == "" {
 			return errors.New("productID涓虹┖")
 		}
-		if v.ProductName == "" {
-			return errors.New("浜у搧鍚嶇О寮傚父")
-		}
+		//if v.ProductName == "" {
+		//	return errors.New("浜у搧鍚嶇О寮傚父")
+		//}
 		if v.Amount.IsNegative() {
 			return errors.New("浜у搧鏁伴噺鍑洪敊")
 		}
diff --git a/controllers/operation_type.go b/controllers/operation_type.go
index 3d21412..8737781 100644
--- a/controllers/operation_type.go
+++ b/controllers/operation_type.go
@@ -6,6 +6,8 @@
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/cast"
 	"gorm.io/gorm"
+	"strconv"
+	"wms/constvar"
 	"wms/extend/code"
 	"wms/extend/util"
 	"wms/models"
@@ -106,7 +108,7 @@
 // @Summary   鏌ヨ浣滀笟绫诲瀷鍒楄〃
 // @Produce   application/json
 // @Param     object  query    request.GetOperationTypeList true  "鏌ヨ鍙傛暟"
-// @Success   200   {object}  util.ResponseList{data=[]models.OperationType}  "鎴愬姛"
+// @Success   200   {object}  util.ResponseList  "鎴愬姛"
 // @Router    /api-wms/v1/operationType/operationType [get]
 func (slf OperationTypeController) List(c *gin.Context) {
 	var params request.GetOperationTypeList
@@ -116,11 +118,31 @@
 	}
 	list, total, err := models.NewOperationTypeSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetOrder("id desc").SetPreload(true).Find()
 	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
+		util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触")
 		return
 	}
-
-	util.ResponseFormatList(c, code.Success, list, cast.ToInt(total))
+	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)
 }
 
 // Delete
diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index ea2a74b..c5d99a2 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -359,10 +359,10 @@
 		return
 	}
 	detail := &models.OperationDetails{
-		ProductId:   params.ProductId,
-		ProductName: params.ProductName,
-		Amount:      params.Amount,
-		Unit:        params.Unit,
+		ProductId: params.ProductId,
+		//ProductName: params.ProductName,
+		Amount: params.Amount,
+		//Unit:        params.Unit,
 	}
 	operation := models.Operation{
 		Number:          strconv.FormatInt(time.Now().Unix(), 10),
@@ -400,7 +400,9 @@
 		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,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")
 
 	if params.SourceNumber != "" {
 		db = db.Where("wms_operation.source_number like ?", fmt.Sprintf("%%%v%%", params.SourceNumber))
@@ -531,10 +533,10 @@
 		return
 	}
 	detail := &models.OperationDetails{
-		ProductId:   params.ProductId,
-		ProductName: params.ProductName,
-		Amount:      params.Amount,
-		Unit:        params.Unit,
+		ProductId: params.ProductId,
+		//ProductName: params.ProductName,
+		Amount: params.Amount,
+		//Unit:        params.Unit,
 	}
 	operation := models.Operation{
 		Id:              params.Id,
diff --git a/docs/docs.go b/docs/docs.go
index 5554acc..20caec6 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -675,22 +675,7 @@
                     "200": {
                         "description": "鎴愬姛",
                         "schema": {
-                            "allOf": [
-                                {
-                                    "$ref": "#/definitions/util.ResponseList"
-                                },
-                                {
-                                    "type": "object",
-                                    "properties": {
-                                        "data": {
-                                            "type": "array",
-                                            "items": {
-                                                "$ref": "#/definitions/models.OperationType"
-                                            }
-                                        }
-                                    }
-                                }
-                            ]
+                            "$ref": "#/definitions/util.ResponseList"
                         }
                     }
                 }
@@ -2118,7 +2103,7 @@
             "type": "object",
             "properties": {
                 "amount": {
-                    "description": "鏁伴噺",
+                    "description": "ProductName string          ` + "`" + `json:\"productName\" gorm:\"type:varchar(255);not null;comment:浜у搧鍚嶇О\"` + "`" + ` //浜у搧鍚嶇О",
                     "type": "number"
                 },
                 "createTime": {
@@ -2131,141 +2116,20 @@
                     "description": "鎿嶄綔id",
                     "type": "integer"
                 },
+                "product": {
+                    "description": "Unit        string          ` + "`" + `json:\"unit\" gorm:\"type:varchar(31);comment:鍗曚綅\"` + "`" + `                    //鍗曚綅",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/models.Material"
+                        }
+                    ]
+                },
                 "productId": {
                     "description": "浜у搧id",
                     "type": "string"
                 },
-                "productName": {
-                    "description": "浜у搧鍚嶇О",
-                    "type": "string"
-                },
-                "unit": {
-                    "type": "string"
-                },
                 "updateTime": {
                     "type": "string"
-                }
-            }
-        },
-        "models.OperationType": {
-            "type": "object",
-            "properties": {
-                "ReservationDaysBeforePriority": {
-                    "description": "鍦ㄤ紭鍏堢骇鐨勫墠鍑犲ぉ",
-                    "type": "integer"
-                },
-                "baseOperationType": {
-                    "description": "鍩虹浣滀笟绫诲瀷",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.BaseOperationType"
-                        }
-                    ]
-                },
-                "company": {
-                    "description": "鍏徃",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Company"
-                        }
-                    ]
-                },
-                "companyId": {
-                    "description": "鍏徃id",
-                    "type": "integer"
-                },
-                "createBackorder": {
-                    "description": "鍒涘缓娆犲崟",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.WhetherType"
-                        }
-                    ]
-                },
-                "createTime": {
-                    "type": "string"
-                },
-                "defaultLocationDest": {
-                    "description": "榛樿鐩爣浣嶇疆",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Location"
-                        }
-                    ]
-                },
-                "defaultLocationDestId": {
-                    "description": "榛樿鐩爣浣嶇疆id",
-                    "type": "integer"
-                },
-                "defaultLocationSrc": {
-                    "description": "榛樿婧愪綅缃�",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Location"
-                        }
-                    ]
-                },
-                "defaultLocationSrcId": {
-                    "description": "榛樿婧愪綅缃甶d",
-                    "type": "integer"
-                },
-                "earlyOperations": {
-                    "description": "棰勫~鍐欎綔涓氳鎯�",
-                    "type": "boolean"
-                },
-                "id": {
-                    "type": "integer"
-                },
-                "name": {
-                    "description": "浠撳簱鍚嶇О",
-                    "type": "string"
-                },
-                "prefix": {
-                    "description": "鍓嶇紑",
-                    "type": "string"
-                },
-                "printLabel": {
-                    "description": "鏄惁鎵撳嵃鏍囩",
-                    "type": "boolean"
-                },
-                "reservationDaysBefore": {
-                    "description": "鏀惰揣鍓嶅嚑澶�",
-                    "type": "integer"
-                },
-                "reservationMethod": {
-                    "description": "淇濈暀鏂瑰紡",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.ReservationMethod"
-                        }
-                    ]
-                },
-                "returnOperationType": {
-                    "description": "閫�璐х被鍨嬪悕绉�",
-                    "type": "string"
-                },
-                "returnOperationTypeID": {
-                    "description": "閫�璐х被鍨婭D",
-                    "type": "integer"
-                },
-                "showOperations": {
-                    "description": "鏄剧ず浣滀笟璇︽儏",
-                    "type": "boolean"
-                },
-                "updateTime": {
-                    "type": "string"
-                },
-                "warehouse": {
-                    "description": "浠撳簱",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Warehouse"
-                        }
-                    ]
-                },
-                "warehouseId": {
-                    "description": "浠撳簱id",
-                    "type": "integer"
                 }
             }
         },
@@ -2430,6 +2294,7 @@
             "type": "object",
             "properties": {
                 "amount": {
+                    "description": "ProductName    string          ` + "`" + `json:\"productName\"` + "`" + `",
                     "type": "number"
                 },
                 "fromLocationId": {
@@ -2438,17 +2303,11 @@
                 "productId": {
                     "type": "string"
                 },
-                "productName": {
-                    "type": "string"
-                },
                 "sourceNumber": {
                     "type": "string"
                 },
                 "toLocationId": {
                     "type": "integer"
-                },
-                "unit": {
-                    "type": "string"
                 }
             }
         },
@@ -2693,18 +2552,11 @@
                     "type": "integer"
                 },
                 "amount": {
-                    "description": "鏁伴噺",
+                    "description": "ProductName string          ` + "`" + `json:\"productName\" gorm:\"type:varchar(255);not null;comment:浜у搧鍚嶇О\"` + "`" + ` //浜у搧鍚嶇О",
                     "type": "number"
                 },
                 "productId": {
                     "description": "浜у搧id",
-                    "type": "string"
-                },
-                "productName": {
-                    "description": "浜у搧鍚嶇О",
-                    "type": "string"
-                },
-                "unit": {
                     "type": "string"
                 }
             }
@@ -2806,6 +2658,7 @@
             "type": "object",
             "properties": {
                 "amount": {
+                    "description": "ProductName    string                   ` + "`" + `json:\"productName\"` + "`" + `",
                     "type": "number"
                 },
                 "fromLocationId": {
@@ -2815,15 +2668,13 @@
                     "type": "integer"
                 },
                 "number": {
+                    "description": "Unit           string                   ` + "`" + `json:\"unit\"` + "`" + `",
                     "type": "string"
                 },
                 "operationDate": {
                     "type": "string"
                 },
                 "productId": {
-                    "type": "string"
-                },
-                "productName": {
                     "type": "string"
                 },
                 "sourceNumber": {
@@ -2834,9 +2685,6 @@
                 },
                 "toLocationId": {
                     "type": "integer"
-                },
-                "unit": {
-                    "type": "string"
                 }
             }
         },
diff --git a/docs/swagger.json b/docs/swagger.json
index 86a516f..801bf26 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -663,22 +663,7 @@
                     "200": {
                         "description": "鎴愬姛",
                         "schema": {
-                            "allOf": [
-                                {
-                                    "$ref": "#/definitions/util.ResponseList"
-                                },
-                                {
-                                    "type": "object",
-                                    "properties": {
-                                        "data": {
-                                            "type": "array",
-                                            "items": {
-                                                "$ref": "#/definitions/models.OperationType"
-                                            }
-                                        }
-                                    }
-                                }
-                            ]
+                            "$ref": "#/definitions/util.ResponseList"
                         }
                     }
                 }
@@ -2106,7 +2091,7 @@
             "type": "object",
             "properties": {
                 "amount": {
-                    "description": "鏁伴噺",
+                    "description": "ProductName string          `json:\"productName\" gorm:\"type:varchar(255);not null;comment:浜у搧鍚嶇О\"` //浜у搧鍚嶇О",
                     "type": "number"
                 },
                 "createTime": {
@@ -2119,141 +2104,20 @@
                     "description": "鎿嶄綔id",
                     "type": "integer"
                 },
+                "product": {
+                    "description": "Unit        string          `json:\"unit\" gorm:\"type:varchar(31);comment:鍗曚綅\"`                    //鍗曚綅",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/models.Material"
+                        }
+                    ]
+                },
                 "productId": {
                     "description": "浜у搧id",
                     "type": "string"
                 },
-                "productName": {
-                    "description": "浜у搧鍚嶇О",
-                    "type": "string"
-                },
-                "unit": {
-                    "type": "string"
-                },
                 "updateTime": {
                     "type": "string"
-                }
-            }
-        },
-        "models.OperationType": {
-            "type": "object",
-            "properties": {
-                "ReservationDaysBeforePriority": {
-                    "description": "鍦ㄤ紭鍏堢骇鐨勫墠鍑犲ぉ",
-                    "type": "integer"
-                },
-                "baseOperationType": {
-                    "description": "鍩虹浣滀笟绫诲瀷",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.BaseOperationType"
-                        }
-                    ]
-                },
-                "company": {
-                    "description": "鍏徃",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Company"
-                        }
-                    ]
-                },
-                "companyId": {
-                    "description": "鍏徃id",
-                    "type": "integer"
-                },
-                "createBackorder": {
-                    "description": "鍒涘缓娆犲崟",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.WhetherType"
-                        }
-                    ]
-                },
-                "createTime": {
-                    "type": "string"
-                },
-                "defaultLocationDest": {
-                    "description": "榛樿鐩爣浣嶇疆",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Location"
-                        }
-                    ]
-                },
-                "defaultLocationDestId": {
-                    "description": "榛樿鐩爣浣嶇疆id",
-                    "type": "integer"
-                },
-                "defaultLocationSrc": {
-                    "description": "榛樿婧愪綅缃�",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Location"
-                        }
-                    ]
-                },
-                "defaultLocationSrcId": {
-                    "description": "榛樿婧愪綅缃甶d",
-                    "type": "integer"
-                },
-                "earlyOperations": {
-                    "description": "棰勫~鍐欎綔涓氳鎯�",
-                    "type": "boolean"
-                },
-                "id": {
-                    "type": "integer"
-                },
-                "name": {
-                    "description": "浠撳簱鍚嶇О",
-                    "type": "string"
-                },
-                "prefix": {
-                    "description": "鍓嶇紑",
-                    "type": "string"
-                },
-                "printLabel": {
-                    "description": "鏄惁鎵撳嵃鏍囩",
-                    "type": "boolean"
-                },
-                "reservationDaysBefore": {
-                    "description": "鏀惰揣鍓嶅嚑澶�",
-                    "type": "integer"
-                },
-                "reservationMethod": {
-                    "description": "淇濈暀鏂瑰紡",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/constvar.ReservationMethod"
-                        }
-                    ]
-                },
-                "returnOperationType": {
-                    "description": "閫�璐х被鍨嬪悕绉�",
-                    "type": "string"
-                },
-                "returnOperationTypeID": {
-                    "description": "閫�璐х被鍨婭D",
-                    "type": "integer"
-                },
-                "showOperations": {
-                    "description": "鏄剧ず浣滀笟璇︽儏",
-                    "type": "boolean"
-                },
-                "updateTime": {
-                    "type": "string"
-                },
-                "warehouse": {
-                    "description": "浠撳簱",
-                    "allOf": [
-                        {
-                            "$ref": "#/definitions/models.Warehouse"
-                        }
-                    ]
-                },
-                "warehouseId": {
-                    "description": "浠撳簱id",
-                    "type": "integer"
                 }
             }
         },
@@ -2418,6 +2282,7 @@
             "type": "object",
             "properties": {
                 "amount": {
+                    "description": "ProductName    string          `json:\"productName\"`",
                     "type": "number"
                 },
                 "fromLocationId": {
@@ -2426,17 +2291,11 @@
                 "productId": {
                     "type": "string"
                 },
-                "productName": {
-                    "type": "string"
-                },
                 "sourceNumber": {
                     "type": "string"
                 },
                 "toLocationId": {
                     "type": "integer"
-                },
-                "unit": {
-                    "type": "string"
                 }
             }
         },
@@ -2681,18 +2540,11 @@
                     "type": "integer"
                 },
                 "amount": {
-                    "description": "鏁伴噺",
+                    "description": "ProductName string          `json:\"productName\" gorm:\"type:varchar(255);not null;comment:浜у搧鍚嶇О\"` //浜у搧鍚嶇О",
                     "type": "number"
                 },
                 "productId": {
                     "description": "浜у搧id",
-                    "type": "string"
-                },
-                "productName": {
-                    "description": "浜у搧鍚嶇О",
-                    "type": "string"
-                },
-                "unit": {
                     "type": "string"
                 }
             }
@@ -2794,6 +2646,7 @@
             "type": "object",
             "properties": {
                 "amount": {
+                    "description": "ProductName    string                   `json:\"productName\"`",
                     "type": "number"
                 },
                 "fromLocationId": {
@@ -2803,15 +2656,13 @@
                     "type": "integer"
                 },
                 "number": {
+                    "description": "Unit           string                   `json:\"unit\"`",
                     "type": "string"
                 },
                 "operationDate": {
                     "type": "string"
                 },
                 "productId": {
-                    "type": "string"
-                },
-                "productName": {
                     "type": "string"
                 },
                 "sourceNumber": {
@@ -2822,9 +2673,6 @@
                 },
                 "toLocationId": {
                     "type": "integer"
-                },
-                "unit": {
-                    "type": "string"
                 }
             }
         },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index d43edc4..81acff3 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -478,7 +478,8 @@
   models.OperationDetails:
     properties:
       amount:
-        description: 鏁伴噺
+        description: ProductName string          `json:"productName" gorm:"type:varchar(255);not
+          null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
         type: number
       createTime:
         type: string
@@ -487,92 +488,15 @@
       operationId:
         description: 鎿嶄綔id
         type: integer
+      product:
+        allOf:
+        - $ref: '#/definitions/models.Material'
+        description: Unit        string          `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`                    //鍗曚綅
       productId:
         description: 浜у搧id
         type: string
-      productName:
-        description: 浜у搧鍚嶇О
-        type: string
-      unit:
-        type: string
       updateTime:
         type: string
-    type: object
-  models.OperationType:
-    properties:
-      ReservationDaysBeforePriority:
-        description: 鍦ㄤ紭鍏堢骇鐨勫墠鍑犲ぉ
-        type: integer
-      baseOperationType:
-        allOf:
-        - $ref: '#/definitions/constvar.BaseOperationType'
-        description: 鍩虹浣滀笟绫诲瀷
-      company:
-        allOf:
-        - $ref: '#/definitions/models.Company'
-        description: 鍏徃
-      companyId:
-        description: 鍏徃id
-        type: integer
-      createBackorder:
-        allOf:
-        - $ref: '#/definitions/constvar.WhetherType'
-        description: 鍒涘缓娆犲崟
-      createTime:
-        type: string
-      defaultLocationDest:
-        allOf:
-        - $ref: '#/definitions/models.Location'
-        description: 榛樿鐩爣浣嶇疆
-      defaultLocationDestId:
-        description: 榛樿鐩爣浣嶇疆id
-        type: integer
-      defaultLocationSrc:
-        allOf:
-        - $ref: '#/definitions/models.Location'
-        description: 榛樿婧愪綅缃�
-      defaultLocationSrcId:
-        description: 榛樿婧愪綅缃甶d
-        type: integer
-      earlyOperations:
-        description: 棰勫~鍐欎綔涓氳鎯�
-        type: boolean
-      id:
-        type: integer
-      name:
-        description: 浠撳簱鍚嶇О
-        type: string
-      prefix:
-        description: 鍓嶇紑
-        type: string
-      printLabel:
-        description: 鏄惁鎵撳嵃鏍囩
-        type: boolean
-      reservationDaysBefore:
-        description: 鏀惰揣鍓嶅嚑澶�
-        type: integer
-      reservationMethod:
-        allOf:
-        - $ref: '#/definitions/constvar.ReservationMethod'
-        description: 淇濈暀鏂瑰紡
-      returnOperationType:
-        description: 閫�璐х被鍨嬪悕绉�
-        type: string
-      returnOperationTypeID:
-        description: 閫�璐х被鍨婭D
-        type: integer
-      showOperations:
-        description: 鏄剧ず浣滀笟璇︽儏
-        type: boolean
-      updateTime:
-        type: string
-      warehouse:
-        allOf:
-        - $ref: '#/definitions/models.Warehouse'
-        description: 浠撳簱
-      warehouseId:
-        description: 浠撳簱id
-        type: integer
     type: object
   models.ProductCategory:
     properties:
@@ -684,19 +608,16 @@
   request.AddDisuse:
     properties:
       amount:
+        description: ProductName    string          `json:"productName"`
         type: number
       fromLocationId:
         type: integer
       productId:
         type: string
-      productName:
-        type: string
       sourceNumber:
         type: string
       toLocationId:
         type: integer
-      unit:
-        type: string
     type: object
   request.AddOperation:
     properties:
@@ -865,15 +786,11 @@
         description: 鎿嶄綔id
         type: integer
       amount:
-        description: 鏁伴噺
+        description: ProductName string          `json:"productName" gorm:"type:varchar(255);not
+          null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
         type: number
       productId:
         description: 浜у搧id
-        type: string
-      productName:
-        description: 浜у搧鍚嶇О
-        type: string
-      unit:
         type: string
     type: object
   request.OperationList:
@@ -943,18 +860,18 @@
   request.UpdateDisuse:
     properties:
       amount:
+        description: ProductName    string                   `json:"productName"`
         type: number
       fromLocationId:
         type: integer
       id:
         type: integer
       number:
+        description: Unit           string                   `json:"unit"`
         type: string
       operationDate:
         type: string
       productId:
-        type: string
-      productName:
         type: string
       sourceNumber:
         type: string
@@ -962,8 +879,6 @@
         $ref: '#/definitions/constvar.OperationStatus'
       toLocationId:
         type: integer
-      unit:
-        type: string
     type: object
   request.UpdateOperation:
     properties:
@@ -1496,14 +1411,7 @@
         "200":
           description: 鎴愬姛
           schema:
-            allOf:
-            - $ref: '#/definitions/util.ResponseList'
-            - properties:
-                data:
-                  items:
-                    $ref: '#/definitions/models.OperationType'
-                  type: array
-              type: object
+            $ref: '#/definitions/util.ResponseList'
       summary: 鏌ヨ浣滀笟绫诲瀷鍒楄〃
       tags:
       - 涓氬姟绫诲瀷
diff --git a/models/operation.go b/models/operation.go
index b0d64d4..7f17d4a 100644
--- a/models/operation.go
+++ b/models/operation.go
@@ -134,7 +134,7 @@
 	}
 
 	if slf.Preload {
-		db = db.Model(&Operation{}).Preload("Details").Preload("FromLocation").Preload("ToLocation")
+		db = db.Model(&Operation{}).Preload("Details").Preload("Details.Product").Preload("FromLocation").Preload("ToLocation")
 	}
 
 	if slf.Disuse {
diff --git a/models/operation_details.go b/models/operation_details.go
index 18e8cfd..32e8f9a 100644
--- a/models/operation_details.go
+++ b/models/operation_details.go
@@ -11,12 +11,13 @@
 	// OperationDetails 鎿嶄綔鏄庣粏琛�
 	OperationDetails struct {
 		WmsModel
-		Id          int             `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
-		OperationID int             `json:"operationId" gorm:"type:int;not null;comment:鎿嶄綔璁板綍id"`        //鎿嶄綔id
-		ProductId   string          `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"`   //浜у搧id
-		ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
-		Amount      decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:鏁伴噺"`       //鏁伴噺
-		Unit        string          `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`
+		Id          int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		OperationID int    `json:"operationId" gorm:"type:int;not null;comment:鎿嶄綔璁板綍id"`      //鎿嶄綔id
+		ProductId   string `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"` //浜у搧id
+		//ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
+		Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:鏁伴噺"` //鏁伴噺
+		//Unit        string          `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`                    //鍗曚綅
+		Product Material `json:"product" gorm:"foreignKey:ProductId;references:ID"`
 	}
 
 	OperationDetailsSearch struct {
diff --git a/models/operation_type.go b/models/operation_type.go
index b97e0b0..26842f7 100644
--- a/models/operation_type.go
+++ b/models/operation_type.go
@@ -34,6 +34,8 @@
 		CreateBackorder               constvar.WhetherType       `json:"createBackorder" gorm:"column:create_backorder"`                 //鍒涘缓娆犲崟
 		ReturnOperationTypeID         int                        `json:"returnOperationTypeID" gorm:"column:return_job_type_id"`         //閫�璐х被鍨婭D
 		ReturnOperationType           string                     `json:"returnOperationType" gorm:"-"`                                   //閫�璐х被鍨嬪悕绉�
+		ReadyCount                    int                        `json:"readyCount" gorm:"-"`                                            //灏辩华鏁伴噺
+		FinishCount                   int                        `json:"finishCount" gorm:"-"`                                           //瀹屾垚鏁伴噺
 	}
 
 	OperationTypeSearch struct {
@@ -44,6 +46,12 @@
 		Keyword  string
 		Orm      *gorm.DB
 		Preload  bool
+	}
+
+	OperationTypeByStatus struct {
+		Id     int                      `gorm:"column:id"`
+		Status constvar.OperationStatus `gorm:"column:status"`
+		Count  int                      `gorm:"column:count"`
 	}
 )
 
@@ -268,3 +276,20 @@
 
 	return records, nil
 }
+
+func (slf *OperationTypeSearch) ListByStatusAndCount(idList []int) ([]*OperationTypeByStatus, error) {
+	var (
+		records = make([]*OperationTypeByStatus, 0)
+		db      = slf.Orm
+	)
+	db = db.Table("wms_job_type").Select("wms_job_type.id,wms_operation.status,count(wms_operation.id) as count").InnerJoins("inner join wms_operation on wms_operation.operation_type_id=wms_job_type.id").Group("wms_job_type.id,wms_operation.status")
+	if len(idList) > 0 {
+		db = db.Where("wms_job_type.id IN ?", idList)
+	}
+
+	if err := db.Find(&records).Error; err != nil {
+		return records, fmt.Errorf("func ListByStatusAndCount err: %v, ", err)
+	}
+
+	return records, nil
+}
diff --git a/request/operation.go b/request/operation.go
index 9e730f2..5f17078 100644
--- a/request/operation.go
+++ b/request/operation.go
@@ -30,11 +30,12 @@
 }
 
 type OperationDetails struct {
-	OperationId int             `json:"OperationId" gorm:"type:int;not null;comment:鎿嶄綔璁板綍id"`        //鎿嶄綔id
-	ProductId   string          `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"`   //浜у搧id
-	ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
-	Amount      decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:鏁伴噺"`       //鏁伴噺
-	Unit        string          `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`
+	OperationId int    `json:"OperationId" gorm:"type:int;not null;comment:鎿嶄綔璁板綍id"`      //鎿嶄綔id
+	ProductId   string `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"` //浜у搧id
+	//ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
+	Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:鏁伴噺"` //鏁伴噺
+	//Unit        string          `json:"unit" gorm:"type:varchar(31);comment:鍗曚綅"`                    //鍗曚綅
+	//Product models.Material `json:"product" gorm:"foreignKey:ProductId;references:ID"`
 }
 
 type OperationList struct {
diff --git a/request/product_request.go b/request/product_request.go
index c33ccea..2c91b79 100644
--- a/request/product_request.go
+++ b/request/product_request.go
@@ -17,13 +17,13 @@
 }
 
 type AddDisuse struct {
-	ProductId      string          `json:"productId"`
-	ProductName    string          `json:"productName"`
+	ProductId string `json:"productId"`
+	//ProductName    string          `json:"productName"`
 	Amount         decimal.Decimal `json:"amount"`
 	FromLocationId int             `json:"fromLocationId"`
 	ToLocationId   int             `json:"toLocationId"`
 	SourceNumber   string          `json:"sourceNumber"`
-	Unit           string          `json:"unit"`
+	//Unit           string          `json:"unit"`
 }
 
 type QueryDisuseList struct {
@@ -33,15 +33,15 @@
 }
 
 type UpdateDisuse struct {
-	Id             int                      `json:"id"`
-	ProductId      string                   `json:"productId"`
-	ProductName    string                   `json:"productName"`
-	Amount         decimal.Decimal          `json:"amount"`
-	FromLocationId int                      `json:"fromLocationId"`
-	ToLocationId   int                      `json:"toLocationId"`
-	SourceNumber   string                   `json:"sourceNumber"`
-	Unit           string                   `json:"unit"`
-	Number         string                   `json:"number"`
-	Status         constvar.OperationStatus `json:"status"`
-	OperationDate  string                   `json:"operationDate"`
+	Id        int    `json:"id"`
+	ProductId string `json:"productId"`
+	//ProductName    string                   `json:"productName"`
+	Amount         decimal.Decimal `json:"amount"`
+	FromLocationId int             `json:"fromLocationId"`
+	ToLocationId   int             `json:"toLocationId"`
+	SourceNumber   string          `json:"sourceNumber"`
+	//Unit           string                   `json:"unit"`
+	Number        string                   `json:"number"`
+	Status        constvar.OperationStatus `json:"status"`
+	OperationDate string                   `json:"operationDate"`
 }

--
Gitblit v1.8.0