From f4508a84236a4aff1c7b5bfa17a14a8ff95728ba Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期一, 08 七月 2024 09:45:10 +0800 Subject: [PATCH] 接口调用报错处理 --- models/location_product_amount.go | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 103 insertions(+), 9 deletions(-) diff --git a/models/location_product_amount.go b/models/location_product_amount.go index f076f91..6b82f7c 100644 --- a/models/location_product_amount.go +++ b/models/location_product_amount.go @@ -11,13 +11,12 @@ 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"` + 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 +34,9 @@ //LocationProductIds []int LocationIds []int ProductIds []string + Ids []int + Query string + Fields string } LocationProductAmountWithOperation struct { @@ -45,13 +47,15 @@ ProductId string `json:"productId" gorm:"column:product_id"` ProductName string `json:"productName" gorm:"column:product_name"` Amount decimal.Decimal `json:"amount" gorm:"column:amount"` + AmountMoreUnits []UnitItems `json:"amountMoreUnits" gorm:"-"` //鍦ㄥ簱鏁伴噺澶氬崟浣� 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 +84,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 +122,21 @@ return slf } +func (slf *LocationProductAmountSearch) SetQuery(query string) *LocationProductAmountSearch { + slf.Query = query + return slf +} + +func (slf *LocationProductAmountSearch) SetWarehouseId(wid int) *LocationProductAmountSearch { + slf.WarehouseId = wid + return slf +} + +func (slf *LocationProductAmountSearch) SetFields(fields string) *LocationProductAmountSearch { + slf.Fields = fields + return slf +} + func (slf *LocationProductAmountSearch) build() *gorm.DB { var db = slf.Orm.Model(&LocationProductAmount{}) @@ -134,9 +158,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) } @@ -151,6 +173,22 @@ 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) + } + + if slf.WarehouseId != 0 { + db = db.Where("warehouse_id = ?", slf.WarehouseId) + } + + if slf.Fields != "" { + db = db.Select(slf.Fields) } return db @@ -232,6 +270,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) } @@ -247,3 +288,56 @@ 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 +} + +func (slf *LocationProductAmountSearch) Save(record *LocationProductAmount) error { + var db = slf.build() + + if err := db.Omit("CreatedAt").Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} -- Gitblit v1.8.0