zhangqian
2023-09-12 a79e0aae5d8c107982709e4e75d41be52f5db8cd
增加操作表,操作明细表,移动历史表,报废表
4个文件已添加
965 ■■■■■ 已修改文件
models/move_history.go 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/operation.go 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/operation_details.go 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/scrap.go 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/move_history.go
New file
@@ -0,0 +1,244 @@
package models
import (
    "fmt"
    "google.golang.org/genproto/googleapis/type/decimal"
    "gorm.io/gorm"
    "wms/constvar"
    "wms/pkg/mysqlx"
)
type (
    // MoveHistory 移动历史
    MoveHistory struct {
        WmsModel
        Id                int                        `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Number            string                     `json:"number" gorm:"column:number;type:varchar(255)"`                 //单号
        BaseOperationType constvar.BaseOperationType `json:"baseOperationType" gorm:"type:tinyint;not null;comment:基础作业类型"` //基础作业类型
        OperationTypeId   int                        `json:"operationTypeId" gorm:"type:int;not null;comment:作业类型id"`       //作业类型id
        OperationId       int                        `json:"operationRecordId" gorm:"type:int;not null;comment:操作id"`       //操作id
        ProductId   int             `json:"productId" gorm:"type:int;not null;comment:产品id"`            //产品id
        ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:产品名称"` //产品名称
        Quantity    decimal.Decimal `json:"quantity" gorm:"type:decimal(20,2);not null;comment:数量"`     //数量
        FromLocationId int      `json:"fromLocationId"   gorm:"type:int;not null;comment:源位置id"` //源位置id
        FromLocation   Location `json:"fromLocation"     gorm:"foreignKey:FromLocationId"`       //源位置
        ToLocationId   int      `json:"toLocationId"  gorm:"type:int;not null;comment:目标位置id"`   //目标位置id
        ToLocation     Location `json:"toLocation"    gorm:"foreignKey:ToLocationId"`            //目标位置
    }
    MoveHistorySearch struct {
        MoveHistory
        Order    string
        PageNum  int
        PageSize int
        Keyword  string
        Orm      *gorm.DB
        Preload  bool
    }
)
func (slf *MoveHistory) TableName() string {
    return "move_history"
}
func NewMoveHistorySearch() *MoveHistorySearch {
    return &MoveHistorySearch{Orm: mysqlx.GetDB()}
}
func (slf *MoveHistorySearch) SetOrm(tx *gorm.DB) *MoveHistorySearch {
    slf.Orm = tx
    return slf
}
func (slf *MoveHistorySearch) SetPage(page, size int) *MoveHistorySearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *MoveHistorySearch) SetOrder(order string) *MoveHistorySearch {
    slf.Order = order
    return slf
}
func (slf *MoveHistorySearch) SetID(id uint) *MoveHistorySearch {
    slf.ID = id
    return slf
}
func (slf *MoveHistorySearch) SetKeyword(keyword string) *MoveHistorySearch {
    slf.Keyword = keyword
    return slf
}
func (slf *MoveHistorySearch) SetPreload(preload bool) *MoveHistorySearch {
    slf.Preload = preload
    return slf
}
func (slf *MoveHistorySearch) build() *gorm.DB {
    var db = slf.Orm.Model(&MoveHistory{})
    if slf.ID != 0 {
        db = db.Where("id = ?", slf.ID)
    }
    if slf.Order != "" {
        db = db.Order(slf.Order)
    }
    if slf.Keyword != "" {
        db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
    }
    return db
}
// Create 单条插入
func (slf *MoveHistorySearch) Create(record *MoveHistory) error {
    var db = slf.build()
    if err := db.Create(record).Error; err != nil {
        return err
    }
    return nil
}
// CreateBatch 批量插入
func (slf *MoveHistorySearch) CreateBatch(records []*MoveHistory) error {
    var db = slf.build()
    if err := db.Create(&records).Error; err != nil {
        return fmt.Errorf("create batch err: %v, records: %+v", err, records)
    }
    return nil
}
func (slf *MoveHistorySearch) Update(record *MoveHistory) error {
    var db = slf.build()
    if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *MoveHistorySearch) 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 *MoveHistorySearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
    var (
        db = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Updates(upMap).Error; err != nil {
        return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
    }
    return nil
}
func (slf *MoveHistorySearch) Delete() error {
    var db = slf.build()
    return db.Delete(&MoveHistory{}).Error
}
func (slf *MoveHistorySearch) First() (*MoveHistory, error) {
    var (
        record = new(MoveHistory)
        db     = slf.build()
    )
    if err := db.First(record).Error; err != nil {
        return record, err
    }
    return record, nil
}
func (slf *MoveHistorySearch) Find() ([]*MoveHistory, int64, error) {
    var (
        records = make([]*MoveHistory, 0)
        total   int64
        db      = slf.build()
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find count err: %v", err)
    }
    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, total, fmt.Errorf("find records err: %v", err)
    }
    return records, total, nil
}
func (slf *MoveHistorySearch) FindNotTotal() ([]*MoveHistory, error) {
    var (
        records = make([]*MoveHistory, 0)
        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)
    }
    return records, nil
}
// FindByQuery 指定条件查询.
func (slf *MoveHistorySearch) FindByQuery(query string, args []interface{}) ([]*MoveHistory, int64, error) {
    var (
        records = make([]*MoveHistory, 0)
        total   int64
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find by query count err: %v", err)
    }
    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, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, total, nil
}
// FindByQueryNotTotal 指定条件查询&不查询总条数.
func (slf *MoveHistorySearch) FindByQueryNotTotal(query string, args []interface{}) ([]*MoveHistory, error) {
    var (
        records = make([]*MoveHistory, 0)
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    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 by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, nil
}
models/operation.go
New file
@@ -0,0 +1,242 @@
package models
import (
    "fmt"
    "gorm.io/gorm"
    "wms/constvar"
    "wms/pkg/mysqlx"
)
type (
    // Operation 操作表
    Operation struct {
        WmsModel
        Id           int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Number       string `json:"number" gorm:"column:number;type:varchar(255)"` //单号
        SourceNumber string `json:"sourceNumber" gorm:"type:varchar(255)"`         //源单号
        BaseOperationType constvar.BaseOperationType `json:"baseOperationType" gorm:"type:tinyint;not null;comment:基础作业类型"` //基础作业类型
        OperationTypeId   int                        `json:"operationTypeId" gorm:"type:int;not null;comment:作业类型id"`       //作业类型id
        Status            int                        `json:"status" gorm:"type:tinyint;not null;comment:状态"`                //状态
        FromLocationId int      `json:"fromLocationId"   gorm:"type:int;not null;comment:源位置id"` //源位置id
        FromLocation   Location `json:"fromLocation"     gorm:"foreignKey:FromLocationId"`       //源位置
        ToLocationId   int      `json:"toLocationId"    gorm:"type:int;not null;comment:目标位置id"` //目标位置id
        ToLocation     Location `json:"toLocation"      gorm:"foreignKey:ToLocationId"`          //目标位置
    }
    OperationSearch struct {
        Operation
        Order    string
        PageNum  int
        PageSize int
        Keyword  string
        Orm      *gorm.DB
        Preload  bool
    }
)
func (slf *Operation) TableName() string {
    return "operation"
}
func NewOperationSearch() *OperationSearch {
    return &OperationSearch{Orm: mysqlx.GetDB()}
}
func (slf *OperationSearch) SetOrm(tx *gorm.DB) *OperationSearch {
    slf.Orm = tx
    return slf
}
func (slf *OperationSearch) SetPage(page, size int) *OperationSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *OperationSearch) SetOrder(order string) *OperationSearch {
    slf.Order = order
    return slf
}
func (slf *OperationSearch) SetID(id uint) *OperationSearch {
    slf.ID = id
    return slf
}
func (slf *OperationSearch) SetKeyword(keyword string) *OperationSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *OperationSearch) SetPreload(preload bool) *OperationSearch {
    slf.Preload = preload
    return slf
}
func (slf *OperationSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&Operation{})
    if slf.ID != 0 {
        db = db.Where("id = ?", slf.ID)
    }
    if slf.Order != "" {
        db = db.Order(slf.Order)
    }
    if slf.Keyword != "" {
        db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
    }
    return db
}
// Create 单条插入
func (slf *OperationSearch) Create(record *Operation) error {
    var db = slf.build()
    if err := db.Create(record).Error; err != nil {
        return err
    }
    return nil
}
// CreateBatch 批量插入
func (slf *OperationSearch) CreateBatch(records []*Operation) error {
    var db = slf.build()
    if err := db.Create(&records).Error; err != nil {
        return fmt.Errorf("create batch err: %v, records: %+v", err, records)
    }
    return nil
}
func (slf *OperationSearch) Update(record *Operation) error {
    var db = slf.build()
    if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *OperationSearch) 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 *OperationSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
    var (
        db = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Updates(upMap).Error; err != nil {
        return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
    }
    return nil
}
func (slf *OperationSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&Operation{}).Error
}
func (slf *OperationSearch) First() (*Operation, error) {
    var (
        record = new(Operation)
        db     = slf.build()
    )
    if err := db.First(record).Error; err != nil {
        return record, err
    }
    return record, nil
}
func (slf *OperationSearch) Find() ([]*Operation, int64, error) {
    var (
        records = make([]*Operation, 0)
        total   int64
        db      = slf.build()
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find count err: %v", err)
    }
    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, total, fmt.Errorf("find records err: %v", err)
    }
    return records, total, nil
}
func (slf *OperationSearch) FindNotTotal() ([]*Operation, error) {
    var (
        records = make([]*Operation, 0)
        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)
    }
    return records, nil
}
// FindByQuery 指定条件查询.
func (slf *OperationSearch) FindByQuery(query string, args []interface{}) ([]*Operation, int64, error) {
    var (
        records = make([]*Operation, 0)
        total   int64
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find by query count err: %v", err)
    }
    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, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, total, nil
}
// FindByQueryNotTotal 指定条件查询&不查询总条数.
func (slf *OperationSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Operation, error) {
    var (
        records = make([]*Operation, 0)
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    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 by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, nil
}
models/operation_details.go
New file
@@ -0,0 +1,237 @@
package models
import (
    "fmt"
    "google.golang.org/genproto/googleapis/type/decimal"
    "gorm.io/gorm"
    "wms/pkg/mysqlx"
)
type (
    // OperationDetails 操作明细表
    OperationDetails struct {
        WmsModel
        Id          int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        OperationId int `json:"OperationId" gorm:"type:int;not null;comment:操作记录id"` //操作id
        ProductId      int             `json:"productId" gorm:"type:int;not null;comment:产品id"`              //产品id
        ProductName    string          `json:"productName" gorm:"type:varchar(255);not null;comment:产品名称"`   //产品名称
        Quantity       decimal.Decimal `json:"quantity" gorm:"type:decimal(20,2);not null;comment:数量"`       //数量
        FinishQuantity decimal.Decimal `json:"finishQuantity" gorm:"type:decimal(20,2);not null;comment:数量"` //完成数量
    }
    OperationDetailsSearch struct {
        OperationDetails
        Order    string
        PageNum  int
        PageSize int
        Keyword  string
        Orm      *gorm.DB
        Preload  bool
    }
)
func (slf *OperationDetails) TableName() string {
    return "operation_details"
}
func NewOperationDetailsSearch() *OperationDetailsSearch {
    return &OperationDetailsSearch{Orm: mysqlx.GetDB()}
}
func (slf *OperationDetailsSearch) SetOrm(tx *gorm.DB) *OperationDetailsSearch {
    slf.Orm = tx
    return slf
}
func (slf *OperationDetailsSearch) SetPage(page, size int) *OperationDetailsSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *OperationDetailsSearch) SetOrder(order string) *OperationDetailsSearch {
    slf.Order = order
    return slf
}
func (slf *OperationDetailsSearch) SetID(id uint) *OperationDetailsSearch {
    slf.ID = id
    return slf
}
func (slf *OperationDetailsSearch) SetKeyword(keyword string) *OperationDetailsSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *OperationDetailsSearch) SetPreload(preload bool) *OperationDetailsSearch {
    slf.Preload = preload
    return slf
}
func (slf *OperationDetailsSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&OperationDetails{})
    if slf.ID != 0 {
        db = db.Where("id = ?", slf.ID)
    }
    if slf.Order != "" {
        db = db.Order(slf.Order)
    }
    if slf.Keyword != "" {
        db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
    }
    return db
}
// Create 单条插入
func (slf *OperationDetailsSearch) Create(record *OperationDetails) error {
    var db = slf.build()
    if err := db.Create(record).Error; err != nil {
        return err
    }
    return nil
}
// CreateBatch 批量插入
func (slf *OperationDetailsSearch) CreateBatch(records []*OperationDetails) error {
    var db = slf.build()
    if err := db.Create(&records).Error; err != nil {
        return fmt.Errorf("create batch err: %v, records: %+v", err, records)
    }
    return nil
}
func (slf *OperationDetailsSearch) Update(record *OperationDetails) error {
    var db = slf.build()
    if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *OperationDetailsSearch) 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 *OperationDetailsSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
    var (
        db = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Updates(upMap).Error; err != nil {
        return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
    }
    return nil
}
func (slf *OperationDetailsSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&OperationDetails{}).Error
}
func (slf *OperationDetailsSearch) First() (*OperationDetails, error) {
    var (
        record = new(OperationDetails)
        db     = slf.build()
    )
    if err := db.First(record).Error; err != nil {
        return record, err
    }
    return record, nil
}
func (slf *OperationDetailsSearch) Find() ([]*OperationDetails, int64, error) {
    var (
        records = make([]*OperationDetails, 0)
        total   int64
        db      = slf.build()
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find count err: %v", err)
    }
    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, total, fmt.Errorf("find records err: %v", err)
    }
    return records, total, nil
}
func (slf *OperationDetailsSearch) FindNotTotal() ([]*OperationDetails, error) {
    var (
        records = make([]*OperationDetails, 0)
        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)
    }
    return records, nil
}
// FindByQuery 指定条件查询.
func (slf *OperationDetailsSearch) FindByQuery(query string, args []interface{}) ([]*OperationDetails, int64, error) {
    var (
        records = make([]*OperationDetails, 0)
        total   int64
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find by query count err: %v", err)
    }
    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, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, total, nil
}
// FindByQueryNotTotal 指定条件查询&不查询总条数.
func (slf *OperationDetailsSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*OperationDetails, error) {
    var (
        records = make([]*OperationDetails, 0)
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    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 by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, nil
}
models/scrap.go
New file
@@ -0,0 +1,242 @@
package models
import (
    "fmt"
    "google.golang.org/genproto/googleapis/type/decimal"
    "gorm.io/gorm"
    "wms/pkg/mysqlx"
)
type (
    // Scrap 报废表
    Scrap struct {
        WmsModel
        Id     int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Number string `json:"number" gorm:"column:number;type:varchar(255)"`  //单号
        Status int    `json:"status" gorm:"type:tinyint;not null;comment:状态"` //状态
        ProductId   int             `json:"productId" gorm:"type:int;not null;comment:产品id"`            //产品id
        ProductName string          `json:"productName" gorm:"type:varchar(255);not null;comment:产品名称"` //产品名称
        Quantity    decimal.Decimal `json:"quantity" gorm:"type:decimal(20,2);not null;comment:数量"`     //数量
        FromLocationId int      `json:"fromLocationId"   gorm:"type:int;not null;comment:源位置id"` //源位置id
        FromLocation   Location `json:"fromLocation"     gorm:"foreignKey:FromLocationId"`       //源位置
        ToLocationId   int      `json:"toLocationId"    gorm:"type:int;not null;comment:目标位置id"` //报废位置id
        ToLocation     Location `json:"toLocation"      gorm:"foreignKey:ToLocationId"`          //报废位置
    }
    ScrapSearch struct {
        Scrap
        Order    string
        PageNum  int
        PageSize int
        Keyword  string
        Orm      *gorm.DB
        Preload  bool
    }
)
func (slf *Scrap) TableName() string {
    return "scrap"
}
func NewScrapSearch() *ScrapSearch {
    return &ScrapSearch{Orm: mysqlx.GetDB()}
}
func (slf *ScrapSearch) SetOrm(tx *gorm.DB) *ScrapSearch {
    slf.Orm = tx
    return slf
}
func (slf *ScrapSearch) SetPage(page, size int) *ScrapSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *ScrapSearch) SetOrder(order string) *ScrapSearch {
    slf.Order = order
    return slf
}
func (slf *ScrapSearch) SetID(id uint) *ScrapSearch {
    slf.ID = id
    return slf
}
func (slf *ScrapSearch) SetKeyword(keyword string) *ScrapSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *ScrapSearch) SetPreload(preload bool) *ScrapSearch {
    slf.Preload = preload
    return slf
}
func (slf *ScrapSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&Scrap{})
    if slf.ID != 0 {
        db = db.Where("id = ?", slf.ID)
    }
    if slf.Order != "" {
        db = db.Order(slf.Order)
    }
    if slf.Keyword != "" {
        db = db.Where("product_name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
    }
    return db
}
// Create 单条插入
func (slf *ScrapSearch) Create(record *Scrap) error {
    var db = slf.build()
    if err := db.Create(record).Error; err != nil {
        return err
    }
    return nil
}
// CreateBatch 批量插入
func (slf *ScrapSearch) CreateBatch(records []*Scrap) error {
    var db = slf.build()
    if err := db.Create(&records).Error; err != nil {
        return fmt.Errorf("create batch err: %v, records: %+v", err, records)
    }
    return nil
}
func (slf *ScrapSearch) Update(record *Scrap) error {
    var db = slf.build()
    if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *ScrapSearch) 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 *ScrapSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
    var (
        db = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Updates(upMap).Error; err != nil {
        return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
    }
    return nil
}
func (slf *ScrapSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&Scrap{}).Error
}
func (slf *ScrapSearch) First() (*Scrap, error) {
    var (
        record = new(Scrap)
        db     = slf.build()
    )
    if err := db.First(record).Error; err != nil {
        return record, err
    }
    return record, nil
}
func (slf *ScrapSearch) Find() ([]*Scrap, int64, error) {
    var (
        records = make([]*Scrap, 0)
        total   int64
        db      = slf.build()
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find count err: %v", err)
    }
    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, total, fmt.Errorf("find records err: %v", err)
    }
    return records, total, nil
}
func (slf *ScrapSearch) FindNotTotal() ([]*Scrap, error) {
    var (
        records = make([]*Scrap, 0)
        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)
    }
    return records, nil
}
// FindByQuery 指定条件查询.
func (slf *ScrapSearch) FindByQuery(query string, args []interface{}) ([]*Scrap, int64, error) {
    var (
        records = make([]*Scrap, 0)
        total   int64
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    if err := db.Count(&total).Error; err != nil {
        return records, total, fmt.Errorf("find by query count err: %v", err)
    }
    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, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, total, nil
}
// FindByQueryNotTotal 指定条件查询&不查询总条数.
func (slf *ScrapSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Scrap, error) {
    var (
        records = make([]*Scrap, 0)
        db      = slf.Orm.Table(slf.TableName()).Where(query, args...)
    )
    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 by query records err: %v, query: %s, args: %+v", err, query, args)
    }
    return records, nil
}