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 |  126 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 112 insertions(+), 14 deletions(-)

diff --git a/models/workshop_manage.go b/models/workshop_manage.go
index f1bdc07..df3e9b6 100644
--- a/models/workshop_manage.go
+++ b/models/workshop_manage.go
@@ -11,24 +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
-		Order    string
-		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 {
@@ -50,8 +56,28 @@
 	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
 }
 
@@ -72,8 +98,24 @@
 		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 {
@@ -93,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)
@@ -106,18 +161,32 @@
 	if slf.PageNum*slf.PageSize > 0 {
 		db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
 	}
-	if err := db.Order("updated_at desc").Find(&records).Error; err != nil {
+	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)
 	}
 
 	return records, total, nil
 }
 
-func (slf *WorkshopManageSearch) FindAll() ([]*WorkshopManage, error) {
+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)
@@ -129,7 +198,7 @@
 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)
 	}
 
@@ -145,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