|
|
|
|
package personnelapi
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"hr_server/models"
|
|
|
|
|
"hr_server/models/workgroup"
|
|
|
|
|
"hr_server/overall"
|
|
|
|
|
"hr_server/overall/overallhandle"
|
|
|
|
|
"strconv"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//用工关系转换
|
|
|
|
|
//1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职
|
|
|
|
|
|
|
|
|
|
//1:临时工 , 2:编外人员 ;3:实习&实习生;4:试用员工;5:待分配;6:待岗;7:临时调入;8:正式员工;9:长期病假;10:停薪留职;11:退休;12:辞职;13:辞退;14:离职
|
|
|
|
|
|
|
|
|
|
func EmptypeToInt(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "临时工":
|
|
|
|
|
return 1
|
|
|
|
|
case "编外人员":
|
|
|
|
|
return 2
|
|
|
|
|
case "实习":
|
|
|
|
|
return 3
|
|
|
|
|
case "实习生":
|
|
|
|
|
return 3
|
|
|
|
|
case "试用员工":
|
|
|
|
|
return 4
|
|
|
|
|
case "待分配":
|
|
|
|
|
return 5
|
|
|
|
|
case "待岗":
|
|
|
|
|
return 6
|
|
|
|
|
case "临时调入":
|
|
|
|
|
return 7
|
|
|
|
|
case "正式员工":
|
|
|
|
|
return 8
|
|
|
|
|
case "长期病假":
|
|
|
|
|
return 9
|
|
|
|
|
case "停薪留职":
|
|
|
|
|
return 10
|
|
|
|
|
case "退休":
|
|
|
|
|
return 11
|
|
|
|
|
case "辞职":
|
|
|
|
|
return 12
|
|
|
|
|
case "批准辞职":
|
|
|
|
|
return 12
|
|
|
|
|
case "辞退":
|
|
|
|
|
return 13
|
|
|
|
|
case "离职":
|
|
|
|
|
return 14
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 雇佣类型转换
|
|
|
|
|
// 雇佣类型(1:雇佣入职;2:再入职;3:返聘)
|
|
|
|
|
func hireTypeToInt(hir string) int {
|
|
|
|
|
switch hir {
|
|
|
|
|
case "雇佣入职":
|
|
|
|
|
return 1
|
|
|
|
|
case "再入职":
|
|
|
|
|
return 2
|
|
|
|
|
case "返聘":
|
|
|
|
|
return 3
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
婚姻状态
|
|
|
|
|
婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)
|
|
|
|
|
*/
|
|
|
|
|
func maritalstatusToInt(name string) int {
|
|
|
|
|
switch name {
|
|
|
|
|
case "未婚":
|
|
|
|
|
return 1
|
|
|
|
|
case "已婚":
|
|
|
|
|
return 2
|
|
|
|
|
case "丧偶":
|
|
|
|
|
return 3
|
|
|
|
|
case "离异":
|
|
|
|
|
return 4
|
|
|
|
|
case "离婚":
|
|
|
|
|
return 4
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
星座
|
|
|
|
|
(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
func consteToInt(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "白羊座":
|
|
|
|
|
return 1
|
|
|
|
|
case "金牛座":
|
|
|
|
|
return 2
|
|
|
|
|
case "双子座":
|
|
|
|
|
return 3
|
|
|
|
|
case "巨蟹座":
|
|
|
|
|
return 4
|
|
|
|
|
case "狮子座":
|
|
|
|
|
return 5
|
|
|
|
|
case "处女座":
|
|
|
|
|
return 6
|
|
|
|
|
case "天枰座":
|
|
|
|
|
return 7
|
|
|
|
|
case "天秤座":
|
|
|
|
|
return 7
|
|
|
|
|
case "天蝎座":
|
|
|
|
|
return 8
|
|
|
|
|
case "射手座":
|
|
|
|
|
return 9
|
|
|
|
|
case "摩羯座":
|
|
|
|
|
return 10
|
|
|
|
|
case "水瓶座":
|
|
|
|
|
return 11
|
|
|
|
|
case "双鱼座":
|
|
|
|
|
return 12
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
政治面貌
|
|
|
|
|
(1:群众; 2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
|
|
|
|
|
*/
|
|
|
|
|
func politiToInt(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "群众":
|
|
|
|
|
return 1
|
|
|
|
|
case "无党派":
|
|
|
|
|
return 2
|
|
|
|
|
case "台盟会员":
|
|
|
|
|
return 3
|
|
|
|
|
case "九三社员":
|
|
|
|
|
return 4
|
|
|
|
|
case "致公党员":
|
|
|
|
|
return 5
|
|
|
|
|
case "农工党员":
|
|
|
|
|
return 6
|
|
|
|
|
case "民进会员":
|
|
|
|
|
return 7
|
|
|
|
|
case "民建会员":
|
|
|
|
|
return 8
|
|
|
|
|
case "民盟盟员":
|
|
|
|
|
return 9
|
|
|
|
|
case "民革会员":
|
|
|
|
|
return 10
|
|
|
|
|
case "共青团员":
|
|
|
|
|
return 11
|
|
|
|
|
case "预备党员":
|
|
|
|
|
return 12
|
|
|
|
|
case "中共党员":
|
|
|
|
|
return 13
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
性别
|
|
|
|
|
(1:男性;2:女性;3:中性)
|
|
|
|
|
*/
|
|
|
|
|
func genderToInt(name string) int {
|
|
|
|
|
switch name {
|
|
|
|
|
case "男":
|
|
|
|
|
return 1
|
|
|
|
|
case "女":
|
|
|
|
|
return 2
|
|
|
|
|
case "中性":
|
|
|
|
|
return 3
|
|
|
|
|
case "男性":
|
|
|
|
|
return 1
|
|
|
|
|
case "女性":
|
|
|
|
|
return 2
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
健康状况
|
|
|
|
|
(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废)
|
|
|
|
|
*/
|
|
|
|
|
func healthToInt(name string) int {
|
|
|
|
|
switch name {
|
|
|
|
|
case "良好":
|
|
|
|
|
return 1
|
|
|
|
|
case "一般":
|
|
|
|
|
return 2
|
|
|
|
|
case "较弱":
|
|
|
|
|
return 3
|
|
|
|
|
case "有生理缺陷":
|
|
|
|
|
return 4
|
|
|
|
|
case "残废":
|
|
|
|
|
return 5
|
|
|
|
|
default:
|
|
|
|
|
return 2
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
健康状况
|
|
|
|
|
(1:主职;2:兼职)
|
|
|
|
|
*/
|
|
|
|
|
func assignTypeToInt(name string) int {
|
|
|
|
|
switch name {
|
|
|
|
|
case "主职":
|
|
|
|
|
return 1
|
|
|
|
|
default:
|
|
|
|
|
return 2
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
变动类型
|
|
|
|
|
(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;17、新入职;)
|
|
|
|
|
*/
|
|
|
|
|
func changeTypeToInt(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "预入职":
|
|
|
|
|
return 1
|
|
|
|
|
case "雇佣入职":
|
|
|
|
|
return 2
|
|
|
|
|
case "转正":
|
|
|
|
|
return 3
|
|
|
|
|
case "晋升":
|
|
|
|
|
return 4
|
|
|
|
|
case "升职":
|
|
|
|
|
return 4
|
|
|
|
|
case "降级":
|
|
|
|
|
return 5
|
|
|
|
|
case "降职":
|
|
|
|
|
return 5
|
|
|
|
|
case "职等调整":
|
|
|
|
|
return 6
|
|
|
|
|
case "调动调入":
|
|
|
|
|
return 7
|
|
|
|
|
case "跨公司调动调入":
|
|
|
|
|
return 8
|
|
|
|
|
case "借调":
|
|
|
|
|
return 9
|
|
|
|
|
case "平调":
|
|
|
|
|
return 10
|
|
|
|
|
case "兼职":
|
|
|
|
|
return 11
|
|
|
|
|
case "预离职":
|
|
|
|
|
return 12
|
|
|
|
|
case "离职":
|
|
|
|
|
return 13
|
|
|
|
|
case "批准辞职":
|
|
|
|
|
return 13
|
|
|
|
|
case "退休":
|
|
|
|
|
return 14
|
|
|
|
|
case "返聘":
|
|
|
|
|
return 15
|
|
|
|
|
case "员工初始化":
|
|
|
|
|
return 16
|
|
|
|
|
case "擅自离职":
|
|
|
|
|
return 17
|
|
|
|
|
case "即辞即走":
|
|
|
|
|
return 18
|
|
|
|
|
case "组织调整":
|
|
|
|
|
return 19
|
|
|
|
|
case "辞退":
|
|
|
|
|
return 20
|
|
|
|
|
case "跨公司借调调出":
|
|
|
|
|
return 21
|
|
|
|
|
case "跨公司借调调入":
|
|
|
|
|
return 22
|
|
|
|
|
case "培训期间离职":
|
|
|
|
|
return 23
|
|
|
|
|
case "合同到期":
|
|
|
|
|
return 24
|
|
|
|
|
case "实习结束":
|
|
|
|
|
return 25
|
|
|
|
|
case "新入职":
|
|
|
|
|
return 26
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
func changeTypeToStr(emp int) string {
|
|
|
|
|
switch emp {
|
|
|
|
|
case 1:
|
|
|
|
|
return "预入职"
|
|
|
|
|
case 2:
|
|
|
|
|
return "雇佣入职"
|
|
|
|
|
case 3:
|
|
|
|
|
return "转正"
|
|
|
|
|
case 4:
|
|
|
|
|
return "升职"
|
|
|
|
|
case 5:
|
|
|
|
|
return "降职"
|
|
|
|
|
case 6:
|
|
|
|
|
return "职等调整"
|
|
|
|
|
case 7:
|
|
|
|
|
return "调动调入"
|
|
|
|
|
case 8:
|
|
|
|
|
return "跨公司调动调入"
|
|
|
|
|
case 9:
|
|
|
|
|
return "借调"
|
|
|
|
|
case 10:
|
|
|
|
|
return "平调"
|
|
|
|
|
case 11:
|
|
|
|
|
return "兼职"
|
|
|
|
|
case 12:
|
|
|
|
|
return "预离职"
|
|
|
|
|
case 13:
|
|
|
|
|
return "离职"
|
|
|
|
|
case 14:
|
|
|
|
|
return "退休"
|
|
|
|
|
case 15:
|
|
|
|
|
return "返聘"
|
|
|
|
|
case 16:
|
|
|
|
|
return "员工初始化"
|
|
|
|
|
case 17:
|
|
|
|
|
return "擅自离职"
|
|
|
|
|
case 18:
|
|
|
|
|
return "即辞即走"
|
|
|
|
|
case 19:
|
|
|
|
|
return "组织调整"
|
|
|
|
|
case 20:
|
|
|
|
|
return "辞退"
|
|
|
|
|
case 21:
|
|
|
|
|
return "跨公司借调调出"
|
|
|
|
|
case 22:
|
|
|
|
|
return "跨公司借调调入"
|
|
|
|
|
case 23:
|
|
|
|
|
return "培训期间离职"
|
|
|
|
|
case 24:
|
|
|
|
|
return "合同到期"
|
|
|
|
|
case 25:
|
|
|
|
|
return "实习结束"
|
|
|
|
|
case 26:
|
|
|
|
|
return "新入职"
|
|
|
|
|
default:
|
|
|
|
|
return "预入职"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
学历
|
|
|
|
|
(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函授专科;7:大学专科;8:函授本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
func ducationToInt(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "初中及以下":
|
|
|
|
|
return 1
|
|
|
|
|
case "中专":
|
|
|
|
|
return 2
|
|
|
|
|
case "高中":
|
|
|
|
|
return 3
|
|
|
|
|
case "中技":
|
|
|
|
|
return 4
|
|
|
|
|
case "高技":
|
|
|
|
|
return 5
|
|
|
|
|
case "函授专科":
|
|
|
|
|
return 6
|
|
|
|
|
case "专科":
|
|
|
|
|
return 7
|
|
|
|
|
case "大专":
|
|
|
|
|
return 7
|
|
|
|
|
case "大学专科":
|
|
|
|
|
return 7
|
|
|
|
|
case "函授本科":
|
|
|
|
|
return 8
|
|
|
|
|
case "本科":
|
|
|
|
|
return 9
|
|
|
|
|
case "大学本科":
|
|
|
|
|
return 9
|
|
|
|
|
case "硕士研究生":
|
|
|
|
|
return 10
|
|
|
|
|
case "研究生":
|
|
|
|
|
return 10
|
|
|
|
|
case "博士研究生":
|
|
|
|
|
return 11
|
|
|
|
|
case "专家、教授":
|
|
|
|
|
return 12
|
|
|
|
|
default:
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 学位(0:无;1:学士;2:硕士;3:博士;4:工学学士;5:教育学学位)int
|
|
|
|
|
func hestacademicdegreeToInt(hir string) int {
|
|
|
|
|
switch hir {
|
|
|
|
|
case "学士":
|
|
|
|
|
return 1
|
|
|
|
|
case "硕士":
|
|
|
|
|
return 2
|
|
|
|
|
case "博士":
|
|
|
|
|
return 3
|
|
|
|
|
case "学士学位":
|
|
|
|
|
return 1
|
|
|
|
|
case "工学学士":
|
|
|
|
|
return 4
|
|
|
|
|
case "教育学学位":
|
|
|
|
|
return 5
|
|
|
|
|
default:
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func EmptypeToStr(emp int) string {
|
|
|
|
|
switch emp {
|
|
|
|
|
case 1:
|
|
|
|
|
return "临时工"
|
|
|
|
|
case 2:
|
|
|
|
|
return "编外人员"
|
|
|
|
|
case 3:
|
|
|
|
|
return "实习&实习生"
|
|
|
|
|
case 4:
|
|
|
|
|
return "试用员工"
|
|
|
|
|
case 5:
|
|
|
|
|
return "待分配"
|
|
|
|
|
case 6:
|
|
|
|
|
return "待岗"
|
|
|
|
|
case 7:
|
|
|
|
|
return "临时调入"
|
|
|
|
|
case 8:
|
|
|
|
|
return "正式员工"
|
|
|
|
|
case 9:
|
|
|
|
|
return "长期病假"
|
|
|
|
|
case 10:
|
|
|
|
|
return "停薪留职"
|
|
|
|
|
case 11:
|
|
|
|
|
return "退休"
|
|
|
|
|
case 12:
|
|
|
|
|
return "辞职"
|
|
|
|
|
case 13:
|
|
|
|
|
return "辞退"
|
|
|
|
|
case 14:
|
|
|
|
|
return "离职"
|
|
|
|
|
default:
|
|
|
|
|
return "临时工"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 雇佣类型(1:社会招聘;2:校园招聘;3:内部推荐)
|
|
|
|
|
func JoinJobChanel(hir string) int {
|
|
|
|
|
switch hir {
|
|
|
|
|
case "校园招聘":
|
|
|
|
|
return 2
|
|
|
|
|
case "内部推荐":
|
|
|
|
|
return 3
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 学历类型
|
|
|
|
|
func EducationTypeStr(level string) int {
|
|
|
|
|
switch level {
|
|
|
|
|
case "全日制统招学历":
|
|
|
|
|
return 1
|
|
|
|
|
case "成人高考学历":
|
|
|
|
|
return 2
|
|
|
|
|
case "自学考试学历":
|
|
|
|
|
return 3
|
|
|
|
|
case "开放大学学历":
|
|
|
|
|
return 4
|
|
|
|
|
case "网络教育学历":
|
|
|
|
|
return 5
|
|
|
|
|
case "函授学历":
|
|
|
|
|
return 6
|
|
|
|
|
case "双一流院校":
|
|
|
|
|
return 7
|
|
|
|
|
case "“985”工程院校":
|
|
|
|
|
return 9
|
|
|
|
|
case "“211”工程院校":
|
|
|
|
|
return 8
|
|
|
|
|
case "公办本科院校":
|
|
|
|
|
return 10
|
|
|
|
|
case "民办本科院校":
|
|
|
|
|
return 11
|
|
|
|
|
case "公办专科院校":
|
|
|
|
|
return 12
|
|
|
|
|
case "民办专科院校":
|
|
|
|
|
return 13
|
|
|
|
|
case "高职院校":
|
|
|
|
|
return 14
|
|
|
|
|
case "中职院校":
|
|
|
|
|
return 15
|
|
|
|
|
case "公立中学":
|
|
|
|
|
return 16
|
|
|
|
|
case "私立中学":
|
|
|
|
|
return 17
|
|
|
|
|
default:
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 职位变动类型
|
|
|
|
|
func PositionChangeTypeStr(level string) int {
|
|
|
|
|
switch level {
|
|
|
|
|
case "平调":
|
|
|
|
|
return 2
|
|
|
|
|
case "降职":
|
|
|
|
|
return 3
|
|
|
|
|
case "升职":
|
|
|
|
|
return 4
|
|
|
|
|
default:
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 奖惩级别
|
|
|
|
|
func RewPunLevelStr(level string) int {
|
|
|
|
|
switch level {
|
|
|
|
|
case "部门级":
|
|
|
|
|
return 1
|
|
|
|
|
case "公司级":
|
|
|
|
|
return 2
|
|
|
|
|
case "县级":
|
|
|
|
|
return 3
|
|
|
|
|
case "市级":
|
|
|
|
|
return 4
|
|
|
|
|
case "省级":
|
|
|
|
|
return 5
|
|
|
|
|
case "国家级":
|
|
|
|
|
return 6
|
|
|
|
|
default:
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
func RewPunLevelClassStr(emp string) int {
|
|
|
|
|
switch emp {
|
|
|
|
|
case "年终评优":
|
|
|
|
|
return 1
|
|
|
|
|
case "表扬":
|
|
|
|
|
return 2
|
|
|
|
|
case "嘉奖":
|
|
|
|
|
return 3
|
|
|
|
|
case "记功":
|
|
|
|
|
return 4
|
|
|
|
|
case "记大功":
|
|
|
|
|
return 5
|
|
|
|
|
case "特别奖励":
|
|
|
|
|
return 6
|
|
|
|
|
case "批评":
|
|
|
|
|
return 7
|
|
|
|
|
case "警告":
|
|
|
|
|
return 8
|
|
|
|
|
case "记过":
|
|
|
|
|
return 9
|
|
|
|
|
case "记大过":
|
|
|
|
|
return 10
|
|
|
|
|
case "降级":
|
|
|
|
|
return 11
|
|
|
|
|
case "留用察看":
|
|
|
|
|
return 12
|
|
|
|
|
case "开除":
|
|
|
|
|
return 13
|
|
|
|
|
default:
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
func SchoolTypeStr(level string) int {
|
|
|
|
|
var typeName int
|
|
|
|
|
switch level {
|
|
|
|
|
case "私立中学":
|
|
|
|
|
typeName = 1
|
|
|
|
|
case "公立中学":
|
|
|
|
|
typeName = 2
|
|
|
|
|
case "高职院校":
|
|
|
|
|
typeName = 3
|
|
|
|
|
case "民办专科院校":
|
|
|
|
|
typeName = 4
|
|
|
|
|
case "公办专科院校":
|
|
|
|
|
typeName = 5
|
|
|
|
|
case "民办本科院校":
|
|
|
|
|
typeName = 6
|
|
|
|
|
case "公办本科院校":
|
|
|
|
|
typeName = 7
|
|
|
|
|
case "”211“工程院校":
|
|
|
|
|
typeName = 8
|
|
|
|
|
case "“211“工程院校":
|
|
|
|
|
typeName = 8
|
|
|
|
|
case "”985“工程院校":
|
|
|
|
|
typeName = 9
|
|
|
|
|
case "“985”工程院校":
|
|
|
|
|
typeName = 9
|
|
|
|
|
case "双一流院校":
|
|
|
|
|
typeName = 10
|
|
|
|
|
default:
|
|
|
|
|
typeName = 0
|
|
|
|
|
}
|
|
|
|
|
return typeName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-01-16 16:26:39
|
|
|
|
|
@ 功能: 确定当前行政组织用哪一个轮询规则
|
|
|
|
|
*/
|
|
|
|
|
func CureeRunRules(orgId int64) (rules GenesInfo, cureeOrgId int64, err error) {
|
|
|
|
|
|
|
|
|
|
if orgId != 0 {
|
|
|
|
|
err = rules.GetCont(map[string]interface{}{"`orgId`": orgId})
|
|
|
|
|
if err != nil || rules.TypeId == 0 {
|
|
|
|
|
var supaerOrgId models.AdministrativeOrganization
|
|
|
|
|
supaerOrgId.GetCont(map[string]interface{}{"`id`": orgId}, "`superior`")
|
|
|
|
|
if supaerOrgId.Superior != 0 {
|
|
|
|
|
return CureeRunRules(supaerOrgId.Superior)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
cureeOrgId = orgId
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
err = errors.New("没有相关设定")
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-01-30 13:38:44
|
|
|
|
|
@ 功能: 计算行政组织某一天执行得班组
|
|
|
|
|
@ 参数
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
@ 返回值
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
@ 方法原型
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
*/
|
|
|
|
|
func (g *GenesInfo) CountOrgTeamsIsDay(dats string) (teamIsDay []workgroup.TeamsRules, err error) {
|
|
|
|
|
if g.TypeId != 66813772706107392 {
|
|
|
|
|
teamAry, _ := g.GainChangBaiTeams(dats)
|
|
|
|
|
if len(teamAry) > 0 {
|
|
|
|
|
teamIsDay = append(teamIsDay, teamAry...)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//获取源点起始工作时间段
|
|
|
|
|
g.BegainTime = overallhandle.UnixTimeToDay(g.StartTime, 14)
|
|
|
|
|
g.TypeIdStr = strconv.FormatInt(g.TypeId, 10)
|
|
|
|
|
//获取倒班规则
|
|
|
|
|
var paiBanType workgroup.WorkTimeType
|
|
|
|
|
paiBanType.GetCont(map[string]interface{}{"`id`": g.TypeId}, " `name`")
|
|
|
|
|
g.TypeName = paiBanType.Name
|
|
|
|
|
//作息时间
|
|
|
|
|
var zuoXiTime []workgroup.WorkingTimePeriod
|
|
|
|
|
overall.CONSTANT_DB_HR.Where("`state` = 1 AND `type_id` = ?", g.TypeId).Order("`sort` ASC").Find(&zuoXiTime)
|
|
|
|
|
//轮询规则
|
|
|
|
|
|
|
|
|
|
var lunXunShiXu []workgroup.TeamsRules
|
|
|
|
|
overall.CONSTANT_DB_HR.Where("`ruleTypeId` = ?", g.TypeId).Find(&lunXunShiXu)
|
|
|
|
|
if len(zuoXiTime) < 1 || len(lunXunShiXu) < 1 {
|
|
|
|
|
return teamIsDay, errors.New("此行政组织还未设定班组轮询规则! *struct类型,却传入*")
|
|
|
|
|
}
|
|
|
|
|
var canyuTeams []int64
|
|
|
|
|
cycle := 1
|
|
|
|
|
for _, v := range lunXunShiXu {
|
|
|
|
|
cycle = v.Cycle
|
|
|
|
|
if !overallhandle.IsInTrue(v.TeamsId, canyuTeams) {
|
|
|
|
|
canyuTeams = append(canyuTeams, v.TeamsId)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
teamsMap := make(map[int64][]workgroup.TeamsRules)
|
|
|
|
|
for _, v := range canyuTeams {
|
|
|
|
|
var teamRuleAry []workgroup.TeamsRules
|
|
|
|
|
for _, mv := range lunXunShiXu {
|
|
|
|
|
if v == mv.TeamsId {
|
|
|
|
|
teamRuleAry = append(teamRuleAry, mv)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
teamsMap[v] = teamRuleAry
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var wvTimeAll overallhandle.DateTimeTotimes
|
|
|
|
|
wvTimeAll.BaisStrToTime(dats)
|
|
|
|
|
|
|
|
|
|
fmt.Printf("daysApart------------->:%v\n%v\n%v\n", dats, wvTimeAll.AllTime, wvTimeAll)
|
|
|
|
|
|
|
|
|
|
var qiyuanTime overallhandle.DateTimeTotimes
|
|
|
|
|
qiyuanTime.BaisStrToTime(g.BegainTime)
|
|
|
|
|
|
|
|
|
|
// yearIntQy, _ := strconv.Atoi(qiyuanTime.Years)
|
|
|
|
|
// monthIntQy, _ := strconv.Atoi(qiyuanTime.Months)
|
|
|
|
|
// daysIntQy, _ := strconv.Atoi(qiyuanTime.Days)
|
|
|
|
|
// zhouJiQiyuan := overallhandle.ZellerFunction2Week(yearIntQy, monthIntQy, daysIntQy)
|
|
|
|
|
|
|
|
|
|
switch cycle {
|
|
|
|
|
case 2: //按周
|
|
|
|
|
yearInt, _ := strconv.Atoi(wvTimeAll.Years)
|
|
|
|
|
monthInt, _ := strconv.Atoi(wvTimeAll.Months)
|
|
|
|
|
daysInt, _ := strconv.Atoi(wvTimeAll.Days)
|
|
|
|
|
zhouJi := overallhandle.ZellerFunction2Week(yearInt, monthInt, daysInt)
|
|
|
|
|
key := 0
|
|
|
|
|
if zhouJi-1 > 0 {
|
|
|
|
|
if zhouJi-1 > len(lunXunShiXu) {
|
|
|
|
|
key = len(lunXunShiXu) - 1
|
|
|
|
|
} else {
|
|
|
|
|
key = zhouJi - 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
key = 0
|
|
|
|
|
}
|
|
|
|
|
banZuAry := lunXunShiXu[key]
|
|
|
|
|
teamIsDay = append(teamIsDay, banZuAry)
|
|
|
|
|
default:
|
|
|
|
|
daysApart := ((wvTimeAll.AllTime - qiyuanTime.AllTime) / 86400) + 1
|
|
|
|
|
// jsontime, _ := json.Marshal(g)
|
|
|
|
|
fmt.Printf("daysApart:%v\n%v\n%v\n%v\n", dats, daysApart, wvTimeAll.AllTime, qiyuanTime.AllTime)
|
|
|
|
|
if daysApart >= 0 {
|
|
|
|
|
for i, v := range teamsMap {
|
|
|
|
|
ruleLen := len(v)
|
|
|
|
|
var ruleStep int64 = 1
|
|
|
|
|
if daysApart > int64(ruleLen) {
|
|
|
|
|
|
|
|
|
|
ruleStep = int64(daysApart) % int64(ruleLen)
|
|
|
|
|
if ruleStep == 0 {
|
|
|
|
|
ruleStep = int64(ruleLen)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ruleStep = int64(daysApart)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, lv := range lunXunShiXu {
|
|
|
|
|
|
|
|
|
|
if lv.CycleSort == ruleStep && lv.TeamsId == i && lv.CycleWorkTime != 0 {
|
|
|
|
|
// cycleInfo = v
|
|
|
|
|
lvJson, _ := json.Marshal(lv)
|
|
|
|
|
fmt.Printf("\n\nlv---------i:%v----ruleStep:%v-------->%v\n\n", i, ruleStep, string(lvJson))
|
|
|
|
|
teamIsDay = append(teamIsDay, lv)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// daysApart, _ := overallhandle.CalculateYearDifference(g.StartTime, wvTimeAll.AllTime, 1)
|
|
|
|
|
// sjc := ((wvTimeAll.AllTime - g.StartTime) / 86400) + 1
|
|
|
|
|
// fmt.Printf("\n\n\n\n相差几天%v------------------->%v\n\n\n\n", daysApart, sjc)
|
|
|
|
|
// xiangcha := (7 - zhouJiQiyuan)
|
|
|
|
|
// daysApart = daysApart + float64(xiangcha)
|
|
|
|
|
// fmt.Printf("\n\n\n\n相差几天%v------------------->%v----------------->%v------------------->%v\n\n\n\n", daysApart, sjc, xiangcha, daysApart)
|
|
|
|
|
// daysApartInt64, _ := strconv.ParseInt(strconv.FormatFloat(daysApart, 'f', 0, 64), 10, 64)
|
|
|
|
|
// if daysApart >= 0 {
|
|
|
|
|
// for _, v := range teamsMap {
|
|
|
|
|
// ruleLen := len(v)
|
|
|
|
|
// var ruleStep int64 = 1
|
|
|
|
|
// if sjc > int64(ruleLen) {
|
|
|
|
|
|
|
|
|
|
// ruleStep = int64(sjc) % int64(ruleLen)
|
|
|
|
|
// if ruleStep == 0 {
|
|
|
|
|
// ruleStep = int64(ruleLen)
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// ruleStep = int64(sjc)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// guoDuVal := daysApartInt64 % int64(ruleLen)
|
|
|
|
|
// // dingwei, _ := strconv.ParseInt(strconv.FormatFloat(math.Ceil(guoDuVal), 'f', 0, 64), 10, 64)
|
|
|
|
|
// // fmt.Printf("\n\n\n\n相差几天------------>%v\n\n\n\n", dingwei)
|
|
|
|
|
// val, _ := json.Marshal(v)
|
|
|
|
|
|
|
|
|
|
// sort.Slice(v, func(i, j int) bool {
|
|
|
|
|
// return v[i].CycleSort < v[j].CycleSort
|
|
|
|
|
// })
|
|
|
|
|
// fmt.Printf("\n\n\n\n相差几天-----guoDuVal------->%v\n\n------->%v\n\n------->%v\n\n", ruleStep, guoDuVal, string(val))
|
|
|
|
|
// // keyVal := dingwei + 1
|
|
|
|
|
// keyVal := guoDuVal
|
|
|
|
|
// if keyVal < 0 {
|
|
|
|
|
// keyVal = 0
|
|
|
|
|
// }
|
|
|
|
|
// // if v.CycleSort == ruleStep{
|
|
|
|
|
|
|
|
|
|
// // }
|
|
|
|
|
// teamIsDay = append(teamIsDay, v[guoDuVal])
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// daysApartInt64 = -daysApartInt64
|
|
|
|
|
// for _, v := range teamsMap {
|
|
|
|
|
// ruleLen := len(v)
|
|
|
|
|
// if ruleLen <= 0 {
|
|
|
|
|
// ruleLen = 1
|
|
|
|
|
// }
|
|
|
|
|
// guoDuVal := daysApartInt64 / int64(ruleLen)
|
|
|
|
|
// // dingwei, _ := strconv.ParseInt(strconv.FormatFloat(math.Ceil(guoDuVal), 'f', 0, 64), 10, 64)
|
|
|
|
|
// sort.Slice(v, func(i, j int) bool {
|
|
|
|
|
// return v[i].CycleSort > v[j].CycleSort
|
|
|
|
|
// })
|
|
|
|
|
// teamIsDay = append(teamIsDay, v[guoDuVal])
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
return teamIsDay, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-04-03 11:20:37
|
|
|
|
|
@ 功能: 获取某天长白班人员
|
|
|
|
|
*/
|
|
|
|
|
func (g *GenesInfo) GainChangBaiTeams(dats string) (teamIsDay []workgroup.TeamsRules, err error) {
|
|
|
|
|
var zuoXiCbTime []workgroup.WorkingTimePeriod
|
|
|
|
|
overall.CONSTANT_DB_HR.Where("`state` = 1 AND `type_id` = 66813772706107392").Order("`sort` ASC").Find(&zuoXiCbTime)
|
|
|
|
|
//长白轮询规则
|
|
|
|
|
var lunXunShiXu []workgroup.TeamsRules
|
|
|
|
|
overall.CONSTANT_DB_HR.Where("`ruleTypeId` = 66813772706107392").Find(&lunXunShiXu)
|
|
|
|
|
var wvTimeAll overallhandle.DateTimeTotimes
|
|
|
|
|
wvTimeAll.BaisStrToTime(dats)
|
|
|
|
|
yearInt, _ := strconv.Atoi(wvTimeAll.Years)
|
|
|
|
|
monthInt, _ := strconv.Atoi(wvTimeAll.Months)
|
|
|
|
|
daysInt, _ := strconv.Atoi(wvTimeAll.Days)
|
|
|
|
|
zhouJi := overallhandle.ZellerFunction2Week(yearInt, monthInt, daysInt)
|
|
|
|
|
key := 0
|
|
|
|
|
if zhouJi-1 > 0 {
|
|
|
|
|
if zhouJi-1 > len(lunXunShiXu) {
|
|
|
|
|
key = len(lunXunShiXu) - 1
|
|
|
|
|
} else {
|
|
|
|
|
key = zhouJi - 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
key = 0
|
|
|
|
|
}
|
|
|
|
|
banZuAry := lunXunShiXu[key]
|
|
|
|
|
teamIsDay = append(teamIsDay, banZuAry)
|
|
|
|
|
return
|
|
|
|
|
}
|