From 7d06c6472f1acea6b2e49e7b8837bf555e94e219 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 07 五月 2024 16:21:06 +0800
Subject: [PATCH] fox

---
 models/attendance_manage.go |   84 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 74 insertions(+), 10 deletions(-)

diff --git a/models/attendance_manage.go b/models/attendance_manage.go
index dac4b23..412bf42 100644
--- a/models/attendance_manage.go
+++ b/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
 }
 

--
Gitblit v1.8.0