HR管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

324 lines
8.1 KiB

package workrostering
import (
"hr_server/models/workgroup"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"time"
"github.com/gin-gonic/gin"
)
//工作时间设定
/*
*
@ 作者: 秦东
@ 时间: 2022-12-13 18:38:21
@ 功能: 获取工作时间列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiModer) TeamTimeList(c *gin.Context) {
var requestData WorkTimeList
c.ShouldBindJSON(&requestData)
var timeList []workgroup.WorkTimeType
gormDb := overall.CONSTANT_DB_HR.Model(&workgroup.WorkTimeType{}).Where("`state` IN (1,2)")
if requestData.Name != "" {
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData.Name+"%")
}
err := gormDb.Find(&timeList).Error
if err != nil {
overallhandle.Result(107, err, c)
return
}
var sendList []SendWorkTime
for _, v := range timeList {
var sendCont SendWorkTime
sendCont.Id = strconv.FormatInt(v.Id, 10)
sendCont.Name = v.Name
sendCont.State = v.State
if v.State == 1 {
sendCont.States = true
} else {
sendCont.States = false
}
var workTimeCont workgroup.WorkingTimePeriod
timeContList, _ := workTimeCont.ContMap(map[string]interface{}{`type_id`: v.Id}, "`name`", "`start_time`", "`end_time`")
for _, wv := range timeContList {
var teamContTime TemaTime
teamContTime.Title = wv.Name
teamContTime.StartTime = wv.StartTime
teamContTime.EndTime = wv.EndTime
sendCont.List = append(sendCont.List, teamContTime)
}
sendList = append(sendList, sendCont)
}
overallhandle.Result(0, sendList, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2022-12-13 17:29:07
@ 功能: 添加工作时间设置
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiModer) AddTeamTime(c *gin.Context) {
var requestData SetWorkTime
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, err, c)
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData, c)
return
}
if len(requestData.List) < 1 {
overallhandle.Result(1, requestData, c, "没有划分工作时间段!")
return
}
isTrue := true
for _, v := range requestData.List {
if v.Title == "" || v.StartTime == "" || v.EndTime == "" {
isTrue = false
}
// beginTime := fmt.Sprintf("%v",)
}
if !isTrue {
overallhandle.Result(1, requestData, c, "您划分的工作时间段,有不符合规定的!请改正!")
return
}
key := overallhandle.OnlyOneNumber(5)
//工作时间段类型
var workTimeType workgroup.WorkTimeType
//判断是否有同类型的安排
err = workTimeType.GetCont(map[string]interface{}{"`name`": requestData.Name}, "`id`")
if err == nil {
overallhandle.Result(1, requestData, c, "该名称已经存在!请不要重复添加!")
return
}
workTimeType.Id = key
workTimeType.Name = requestData.Name //type:string comment:类型名称 version:2022-11-13 16:57
workTimeType.State = 1 //类型:(1:启用;2:禁用;3:删除) version:2022-11-13 16:57
workTimeType.Time = time.Now().Unix()
//工作时段
var workTimeList []workgroup.WorkingTimePeriod
for _, lv := range requestData.List {
var workTimeCont workgroup.WorkingTimePeriod
workTimeCont.Name = lv.Title //type:string comment:工作时间段名称 version:2022-11-13 16:59
workTimeCont.Time = time.Now().Unix() //type:int64 comment:编辑时间;0 version:2022-11-13 16:59
workTimeCont.TypeId = key //type:int64 comment:类型 version:2022-11-13 16:59
workTimeCont.StartTime = lv.StartTime //type:string comment:开始时间 version:2022-11-13 16:59
workTimeCont.EndTime = lv.EndTime //type:string comment:结束时间 version:2022-11-13 16:59
workTimeList = append(workTimeList, workTimeCont)
}
err = overall.CONSTANT_DB_HR.Create(&workTimeType).Error
if err != nil {
overallhandle.Result(104, requestData, c)
return
}
WriteWorkTime(key, workTimeList)
overallhandle.Result(0, requestData, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2022-12-13 18:06:08
@ 功能: 写入工作时段
@ 参数
#key 类型ID
#workTimeList 时段列表
@ 返回值
#err 返回状态
@ 方法原型
# WriteWorkTime(key int64, workTimeList []workgroup.WorkingTimePeriod) (err error)
*/
func WriteWorkTime(key int64, workTimeList []workgroup.WorkingTimePeriod) (err error) {
var workTimeCont workgroup.WorkingTimePeriod
workTimeCont.DelCont(map[string]interface{}{"`type_id`": key})
err = overall.CONSTANT_DB_HR.Create(&workTimeList).Error
return
}
/*
*
@ 作者: 秦东
@ 时间: 2022-12-14 08:14:45
@ 功能: 编辑状态
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiModer) EditWorkTimeState(c *gin.Context) {
var requestData overallhandle.EditState
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, err, c)
return
}
if requestData.Id == "" {
overallhandle.Result(101, err, c)
return
}
if requestData.State == 0 {
requestData.State = 2
}
if requestData.Constrain == 0 {
requestData.Constrain = 2
}
wher := overallhandle.MapOut()
wher["id"] = requestData.Id
var oldCont workgroup.WorkTimeType
err = oldCont.GetCont(wher)
if err != nil {
overallhandle.Result(107, err, c)
return
}
if requestData.State != oldCont.State {
editCont := overallhandle.MapOut()
if requestData.State < 3 {
editCont["state"] = requestData.State
editCont["time"] = time.Now().Unix()
err = oldCont.EiteCont(wher, editCont)
if err != nil {
overallhandle.Result(106, err, c)
return
}
} else {
if requestData.Constrain != 1 {
editCont["state"] = requestData.State
editCont["time"] = time.Now().Unix()
err = oldCont.EiteCont(wher, editCont)
if err != nil {
overallhandle.Result(108, err, c)
return
}
} else {
var workTimeLists workgroup.WorkingTimePeriod
workTimeLists.DelCont(map[string]interface{}{"`type_id`": requestData.Id})
err = oldCont.DelCont(wher)
if err != nil {
overallhandle.Result(108, err, c)
return
}
}
}
}
overallhandle.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2022-12-14 09:20:07
@ 功能: 编辑时间段
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiModer) EditWorkTimeCont(c *gin.Context) {
var requestData EditWorkTimeCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, err, c)
return
}
if requestData.Id == "" {
overallhandle.Result(101, requestData, c)
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData, c)
return
}
if len(requestData.List) < 1 {
overallhandle.Result(1, requestData, c, "没有划分工作时间段!")
return
}
isTrue := true
for _, v := range requestData.List {
if v.Title == "" || v.StartTime == "" || v.EndTime == "" {
isTrue = false
}
// beginTime := fmt.Sprintf("%v",)
}
if !isTrue {
overallhandle.Result(1, requestData, c, "您划分的工作时间段,有不符合规定的!请改正!")
return
}
wher := overallhandle.MapOut()
wher["id"] = requestData.Id
var oldCont workgroup.WorkTimeType
err = oldCont.GetCont(wher)
if err != nil {
overallhandle.Result(107, err, c)
return
}
editCont := overallhandle.MapOut()
editCont["name"] = requestData.Name
editCont["time"] = time.Now().Unix()
err = oldCont.EiteCont(wher, editCont)
if err != nil {
overallhandle.Result(106, err, c)
return
}
//工作时段
var workTimeList []workgroup.WorkingTimePeriod
for _, lv := range requestData.List {
var workTimeCont workgroup.WorkingTimePeriod
workTimeCont.Name = lv.Title //type:string comment:工作时间段名称 version:2022-11-13 16:59
workTimeCont.Time = time.Now().Unix() //type:int64 comment:编辑时间;0 version:2022-11-13 16:59
workTimeCont.TypeId = oldCont.Id //type:int64 comment:类型 version:2022-11-13 16:59
workTimeCont.StartTime = lv.StartTime //type:string comment:开始时间 version:2022-11-13 16:59
workTimeCont.EndTime = lv.EndTime //type:string comment:结束时间 version:2022-11-13 16:59
workTimeList = append(workTimeList, workTimeCont)
}
WriteWorkTime(oldCont.Id, workTimeList)
overallhandle.Result(0, err, c)
}