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.
889 lines
28 KiB
889 lines
28 KiB
package workrostering
|
|
|
|
import (
|
|
"fmt"
|
|
"hr_server/models"
|
|
"hr_server/models/workgroup"
|
|
"hr_server/overall"
|
|
"hr_server/overall/overallhandle"
|
|
"strconv"
|
|
"strings"
|
|
"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
|
|
}
|
|
sendCont.RuleName = v.Rule
|
|
var workTimeCont workgroup.WorkingTimePeriod
|
|
timeContList, _ := workTimeCont.ContMap(map[string]interface{}{`type_id`: v.Id}, "`id`", "`name`", "`start_time`", "`end_time`")
|
|
for _, wv := range timeContList {
|
|
var teamContTime TemaTimes
|
|
teamContTime.Id = strconv.FormatInt(wv.Id, 10)
|
|
teamContTime.Title = wv.Name
|
|
teamContTime.StartTime = wv.StartTime
|
|
teamContTime.EndTime = wv.EndTime
|
|
sendCont.List = append(sendCont.List, teamContTime)
|
|
}
|
|
//获取轮询规则
|
|
var ruleCont workgroup.PollingRules
|
|
ruleList, _ := ruleCont.ContMap(map[string]interface{}{`type_id`: v.Id}, "`id`", "`teamid`", "`sort`", "`teamname`")
|
|
for _, rlv := range ruleList {
|
|
var ruleInfo TimeRules
|
|
ruleInfo.Id = strconv.FormatInt(rlv.Id, 10)
|
|
ruleInfo.Sort = rlv.Sort
|
|
ruleInfo.Teamid = strconv.FormatInt(rlv.Teamid, 10)
|
|
sendCont.Rule = append(sendCont.Rule, ruleInfo)
|
|
}
|
|
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.Rule) < 1 {
|
|
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()
|
|
// workTimeType.Rule = requestData.Rule
|
|
//工作时段
|
|
var workTimeList []workgroup.WorkingTimePeriod
|
|
for i, 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
|
|
workTimeCont.State = 1
|
|
workTimeCont.Sort = i + 1
|
|
workTimeList = append(workTimeList, workTimeCont)
|
|
}
|
|
//轮询规则
|
|
var teamName []string
|
|
var ruleList []workgroup.PollingRules
|
|
for _, rv := range requestData.Rule {
|
|
var ruleCont workgroup.PollingRules
|
|
ruleCont.Teamid, _ = strconv.ParseInt(rv.Teamid, 10, 64) //type:int64 comment:班组 version:2022-11-16 09:16
|
|
ruleCont.State = 1 //type:*int comment:状态(1:启用;2:禁用;3:删除);状态(1:启用;2:禁用;3:删除) version:2022-11-16 09:16
|
|
ruleCont.Time = time.Now().Unix() //type:int64 comment:时间;时间 version:2022-11-16 09:16
|
|
ruleCont.Sort = rv.Sort //type:*int comment:排序 version:2022-11-16 09:16
|
|
ruleCont.TypeId = key //type:int64 comment:类型
|
|
var teamCont models.TeamGroup
|
|
teamCont.GetCont(map[string]interface{}{"`id`": rv.Teamid}, "`name`")
|
|
ruleCont.TeamName = teamCont.Name
|
|
teamName = append(teamName, teamCont.Name)
|
|
ruleList = append(ruleList, ruleCont)
|
|
}
|
|
workTimeType.Rule = strings.Join(teamName, ",")
|
|
err = overall.CONSTANT_DB_HR.Create(&workTimeType).Error
|
|
if err != nil {
|
|
overallhandle.Result(104, requestData, c)
|
|
return
|
|
}
|
|
WriteWorkTime(key, workTimeList)
|
|
WriteWorkTimeRule(key, ruleList)
|
|
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-16 09:17:39
|
|
@ 功能: 写入轮询顺序
|
|
@ 参数
|
|
|
|
#key 类型ID
|
|
#ruleList 时段列表
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func WriteWorkTimeRule(key int64, ruleList []workgroup.PollingRules) (err error) {
|
|
var workTimeCont workgroup.PollingRules
|
|
workTimeCont.DelCont(map[string]interface{}{"`type_id`": key})
|
|
err = overall.CONSTANT_DB_HR.Create(&ruleList).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 EditWorkTimeConts
|
|
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.Rule) < 1 {
|
|
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["rule"] = requestData.Rule
|
|
editCont["time"] = time.Now().Unix()
|
|
|
|
//轮询规则
|
|
var teamName []string
|
|
// var ruleList []workgroup.PollingRules
|
|
for _, rv := range requestData.Rule {
|
|
var teamCont models.TeamGroup
|
|
teamCont.GetCont(map[string]interface{}{"`id`": rv.Teamid}, "`name`")
|
|
teamName = append(teamName, teamCont.Name)
|
|
}
|
|
editCont["rule"] = strings.Join(teamName, ",")
|
|
err = oldCont.EiteCont(wher, editCont)
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
|
|
//工作时段
|
|
EditPeriodTime(oldCont.Id, requestData.List)
|
|
//编辑轮询规则
|
|
EditPollingRule(oldCont.Id, requestData.Rule)
|
|
|
|
overallhandle.Result(0, err, c)
|
|
}
|
|
func (a *ApiModer) EditWorkTimeContOld(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.Rule) < 1 {
|
|
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["rule"] = requestData.Rule
|
|
editCont["time"] = time.Now().Unix()
|
|
|
|
//轮询规则
|
|
var teamName []string
|
|
var ruleList []workgroup.PollingRules
|
|
for _, rv := range requestData.Rule {
|
|
var ruleCont workgroup.PollingRules
|
|
ruleCont.Teamid, _ = strconv.ParseInt(rv.Teamid, 10, 64) //type:int64 comment:班组 version:2022-11-16 09:16
|
|
ruleCont.State = 1 //type:*int comment:状态(1:启用;2:禁用;3:删除);状态(1:启用;2:禁用;3:删除) version:2022-11-16 09:16
|
|
ruleCont.Time = time.Now().Unix() //type:int64 comment:时间;时间 version:2022-11-16 09:16
|
|
ruleCont.Sort = rv.Sort //type:*int comment:排序 version:2022-11-16 09:16
|
|
ruleCont.TypeId = oldCont.Id //type:int64 comment:类型
|
|
var teamCont models.TeamGroup
|
|
teamCont.GetCont(map[string]interface{}{"`id`": rv.Teamid}, "`name`")
|
|
ruleCont.TeamName = teamCont.Name
|
|
teamName = append(teamName, teamCont.Name)
|
|
ruleList = append(ruleList, ruleCont)
|
|
}
|
|
editCont["rule"] = strings.Join(teamName, ",")
|
|
|
|
err = oldCont.EiteCont(wher, editCont)
|
|
if err != nil {
|
|
overallhandle.Result(106, err, c)
|
|
return
|
|
}
|
|
WriteWorkTimeRule(oldCont.Id, ruleList)
|
|
//工作时段
|
|
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)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-12-16 16:23:22
|
|
@ 功能: 编辑轮询规则
|
|
@ 参数
|
|
|
|
#typeId 类型识别符
|
|
#ruleList 规则列表
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func EditPollingRule(typeId int64, ruleList []TimeRules) {
|
|
var ruleCont workgroup.PollingRules
|
|
oldRuleList, _ := ruleCont.ContMap(map[string]interface{}{"`type_id`": typeId})
|
|
var saveData []workgroup.PollingRules
|
|
var editId []string
|
|
for _, rv := range ruleList {
|
|
var teamCont models.TeamGroup
|
|
teamCont.GetCont(map[string]interface{}{"`id`": rv.Teamid}, "`name`")
|
|
|
|
if rv.Id != "" {
|
|
var ruleContJude workgroup.PollingRules
|
|
//判断是否存在
|
|
err := ruleContJude.GetCont(map[string]interface{}{"`id`": rv.Id})
|
|
if err == nil {
|
|
if overallhandle.IsInTrue[string](rv.Id, editId) == false {
|
|
editId = append(editId, rv.Id)
|
|
}
|
|
editCont := overallhandle.MapOut()
|
|
editCont["`state`"] = 1
|
|
editCont["`teamid`"], _ = strconv.ParseInt(rv.Teamid, 10, 64)
|
|
editCont["`teamname`"] = teamCont.Name
|
|
editCont["`sort`"] = rv.Sort
|
|
editCont["`time`"] = time.Now().Unix()
|
|
var ruleContNewEdit workgroup.PollingRules
|
|
ruleContNewEdit.EiteCont(map[string]interface{}{"`id`": rv.Id}, editCont)
|
|
} else {
|
|
var ruleContNew workgroup.PollingRules
|
|
ruleContNew.Teamid, _ = strconv.ParseInt(rv.Teamid, 10, 64) //type:int64 comment:班组 version:2022-11-16 09:16
|
|
ruleContNew.State = 1 //type:*int comment:状态(1:启用;2:禁用;3:删除);状态(1:启用;2:禁用;3:删除) version:2022-11-16 09:16
|
|
ruleContNew.Time = time.Now().Unix() //type:int64 comment:时间;时间 version:2022-11-16 09:16
|
|
ruleContNew.Sort = rv.Sort //type:*int comment:排序 version:2022-11-16 09:16
|
|
ruleContNew.TypeId = typeId //type:int64 comment:类型
|
|
|
|
ruleContNew.TeamName = teamCont.Name
|
|
saveData = append(saveData, ruleContNew)
|
|
}
|
|
} else {
|
|
var ruleContNewAdd workgroup.PollingRules
|
|
ruleContNewAdd.Teamid, _ = strconv.ParseInt(rv.Teamid, 10, 64) //type:int64 comment:班组 version:2022-11-16 09:16
|
|
ruleContNewAdd.State = 1 //type:*int comment:状态(1:启用;2:禁用;3:删除);状态(1:启用;2:禁用;3:删除) version:2022-11-16 09:16
|
|
ruleContNewAdd.Time = time.Now().Unix() //type:int64 comment:时间;时间 version:2022-11-16 09:16
|
|
ruleContNewAdd.Sort = rv.Sort //type:*int comment:排序 version:2022-11-16 09:16
|
|
ruleContNewAdd.TypeId = typeId //type:int64 comment:类型
|
|
ruleContNewAdd.TeamName = teamCont.Name
|
|
saveData = append(saveData, ruleContNewAdd)
|
|
}
|
|
|
|
}
|
|
//将不在使用的项目删除
|
|
for _, dv := range oldRuleList {
|
|
idStr := strconv.FormatInt(dv.Id, 10)
|
|
if overallhandle.IsInTrue[string](idStr, editId) == false {
|
|
editCont := overallhandle.MapOut()
|
|
editCont["`state`"] = 3
|
|
editCont["`time`"] = time.Now().Unix()
|
|
var ruleContNewAddAll workgroup.PollingRules
|
|
ruleContNewAddAll.EiteCont(map[string]interface{}{"`id`": dv.Id}, editCont)
|
|
}
|
|
}
|
|
if len(saveData) > 0 {
|
|
overall.CONSTANT_DB_HR.Create(&saveData)
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-12-16 17:10:13
|
|
@ 功能: 编辑工作时段
|
|
@ 参数
|
|
|
|
#typeId 类型识别符
|
|
#ruleList 分班时间表
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func EditPeriodTime(typeId int64, ruleList []TemaTimes) {
|
|
var workTimeCont workgroup.WorkingTimePeriod
|
|
workTimeListCont, _ := workTimeCont.ContMap(map[string]interface{}{"`type_id`": typeId})
|
|
var editId []string
|
|
var saveData []workgroup.WorkingTimePeriod
|
|
for i, v := range ruleList {
|
|
if v.Id != "" {
|
|
var workTimeContJudge workgroup.WorkingTimePeriod
|
|
err := workTimeContJudge.GetCont(map[string]interface{}{"`id`": v.Id})
|
|
if err == nil {
|
|
if overallhandle.IsInTrue[string](v.Id, editId) == false {
|
|
editId = append(editId, v.Id)
|
|
}
|
|
|
|
editCont := overallhandle.MapOut()
|
|
editCont["`sort`"] = i + 1
|
|
editCont["`state`"] = 1
|
|
editCont["`name`"] = v.Title
|
|
editCont["`time`"] = time.Now().Unix()
|
|
editCont["`start_time`"] = v.StartTime
|
|
editCont["`end_time`"] = v.EndTime
|
|
var workTimeContEs workgroup.WorkingTimePeriod
|
|
workTimeContEs.EiteCont(map[string]interface{}{"`id`": v.Id}, editCont)
|
|
} else {
|
|
var workTimeContAdd workgroup.WorkingTimePeriod
|
|
workTimeContAdd.Sort = i + 1
|
|
workTimeContAdd.Name = v.Title //type:string comment:工作时间段名称 version:2022-11-13 16:59
|
|
workTimeContAdd.Time = time.Now().Unix() //type:int64 comment:编辑时间;0 version:2022-11-13 16:59
|
|
workTimeContAdd.TypeId = typeId //type:int64 comment:类型 version:2022-11-13 16:59
|
|
workTimeContAdd.StartTime = v.StartTime //type:string comment:开始时间 version:2022-11-13 16:59
|
|
workTimeContAdd.EndTime = v.EndTime //type:string comment:结束时间 version:2022-11-13 16:59
|
|
saveData = append(saveData, workTimeContAdd)
|
|
}
|
|
} else {
|
|
var workTimeContAdd workgroup.WorkingTimePeriod
|
|
workTimeContAdd.Name = v.Title //type:string comment:工作时间段名称 version:2022-11-13 16:59
|
|
workTimeContAdd.Time = time.Now().Unix() //type:int64 comment:编辑时间;0 version:2022-11-13 16:59
|
|
workTimeContAdd.TypeId = typeId //type:int64 comment:类型 version:2022-11-13 16:59
|
|
workTimeContAdd.StartTime = v.StartTime //type:string comment:开始时间 version:2022-11-13 16:59
|
|
workTimeContAdd.EndTime = v.EndTime //type:string comment:结束时间 version:2022-11-13 16:59
|
|
workTimeContAdd.Sort = i + 1
|
|
saveData = append(saveData, workTimeContAdd)
|
|
}
|
|
}
|
|
//将不在使用的项目删除
|
|
for _, dv := range workTimeListCont {
|
|
idStr := strconv.FormatInt(dv.Id, 10)
|
|
if overallhandle.IsInTrue[string](idStr, editId) == false {
|
|
editCont := overallhandle.MapOut()
|
|
editCont["`state`"] = 3
|
|
editCont["`time`"] = time.Now().Unix()
|
|
var workTimeContEss workgroup.WorkingTimePeriod
|
|
workTimeContEss.EiteCont(map[string]interface{}{"`id`": dv.Id}, editCont)
|
|
}
|
|
}
|
|
if len(saveData) > 0 {
|
|
overall.CONSTANT_DB_HR.Create(&saveData)
|
|
}
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-12-17 09:35:20
|
|
@ 功能: 获取工作时段及轮询规则列表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiModer) GetPeriodAndRuleList(c *gin.Context) {
|
|
var requestData overallhandle.ConstId
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.Id == "" {
|
|
overallhandle.Result(101, err, c)
|
|
return
|
|
}
|
|
var sendData SendPeriodRules
|
|
sendData.Id = requestData.Id
|
|
var genesisCont workgroup.Genesis
|
|
genesisCont.GetCont(map[string]interface{}{"`type_id`": requestData.Id})
|
|
if genesisCont.StartTime != 0 {
|
|
sendData.Time = overallhandle.UnixTimeToDay(genesisCont.StartTime, 14) //
|
|
}
|
|
if genesisCont.PeriodId != 0 {
|
|
sendData.Teamid = strconv.FormatInt(genesisCont.PeriodId, 10) //班组名称
|
|
}
|
|
if genesisCont.Rules != 0 {
|
|
sendData.RuleId = strconv.FormatInt(genesisCont.Rules, 10) //轮询规则
|
|
}
|
|
|
|
//获取工作时段列表
|
|
var periodCont workgroup.WorkingTimePeriod
|
|
periodList, _ := periodCont.ContMap(map[string]interface{}{"`state`": 1, "`type_id`": requestData.Id})
|
|
for _, v := range periodList {
|
|
var teamPeriod TemaTimes
|
|
teamPeriod.Id = strconv.FormatInt(v.Id, 10)
|
|
teamPeriod.Title = v.Name //班次名称
|
|
teamPeriod.StartTime = v.StartTime //开始时间
|
|
teamPeriod.EndTime = v.EndTime //结束时间
|
|
sendData.List = append(sendData.List, teamPeriod)
|
|
}
|
|
//获取轮询规则
|
|
var ruleList []workgroup.PollingRules
|
|
// ruleList, _ := ruleCont.ContMap(map[string]interface{}{`type_id`: requestData.Id})
|
|
overall.CONSTANT_DB_HR.Where("`state` = 1 AND `type_id` = ?", requestData.Id).Order("`sort` ASC").Order("`id` ASC").Find(&ruleList)
|
|
for _, vr := range ruleList {
|
|
var teamRule TimeRuleSend
|
|
teamRule.Id = strconv.FormatInt(vr.Id, 10) //
|
|
teamRule.Sort = vr.Sort //排序
|
|
teamRule.Teamid = strconv.FormatInt(vr.Teamid, 10) //班组名称
|
|
teamRule.TeamName = vr.TeamName //班组名称
|
|
sendData.Rule = append(sendData.Rule, teamRule)
|
|
}
|
|
overallhandle.Result(0, sendData, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-12-17 10:51:12
|
|
@ 功能: 写入轮询源点
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiModer) SetOirginCont(c *gin.Context) {
|
|
var requestData SetOrigin
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
overallhandle.Result(100, err, c)
|
|
return
|
|
}
|
|
if requestData.OrgId == "" {
|
|
overallhandle.Result(101, err, c, "未知行政组织!")
|
|
return
|
|
}
|
|
if requestData.Rule == "" {
|
|
overallhandle.Result(101, err, c)
|
|
return
|
|
}
|
|
if requestData.ShiftTime == "" {
|
|
overallhandle.Result(101, err, c)
|
|
return
|
|
}
|
|
if requestData.StartTime == "" {
|
|
overallhandle.Result(101, err, c)
|
|
return
|
|
}
|
|
var manageDate overallhandle.DateTimeTotimes
|
|
manageDate.BaisStrToTime(requestData.StartTime)
|
|
// timeInt, timeErr := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", requestData.StartTime))
|
|
// if !timeErr {
|
|
// overallhandle.Result(1, err, c, "你提交的日期不符合规范!请改正后提交!")
|
|
// return
|
|
// }
|
|
var genesisCont workgroup.Genesis
|
|
// err = genesisCont.GetCont(map[string]interface{}{"`id`": requestData.Id})
|
|
err = genesisCont.GetCont(map[string]interface{}{"`orgId`": requestData.OrgId})
|
|
if err != nil {
|
|
genesisCont.TypeId, _ = strconv.ParseInt(requestData.SetIsm, 10, 64) //type:int64 comment:类型
|
|
genesisCont.PeriodId, _ = strconv.ParseInt(requestData.ShiftTime, 10, 64) //type:int64 comment:锚定工作段
|
|
genesisCont.Rules, _ = strconv.ParseInt(requestData.Rule, 10, 64) //type:int64 comment:锚定轮询规则起点
|
|
genesisCont.StartTime = manageDate.AllTime //type:int64 comment:锚定历史原点
|
|
genesisCont.Time = time.Now().Unix() //type:int64
|
|
genesisCont.OrgId, _ = strconv.ParseInt(requestData.OrgId, 10, 64)
|
|
err = overall.CONSTANT_DB_HR.Create(&genesisCont).Error
|
|
overall.CONSTANT_HRSERVER_DATABASE.Create(&genesisCont)
|
|
} else {
|
|
editCont := overallhandle.MapOut()
|
|
editCont["type_id"] = requestData.SetIsm
|
|
editCont["period_id"] = requestData.ShiftTime
|
|
editCont["rules"] = requestData.Rule
|
|
editCont["start_time"] = manageDate.AllTime
|
|
if genesisCont.OrgId == 0 {
|
|
editCont["orgId"] = requestData.OrgId
|
|
}
|
|
var genesisContEdit workgroup.Genesis
|
|
err = genesisContEdit.EiteCont(map[string]interface{}{"`id`": genesisCont.Id}, editCont)
|
|
overall.CONSTANT_HRSERVER_DATABASE.Model(&workgroup.Genesis{}).Where("`id` = ?", genesisCont.Id).Updates(editCont)
|
|
}
|
|
if err != nil {
|
|
overallhandle.Result(1, err, c, "设置失败!")
|
|
return
|
|
}
|
|
overallhandle.Result(0, genesisCont, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2022-12-17 14:48:07
|
|
@ 功能: 获取排班表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiModer) GetSchedule(c *gin.Context) {
|
|
var requestData Schedule
|
|
c.ShouldBindJSON(&requestData)
|
|
dayTime := time.Now().Unix()
|
|
if requestData.YearAndMonth != "" { //判断是否有搜索的时间。默认为当前系统时间
|
|
timeInt, timeIsTrue := overallhandle.DateToTimeStamp(fmt.Sprintf("%v-01 00:00:00", requestData.YearAndMonth))
|
|
if timeIsTrue {
|
|
dayTime = timeInt
|
|
}
|
|
}
|
|
if requestData.Page != 0 {
|
|
requestData.Page = 1
|
|
}
|
|
if requestData.PageSize != 0 {
|
|
requestData.PageSize = 10
|
|
}
|
|
yearInt := overallhandle.GetIntTime(dayTime, 1)
|
|
monthInt := overallhandle.GetIntTime(dayTime, 2)
|
|
dayInt := overallhandle.GetYearOfMonthHaveDay(yearInt, monthInt)
|
|
|
|
var sendData SendScheduleList
|
|
sendData.Title = fmt.Sprintf("%v年%v月排班表", yearInt, monthInt)
|
|
|
|
// //获取行政组织所有子类
|
|
|
|
//获取人员列表
|
|
var peopleList []models.PersonArchives
|
|
gormDb := overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`name`,`number`,`key`,`teamid`,`ruleid`").Where("`emp_type` BETWEEN ? AND ?", 1, 8)
|
|
if requestData.NameOrName != "" {
|
|
gormDb = gormDb.Where("`number` LIKE ? OR `name` LIKE ?", "%"+requestData.NameOrName+"%", "%"+requestData.NameOrName+"%")
|
|
}
|
|
if requestData.Organization != "" {
|
|
orgIdInt, _ := strconv.ParseInt(requestData.Organization, 10, 64)
|
|
var sunAry overallhandle.AllSunList[int64]
|
|
sunAry.GetAllSunOrg(orgIdInt)
|
|
sunAry.SunList = append(sunAry.SunList, orgIdInt)
|
|
gormDb = gormDb.Where("`admin_org` IN ?", sunAry.SunList)
|
|
}
|
|
var total int64
|
|
totalErr := gormDb.Count(&total).Error
|
|
if totalErr != nil {
|
|
total = 0
|
|
}
|
|
err := gormDb.Order("`company` ASC").Order("`maindeparment` ASC").Order("`admin_org` ASC").Order("`teamid` ASC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&peopleList).Error
|
|
if err != nil {
|
|
overallhandle.Result(105, err, c)
|
|
return
|
|
}
|
|
var tableHead []headtype
|
|
|
|
var tableHeadUser headtype
|
|
tableHeadUser.Name = "name"
|
|
tableHeadUser.Label = "姓名"
|
|
tableHead = append(tableHead, tableHeadUser)
|
|
|
|
userCont := overallhandle.MapOut()
|
|
userCont["name"] = "秦东"
|
|
for i := 1; i <= dayInt; i++ {
|
|
tableName := fmt.Sprintf("day%v", i)
|
|
var headLoop headtype
|
|
headLoop.Name = tableName
|
|
headLoop.Label = strconv.Itoa(i)
|
|
tableHead = append(tableHead, headLoop)
|
|
userCont[tableName] = i
|
|
}
|
|
|
|
sendData.HeadList = tableHead
|
|
sendData.DataList = append(sendData.DataList, userCont)
|
|
|
|
cont := overallhandle.MapOut()
|
|
na := fmt.Sprintf("%v%v", "name", 1)
|
|
cont[na] = "张三"
|
|
cont["yearInt"] = yearInt
|
|
cont["monthInt"] = monthInt
|
|
cont["dayInt"] = dayInt
|
|
cont["peopleList"] = peopleList
|
|
|
|
// overallhandle.Result(0, sendData, c)
|
|
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(peopleList)), cont, c)
|
|
}
|
|
|