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