From a8914a16b23e93f6bfd12bcfd5cbe8b24cf7eb84 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期日, 07 四月 2024 21:49:01 +0800 Subject: [PATCH] 发货支持仓库传参 --- models/location_product_amount.go | 39 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 37 insertions(+), 2 deletions(-) diff --git a/models/location_product_amount.go b/models/location_product_amount.go index 94cf597..4f1af2b 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,7 @@ //LocationProductIds []int LocationIds []int ProductIds []string + Ids []int } LocationProductAmountWithOperation struct { @@ -83,6 +84,11 @@ return slf } +func (slf *LocationProductAmountSearch) SetIds(ids []int) *LocationProductAmountSearch { + slf.Ids = ids + return slf +} + func (slf *LocationProductAmountSearch) SetKeyword(keyword string) *LocationProductAmountSearch { slf.Keyword = keyword return slf @@ -124,7 +130,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 +157,10 @@ if slf.ProductId != "" { db = db.Where("product_id=?", slf.ProductId) + } + + if len(slf.Ids) > 0 { + db = db.Where("id in (?)", slf.Ids) } return db @@ -243,3 +257,24 @@ 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 +} -- Gitblit v1.8.0