From 07ecf8f047049c92193018d8f0e683bf3a49791e Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期三, 18 十月 2023 16:28:06 +0800
Subject: [PATCH] 报表模块修改

---
 models/product_category.go             |    2 
 request/report_forms_request.go        |    2 
 models/location_product.go             |    8 ++
 controllers/report_forms_controller.go |   39 +++++++-----
 docs/swagger.yaml                      |   21 ++++++
 controllers/location.go                |   24 +++++--
 docs/docs.go                           |   28 ++++++++
 docs/swagger.json                      |   28 ++++++++
 8 files changed, 121 insertions(+), 31 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..d536b4a 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 {
@@ -85,12 +97,7 @@
 		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)
@@ -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 d00b1a0..3f9e79b 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": {
@@ -3058,6 +3058,10 @@
                         "type": "integer"
                     }
                 },
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3075,6 +3079,10 @@
         "request.GetInventoryHistory": {
             "type": "object",
             "properties": {
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3097,6 +3105,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.json b/docs/swagger.json
index 21bebce..ca450f4 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": {
@@ -3046,6 +3046,10 @@
                         "type": "integer"
                     }
                 },
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3063,6 +3067,10 @@
         "request.GetInventoryHistory": {
             "type": "object",
             "properties": {
+                "keyWord": {
+                    "description": "鎼滅储鏉′欢",
+                    "type": "string"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -3085,6 +3093,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 9d205d5..3ab260e 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
@@ -818,6 +818,9 @@
         items:
           type: integer
         type: array
+      keyWord:
+        description: 鎼滅储鏉′欢
+        type: string
       page:
         description: 椤电爜
         type: integer
@@ -830,6 +833,9 @@
     type: object
   request.GetInventoryHistory:
     properties:
+      keyWord:
+        description: 鎼滅储鏉′欢
+        type: string
       page:
         description: 椤电爜
         type: integer
@@ -845,6 +851,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:
@@ -1493,7 +1510,7 @@
         name: object
         required: true
         schema:
-          $ref: '#/definitions/request.PageInfo'
+          $ref: '#/definitions/request.GetLocationForms'
       produces:
       - application/json
       responses:
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