From 55bd24a2d654052d4c4c8eb6e7bee244af81d446 Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期四, 19 十月 2023 15:53:22 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS

---
 models/product_category.go             |    2 
 request/report_forms_request.go        |    2 
 models/location_product.go             |    8 +
 controllers/report_forms_controller.go |   51 +++++++-----
 models/db.go                           |    1 
 models/location.go                     |   24 ++++++
 docs/swagger.yaml                      |   21 ++++
 controllers/location.go                |   24 ++++-
 docs/docs.go                           |   30 +++++++
 docs/swagger.json                      |   28 ++++++
 10 files changed, 154 insertions(+), 37 deletions(-)

diff --git a/controllers/location.go b/controllers/location.go
index 5785eb6..e545fb9 100644
--- a/controllers/location.go
+++ b/controllers/location.go
@@ -4,7 +4,6 @@
 	"errors"
 	"github.com/gin-gonic/gin"
 	"strconv"
-	"strings"
 	"wms/extend/code"
 	"wms/extend/util"
 	"wms/models"
@@ -115,13 +114,24 @@
 		util.ResponseFormat(c, code.RequestParamError, err)
 		return
 	}
-	index := strings.LastIndex(params.JointName, "/")
-	if index > 0 {
-		jn := params.JointName[:index]
-		oldName := params.JointName[index+1:]
-		if oldName != params.Name {
-			params.JointName = jn + "/" + params.Name
+	//index := strings.LastIndex(params.JointName, "/")
+	//if index > 0 {
+	//	jn := params.JointName[:index]
+	//	oldName := params.JointName[index+1:]
+	//	if oldName != params.Name {
+	//		params.JointName = jn + "/" + params.Name
+	//	}
+	//}
+	if params.ParentId != 0 {
+		//鏌ヨ涓婄骇鍚嶇О
+		first, err := models.NewLocationSearch().SetID(params.ParentId).First()
+		if err != nil {
+			util.ResponseFormat(c, code.RequestParamError, "鏌ヨ涓婄骇鍚嶇О澶辫触")
+			return
 		}
+		params.JointName = first.JointName + "/" + params.Name
+	} else {
+		params.JointName = params.Name
 	}
 	err := models.NewLocationSearch().Update(&params)
 	if err != nil {
diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go
index db62c73..85a48da 100644
--- a/controllers/report_forms_controller.go
+++ b/controllers/report_forms_controller.go
@@ -1,6 +1,7 @@
 package controllers
 
 import (
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"wms/constvar"
 	"wms/extend/code"
@@ -28,20 +29,31 @@
 	}
 	//鏌ヨ浜у搧
 	search := models.NewMaterialSearch()
-	if params.PageInfo.Check() {
-		search.SetPage(params.Page, params.PageSize)
+	search.Orm = search.Orm.Model(&models.Material{}).
+		Select(`material.id, material.name, material.cost, material.amount, material.unit, wms_product_category.name as category_name `).
+		Joins("left join wms_product_category on material.category_id = wms_product_category.id")
+	if len(params.CategoryIds) > 0 {
+		search.Orm.Where("material.category_id in (?)", params.CategoryIds)
 	}
-	materials, total, err := search.SetCategoryIds(params.CategoryIds).Find()
-	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浜у搧绫诲瀷澶辫触")
+	if params.KeyWord != "" {
+		search.Orm.Where("material.name like ?", "%"+params.KeyWord+"%").Or("wms_product_category.name like ?", "%"+params.KeyWord+"%")
+	}
+	var (
+		materials = make([]*models.Material, 0)
+		total     int64
+	)
+	if err := search.Orm.Count(&total).Error; err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ヨtotal澶辫触")
 		return
 	}
-	//鏌ヨ浜у搧绫诲瀷
-	categories, err := models.NewProductCategorySearch().SetIds(params.CategoryIds).FindNotTotal()
-	if err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浜у搧绫诲瀷澶辫触")
+	if params.Page*params.PageSize > 0 {
+		search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
+	}
+	if err := search.Orm.Find(&materials).Error; err != nil {
+		util.ResponseFormat(c, code.RequestParamError, fmt.Errorf("鏌ヨ浜у搧澶辫触: %v", err))
 		return
 	}
+
 	//鏌ヨ鍑哄叆搴撴暟閲�
 	locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal()
 	if err != nil {
@@ -57,13 +69,13 @@
 	dbIn := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
 		Joins("left join wms_operation ON wms_operation_details.operation_id=wms_operation.id").
 		Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeIncoming).
-		Where("wms_operation.status=?", constvar.OperationStatus_Ready)
+		Where("wms_operation.status in (?)", []int{3, 4})
 	dbOut := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
 		Joins("left join wms_operation ON wms_operation_details.operation_id=wms_operation.id").
 		Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeOutgoing).
-		Where("wms_operation.status=?", constvar.OperationStatus_Ready)
+		Where("wms_operation.status in (?)", []int{3, 4})
 	if len(locationIds) > 0 {
-		dbIn.Where("wms_operation.from_location_id in (?)", locationIds)
+		dbIn.Where("wms_operation.to_location_id in (?)", locationIds)
 		dbOut.Where("wms_operation.from_location_id in (?)", locationIds)
 	}
 	err = dbIn.Find(&inHouse).Error
@@ -82,15 +94,9 @@
 		resp.ProduceId = material.ID
 		resp.ProductName = material.Name
 		resp.Cost = material.Cost
-		resp.Amount = material.Amount
 		resp.Unit = material.Unit
 		resp.Value = material.Amount.Mul(material.Cost)
-		for _, category := range categories {
-			if material.CategoryId == int(category.ID) {
-				resp.ProductType = category.Name
-				break
-			}
-		}
+		resp.ProductType = material.CategoryName
 		for _, details := range inHouse {
 			if material.ID == details.ProductId {
 				resp.In = resp.In.Add(details.Amount)
@@ -101,6 +107,7 @@
 				resp.Out = resp.Out.Add(details.Amount)
 			}
 		}
+		resp.Amount = resp.In.Sub(resp.Out)
 		resp.AvailableNumber = resp.Amount
 		result = append(result, resp)
 	}
@@ -125,7 +132,7 @@
 	if params.PageInfo.Check() {
 		detailsSearch.SetPage(params.Page, params.PageSize)
 	}
-	details, total, err := detailsSearch.SetProductId(params.ProduceId).Find()
+	details, err := detailsSearch.SetProductId(params.ProduceId).FindNotTotal()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鎿嶄綔璇︽儏澶辫触")
 		return
@@ -135,7 +142,7 @@
 		operationIds = append(operationIds, detail.OperationID)
 	}
 	//鑾峰彇宸插畬鎴愮殑鎿嶄綔璁板綍
-	operations, err := models.NewOperationSearch().SetIds(operationIds).SetStatus(constvar.OperationStatus_Finish).FindNotTotal()
+	operations, total, err := models.NewOperationSearch().SetIds(operationIds).SetStatus(constvar.OperationStatus_Finish).Find()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鎿嶄綔璁板綍澶辫触")
 		return
@@ -166,7 +173,7 @@
 // @Tags      鎶ヨ〃
 // @Summary   鑾峰彇浣嶇疆鎶ヨ〃
 // @Produce   application/json
-// @Param     object  body  request.PageInfo true  "鏌ヨ鍙傛暟"
+// @Param     object  body  request.GetLocationForms true  "鏌ヨ鍙傛暟"
 // @Success   200 {object} util.ResponseList{data=[]response.LocationForms}	"鎴愬姛"
 // @Router    /api-wms/v1/forms/getLocationForms [post]
 func (slf ReportFormsController) GetLocationForms(c *gin.Context) {
diff --git a/docs/docs.go b/docs/docs.go
index 4e48dec..80291e3 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -400,7 +400,7 @@
                         "in": "body",
                         "required": true,
                         "schema": {
-                            "$ref": "#/definitions/request.PageInfo"
+                            "$ref": "#/definitions/request.GetLocationForms"
                         }
                     }
                 ],
@@ -2645,7 +2645,7 @@
                     ]
                 },
                 "name": {
-                    "description": "浣嶇疆鍚嶇О",
+                    "description": "鍒嗙被鍚嶇О",
                     "type": "string"
                 },
                 "parentId": {
@@ -3062,6 +3062,10 @@
                         "type": "integer"
                     }
                 },
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3079,6 +3083,10 @@
         "request.GetInventoryHistory": {
             "type": "object",
             "properties": {
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3098,6 +3106,22 @@
                 "unit": {
                     "description": "鍗曚綅",
                     "type": "string"
+                }
+            }
+        },
+        "request.GetLocationForms": {
+            "type": "object",
+            "properties": {
+                "keyWord": {
+                    "type": "string"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
                 }
             }
         },
@@ -3710,6 +3734,8 @@
 	Description:      "",
 	InfoInstanceName: "swagger",
 	SwaggerTemplate:  docTemplate,
+	LeftDelim:        "{{",
+	RightDelim:       "}}",
 }
 
 func init() {
diff --git a/docs/swagger.json b/docs/swagger.json
index b94892c..ccf0c51 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -388,7 +388,7 @@
                         "in": "body",
                         "required": true,
                         "schema": {
-                            "$ref": "#/definitions/request.PageInfo"
+                            "$ref": "#/definitions/request.GetLocationForms"
                         }
                     }
                 ],
@@ -2633,7 +2633,7 @@
                     ]
                 },
                 "name": {
-                    "description": "浣嶇疆鍚嶇О",
+                    "description": "鍒嗙被鍚嶇О",
                     "type": "string"
                 },
                 "parentId": {
@@ -3050,6 +3050,10 @@
                         "type": "integer"
                     }
                 },
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3067,6 +3071,10 @@
         "request.GetInventoryHistory": {
             "type": "object",
             "properties": {
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3089,6 +3097,22 @@
                 }
             }
         },
+        "request.GetLocationForms": {
+            "type": "object",
+            "properties": {
+                "keyWord": {
+                    "type": "string"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                }
+            }
+        },
         "request.GetProductList": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index ba837a0..64383bf 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -529,7 +529,7 @@
         - $ref: '#/definitions/constvar.InventoryValuation'
         description: 搴撳瓨璁′环
       name:
-        description: 浣嶇疆鍚嶇О
+        description: 鍒嗙被鍚嶇О
         type: string
       parentId:
         description: 涓婄骇id
@@ -821,6 +821,9 @@
         items:
           type: integer
         type: array
+      keyWord:
+        description: 鎼滅储鏉′欢
+        type: string
       page:
         description: 椤电爜
         type: integer
@@ -833,6 +836,9 @@
     type: object
   request.GetInventoryHistory:
     properties:
+      keyWord:
+        description: 鎼滅储鏉′欢
+        type: string
       page:
         description: 椤电爜
         type: integer
@@ -848,6 +854,17 @@
       unit:
         description: 鍗曚綅
         type: string
+    type: object
+  request.GetLocationForms:
+    properties:
+      keyWord:
+        type: string
+      page:
+        description: 椤电爜
+        type: integer
+      pageSize:
+        description: 姣忛〉澶у皬
+        type: integer
     type: object
   request.GetProductList:
     properties:
@@ -1499,7 +1516,7 @@
         name: object
         required: true
         schema:
-          $ref: '#/definitions/request.PageInfo'
+          $ref: '#/definitions/request.GetLocationForms'
       produces:
       - application/json
       responses:
diff --git a/models/db.go b/models/db.go
index 8f47201..a1570c8 100644
--- a/models/db.go
+++ b/models/db.go
@@ -98,6 +98,7 @@
 func InsertDefaultData() {
 	models := []interface{}{
 		NewDepartmentSearch(),
+		NewLocationSearch(),
 	}
 	for _, model := range models {
 		if id, ok := model.(InitDefaultData); ok {
diff --git a/models/location.go b/models/location.go
index 64676df..15830ea 100644
--- a/models/location.go
+++ b/models/location.go
@@ -317,3 +317,27 @@
 	}
 	return records, nil
 }
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *LocationSearch) InitDefaultData() error {
+	var (
+		db          = slf.Orm.Table(slf.TableName())
+		total int64 = 0
+	)
+	if err := db.Count(&total).Error; err != nil {
+		return err
+	}
+	if total != 0 {
+		return nil
+	}
+	locations := make([]*Location, 0)
+	locations = append(locations, &Location{Name: "渚涘簲鍟嗕綅缃�", Type: 1, JointName: "渚涘簲鍟嗕綅缃�"})
+	locations = append(locations, &Location{Name: "瑙嗗浘", Type: 2, JointName: "瑙嗗浘"})
+	locations = append(locations, &Location{Name: "瀹㈡埛浣嶇疆", Type: 4, JointName: "瀹㈡埛浣嶇疆"})
+	locations = append(locations, &Location{Name: "搴撳瓨鎹熷け", Type: 5, JointName: "搴撳瓨鎹熷け"})
+	locations = append(locations, &Location{Name: "鐢熶骇", Type: 6, JointName: "鐢熶骇"})
+	locations = append(locations, &Location{Name: "涓浆浣嶇疆", Type: 7, JointName: "涓浆浣嶇疆"})
+	locations = append(locations, &Location{Name: "鎶ュ簾浣嶇疆", Type: 8, JointName: "鎶ュ簾浣嶇疆"})
+	locations = append(locations, &Location{Name: "搴撳瓨鐩樼偣", Type: 9, JointName: "搴撳瓨鐩樼偣"})
+	return slf.CreateBatch(locations)
+}
diff --git a/models/location_product.go b/models/location_product.go
index 520b18a..c3f26c6 100644
--- a/models/location_product.go
+++ b/models/location_product.go
@@ -90,7 +90,13 @@
 	}
 
 	if slf.Keyword != "" {
-		db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+		//db = db.Where("Product.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+		db.Joins("left join wms_location on wms_location_product.location_id = wms_location.id").
+			Joins("left join material on wms_location_product.product_id = material.id").
+			Joins("left join wms_product_category on wms_location_product.product_category_id = wms_product_category.id").
+			Where("wms_location.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword)).
+			Or("material.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword)).
+			Or("wms_product_category.name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
 	}
 
 	if slf.Preload {
diff --git a/models/product_category.go b/models/product_category.go
index cb91852..62f611d 100644
--- a/models/product_category.go
+++ b/models/product_category.go
@@ -11,7 +11,7 @@
 	// ProductCategory 浜у搧鍒嗙被
 	ProductCategory struct {
 		BaseModelInt
-		Name                 string                        `json:"name" gorm:"index;type:varchar(255);not null;comment:鍒嗙被鍚嶇О"` //浣嶇疆鍚嶇О
+		Name                 string                        `json:"name" gorm:"index;type:varchar(255);not null;comment:鍒嗙被鍚嶇О"` //鍒嗙被鍚嶇О
 		ParentId             int                           `json:"parentId" gorm:"type:int;comment:涓婄骇鍒嗙被id"`                   //涓婄骇id
 		RouteId              int                           `json:"routeId" gorm:"type:int;comment:璺嚎id"`                      //璺嚎id
 		RouteName            string                        `json:"routeName" gorm:"type:varchar(512);comment:璺嚎鍚嶇О"`           //鍏徃
diff --git a/request/report_forms_request.go b/request/report_forms_request.go
index f659a9b..11a80ef 100644
--- a/request/report_forms_request.go
+++ b/request/report_forms_request.go
@@ -4,6 +4,7 @@
 	PageInfo
 	CategoryIds   []int  `json:"categoryIds"`   //浜у搧绫诲瀷id
 	WarehouseCode string `json:"warehouseCode"` //浠撳簱缂╁啓
+	KeyWord       string `json:"keyWord"`       //鎼滅储鏉′欢
 }
 
 type GetInventoryHistory struct {
@@ -11,6 +12,7 @@
 	ProduceId   string `json:"produceId"`   //浜у搧id
 	ProductName string `json:"productName"` //浜у搧鍚嶇О
 	Unit        string `json:"unit"`        //鍗曚綅
+	KeyWord     string `json:"keyWord"`     //鎼滅储鏉′欢
 }
 
 type GetLocationForms struct {

--
Gitblit v1.8.0