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
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)
|
|
}
|
|
|