fox
zhangqian
2024-05-07 7d06c6472f1acea6b2e49e7b8837bf555e94e219
models/attendance_manage.go
@@ -2,7 +2,9 @@
import (
   "fmt"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
   "silkserver/constvar"
   "silkserver/pkg/mysqlx"
)
@@ -10,22 +12,31 @@
   //AttendanceManage 考勤管理表
   AttendanceManage struct {
      gorm.Model
      Date             string `json:"date" gorm:"type:varchar(255);comment:考勤时间"`
      WorkerId         string `json:"workerId" gorm:"type:varchar(255);comment:人员id"`
      WorkerName       string `json:"workerName" gorm:"type:varchar(255);comment:人员姓名"`
      StartWorkTime    string `json:"startWorkTime" gorm:"type:varchar(255);comment:上班打卡时间"`
      EndWorkTime      string `json:"endWorkTime" gorm:"type:varchar(255);comment:下班打卡时间"`
      Classes          string `json:"classes" gorm:"type:varchar(255);comment:班次"`
      ClassesStartTime string `json:"classesStartTime" gorm:"type:varchar(255);comment:班次开始时间"`
      ClassesEndTime   string `json:"classesEndTime" gorm:"type:varchar(255);comment:班次下班时间"`
      CreateTime       string `json:"createTime" gorm:"type:varchar(255);comment:添加时间"`
      AddPeople        string `json:"addPeople" gorm:"type:varchar(255);comment:添加人"`
      Date             string                    `json:"date" gorm:"type:varchar(255);comment:考勤时间"`
      WorkerId         string                    `json:"workerId" gorm:"type:varchar(255);comment:人员id"`
      WorkerName       string                    `json:"workerName" gorm:"type:varchar(255);comment:人员姓名"`
      StartWorkTime    string                    `json:"startWorkTime" gorm:"type:varchar(255);comment:上班打卡时间"`
      EndWorkTime      string                    `json:"endWorkTime" gorm:"type:varchar(255);comment:下班打卡时间"`
      Classes          string                    `json:"classes" gorm:"type:varchar(255);comment:班次"`
      ClassesStartTime string                    `json:"classesStartTime" gorm:"type:varchar(255);comment:班次开始时间"`
      ClassesEndTime   string                    `json:"classesEndTime" gorm:"type:varchar(255);comment:班次下班时间"`
      CreateTime       string                    `json:"createTime" gorm:"type:varchar(255);comment:添加时间"`
      AddPeople        string                    `json:"addPeople" gorm:"type:varchar(255);comment:添加人"`
      WorkTypeId       uint                      `json:"workTypeId" gorm:"type:int(11);comment:工种id"`
      WorkType         WorkTypeManage            `json:"workType" gorm:"foreignKey:WorkTypeId"`
      Status           constvar.AttendanceStatus `json:"status" gorm:"type:int(11);comment:状态"`
      OverTimeDuration decimal.Decimal           `json:"overTimeDuration" gorm:"type:decimal(20,2);comment:加班时长"`
      PhoneNum         string                    `gorm:"type:varchar(191);comment:手机号" json:"phoneNum"`
   }
   AttendanceManageSearch struct {
      AttendanceManage
      PageNum  int
      PageSize int
      Preload  bool
      Ids      []uint
      Month    string
      Keyword  string
      Order    string
      Orm      *gorm.DB
   }
)
@@ -53,6 +64,36 @@
   return slf
}
func (slf *AttendanceManageSearch) SetPreload(preload bool) *AttendanceManageSearch {
   slf.Preload = preload
   return slf
}
func (slf *AttendanceManageSearch) SetMonth(month string) *AttendanceManageSearch {
   slf.Month = month
   return slf
}
func (slf *AttendanceManageSearch) SetDate(date string) *AttendanceManageSearch {
   slf.Date = date
   return slf
}
func (slf *AttendanceManageSearch) SetWorkerId(workerId string) *AttendanceManageSearch {
   slf.WorkerId = workerId
   return slf
}
func (slf *AttendanceManageSearch) SetKeyword(keyword string) *AttendanceManageSearch {
   slf.Keyword = keyword
   return slf
}
func (slf *AttendanceManageSearch) SetOrder(order string) *AttendanceManageSearch {
   slf.Order = order
   return slf
}
func (slf *AttendanceManageSearch) build() *gorm.DB {
   var db = slf.Orm.Table(slf.TableName())
@@ -60,6 +101,29 @@
      db = db.Where("id in (?)", slf.Ids)
   }
   if slf.Preload {
      db = db.Model(&AttendanceManage{}).Preload("WorkType")
   }
   if slf.Month != "" {
      db = db.Where("date like ?", slf.Month+"%")
   }
   if slf.Date != "" {
      db = db.Where("date = ?", slf.Date)
   }
   if slf.WorkerId != "" {
      db = db.Where("worker_id = ?", slf.WorkerId)
   }
   if slf.Keyword != "" {
      db = db.Where("worker_name like ? or worker_id like ?", "%"+slf.Keyword+"%", "%"+slf.Keyword+"%")
   }
   if slf.Order != "" {
      db = db.Order(slf.Order)
   }
   return db
}