From c950586b718ae6fc198bedf424609a4ac94cb5d1 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 04 七月 2024 18:16:07 +0800 Subject: [PATCH] 增加根据位置或仓库查询产品及库存列表 --- models/db.go | 1 models/location_product_amount.go | 18 ++- models/operation.go | 2 request/location_product_amount.go | 12 ++ docs/swagger.yaml | 45 ++++++++ docs/docs.go | 64 ++++++++++++ docs/swagger.json | 64 ++++++++++++ controllers/location_product_amount.go | 46 +++++++++ router/router.go | 1 9 files changed, 240 insertions(+), 13 deletions(-) diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go index 87ff91b..02d4bad 100644 --- a/controllers/location_product_amount.go +++ b/controllers/location_product_amount.go @@ -143,6 +143,52 @@ util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize) } +// LocationProductList +// @Tags 搴撳瓨鐩樼偣 +// @Summary 鑾峰彇浣嶇疆瀵瑰簲浜у搧鍒楄〃 +// @Produce application/json +// @Param object body request.GetLocationProductList true "鏌ヨ鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/locationProductAmount/locationProductList [post] +func (slf LocationProductAmountController) LocationProductList(c *gin.Context) { + var params request.GetLocationProductList + if err := c.BindJSON(¶ms); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error()) + return + } + if !params.Check() { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父") + return + } + productIds := make([]string, 0) + locationIds := make([]int, 0) + if params.Keyword != "" { + materials, _ := models.NewMaterialSearch().SetKeyword(params.Keyword).FindNotTotal() + for _, material := range materials { + productIds = append(productIds, material.ID) + } + locations, _ := models.NewLocationSearch().SetKeyword(params.Keyword).FindNotTotal() + for _, location := range locations { + locationIds = append(locationIds, location.Id) + } + } + + search := models.NewLocationProductAmountSearch() + records, total, err := search. + SetLocationIds(locationIds).SetWarehouseId(params.WarehouseId).SetProductIds(productIds).SetLocationId(params.LocationId). + SetPage(params.Page, params.PageSize). + SetOrder("id desc"). + SetPreload(true). + FindByPage() + if err != nil { + util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触") + return + } + + util.ResponseFormatList(c, code.Success, records, int(total)) +} + // Add // @Tags 搴撳瓨鐩樼偣 // @Summary 娣诲姞搴撳瓨鐩樼偣淇℃伅 diff --git a/docs/docs.go b/docs/docs.go index 597d1c7..711fe86 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1847,6 +1847,43 @@ } } }, + "/api-wms/v1/locationProductAmount/locationProductList": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "搴撳瓨鐩樼偣" + ], + "summary": "鑾峰彇浣嶇疆瀵瑰簲浜у搧鍒楄〃", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetLocationProductList" + } + }, + { + "type": "string", + "description": "token", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "$ref": "#/definitions/util.Response" + } + } + } + } + }, "/api-wms/v1/locationProductAmount/update": { "post": { "produces": [ @@ -4581,7 +4618,7 @@ "$ref": "#/definitions/models.Location" }, "locationId": { - "description": "LocationProductId int ` + "`" + `json:\"locationProductId\" gorm:\"type:int;not null;comment:涓婃灦瑙勫垯id\"` + "`" + ` //涓婃灦瑙勫垯id\nLocationProduct LocationProduct ` + "`" + `json:\"locationProduct\" gorm:\"foreignKey:LocationProductId;references:Id\"` + "`" + `", + "description": "浣嶇疆id", "type": "integer" }, "product": { @@ -4600,6 +4637,9 @@ }, "updateTime": { "type": "string" + }, + "warehouseId": { + "type": "integer" } } }, @@ -6395,6 +6435,28 @@ } } }, + "request.GetLocationProductList": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "locationId": { + "type": "integer" + }, + "page": { + "description": "椤电爜", + "type": "integer" + }, + "pageSize": { + "description": "姣忛〉澶у皬", + "type": "integer" + }, + "warehouseId": { + "type": "integer" + } + } + }, "request.GetMiniDictList": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 340d84d..10da27b 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1836,6 +1836,43 @@ } } }, + "/api-wms/v1/locationProductAmount/locationProductList": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "搴撳瓨鐩樼偣" + ], + "summary": "鑾峰彇浣嶇疆瀵瑰簲浜у搧鍒楄〃", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetLocationProductList" + } + }, + { + "type": "string", + "description": "token", + "name": "Authorization", + "in": "header", + "required": true + } + ], + "responses": { + "200": { + "description": "鎴愬姛", + "schema": { + "$ref": "#/definitions/util.Response" + } + } + } + } + }, "/api-wms/v1/locationProductAmount/update": { "post": { "produces": [ @@ -4570,7 +4607,7 @@ "$ref": "#/definitions/models.Location" }, "locationId": { - "description": "LocationProductId int `json:\"locationProductId\" gorm:\"type:int;not null;comment:涓婃灦瑙勫垯id\"` //涓婃灦瑙勫垯id\nLocationProduct LocationProduct `json:\"locationProduct\" gorm:\"foreignKey:LocationProductId;references:Id\"`", + "description": "浣嶇疆id", "type": "integer" }, "product": { @@ -4589,6 +4626,9 @@ }, "updateTime": { "type": "string" + }, + "warehouseId": { + "type": "integer" } } }, @@ -6384,6 +6424,28 @@ } } }, + "request.GetLocationProductList": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "locationId": { + "type": "integer" + }, + "page": { + "description": "椤电爜", + "type": "integer" + }, + "pageSize": { + "description": "姣忛〉澶у皬", + "type": "integer" + }, + "warehouseId": { + "type": "integer" + } + } + }, "request.GetMiniDictList": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 6dd0214..b575f22 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -526,9 +526,7 @@ location: $ref: '#/definitions/models.Location' locationId: - description: |- - LocationProductId int `json:"locationProductId" gorm:"type:int;not null;comment:涓婃灦瑙勫垯id"` //涓婃灦瑙勫垯id - LocationProduct LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"` + description: 浣嶇疆id type: integer product: $ref: '#/definitions/models.Material' @@ -542,6 +540,8 @@ type: string updateTime: type: string + warehouseId: + type: integer type: object models.LogisticCompany: properties: @@ -1778,6 +1778,21 @@ type: integer warehouseId: description: 浠撳簱ID + type: integer + type: object + request.GetLocationProductList: + properties: + keyword: + type: string + locationId: + type: integer + page: + description: 椤电爜 + type: integer + pageSize: + description: 姣忛〉澶у皬 + type: integer + warehouseId: type: integer type: object request.GetMiniDictList: @@ -3537,6 +3552,30 @@ summary: 搴撳瓨鐩樼偣鍒楄〃 tags: - 搴撳瓨鐩樼偣 + /api-wms/v1/locationProductAmount/locationProductList: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.GetLocationProductList' + - description: token + in: header + name: Authorization + required: true + type: string + produces: + - application/json + responses: + "200": + description: 鎴愬姛 + schema: + $ref: '#/definitions/util.Response' + summary: 鑾峰彇浣嶇疆瀵瑰簲浜у搧鍒楄〃 + tags: + - 搴撳瓨鐩樼偣 /api-wms/v1/locationProductAmount/update: post: parameters: diff --git a/models/db.go b/models/db.go index 07c3fb9..eaa23cc 100644 --- a/models/db.go +++ b/models/db.go @@ -135,7 +135,6 @@ func InsertDefaultData() { models := []interface{}{ - NewDepartmentSearch(), NewLocationSearch(), } for _, model := range models { diff --git a/models/location_product_amount.go b/models/location_product_amount.go index d4990b1..98abd13 100644 --- a/models/location_product_amount.go +++ b/models/location_product_amount.go @@ -11,10 +11,9 @@ type ( LocationProductAmount struct { WmsModel - Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` - //LocationProductId int `json:"locationProductId" gorm:"type:int;not null;comment:涓婃灦瑙勫垯id"` //涓婃灦瑙勫垯id - //LocationProduct LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"` + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` LocationId int `json:"locationId" gorm:"type:int;not null;comment:浣嶇疆id"` //浣嶇疆id + WarehouseId int `json:"warehouseId" gorm:"type:int;not null;default:0;comment:浠撳簱id"` Location Location `json:"location" gorm:"foreignKey:LocationId;references:id"` ProductCategoryID int `json:"productCategoryId" gorm:"type:int;not null;comment:浜у搧绉嶇被id"` //浜у搧绉嶇被id ProductCategory ProductCategory `json:"productCategory" gorm:"foreignKey:ProductCategoryID;references:Id"` @@ -127,6 +126,11 @@ return slf } +func (slf *LocationProductAmountSearch) SetWarehouseId(wid int) *LocationProductAmountSearch { + slf.WarehouseId = wid + return slf +} + func (slf *LocationProductAmountSearch) build() *gorm.DB { var db = slf.Orm.Model(&LocationProductAmount{}) @@ -148,9 +152,7 @@ if slf.Preload { db = db.Model(&LocationProductAmount{}).Preload("Location").Preload("Product").Preload("ProductCategory") } - //if slf.LocationProductId != 0 { - // db = db.Where("location_product_id=?", slf.LocationProductId) - //} + if len(slf.ProductIds) > 0 { db = db.Where("product_id in (?)", slf.ProductIds) } @@ -175,6 +177,10 @@ db = db.Where(slf.Query) } + if slf.WarehouseId != 0 { + db = db.Where("warehouse_id = ?", slf.WarehouseId) + } + return db } diff --git a/models/operation.go b/models/operation.go index 9e2846c..12ea942 100644 --- a/models/operation.go +++ b/models/operation.go @@ -61,7 +61,7 @@ CheckedBy string `json:"checkedBy" gorm:"type:varchar(255);comment:楠岃瘉鑰匲serId"` Remark string `json:"remark"` - WarehouseId int `json:"warehouseId" gorm:"type:int;not null;comment:浠撳簱id"` + WarehouseId int `json:"warehouseId" gorm:"type:int;not null;default:0;comment:浠撳簱id"` Warehouse Warehouse `json:"warehouse" gorm:"foreignKey:WarehouseId"` IsInternalOutput bool `json:"isInternalOutput"` //鏄惁璋冩嫧浜х敓鐨勫嚭搴� InventoryDealerType int `json:"inventoryDealerType" gorm:"type:varchar(255);comment:璋冩嫧鍑哄叆搴撳垎绫�(瀵瑰簲dict瀛楀吀琛ㄧ殑ID)"` diff --git a/request/location_product_amount.go b/request/location_product_amount.go index 9b1a386..4deb759 100644 --- a/request/location_product_amount.go +++ b/request/location_product_amount.go @@ -2,6 +2,7 @@ import ( "github.com/shopspring/decimal" + "wms/models" ) type GetList struct { @@ -38,3 +39,14 @@ ProductId string `json:"productId"` //浜у搧id LocationProductAmountId int `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id } + +type GetLocationProductList struct { + PageInfo + Keyword string `json:"keyword"` + WarehouseId int `json:"warehouseId"` + LocationId int `json:"locationId"` +} + +type GetLocationProductListResponse struct { + models.Material +} diff --git a/router/router.go b/router/router.go index edf34ef..815904d 100644 --- a/router/router.go +++ b/router/router.go @@ -160,6 +160,7 @@ { locationProductAmountAPI.POST("add", locationProductAmountController.Add) //娣诲姞搴撳瓨鐩樼偣淇℃伅 locationProductAmountAPI.POST("list", locationProductAmountController.List) //鏌ョ湅搴撳瓨鐩樼偣鍒楄〃 + locationProductAmountAPI.POST("locationProductList", locationProductAmountController.LocationProductList) //鏌ョ湅浜у搧搴撳瓨鍒楄〃 locationProductAmountAPI.POST("update", locationProductAmountController.Update) //淇敼搴撳瓨鐩樼偣淇℃伅 locationProductAmountAPI.POST("finish", locationProductAmountController.Finish) //搴旂敤銆侀獙璇佸簱瀛樼洏鐐逛俊鎭� locationProductAmountAPI.POST("getRuleList", locationProductAmountController.GetRuleList) //鑾峰彇涓婃灦瑙勫垯 -- Gitblit v1.8.0