From 38c6f7308c1dd22a8ea286c3ea1de3a4e714f78f Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期五, 02 八月 2024 16:44:51 +0800 Subject: [PATCH] BUG修复,新的工资计算方式添加遗漏的“考勤及补贴数据”(工作日加班时长、休息日加班时长、带徒天数、满勤奖、请假天数、工龄) --- models/workshop_manage.go | 157 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 146 insertions(+), 11 deletions(-) diff --git a/models/workshop_manage.go b/models/workshop_manage.go index 6d920cb..df3e9b6 100644 --- a/models/workshop_manage.go +++ b/models/workshop_manage.go @@ -11,23 +11,30 @@ type ( WorkshopManage struct { gorm.Model - WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:杞﹂棿缂栧彿"` - GroupNumber int `json:"groupNumber" gorm:"type:int(11);comment:缁勫埆"` - StartCarNumber int `json:"startCarNumber" gorm:"type:int(11);comment:缁勫埆"` - EndCarNumber int `json:"endCarNumber" gorm:"type:int(11);comment:缁勫埆"` - CarFlag constvar.CarFlag `json:"carFlag" gorm:"type:int(1);comment:鍗婅溅鏍囧織"` - Notes string `json:"notes" gorm:"type:varchar(255);comment:澶囨敞"` + WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:杞﹂棿缂栧彿"` + WorkshopName string `json:"workshopName" gorm:"type:varchar(255);comment:杞﹂棿鍚嶇О"` + Type constvar.WorkshopType `json:"type" gorm:"size:1;comment:绫诲瀷(1杞﹂棿銆�2鍒嗙粍)"` // 绫诲瀷(1杞﹂棿銆�2鍒嗙粍) + ParentID string `json:"parentID" gorm:"size:11;comment:杞﹂棿缂栧彿"` + GroupNumber int `json:"groupNumber" gorm:"type:int(11);comment:缁勫埆"` + StartCarNumber int `json:"startCarNumber" gorm:"type:int(11);comment:寮�濮嬭溅鍙�"` + StartCarHalf constvar.CarFlag `json:"startCarHalf" gorm:"type:int(1);comment:寮�濮嬪崐杞︽爣璇�(1宸﹀崐杞︺��2鍙冲崐杞�)"` + EndCarNumber int `json:"endCarNumber" gorm:"type:int(11);comment:缁撴潫杞﹀彿"` + EndCarHalf constvar.CarFlag `json:"endCarHalf" gorm:"type:int(1);comment:缁撴潫鍗婅溅鏍囪瘑(1宸﹀崐杞︺��2鍙冲崐杞�)"` + CarFlag int `json:"carFlag" gorm:"type:int(1);comment:鍗婅溅鏍囧織(0鍏ㄨ溅銆�1鍗婅溅)"` + Notes string `json:"notes" gorm:"type:varchar(255);comment:澶囨敞"` } WorkshopManageSearch struct { WorkshopManage - PageNum int - PageSize int - Orm *gorm.DB + WorkshopNumberArr []string + PageNum int + PageSize int + Order string + Orm *gorm.DB } ) func (slf WorkshopManage) TableName() string { - return "workshop_manage" + return "silk_workshop_manage" } func NewWorkshopManageSearch() *WorkshopManageSearch { @@ -49,11 +56,70 @@ return slf } +func (slf *WorkshopManageSearch) SetType(types constvar.WorkshopType) *WorkshopManageSearch { + slf.Type = types + return slf +} + +func (slf *WorkshopManageSearch) SetParentID(parentID string) *WorkshopManageSearch { + slf.ParentID = parentID + return slf +} + +func (slf *WorkshopManageSearch) SetWorkshopNumber(workshopNumber string) *WorkshopManageSearch { + slf.WorkshopNumber = workshopNumber + return slf +} + +func (slf *WorkshopManageSearch) SetWorkshopName(workshopName string) *WorkshopManageSearch { + slf.WorkshopName = workshopName + return slf +} + +func (slf *WorkshopManageSearch) SetWorkshopNumberArr(workshopNumberArr []string) *WorkshopManageSearch { + slf.WorkshopNumberArr = workshopNumberArr + return slf +} + +func (slf *WorkshopManageSearch) SetGroupNumber(groupNumber int) *WorkshopManageSearch { + slf.GroupNumber = groupNumber + return slf +} + +func (slf *WorkshopManageSearch) SetOrder(order string) *WorkshopManageSearch { + slf.Order = order + return slf +} + func (slf *WorkshopManageSearch) build() *gorm.DB { db := slf.Orm.Table(slf.TableName()) if slf.ID > 0 { db = db.Where("id = ?", slf.ID) + } + + if slf.Type > 0 { + db = db.Where("`type` = ?", slf.Type) + } + + if slf.ParentID != "" { + db = db.Where("parent_id = ?", slf.ParentID) + } + + if slf.WorkshopNumber != "" { + db = db.Where("workshop_number = ?", slf.WorkshopNumber) + } + + if len(slf.WorkshopNumberArr) > 0 { + db = db.Where("workshop_number in (?)", slf.WorkshopNumberArr) + } + + if slf.WorkshopName != "" { + db = db.Where("workshop_name = ?", slf.WorkshopName) + } + + if slf.GroupNumber != 0 { + db = db.Where("group_number = ?", slf.GroupNumber) } return db @@ -69,6 +135,19 @@ return nil } +func (slf *WorkshopManageSearch) First() (*WorkshopManage, error) { + var ( + record = new(WorkshopManage) + db = slf.build() + ) + + if err := db.First(record).Error; err != nil { + return record, err + } + + return record, nil +} + func (slf *WorkshopManageSearch) Find() ([]*WorkshopManage, int64, error) { var ( records = make([]*WorkshopManage, 0) @@ -82,6 +161,11 @@ if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } + if slf.Order != "" { + db = db.Order(slf.Order) + } else { + db = db.Order("updated_at desc") + } if err := db.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } @@ -89,10 +173,32 @@ return records, total, nil } +func (slf *WorkshopManageSearch) FindNotTotal() ([]*WorkshopManage, error) { + var ( + records = make([]*WorkshopManage, 0) + db = slf.build() + ) + + if slf.PageNum*slf.PageSize > 0 { + db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) + } + if slf.Order != "" { + db = db.Order(slf.Order) + } else { + db = db.Order("updated_at desc") + } + + if err := db.Find(&records).Error; err != nil { + return records, fmt.Errorf("find records err: %v", err) + } + + return records, nil +} + func (slf *WorkshopManageSearch) Save(record *WorkshopManage) error { var db = slf.build() - if err := db.Save(record).Error; err != nil { + if err := db.Omit("CreatedAt").Save(record).Error; err != nil { return fmt.Errorf("save err: %v, record: %+v", err, record) } @@ -108,3 +214,32 @@ return nil } + +func (slf *WorkshopManageSearch) Count() (int64, error) { + var ( + total int64 + db = slf.build() + ) + + if err := db.Count(&total).Error; err != nil { + return total, fmt.Errorf("find count err: %v", err) + } + return total, nil +} + +func (slf *WorkshopManageSearch) MaxAutoIncr() (int, error) { + type Result struct { + Max int + } + + var ( + result Result + db = slf.build() + ) + + err := db.Select("MAX(id) as max").Scan(&result).Error + if err != nil { + return result.Max, fmt.Errorf("max err: %v", err) + } + return result.Max, nil +} -- Gitblit v1.8.0