From 2f856eaa7e46c884f1cb7ad721919a086d7f34a3 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 13 六月 2024 15:57:45 +0800
Subject: [PATCH] 出入库明细列表和报表增加多单位
---
models/location_product_amount.go | 79 +++++++++++++++++++++++++++++++++++++--
1 files changed, 75 insertions(+), 4 deletions(-)
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index 94cf597..efa1205 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -17,7 +17,7 @@
LocationId int `json:"locationId" gorm:"type:int;not null;comment:浣嶇疆id"` //浣嶇疆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"`
+ ProductCategory ProductCategory `json:"productCategory" gorm:"foreignKey:ProductCategoryID;references:Id"`
ProductId string `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"` //浜у搧id
Product Material `json:"product" gorm:"foreignKey:ProductId;references:ID"`
Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:搴撳瓨鏁伴噺"` //搴撳瓨鏁伴噺
@@ -35,6 +35,8 @@
//LocationProductIds []int
LocationIds []int
ProductIds []string
+ Ids []int
+ Query string
}
LocationProductAmountWithOperation struct {
@@ -47,11 +49,12 @@
Amount decimal.Decimal `json:"amount" gorm:"column:amount"`
Unit string `json:"unit" gorm:"column:unit"`
CreateDate string `json:"createDate" gorm:"column:create_date"`
- AdjustAmount decimal.Decimal `json:"adjustAmount" gorm:"column:adjust_amount"`
- DifferenceAmount decimal.Decimal `json:"differenceAmount" gorm:"-"`
+ AdjustAmount decimal.Decimal `json:"adjustAmount" gorm:"column:adjust_amount"` //宸��
+ DifferenceAmount decimal.Decimal `json:"differenceAmount" gorm:"-"` //璁℃暟鏁伴噺
OperationId int `json:"operationId" gorm:"column:operation_id"`
Status constvar.OperationStatus `json:"status" gorm:"status"`
BaseOperationType constvar.BaseOperationType `json:"baseOperationType" gorm:"base_operation_type"`
+ Weight decimal.Decimal `gorm:"type:decimal(20,3);comment:閲嶉噺" json:"weight"` //閲嶉噺
}
)
@@ -80,6 +83,11 @@
func (slf *LocationProductAmountSearch) SetID(id int) *LocationProductAmountSearch {
slf.Id = id
+ return slf
+}
+
+func (slf *LocationProductAmountSearch) SetIds(ids []int) *LocationProductAmountSearch {
+ slf.Ids = ids
return slf
}
@@ -113,6 +121,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{})
@@ -124,7 +137,11 @@
}
if slf.Keyword != "" {
- db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+ db = db.Joins("left join wms_location on wms_location_product_amount.location_id = wms_location.id").
+ Joins("left join material on wms_location_product_amount.product_id = material.id").
+ Joins("left join wms_product_category on wms_location_product_amount.product_category_id = wms_product_category.id").
+ Where("wms_location.name like ?", "%"+slf.Keyword+"%").Or("material.name like ?", "%"+slf.Keyword+"%").
+ Or("wms_product_category.name like ?", "%"+slf.Keyword+"%")
}
if slf.Preload {
@@ -147,6 +164,14 @@
if slf.ProductId != "" {
db = db.Where("product_id=?", slf.ProductId)
+ }
+
+ if len(slf.Ids) > 0 {
+ db = db.Where("id in (?)", slf.Ids)
+ }
+
+ if slf.Query != "" {
+ db = db.Where(slf.Query)
}
return db
@@ -228,6 +253,9 @@
db = slf.build()
)
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
if err := db.Find(&records).Error; err != nil {
return records, fmt.Errorf("find records err: %v", err)
}
@@ -243,3 +271,46 @@
return record, db.First(&record)
}
+
+func (slf *LocationProductAmountSearch) Count() (int64, error) {
+ var (
+ total int64
+ db = slf.build()
+ )
+ err := db.Count(&total).Error
+ return total, err
+}
+
+func (slf *LocationProductAmountSearch) UpdateByMap(upMap map[string]interface{}) error {
+ var (
+ db = slf.build()
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+ }
+
+ return nil
+}
+
+func (slf *LocationProductAmountSearch) GroupCount(field string) ([]*GroupCount, error) {
+ var (
+ db = slf.build()
+ result = make([]*GroupCount, 0)
+ )
+ if err := db.Select("count(*) as total, " + field + " as class").Group(field).Scan(&result).Error; err != nil {
+ return nil, fmt.Errorf("select group err: %v", err)
+ }
+ return result, nil
+}
+
+func (slf *LocationProductAmountSearch) GroupSum(groupField string, sumField string) ([]*GroupSum, error) {
+ var (
+ db = slf.build()
+ result = make([]*GroupSum, 0)
+ )
+ if err := db.Select("sum(" + sumField + ") as sum, " + groupField + " as class").Group(groupField).Scan(&result).Error; err != nil {
+ return nil, fmt.Errorf("select group err: %v", err)
+ }
+ return result, nil
+}
--
Gitblit v1.8.0