From efbe2bd4bbc6444dad4ab5fe8d7e839c38230805 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期五, 12 四月 2024 16:22:57 +0800
Subject: [PATCH] 库存报表修改
---
controllers/report_forms_controller.go | 55 ++++++++++++++++++---------
models/location_product_amount.go | 10 +++++
2 files changed, 47 insertions(+), 18 deletions(-)
diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go
index 4f3bc71..1c7bb9a 100644
--- a/controllers/report_forms_controller.go
+++ b/controllers/report_forms_controller.go
@@ -32,9 +32,33 @@
// @Router /api-wms/v1/forms/getInventoryForms [post]
func (slf ReportFormsController) GetInventoryForms(c *gin.Context) {
var params request.GetInventoryForms
- if err := c.BindJSON(¶ms); err != nil {
+ err := c.BindJSON(¶ms)
+ if err != nil {
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
return
+ }
+ locationIds := make([]int, 0)
+ productIds := make([]string, 0)
+ productAmounts := make([]*models.LocationProductAmount, 0)
+ if params.WarehouseCode != "" {
+ locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浠撳簱浣嶇疆澶辫触")
+ return
+ }
+
+ for _, location := range locations {
+ locationIds = append(locationIds, location.Id)
+ }
+ productAmounts, err = models.NewLocationProductAmountSearch().SetLocationIds(locationIds).SetQuery("amount > 0").Find()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触")
+ return
+ }
+ for _, amount := range productAmounts {
+ productIds = append(productIds, amount.ProductId)
+ }
+
}
//鏌ヨ浜у搧
search := models.NewMaterialSearch()
@@ -46,6 +70,9 @@
}
if params.KeyWord != "" {
search.Orm.Where("material.name like ?", "%"+params.KeyWord+"%").Or("wms_product_category.name like ?", "%"+params.KeyWord+"%")
+ }
+ if len(productIds) > 0 {
+ search.Orm.Where("material.id in (?)", productIds)
}
var (
materials = make([]*models.Material, 0)
@@ -63,24 +90,16 @@
return
}
- locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal()
- if err != nil {
- util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浠撳簱浣嶇疆澶辫触")
- return
- }
- locationIds := make([]int, 0)
- for _, location := range locations {
- locationIds = append(locationIds, location.Id)
- }
//鏌ヨ鍦ㄥ簱鏁伴噺
- productIds := make([]string, 0)
- for _, material := range materials {
- productIds = append(productIds, material.ID)
- }
- productAmounts, err := models.NewLocationProductAmountSearch().SetProductIds(productIds).SetLocationIds(locationIds).Find()
- if err != nil {
- util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触")
- return
+ if len(productIds) == 0 {
+ for _, material := range materials {
+ productIds = append(productIds, material.ID)
+ }
+ productAmounts, err = models.NewLocationProductAmountSearch().SetProductIds(productIds).SetLocationIds(locationIds).Find()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触")
+ return
+ }
}
//鏌ヨ鍑哄叆搴撳氨缁暟閲�
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index 4f1af2b..0d27a70 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -36,6 +36,7 @@
LocationIds []int
ProductIds []string
Ids []int
+ Query string
}
LocationProductAmountWithOperation struct {
@@ -119,6 +120,11 @@
return slf
}
+func (slf *LocationProductAmountSearch) SetQuery(query string) *LocationProductAmountSearch {
+ slf.Query = query
+ return slf
+}
+
func (slf *LocationProductAmountSearch) build() *gorm.DB {
var db = slf.Orm.Model(&LocationProductAmount{})
@@ -163,6 +169,10 @@
db = db.Where("id in (?)", slf.Ids)
}
+ if slf.Query != "" {
+ db = db.Where(slf.Query)
+ }
+
return db
}
--
Gitblit v1.8.0