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 _ , 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
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 : 0 8
@ 功能 : 写入工作时段
@ 参数
# 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 0 9 : 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 0 8 : 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 0 9 : 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 _ , 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 [ "`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 . 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
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 0 9 : 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 . Id == "" {
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
}
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 { } { "`type_id`" : requestData . Id } )
if err != nil {
genesisCont . TypeId , _ = strconv . ParseInt ( requestData . Id , 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 = timeInt //type:int64 comment:锚定历史原点
genesisCont . Time = time . Now ( ) . Unix ( ) //type:int64
err = overall . CONSTANT_DB_HR . Create ( & genesisCont ) . Error
} else {
editCont := overallhandle . MapOut ( )
editCont [ "type_id" ] = requestData . Id
editCont [ "period_id" ] = requestData . ShiftTime
editCont [ "rules" ] = requestData . Rule
editCont [ "start_time" ] = timeInt
err = genesisCont . EiteCont ( map [ string ] interface { } { "`id`" : genesisCont . Id } , editCont )
}
if err != nil {
overallhandle . Result ( 1 , err , c , "设置失败!" )
return
}
overallhandle . Result ( 0 , err , 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 )
}