| | |
| | | OutsourcingSupplierRange //供货范围 |
| | | SalaryType //嘉联薪资类型 |
| | | ) |
| | | |
| | | // ShiftType 班次类型 |
| | | type ShiftType string |
| | | |
| | | const ( |
| | | ShiftTypeRegular ShiftType = "regular" // 固定班次 |
| | | ShiftTypeCycle ShiftType = "cycle" // 循环班次 |
| | | ) |
| | | |
| | | // ResourceType 订单类型 |
| | | type ResourceType int |
| | | |
| | | const ( |
| | | ResourceTypeDevice ResourceType = iota + 1 // 设备 |
| | | ResourceTypeWorker // 人员 |
| | | ) |
New file |
| | |
| | | package controllers |
| | | |
| | | import ( |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/xuri/excelize/v2" |
| | | "silkserver/constvar" |
| | | "silkserver/controllers/request" |
| | | "silkserver/extend/code" |
| | | "silkserver/extend/util" |
| | | "silkserver/middleware" |
| | | "silkserver/models" |
| | | "silkserver/pkg/logx" |
| | | "silkserver/pkg/timex" |
| | | "time" |
| | | ) |
| | | |
| | | type AttendanceController struct { |
| | | } |
| | | |
| | | // AttendanceInput |
| | | // |
| | | // @Tags 考勤管理 |
| | | // @Summary 考勤导入 |
| | | // @Produce application/xlsx |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-jl/v1/attendance/attendanceInput [post] |
| | | func (slf AttendanceController) AttendanceInput(c *gin.Context) { |
| | | file, _, err := c.Request.FormFile("file") |
| | | if err != nil { |
| | | logx.Error(err.Error()) |
| | | util.ResponseFormat(c, code.RequestParamError, "文件读取失败") |
| | | return |
| | | } |
| | | defer file.Close() |
| | | //读取excel文件 |
| | | f, err := excelize.OpenReader(file) |
| | | if err != nil { |
| | | logx.Error(err.Error()) |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | defer f.Close() |
| | | rows, err := f.GetRows("Sheet1") |
| | | if err != nil { |
| | | logx.Error(err.Error()) |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | if len(rows) <= 1 { |
| | | logx.Error(err.Error()) |
| | | util.ResponseFormat(c, code.RequestParamError, "该文件没有数据内容") |
| | | return |
| | | } |
| | | |
| | | attendances := make([]*models.AttendanceManage, 0) |
| | | workerIds := make([]string, 0) |
| | | idMap := make(map[string]interface{}) |
| | | info := middleware.GetUserInfo(c) |
| | | for k, row := range rows { |
| | | if k == 0 { |
| | | continue |
| | | } |
| | | var am models.AttendanceManage |
| | | am.Date = row[0] |
| | | am.WorkerId = row[1] |
| | | am.WorkerName = row[2] |
| | | am.StartWorkTime = row[3] |
| | | am.EndWorkTime = row[4] |
| | | if am.WorkerId != "" { |
| | | idMap[am.WorkerId] = "" |
| | | } |
| | | am.AddPeople = info.NickName |
| | | am.CreateTime = timex.TimeToString2(time.Now()) |
| | | attendances = append(attendances, &am) |
| | | } |
| | | |
| | | for K, _ := range idMap { |
| | | workerIds = append(workerIds, K) |
| | | } |
| | | //查询班次信息 |
| | | schedules, err := models.NewShiftScheduleSearch().SetResourceIDs(workerIds).SetResourceType(constvar.ResourceTypeWorker).FindNotTotal() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | scheduleIds := make([]string, 0) |
| | | for _, schedule := range schedules { |
| | | scheduleIds = append(scheduleIds, schedule.ID) |
| | | } |
| | | shifts, _ := models.NewShiftScheduleShiftSearch().SetShiftScheduleIDs(scheduleIds).SetPreload(true).FindNotTotal() |
| | | for _, schedule := range schedules { |
| | | for _, shift := range shifts { |
| | | if schedule.ID == shift.ShiftScheduleID { |
| | | schedule.Shift = append(schedule.Shift, &shift.Shift) |
| | | } |
| | | } |
| | | } |
| | | for _, attendance := range attendances { |
| | | for _, schedule := range schedules { |
| | | if attendance.WorkerId == schedule.ResourceID { |
| | | if len(schedule.Shift) > 0 { |
| | | attendance.Classes = schedule.Shift[0].Name |
| | | if len(schedule.Shift[0].ShiftTime) > 0 { |
| | | t := schedule.Shift[0].ShiftTime[0] |
| | | attendance.ClassesStartTime = t.StartTime |
| | | attendance.ClassesEndTime = t.EndTime |
| | | } |
| | | } |
| | | break |
| | | } |
| | | } |
| | | } |
| | | //插入考勤数据 |
| | | err = models.NewAttendanceManageSearch().CreateBatch(attendances) |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | util.ResponseFormat(c, code.Success, "导入成功") |
| | | } |
| | | |
| | | // GetAttendanceList |
| | | // |
| | | // @Tags 考勤管理 |
| | | // @Summary 获取考勤列表 |
| | | // @Produce application/json |
| | | // @Param object body request.GetAttendanceList true "参数" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.ResponseList{data=[]models.AttendanceManage} "成功" |
| | | // @Router /api-jl/v1/attendance/getAttendanceList [post] |
| | | func (slf AttendanceController) GetAttendanceList(c *gin.Context) { |
| | | var params request.GetAttendanceList |
| | | err := c.BindJSON(¶ms) |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") |
| | | return |
| | | } |
| | | manages, total, err := models.NewAttendanceManageSearch().SetPage(params.Page, params.PageSize).Find() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | util.ResponseFormatList(c, code.Success, manages, total) |
| | | } |
| | | |
| | | // DeleteAttendanceInfo |
| | | // |
| | | // @Tags 考勤管理 |
| | | // @Summary 删除考勤信息 |
| | | // @Produce application/json |
| | | // @Param object body request.DeleteAttendanceInfo true "参数" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-jl/v1/attendance/deleteAttendanceInfo [delete] |
| | | func (slf AttendanceController) DeleteAttendanceInfo(c *gin.Context) { |
| | | var params request.DeleteAttendanceInfo |
| | | err := c.BindJSON(¶ms) |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") |
| | | return |
| | | } |
| | | err = models.NewAttendanceManageSearch().SetIds(params.Ids).Delete() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, err) |
| | | return |
| | | } |
| | | util.ResponseFormat(c, code.Success, "删除成功") |
| | | } |
New file |
| | |
| | | package request |
| | | |
| | | type GetAttendanceList struct { |
| | | PageInfo |
| | | Keyword string `json:"keyword"` |
| | | } |
| | | |
| | | type DeleteAttendanceInfo struct { |
| | | Ids []uint `json:"ids"` |
| | | } |
| | |
| | | // @Tags 员工薪资/薪酬方案 |
| | | // @Summary 删除薪酬方案 |
| | | // @Produce application/json |
| | | // @Param number path string true "id" |
| | | // @Param id path string true "id" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-jl/v1/salary/deleteSalaryPlanInfo/{id} [delete] |
| | |
| | | // @Tags 员工管理/工种信息 |
| | | // @Summary 删除工种信息 |
| | | // @Produce application/json |
| | | // @Param number path string true "id" |
| | | // @Param id path string true "id" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-jl/v1/worker/deleteWorkTypeInfo/{id} [delete] |
| | |
| | | // @Tags 员工管理/员工信息 |
| | | // @Summary 删除人员信息 |
| | | // @Produce application/json |
| | | // @Param number path string true "id" |
| | | // @Param id path string true "id" |
| | | // @Param Authorization header string true "token" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-jl/v1/worker/deleteWorkerInfo/{id} [delete] |
| | |
| | | github.com/swaggo/files v1.0.1 |
| | | github.com/swaggo/gin-swagger v1.6.0 |
| | | github.com/swaggo/swag v1.16.3 |
| | | github.com/xuri/excelize/v2 v2.8.1 |
| | | go.uber.org/zap v1.27.0 |
| | | golang.org/x/crypto v0.20.0 |
| | | google.golang.org/grpc v1.62.0 |
| | |
| | | github.com/mitchellh/mapstructure v1.5.0 // indirect |
| | | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect |
| | | github.com/modern-go/reflect2 v1.0.2 // indirect |
| | | github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect |
| | | github.com/pelletier/go-toml/v2 v2.1.0 // indirect |
| | | github.com/richardlehane/mscfb v1.0.4 // indirect |
| | | github.com/richardlehane/msoleps v1.0.3 // indirect |
| | | github.com/sagikazarmark/locafero v0.4.0 // indirect |
| | | github.com/sagikazarmark/slog-shim v0.1.0 // indirect |
| | | github.com/shopspring/decimal v1.3.1 // indirect |
| | | github.com/sourcegraph/conc v0.3.0 // indirect |
| | | github.com/spf13/afero v1.11.0 // indirect |
| | | github.com/spf13/cast v1.6.0 // indirect |
| | |
| | | github.com/subosito/gotenv v1.6.0 // indirect |
| | | github.com/twitchyliquid64/golang-asm v0.15.1 // indirect |
| | | github.com/ugorji/go/codec v1.2.11 // indirect |
| | | github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect |
| | | github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect |
| | | go.uber.org/multierr v1.10.0 // indirect |
| | | golang.org/x/arch v0.3.0 // indirect |
| | | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect |
| | |
| | | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= |
| | | github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= |
| | | github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= |
| | | github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= |
| | | github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= |
| | | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= |
| | | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= |
| | | github.com/nsqio/go-nsq v1.1.0 h1:PQg+xxiUjA7V+TLdXw7nVrJ5Jbl3sN86EhGCQj4+FYE= |
| | |
| | | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= |
| | | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
| | | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= |
| | | github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= |
| | | github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= |
| | | github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= |
| | | github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= |
| | | github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= |
| | | github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= |
| | | github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= |
| | | github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= |
| | |
| | | github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= |
| | | github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= |
| | | github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= |
| | | github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0= |
| | | github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= |
| | | github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ= |
| | | github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE= |
| | | github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4= |
| | | github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= |
| | | github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= |
| | | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= |
| | | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= |
| | |
| | | golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= |
| | | golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= |
| | | golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= |
| | | golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4= |
| | | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= |
| | | golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= |
| | | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= |
New file |
| | |
| | | package models |
| | | |
| | | import ( |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "silkserver/pkg/mysqlx" |
| | | ) |
| | | |
| | | type ( |
| | | //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:添加人"` |
| | | } |
| | | AttendanceManageSearch struct { |
| | | AttendanceManage |
| | | PageNum int |
| | | PageSize int |
| | | Ids []uint |
| | | Orm *gorm.DB |
| | | } |
| | | ) |
| | | |
| | | func (slf AttendanceManage) TableName() string { |
| | | return "silk_attendance_manage" |
| | | } |
| | | |
| | | func NewAttendanceManageSearch() *AttendanceManageSearch { |
| | | return &AttendanceManageSearch{Orm: mysqlx.GetDB()} |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) SetOrm(tx *gorm.DB) *AttendanceManageSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) SetPage(page, size int) *AttendanceManageSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) SetIds(ids []uint) *AttendanceManageSearch { |
| | | slf.Ids = ids |
| | | return slf |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if len(slf.Ids) > 0 { |
| | | db = db.Where("id in (?)", slf.Ids) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *AttendanceManageSearch) Create(record *AttendanceManage) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *AttendanceManageSearch) CreateBatch(record []*AttendanceManage) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(&record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) Save(record *AttendanceManage) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) 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 *AttendanceManageSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&AttendanceManage{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) Find() ([]*AttendanceManage, int64, error) { |
| | | var ( |
| | | records = make([]*AttendanceManage, 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 *AttendanceManageSearch) FindNotTotal() ([]*AttendanceManage, error) { |
| | | var ( |
| | | records = make([]*AttendanceManage, 0) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, fmt.Errorf("find records err: %v", err) |
| | | } |
| | | |
| | | return records, nil |
| | | } |
| | | |
| | | func (slf *AttendanceManageSearch) 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 |
| | | } |
| | |
| | | Worker{}, |
| | | WorkTypeManage{}, |
| | | SalaryPlan{}, |
| | | AttendanceManage{}, |
| | | ) |
| | | return err |
| | | } |
New file |
| | |
| | | package models |
| | | |
| | | import ( |
| | | "fmt" |
| | | "github.com/shopspring/decimal" |
| | | "gorm.io/gorm" |
| | | "silkserver/pkg/mysqlx" |
| | | ) |
| | | |
| | | type ( |
| | | // Shift 班次 |
| | | Shift struct { |
| | | BaseModelString |
| | | Name string `gorm:"unique;type:varchar(191);not null;comment:班次名称" json:"name"` |
| | | ShiftDuration decimal.Decimal `json:"shiftDuration"` // 班次时长 |
| | | ShiftTime []*ShiftTime `json:"shiftTime"` // 班次时间 |
| | | } |
| | | |
| | | ShiftSearch struct { |
| | | Shift |
| | | Preload bool |
| | | Order string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | } |
| | | ) |
| | | |
| | | func (slf Shift) TableName() string { |
| | | return "shift" |
| | | } |
| | | |
| | | func NewShiftSearch() *ShiftSearch { |
| | | return &ShiftSearch{Orm: mysqlx.GetDB()} |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetOrm(tx *gorm.DB) *ShiftSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetPage(page, size int) *ShiftSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetOrder(order string) *ShiftSearch { |
| | | slf.Order = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetID(id string) *ShiftSearch { |
| | | slf.ID = id |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetName(name string) *ShiftSearch { |
| | | slf.Name = name |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) SetPreload(preload bool) *ShiftSearch { |
| | | slf.Preload = preload |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if slf.ID != "" { |
| | | db = db.Where("id = ?", slf.ID) |
| | | } |
| | | |
| | | if slf.Name != "" { |
| | | db = db.Where("name = ?", slf.Name) |
| | | } |
| | | |
| | | if slf.Order != "" { |
| | | db = db.Order(slf.Order) |
| | | } |
| | | |
| | | if slf.Preload { |
| | | db = db.Model(&Shift{}).Preload("ShiftTime") |
| | | } |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *ShiftSearch) Create(record *Shift) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *ShiftSearch) CreateBatch(records []*Shift) 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 *ShiftSearch) Save(record *Shift) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftSearch) 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 *ShiftSearch) 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 *ShiftSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&Shift{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftSearch) First() (*Shift, error) { |
| | | var ( |
| | | record = new(Shift) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.First(record).Error; err != nil { |
| | | return record, err |
| | | } |
| | | |
| | | return record, nil |
| | | } |
| | | |
| | | func (slf *ShiftSearch) Find() ([]*Shift, int64, error) { |
| | | var ( |
| | | records = make([]*Shift, 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 *ShiftSearch) FindNotTotal() ([]*Shift, error) { |
| | | var ( |
| | | records = make([]*Shift, 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 *ShiftSearch) FindByQuery(query string, args []interface{}) ([]*Shift, int64, error) { |
| | | var ( |
| | | records = make([]*Shift, 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 *ShiftSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Shift, error) { |
| | | var ( |
| | | records = make([]*Shift, 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 |
| | | } |
| | | |
| | | func (slf *ShiftSearch) FindAll() ([]*Shift, error) { |
| | | var ( |
| | | records = make([]*Shift, 0) |
| | | db = slf.build() |
| | | ) |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, fmt.Errorf("find records err: %v", err) |
| | | } |
| | | |
| | | return records, nil |
| | | } |
New file |
| | |
| | | package models |
| | | |
| | | import ( |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "silkserver/constvar" |
| | | "silkserver/pkg/mysqlx" |
| | | ) |
| | | |
| | | type ( |
| | | // ShiftSchedule 排班管理 |
| | | ShiftSchedule struct { |
| | | BaseModelString |
| | | ResourceType constvar.ResourceType `gorm:"type:int(11);comment:资源类型" json:"resourceType"` |
| | | ResourceID string `gorm:"index;type:varchar(191);not null;comment:资源ID" json:"resourceId"` |
| | | ResourceName string `gorm:"type:varchar(191);comment:资源名称" json:"resourceName"` |
| | | ShiftType constvar.ShiftType `gorm:"type:varchar(100);comment:班次类型" json:"shiftType"` |
| | | WorkOnWeekend bool `gorm:"type:tinyint(1);comment:休息日无需上班" json:"workOnWeekend"` |
| | | WorkOnHoliday bool `gorm:"type:tinyint(1);comment:节假日无需上班" json:"workOnHoliday"` |
| | | ScheduleShift []*ShiftScheduleShift `gorm:"-" json:"-"` // 班次列表 |
| | | Shift []*Shift `gorm:"-" json:"shift"` // 班次列表 |
| | | } |
| | | |
| | | ShiftScheduleSearch struct { |
| | | ShiftSchedule |
| | | Keyword string |
| | | Order string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | ResourceIDs []string |
| | | } |
| | | |
| | | ShiftScheduleExcel struct { |
| | | ResourceID string `json:"resourceId"` |
| | | ShiftTypeName string `json:"shiftTypeName"` |
| | | IsWeekendStr string `json:"isWeekendStr"` |
| | | IsHolidayStr string `json:"isHolidayStr"` |
| | | ShiftName string `json:"shiftName"` |
| | | } |
| | | ) |
| | | |
| | | func (slf ShiftSchedule) TableName() string { |
| | | return "shift_schedule" |
| | | } |
| | | |
| | | func NewShiftScheduleSearch() *ShiftScheduleSearch { |
| | | return &ShiftScheduleSearch{Orm: mysqlx.GetDB()} |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetOrm(tx *gorm.DB) *ShiftScheduleSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetPage(page, size int) *ShiftScheduleSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetOrder(order string) *ShiftScheduleSearch { |
| | | slf.Order = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetID(id string) *ShiftScheduleSearch { |
| | | slf.ID = id |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetResourceType(resourceType constvar.ResourceType) *ShiftScheduleSearch { |
| | | slf.ResourceType = resourceType |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetResourceID(resourceID string) *ShiftScheduleSearch { |
| | | slf.ResourceID = resourceID |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetResourceIDs(resourceIDs []string) *ShiftScheduleSearch { |
| | | slf.ResourceIDs = resourceIDs |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) SetKeyword(keyword string) *ShiftScheduleSearch { |
| | | slf.Keyword = keyword |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if slf.ID != "" { |
| | | db = db.Where("id = ?", slf.ID) |
| | | } |
| | | |
| | | if slf.ResourceID != "" { |
| | | db = db.Where("resource_id = ?", slf.ResourceID) |
| | | } |
| | | |
| | | if len(slf.ResourceIDs) > 0 { |
| | | db = db.Where("resource_id in (?)", slf.ResourceIDs) |
| | | } |
| | | |
| | | if slf.ResourceType > 0 { |
| | | db = db.Where("resource_type = ?", slf.ResourceType) |
| | | } |
| | | |
| | | if slf.Keyword != "" { |
| | | db = db.Where("resource_name LIKE ?", "%"+slf.Keyword+"%") |
| | | } |
| | | |
| | | if slf.Order != "" { |
| | | db = db.Order(slf.Order) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *ShiftScheduleSearch) Create(record *ShiftSchedule) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *ShiftScheduleSearch) CreateBatch(records []*ShiftSchedule) 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 *ShiftScheduleSearch) Save(record *ShiftSchedule) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) 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 *ShiftScheduleSearch) 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 *ShiftScheduleSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&ShiftSchedule{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) First() (*ShiftSchedule, error) { |
| | | var ( |
| | | record = new(ShiftSchedule) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.First(record).Error; err != nil { |
| | | return record, err |
| | | } |
| | | |
| | | return record, nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleSearch) Find() ([]*ShiftSchedule, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftSchedule, 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 *ShiftScheduleSearch) FindNotTotal() ([]*ShiftSchedule, error) { |
| | | var ( |
| | | records = make([]*ShiftSchedule, 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 *ShiftScheduleSearch) FindByQuery(query string, args []interface{}) ([]*ShiftSchedule, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftSchedule, 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 *ShiftScheduleSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ShiftSchedule, error) { |
| | | var ( |
| | | records = make([]*ShiftSchedule, 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 |
| | | } |
New file |
| | |
| | | package models |
| | | |
| | | import ( |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "silkserver/pkg/mysqlx" |
| | | ) |
| | | |
| | | type ( |
| | | ShiftScheduleShift struct { |
| | | BaseModelInt |
| | | ShiftScheduleID string `gorm:"index;type:varchar(191);not null;comment:排班管理ID" json:"shiftScheduleId"` |
| | | ShiftID string `gorm:"type:varchar(191);comment:班次ID" json:"shiftId"` |
| | | Shift Shift `json:"shift"` |
| | | } |
| | | |
| | | ShiftScheduleShiftSearch struct { |
| | | ShiftScheduleShift |
| | | Preload bool |
| | | Order string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | ShiftScheduleIDs []string |
| | | } |
| | | ) |
| | | |
| | | func (slf *ShiftScheduleShift) TableName() string { |
| | | return "shift_schedule_shift" |
| | | } |
| | | |
| | | func NewShiftScheduleShiftSearch() *ShiftScheduleShiftSearch { |
| | | return &ShiftScheduleShiftSearch{Orm: mysqlx.GetDB()} |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetOrm(tx *gorm.DB) *ShiftScheduleShiftSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetPage(page, size int) *ShiftScheduleShiftSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetOrder(order string) *ShiftScheduleShiftSearch { |
| | | slf.Order = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetShiftScheduleID(shiftScheduleID string) *ShiftScheduleShiftSearch { |
| | | slf.ShiftScheduleID = shiftScheduleID |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetShiftScheduleIDs(shiftScheduleIDs []string) *ShiftScheduleShiftSearch { |
| | | slf.ShiftScheduleIDs = shiftScheduleIDs |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetShiftID(shiftID string) *ShiftScheduleShiftSearch { |
| | | slf.ShiftScheduleID = shiftID |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) SetPreload(preload bool) *ShiftScheduleShiftSearch { |
| | | slf.Preload = preload |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if slf.ShiftScheduleID != "" { |
| | | db = db.Where("shift_schedule_id = ?", slf.ShiftScheduleID) |
| | | } |
| | | |
| | | if len(slf.ShiftScheduleIDs) != 0 { |
| | | db = db.Where("shift_schedule_id in ?", slf.ShiftScheduleIDs) |
| | | } |
| | | |
| | | if slf.ShiftID != "" { |
| | | db = db.Where("shift_id = ?", slf.ShiftID) |
| | | } |
| | | |
| | | if slf.Preload { |
| | | db = db.Model(&ShiftScheduleShift{}).Preload("Shift").Preload("Shift.ShiftTime") |
| | | } |
| | | |
| | | if slf.Order != "" { |
| | | db = db.Order(slf.Order) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *ShiftScheduleShiftSearch) Create(record *ShiftScheduleShift) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *ShiftScheduleShiftSearch) CreateBatch(records []*ShiftScheduleShift) 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 *ShiftScheduleShiftSearch) Save(record *ShiftScheduleShift) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) 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 *ShiftScheduleShiftSearch) 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 *ShiftScheduleShiftSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&ShiftScheduleShift{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) First() (*ShiftScheduleShift, error) { |
| | | var ( |
| | | record = new(ShiftScheduleShift) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.First(record).Error; err != nil { |
| | | return record, err |
| | | } |
| | | |
| | | return record, nil |
| | | } |
| | | |
| | | func (slf *ShiftScheduleShiftSearch) Find() ([]*ShiftScheduleShift, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftScheduleShift, 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 *ShiftScheduleShiftSearch) FindNotTotal() ([]*ShiftScheduleShift, error) { |
| | | var ( |
| | | records = make([]*ShiftScheduleShift, 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 *ShiftScheduleShiftSearch) FindByQuery(query string, args []interface{}) ([]*ShiftScheduleShift, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftScheduleShift, 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 *ShiftScheduleShiftSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ShiftScheduleShift, error) { |
| | | var ( |
| | | records = make([]*ShiftScheduleShift, 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 |
| | | } |
New file |
| | |
| | | package models |
| | | |
| | | import ( |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "silkserver/pkg/mysqlx" |
| | | ) |
| | | |
| | | type ( |
| | | // ShiftTime 班次时间 |
| | | ShiftTime struct { |
| | | BaseModelInt |
| | | ShiftID string `gorm:"index;type:varchar(191);not null;comment:班次ID" json:"shiftId"` |
| | | StartTime string `gorm:"comment:班次开始时间" json:"startTime"` |
| | | EndTime string `gorm:"comment:班次结束时间" json:"endTime"` |
| | | } |
| | | |
| | | ShiftTimeSearch struct { |
| | | ShiftTime |
| | | Order string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | } |
| | | ) |
| | | |
| | | func (slf ShiftTime) TableName() string { |
| | | return "shift_time" |
| | | } |
| | | |
| | | func NewShiftTimeSearch() *ShiftTimeSearch { |
| | | return &ShiftTimeSearch{Orm: mysqlx.GetDB()} |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) SetOrm(tx *gorm.DB) *ShiftTimeSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) SetPage(page, size int) *ShiftTimeSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) SetOrder(order string) *ShiftTimeSearch { |
| | | slf.Order = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) SetShiftID(shiftID string) *ShiftTimeSearch { |
| | | slf.ShiftID = shiftID |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) SetID(id uint) *ShiftTimeSearch { |
| | | slf.ID = id |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if slf.ID > 0 { |
| | | db = db.Where("id = ?", slf.ID) |
| | | } |
| | | |
| | | if slf.ShiftID != "" { |
| | | db = db.Where("shift_id = ?", slf.ShiftID) |
| | | } |
| | | |
| | | if slf.Order != "" { |
| | | db = db.Order(slf.Order) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *ShiftTimeSearch) Create(record *ShiftTime) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *ShiftTimeSearch) CreateBatch(records []*ShiftTime) 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 *ShiftTimeSearch) Save(record *ShiftTime) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) 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 *ShiftTimeSearch) 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 *ShiftTimeSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&ShiftTime{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) First() (*ShiftTime, error) { |
| | | var ( |
| | | record = new(ShiftTime) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.First(record).Error; err != nil { |
| | | return record, err |
| | | } |
| | | |
| | | return record, nil |
| | | } |
| | | |
| | | func (slf *ShiftTimeSearch) Find() ([]*ShiftTime, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftTime, 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 *ShiftTimeSearch) FindNotTotal() ([]*ShiftTime, error) { |
| | | var ( |
| | | records = make([]*ShiftTime, 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 *ShiftTimeSearch) FindByQuery(query string, args []interface{}) ([]*ShiftTime, int64, error) { |
| | | var ( |
| | | records = make([]*ShiftTime, 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 *ShiftTimeSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ShiftTime, error) { |
| | | var ( |
| | | records = make([]*ShiftTime, 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 |
| | | } |
| | |
| | | |
| | | r.StaticFS(conf.LocalConf.StorePath, http.Dir(conf.LocalConf.StorePath)) // 为用户头像和文件提供静态地址 |
| | | r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) |
| | | //r.Use(middleware.JWTAuth()) |
| | | r.Use(middleware.JWTAuth()) |
| | | //r.Use(middleware.VerifyResetPwd()) |
| | | |
| | | urlPrefix := "/api-jl/v1" |
| | |
| | | workerApi.DELETE("deleteWorkTypeInfo/:id", workTypeManageController.DeleteWorkTypeInfo) //删除工种信息 |
| | | } |
| | | |
| | | //薪酬管理 |
| | | salaryApi := r.Group(urlPrefix + "/salary") |
| | | salaryPlanController := new(controllers.SalaryPlanController) |
| | | { |
| | |
| | | salaryApi.POST("saveSalaryType", salaryPlanController.SaveSalaryType) //保存薪资类型 |
| | | } |
| | | |
| | | //考勤管理 |
| | | attendanceApi := r.Group(urlPrefix + "/attendance") |
| | | attendanceController := new(controllers.AttendanceController) |
| | | { |
| | | attendanceApi.POST("attendanceInput", attendanceController.AttendanceInput) //考勤导入 |
| | | attendanceApi.POST("getAttendanceList", attendanceController.GetAttendanceList) //获取考勤列表 |
| | | attendanceApi.DELETE("deleteAttendanceInfo", attendanceController.DeleteAttendanceInfo) //删除考勤信息 |
| | | } |
| | | |
| | | return r |
| | | } |