Browse Source

1.0版本完毕

v1.1_dev
超级管理员 3 years ago
parent
commit
feed1945ae
  1. 5
      api/empower/authorize/empower.go
  2. 184
      api/version1/administrativeorganization/team.go
  3. 6
      api/version1/administrativeorganization/type.go
  4. 281
      api/version1/personnelapi/controll.go
  5. 602
      api/version1/personnelapi/kingdeenew.go
  6. 82
      api/version1/personnelapi/staff.go
  7. 430
      api/version1/personnelapi/staffarchives.go
  8. 82
      api/version1/personnelapi/type.go
  9. 113
      api/version1/personnelapi/types.go
  10. 8
      apirouter/organization/organization_group.go
  11. 23
      apirouter/personnel/people.go
  12. 12
      identification/authentication.go
  13. 12
      log/202206/20220629.log
  14. 3
      log/202206/20220630.log
  15. 12
      log/202207/20220701.log
  16. 15
      log/202207/20220702.log
  17. 3
      log/202207/20220703.log
  18. 4
      models/duties_class_leve.go
  19. 4
      models/family_members.go
  20. 7
      models/inside_work_history.go
  21. 39
      models/inside_work_view.go
  22. 36
      models/kingdee_log.go
  23. 1
      models/man_cont.go
  24. 1
      models/org_cont_type.go
  25. 6
      models/personarchives.go
  26. 5
      models/personnel_content.go
  27. 5
      models/personnel_education.go
  28. 36
      models/teamgroup.go
  29. 146
      overall/overallhandle/overall_handle.go
  30. 247
      参数对照与问题说明.md

5
api/empower/authorize/empower.go

@ -54,6 +54,8 @@ func (e *EmpowerApi) GainToken(c *gin.Context) {
ContentTypeMd5.AppKey = empowerUser.VerificationCode
}
fmt.Printf("ContentTypeMd5Str ----->%v\n", ContentTypeMd5)
ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm()
//Origin
var OriginMd5 overallhandle.Md5Encryption
@ -89,13 +91,14 @@ func (e *EmpowerApi) GainToken(c *gin.Context) {
clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
// fmt.Printf("redisKey---->%v-%v-%v-%v-%v-%v\n", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
fmt.Printf("redisKey---->ContentTypeMd5Str:%v-originMd5Str:%v-userAgentMd5Str:%v-numberMd5:%v-userKeyMd5Str:%v-passwordMd5Str:%v\n", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
//token 加密
var tokenMd5 overallhandle.Md5Encryption
tokenMd5.Md5EncryptionInit(clearCodeToken)
if empowerUser.VerificationCode != "" {
tokenMd5.AppKey = empowerUser.VerificationCode
}
fmt.Printf("tokenMd5Appk ----->%v\n", tokenMd5)
tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm()
//设定redis Key名称

184
api/version1/administrativeorganization/team.go

@ -0,0 +1,184 @@
package administrativeorganization
import (
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"time"
"github.com/gin-gonic/gin"
)
//获取班组内容
func (o *OrganizationApi) GetTeamCont(c *gin.Context) {
var requestData overallhandle.GetId
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, requestData, c)
return
}
if requestData.IdStr == "" {
overallhandle.Result(101, requestData, c)
return
}
var getTeamCont models.TeamGroup
getErr := getTeamCont.GetCont(map[string]interface{}{"`id`": requestData.IdStr})
if getErr != nil {
overallhandle.Result(105, getErr, c)
return
}
overallhandle.Result(0, getTeamCont, c)
}
//添加班组
func (o *OrganizationApi) AddTeamCont(c *gin.Context) {
var requestData NameVal
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, requestData, c)
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData, c)
return
}
var teamCont models.TeamGroup
errTeam := teamCont.GetCont(map[string]interface{}{"`name`": requestData.Name})
if errTeam == nil {
overallhandle.Result(103, teamCont, c)
return
}
var saveData models.TeamGroup
saveData.Name = requestData.Name
saveData.State = 1
saveData.Time = time.Now().Unix()
saveErr := overall.CONSTANT_DB_HR.Create(&saveData).Error
if saveErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(104, saveData, c)
}
}
//编辑班组
func (o *OrganizationApi) EiteTeamCont(c *gin.Context) {
var requestData eidtTeamCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, requestData, c)
return
}
if requestData.Id == "" {
overallhandle.Result(101, requestData, c)
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData, c)
return
}
var getTeamCont models.TeamGroup
getErr := getTeamCont.GetCont(map[string]interface{}{"`id`": requestData.Id})
if getErr != nil {
overallhandle.Result(105, getErr, c)
return
}
if getTeamCont.Name != requestData.Name {
var teamCont models.TeamGroup
errTeam := teamCont.GetCont(map[string]interface{}{"`name`": requestData.Name})
if errTeam == nil {
overallhandle.Result(103, teamCont, c)
return
}
eidtCont := overallhandle.MapOut()
eidtCont["name"] = requestData.Name
eidtCont["time"] = time.Now().Unix()
eidtErr := getTeamCont.EiteTeamGroupCont(map[string]interface{}{"`id`": requestData.Id}, eidtCont)
if eidtErr == nil {
overallhandle.Result(0, eidtCont, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
} else {
overallhandle.Result(0, getTeamCont, c)
}
}
//编辑状态与删除班组
func (o *OrganizationApi) EidtDelTeamCont(c *gin.Context) {
var requestData EiteJobStateDel
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(100, requestData, c)
return
}
if requestData.IdStr == "" {
overallhandle.Result(101, requestData, c)
return
}
if requestData.State == 0 {
requestData.State = 1
}
if requestData.IsTrue == 0 {
requestData.IsTrue = 2
}
var getTeamCont models.TeamGroup
getErr := getTeamCont.GetCont(map[string]interface{}{"`id`": requestData.IdStr})
if getErr != nil {
overallhandle.Result(105, getErr, c)
return
}
whereAry := overallhandle.MapOut()
whereAry["id"] = requestData.IdStr
saveData := overallhandle.MapOut()
saveData["time"] = time.Now().Unix()
saveData["state"] = requestData.State
if requestData.State != 3 {
eiteErr := getTeamCont.EiteTeamGroupCont(whereAry, saveData)
if eiteErr != nil {
overallhandle.Result(106, eiteErr, c)
} else {
overallhandle.Result(0, saveData, c)
}
} else {
if requestData.IsTrue != 1 {
//软删除
eiteErr := getTeamCont.EiteTeamGroupCont(whereAry, saveData)
if eiteErr != nil {
overallhandle.Result(106, eiteErr, c)
} else {
overallhandle.Result(0, saveData, c)
}
} else {
//硬删除
delErr := overall.CONSTANT_DB_HR.Where(whereAry).Delete(&getTeamCont)
if delErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(108, delErr, c)
}
}
}
}
//班组列表
func (o *OrganizationApi) TeamContList(c *gin.Context) {
var requestData JobClassPageSelect
c.ShouldBindJSON(&requestData)
gormDb := overall.CONSTANT_DB_HR.Model(&models.TeamGroup{}).Where("`state` = 1")
if requestData.Name != "" {
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData.Name+"%")
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
var teamList []models.TeamGroup
err := gormDb.Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&teamList).Error
if err != nil {
overallhandle.Result(105, err, c)
} else {
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(teamList)), teamList, c)
}
}

6
api/version1/administrativeorganization/type.go

@ -195,3 +195,9 @@ type outJobClassList struct {
Name string `json:"name"`
State int `json:"state"`
}
//修改班组
type eidtTeamCont struct {
Id string `json:"id"`
Name string `json:"name"`
}

281
api/version1/personnelapi/controll.go

@ -0,0 +1,281 @@
package personnelapi
//用工关系转换
//1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职
func emptypeToInt(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
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
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 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员工初始化
*/
func changeTypeToInt(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
case "退休":
return 14
case "返聘":
return 15
case "员工初始化":
return 16
default:
return 1
}
}
/*
学历
(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 8
case "大学本科":
return 9
case "硕士研究生":
return 10
case "博士研究生":
return 11
case "专家、教授":
return 12
default:
return 1
}
}
//学位(0:无;1:学士;2:硕士;3:博士)int
func hestacademicdegreeToInt(hir string) int {
switch hir {
case "学士":
return 1
case "硕士":
return 2
case "博士":
return 3
default:
return 0
}
}

602
api/version1/personnelapi/kingdeenew.go

@ -1,6 +1,7 @@
package personnelapi
import (
"encoding/json"
"fmt"
"hr_server/middleware/snowflake"
"hr_server/models"
@ -15,12 +16,18 @@ import (
//金蝶人员信息对接
func (s *StaffApi) NewKingdee(c *gin.Context) {
var requestData addKingdeePersonnel
var requestData addKingdeePersonneles
c.ShouldBindJSON(&requestData)
if requestData.Number == "" {
overallhandle.Result(1, requestData.Number, c, "工号不能为空!")
return
}
var saveKingDee models.KingdeeLog
saveKingDee.Number = requestData.Number
requesJson, _ := json.Marshal(requestData)
saveKingDee.Cont = string(requesJson)
saveKingDee.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&saveKingDee)
var manContent models.PersonArchives
manErr := manContent.GetCont(map[string]interface{}{"`number`": requestData.Number})
if manErr == nil {
@ -40,7 +47,8 @@ func (s *StaffApi) NewKingdee(c *gin.Context) {
}
//编辑员工
func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePersonnel) error {
func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePersonneles) error {
fmt.Printf("编辑")
eidtManCont := overallhandle.MapOut()
if manCont.Name != "" && manCont.Name != perArcInfo.Name {
eidtManCont["`name`"] = manCont.Name
@ -48,11 +56,29 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
if manCont.Icon != "" && manCont.Icon != perArcInfo.Icon {
eidtManCont["`icon`"] = manCont.Icon
}
if manCont.HireType != 0 && manCont.HireType != perArcInfo.HireClass {
eidtManCont["`hire_class`"] = manCont.HireType
if manCont.HireType != "" {
hireTypes, hireTypesErr := overallhandle.StringToInt(manCont.HireType)
if hireTypesErr != nil {
hireTypes = 1
}
if hireTypes != perArcInfo.HireClass {
eidtManCont["`hire_class`"] = hireTypes
}
}
if manCont.EmpType != 0 && manCont.EmpType != perArcInfo.EmpType {
eidtManCont["`emp_type`"] = manCont.EmpType
// fmt.Printf("manCont.EmpType-------------------->%v\n", manCont.EmpType)
if manCont.EmpType != "" {
// fmt.Printf("manCont.EmpType---------3----------->%v\n", manCont.EmpType)
// empType, empTypeErr := overallhandle.StringToInt(manCont.EmpType)
// if empTypeErr != nil {
// empType = 1
// }
empType := emptypeToInt(manCont.EmpType)
// fmt.Printf("manCont.EmpType------------1-------->%v\n", empType)
if empType != perArcInfo.EmpType {
eidtManCont["`emp_type`"] = empType
}
}
//人员变更记录
var manChangeRecord models.PersonnelChangeRecord
@ -74,11 +100,27 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
var orgMainDepart models.AdministrativeOrganization
orgErr := orgMainDepart.GetCont(map[string]interface{}{"kingdeeid": manCont.MainDepartment}, "`id`")
if orgErr == nil {
if orgMainDepart.Id != perArcInfo.Company {
eidtManCont["`maindeparment`"] = orgMainDepart.Id
_, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(orgMainDepart.Id)
// if manMainCont.Company == 0 {
// manMainCont.Company = companyId
// }
// manMainCont.MainDeparment = departmentId
// manMainCont.SunMainDeparment = sunDepartId
// manMainCont.AdminOrg = orgMainDepart.Id
if departmentId != perArcInfo.MainDeparment {
eidtManCont["`company`"] = companyId
eidtManCont["`maindeparment`"] = departmentId
eidtManCont["`sun_main_deparment`"] = sunDepartId
eidtManCont["`admin_org`"] = orgMainDepart.Id
changeRecordTrue = true
}
manChangeRecord.MainDepartment = orgMainDepart.Id
manChangeRecord.Company = companyId
manChangeRecord.MainDepartment = departmentId
// manChangeRecord.SunMainDeparment = sunDepartId
manChangeRecord.Adminorg = orgMainDepart.Id
}
}
//部门
@ -112,17 +154,17 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
}
//行政组织
if manCont.AdminOrg != "" {
var orgMainDepartAdmin models.AdministrativeOrganization
orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
if orgErr == nil {
if orgMainDepartAdmin.Id != perArcInfo.AdminOrg {
eidtManCont["`admin_org`"] = orgMainDepartAdmin.Id
changeRecordTrue = true
}
manChangeRecord.Adminorg = orgMainDepartAdmin.Id
}
}
// if manCont.AdminOrg != "" {
// var orgMainDepartAdmin models.AdministrativeOrganization
// orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
// if orgErr == nil {
// if orgMainDepartAdmin.Id != perArcInfo.AdminOrg {
// eidtManCont["`admin_org`"] = orgMainDepartAdmin.Id
// changeRecordTrue = true
// }
// manChangeRecord.Adminorg = orgMainDepartAdmin.Id
// }
// }
//职位
if manCont.Position != "" {
var positionCont models.Position
@ -154,14 +196,15 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
manChangeRecord.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
if manCont.PositionGrade != perArcInfo.JobLeve {
eidtManCont["`job_leve`"] = manCont.PositionGrade
if manCont.PositionGrade != "" {
positionGrade, _ := overallhandle.StringToInt64(manCont.PositionGrade)
if positionGrade != perArcInfo.JobLeve {
eidtManCont["`job_leve`"] = positionGrade
}
manChangeRecord.JobLevel = manCont.PositionGrade
manChangeRecord.JobLevel = positionGrade
changeRecordTrue = true
}
fmt.Printf("第一学历--->%v--->%v\n", changeRecordTrue, manChangeRecord)
// fmt.Printf("第一学历--->%v--->%v\n", changeRecordTrue, manChangeRecord)
if len(eidtManCont) > 0 {
var manMainCont models.PersonArchives
eidtErrMain := manMainCont.EiteCont(map[string]interface{}{"`id`": perArcInfo.Id}, eidtManCont)
@ -171,7 +214,11 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
if changeRecordTrue == true {
//写入变动记录
manChangeRecord.Type = manCont.HireType
hireTypesbd, hireTypesbdErr := overallhandle.StringToInt(manCont.HireType)
if hireTypesbdErr != nil {
hireTypesbd = 1
}
manChangeRecord.Type = hireTypesbd
manChangeRecord.Number = perArcInfo.Number
manChangeRecord.Time = time.Now().Unix()
manChangeRecord.Key = perArcInfo.Key
@ -179,34 +226,35 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
// jsonCont, _ := json.Marshal(manChangeRecord)
// fmt.Printf("第二学历--->%v--->%v\n", rybdErr, string(jsonCont))
}
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryDataNew(perArcInfo.Key, manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPersonNew(perArcInfo.Key, manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembersNew(perArcInfo.Key, manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdeeNew(perArcInfo.Key, manCont)
//编辑工作履历
synPro.Add(1)
go editWorkHistoryMan(perArcInfo.Key, manCont.Number, manCont.WorkHistoryList)
//编辑集团内工作履历
synPro.Add(1)
go editInsideWorkHistoryMan(perArcInfo.Key, manCont.InsideWorkHistory)
synPro.Wait()
}
}
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryDataNew(perArcInfo.Key, manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPersonNew(perArcInfo.Key, manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembersNew(perArcInfo.Key, manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdeeNew(perArcInfo.Key, manCont)
//编辑工作履历
synPro.Add(1)
go editWorkHistoryMan(perArcInfo.Key, manCont.Number, manCont.WorkHistoryList)
//编辑集团内工作履历
synPro.Add(1)
go editInsideWorkHistoryMan(perArcInfo.Key, manCont.InsideWorkHistory)
synPro.Wait()
return nil
}
//新增员工
func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel) error {
func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonneles) error {
// fmt.Printf("添加")
var manKeyNum int64 = 0
node, nodeErr := snowflake.NewWorker(1)
if nodeErr == nil {
@ -222,8 +270,22 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
manMainCont.Number = manCont.Number
manMainCont.Name = manCont.Name
manMainCont.Icon = manCont.Icon
manMainCont.HireClass = manCont.HireType
manMainCont.EmpType = manCont.EmpType
// hireTypesbd, hireTypesbdErr := overallhandle.StringToInt(manCont.HireType)
// if hireTypesbdErr != nil {
// hireTypesbd = 1
// }
// manMainCont.HireClass = hireTypesbd
manMainCont.HireClass = hireTypeToInt(manCont.HireType)
manMainCont.HireClassName = manCont.HireType
// empType, empTypeErr := overallhandle.StringToInt(manCont.EmpType)
// if empTypeErr != nil {
// empType = 1
// }
// manMainCont.EmpType = empType
manMainCont.EmpType = emptypeToInt(manCont.EmpType)
manMainCont.EmpTypeName = manCont.EmpType
timeTady := time.Now().Unix()
manMainCont.Time = timeTady
manMainCont.EiteTime = timeTady
@ -240,7 +302,15 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
var orgMainDepart models.AdministrativeOrganization
orgErr := orgMainDepart.GetCont(map[string]interface{}{"kingdeeid": manCont.MainDepartment}, "`id`")
if orgErr == nil {
manMainCont.MainDeparment = orgMainDepart.Id
_, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(orgMainDepart.Id)
if manMainCont.Company == 0 {
manMainCont.Company = companyId
}
manMainCont.MainDeparment = departmentId
manMainCont.SunMainDeparment = sunDepartId
manMainCont.AdminOrg = orgMainDepart.Id
}
}
if len(manCont.Department) > 0 {
@ -263,13 +333,13 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
departIdStr := strings.Join(departId, ",")
manMainCont.Deparment = departIdStr
}
if manCont.AdminOrg != "" {
var orgMainDepartAdmin models.AdministrativeOrganization
orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
if orgErr == nil {
manMainCont.AdminOrg = orgMainDepartAdmin.Id
}
}
// if manCont.AdminOrg != "" {
// var orgMainDepartAdmin models.AdministrativeOrganization
// orgErr := orgMainDepartAdmin.GetCont(map[string]interface{}{"kingdeeid": manCont.AdminOrg}, "`id`")
// if orgErr == nil {
// manMainCont.AdminOrg = orgMainDepartAdmin.Id
// }
// }
//职位
if manCont.Position != "" {
@ -277,19 +347,30 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
positErr := positionCont.GetCont(map[string]interface{}{`kingdeeid`: manCont.Position}, "`id`")
if positErr == nil {
manMainCont.Position = positionCont.Id
var postDutiewJobInfo models.PostDutiesJob
posiDutJobtErr := postDutiewJobInfo.GetCont(map[string]interface{}{`id`: positionCont.Id}, "`duties`", "`job_type`")
if posiDutJobtErr == nil {
manMainCont.JobId = postDutiewJobInfo.Duties
manMainCont.JobClass = postDutiewJobInfo.JobType
}
}
}
//职务
// fmt.Printf("manCont.JobName----------->-----%v\n", manCont.JobName)
if manCont.JobName != "" {
var dutiesCont models.DutiesClassLeve
dutiesErr := dutiesCont.GetCont(map[string]interface{}{"`d_king`": manCont.JobName}, "d_id", "c_id")
// fmt.Printf("dutiesCont----------->%v---------------%v\n", dutiesErr, dutiesCont)
if dutiesErr == nil {
manMainCont.JobId = dutiesCont.Id
manMainCont.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
manMainCont.JobLeve = manCont.PositionGrade
if manCont.PositionGrade != "" {
positionGrade, _ := overallhandle.StringToInt64(manCont.PositionGrade)
manMainCont.JobLeve = positionGrade
}
//获取老人员主表内容
@ -366,10 +447,11 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
}
//编辑人员附属信息
func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonneles) {
defer synPro.Done()
var manInfo models.PersonnelContent
manErr := manInfo.GetCont(map[string]interface{}{"`key`": manKeyNum})
fmt.Printf("editManAuxilia--------------------->%v\n", manErr)
if manErr == nil {
saveData := overallhandle.MapOut()
@ -414,17 +496,29 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
if manCont.Email != "" && manCont.Email != manInfo.Email {
saveData["email"] = manCont.Email
}
if manCont.Gender != 0 && manCont.Gender != manInfo.Gender {
saveData["gender"] = manCont.Gender
if manCont.Gender != "" {
// gender, _ := overallhandle.StringToInt(manCont.Gender)
// if gender != manInfo.Gender {
// saveData["gender"] = gender
// }
genderInt := genderToInt(manCont.Gender)
if genderInt != manInfo.Gender {
saveData["gender"] = genderInt
}
}
// fmt.Printf("manCont.Birthday-------------->%v\n", manCont.Birthday)
if manCont.Birthday != "" {
brrthday, brrthdayErr := overallhandle.DateToTimeStamp(manCont.Birthday)
// fmt.Printf("manCont.Birthday-------1------->%v\n", brrthday)
if brrthdayErr == false {
brrthday, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
// fmt.Printf("manCont.Birthday------2-------->%v\n", brrthday)
}
if brrthday != manInfo.Birthday {
// fmt.Printf("manCont.Birthday------3-------->%v\n", brrthday)
saveData["birthday"] = brrthday
}
// fmt.Printf("manCont.Birthday-------4------->%v\n", brrthday)
}
if manCont.Nation != "" && manCont.Nation != manInfo.Myfolk {
saveData["myfolk"] = manCont.Nation
@ -432,26 +526,55 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
if manCont.NativePlace != "" && manCont.NativePlace != manInfo.Nativeplace {
saveData["nativeplace"] = manCont.NativePlace
}
if manCont.Health != 0 && manCont.Health != manInfo.Health {
saveData["health"] = manCont.Health
if manCont.Health != "" {
// health, _ := overallhandle.StringToInt(manCont.Health)
// if health != manInfo.Health {
// saveData["health"] = health
// }
health := healthToInt(manCont.Health)
if health != manInfo.Health {
saveData["health"] = health
saveData["health_cn"] = manCont.Health
}
}
if manCont.Maritalstatus != 0 && manCont.Maritalstatus != manInfo.Maritalstatus {
saveData["maritalstatus"] = manCont.Maritalstatus
if manCont.Maritalstatus != "" {
// marital, _ := overallhandle.StringToInt(manCont.Maritalstatus)
// if marital != manInfo.Maritalstatus {
// saveData["maritalstatus"] = marital
// }
marital := maritalstatusToInt(manCont.Maritalstatus)
if marital != manInfo.Maritalstatus {
saveData["maritalstatus"] = marital
saveData["maritalstatus_cn"] = manCont.Maritalstatus
}
}
if manCont.CurrentResidence != "" && manCont.CurrentResidence != manInfo.Currentresidence {
saveData["currentresidence"] = manCont.CurrentResidence
}
if manCont.Constellation != 0 && manCont.Constellation != manInfo.Constellation {
saveData["constellationing"] = manCont.Constellation
if manCont.Constellation != "" {
// constell, _ := overallhandle.StringToInt(manCont.Constellation)
// if constell != manInfo.Constellation {
// saveData["constellationing"] = constell
// }
constell := consteToInt(manCont.Constellation)
if constell != manInfo.Constellation {
saveData["constellationing"] = constell
saveData["constellationing_cn"] = manCont.Constellation
}
}
if manCont.Iisdoubleworker != 0 && manCont.Iisdoubleworker != manInfo.Isdoubleworker {
saveData["isdoubleworker"] = manCont.Iisdoubleworker
// eidtDoubleWorker(manCont, manCont.Iisdoubleworker)
eidtDoubleWorkerNew(manKeyNum, manCont, manCont.Iisdoubleworker)
if manCont.Iisdoubleworker != "" {
isdoulw, _ := overallhandle.StringToInt(manCont.Iisdoubleworker)
if isdoulw != manInfo.Isdoubleworker {
saveData["isdoubleworker"] = isdoulw
}
eidtDoubleWorkerNew(manKeyNum, manCont, isdoulw)
}
if manCont.Isveterans != 0 && manCont.Isveterans != manInfo.Isveterans {
saveData["isveterans"] = manCont.Isveterans
if manCont.Isveterans == 1 {
if manCont.Isveterans != "" {
isveters, _ := overallhandle.StringToInt(manCont.Isveterans)
if isveters != manInfo.Isveterans {
saveData["isveterans"] = isveters
}
if isveters == 1 {
if manCont.Veteransnumber != "" && manCont.Veteransnumber != manInfo.Veteransnumber {
saveData["veteransnumber"] = manCont.Veteransnumber
}
@ -478,7 +601,13 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
saveData["entrydate"] = entryData
}
}
if manCont.ProbationPeriod != 0 && manCont.ProbationPeriod != manInfo.Probationperiod {
if manCont.ProbationPeriod != "" {
proBatPer, _ := overallhandle.StringToInt(manCont.ProbationPeriod)
if proBatPer != manInfo.Probationperiod {
saveData["probationperiod"] = proBatPer
}
saveData["probationperiod"] = manCont.ProbationPeriod
entryData := manInfo.Entrydate
if manCont.EntryDate != "" {
@ -488,7 +617,7 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
}
planformalData := overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
planformalData := overallhandle.GetFutureMonthTime(entryData, proBatPer, 2)
saveData["planformaldate"] = planformalData
}
@ -499,20 +628,31 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
saveData["planformaldate"] = planformalData
}
if manCont.PoliticalOutlook != 0 && manCont.PoliticalOutlook != manInfo.PoliticalOutlook {
saveData["political_outlook"] = manCont.PoliticalOutlook
if manCont.PoliticalOutlook != "" {
// politiOutlok, _ := overallhandle.StringToInt(manCont.PoliticalOutlook)
// if politiOutlok != manInfo.PoliticalOutlook {
// saveData["political_outlook"] = politiOutlok
// }
politiOutlok := politiToInt(manCont.PoliticalOutlook)
if politiOutlok != manInfo.PoliticalOutlook {
saveData["political_outlook"] = politiOutlok
saveData["political_outlook_cn"] = manCont.PoliticalOutlook
}
}
if len(saveData) > 0 {
saveData["`time`"] = time.Now().Unix()
manInfo.EiteCont(map[string]interface{}{"`key`": manInfo.Key}, saveData)
}
fmt.Printf("editManAuxilia-----------1---------->%v\n", manErr)
} else {
fmt.Printf("editManAuxilia----------2----------->%v\n", manErr)
manInfo.Key = manKeyNum
manInfo.Number = manCont.Number
manInfo.Passportno = manCont.Passportno
manInfo.Globalroaming = manCont.Globalroaming
manInfo.Idcardno = manCont.IDCardNo
idCardStarTime := time.Now().Unix()
// idCardStarTime := time.Now().Unix()
var idCardStarTime int64 = 0
if manCont.IDCardStartTime != "" {
idCardStarTimeErr := false
idCardStarTime, idCardStarTimeErr = overallhandle.DateToTimeStamp(manCont.IDCardStartTime)
@ -521,7 +661,8 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
}
manInfo.Idcardstartdate = idCardStarTime //身份证有效期开始
idCardEndTime := time.Now().Unix()
// idCardEndTime := time.Now().Unix()
var idCardEndTime int64 = 0
if manCont.IDCardEndTime != "" {
idCardEndTimeErr := false
idCardEndTime, idCardEndTimeErr = overallhandle.DateToTimeStamp(manCont.IDCardEndTime)
@ -534,24 +675,61 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
manInfo.IdcardIssued = manCont.IDCardIsSued //身份证签发机关
manInfo.Mobilephone = manCont.Mobilephone
manInfo.Email = manCont.Email
manInfo.Gender = manCont.Gender
// genderInt, _ := overallhandle.StringToInt(manCont.Gender)
// manInfo.Gender = genderInt
manInfo.Gender = genderToInt(manCont.Gender)
// fmt.Printf("manCont.Birthday-------------->%v\n", manCont.Birthday)
brrthday, brrthdayErr := overallhandle.DateToTimeStamp(manCont.Birthday)
// if brrthdayErr == false {
// brrthday, brrthdayErr = overallhandle.DateToTimeStamp(manCont.Birthday)
// }
// fmt.Printf("manCont.Birthday-----1--------->%v\n", brrthday)
if brrthdayErr == false {
brrthday, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
// fmt.Printf("manCont.Birthday-----2--------->%v\n", brrthday)
}
// fmt.Printf("manCont.Birthday-----3--------->%v\n", brrthday)
manInfo.Birthday = brrthday
manInfo.Myfolk = manCont.Nation
manInfo.Nativeplace = manCont.NativePlace
manInfo.Health = manCont.Health
manInfo.Maritalstatus = manCont.Maritalstatus
// healthInt, _ := overallhandle.StringToInt(manCont.Health)
// manInfo.Health = healthInt
manInfo.Health = healthToInt(manCont.Health)
manInfo.HealthCn = manCont.Health
// maritatus, _ := overallhandle.StringToInt(manCont.Maritalstatus)
// manInfo.Maritalstatus = maritatus
manInfo.Maritalstatus = maritalstatusToInt(manCont.Maritalstatus)
manInfo.MaritalstatusCn = manCont.Maritalstatus
manInfo.Currentresidence = manCont.CurrentResidence
manInfo.Time = time.Now().Unix()
manInfo.Constellation = manCont.Constellation
manInfo.Isdoubleworker = manCont.Iisdoubleworker
manInfo.Isveterans = manCont.Isveterans
// consation, _ := overallhandle.StringToInt(manCont.Constellation)
// manInfo.Constellation = consation
manInfo.Constellation = consteToInt(manCont.Constellation)
manInfo.ConstellationingCn = manCont.Constellation
if manCont.Iisdoubleworker != "" {
isdourker, _ := overallhandle.StringToInt(manCont.Iisdoubleworker)
manInfo.Isdoubleworker = isdourker
} else {
manInfo.Isdoubleworker = 2
}
if manCont.Isveterans != "" {
issssveterans, _ := overallhandle.StringToInt(manCont.Isveterans)
manInfo.Isveterans = issssveterans
} else {
manInfo.Isveterans = 2
}
manInfo.Veteransnumber = manCont.Veteransnumber
workInData := time.Now().Unix()
// workInData := time.Now().Unix()
var workInData int64 = 0
if manCont.WorkingDate != "" {
workInDataErr := false
workInData, workInDataErr = overallhandle.DateToTimeStamp(manCont.WorkingDate)
@ -560,7 +738,8 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
}
manInfo.Jobstartdate = workInData
entryData := time.Now().Unix()
// entryData := time.Now().Unix()
var entryData int64 = 0
if manCont.EntryDate != "" {
entryDataErr := false
entryData, entryDataErr = overallhandle.DateToTimeStamp(manCont.EntryDate)
@ -569,7 +748,8 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
}
manInfo.Entrydate = entryData
manInfo.Probationperiod = manCont.ProbationPeriod
probPeriod, _ := overallhandle.StringToInt(manCont.ProbationPeriod)
manInfo.Probationperiod = probPeriod
planformalData := time.Now().Unix()
if manCont.ConfirmationDate != "" {
planformalDataErr := false
@ -579,13 +759,17 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
} else {
planformalData = overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
planformalData = overallhandle.GetFutureMonthTime(entryData, probPeriod, 2)
}
manInfo.Planformaldate = planformalData
manInfo.PoliticalOutlook = manCont.PoliticalOutlook
// politutlook, _ := overallhandle.StringToInt(manCont.PoliticalOutlook)
// manInfo.PoliticalOutlook = politutlook
manInfo.PoliticalOutlook = politiToInt(manCont.PoliticalOutlook)
manInfo.PoliticalOutlookCn = manCont.PoliticalOutlook
overall.CONSTANT_DB_HR.Create(&manInfo)
if manCont.Iisdoubleworker == 1 {
if manCont.Iisdoubleworker == "1" && manCont.Iisdoubleworker == "是" {
//编辑双职工
eidtDoubleWorkerNew(manKeyNum, manCont, 1)
}
@ -593,7 +777,7 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
//编辑双职工
func eidtDoubleWorkerNew(manKeyNum int64, manCont addKingdeePersonnel, state int) {
func eidtDoubleWorkerNew(manKeyNum int64, manCont addKingdeePersonneles, state int) {
var doubleWorkCont models.DoubleWorker
dwErr := doubleWorkCont.GetCont(map[string]interface{}{"`key`": manKeyNum})
if dwErr == nil {
@ -637,7 +821,7 @@ func eidtDoubleWorkerNew(manKeyNum int64, manCont addKingdeePersonnel, state int
}
//编辑紧急联系人信息
func emergencyContactPersonNew(manKeyNum int64, manCont addKingdeePersonnel) {
func emergencyContactPersonNew(manKeyNum int64, manCont addKingdeePersonneles) {
defer synPro.Done()
var emeContPerAry []emergencyContact
if manCont.UrgentNameOne != "" || manCont.UrgentRelationshipOne != "" || manCont.UrgentMobilephoneOne != "" {
@ -724,12 +908,12 @@ func emergencyContactPersonNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
//编辑员工家属
func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily) {
func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamilyes) {
defer synPro.Done()
if len(family) > 0 && manKeyNum != 0 {
var familyAry []models.FamilyMembers
famErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&familyAry).Error
if famErr == nil {
if famErr == nil && len(familyAry) > 0 {
var writeName []string
var allId []int64
var isEite []int64
@ -759,8 +943,17 @@ func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily)
if fv.Position != "" && fv.Position != fav.Postnme {
eitdCont["postnme"] = fv.Position
}
if fv.PoliticalOutlook != 0 && fv.PoliticalOutlook != fav.PoliticalOutlook {
eitdCont["political_outlook"] = fv.PoliticalOutlook
if fv.PoliticalOutlook != "" {
// polilOutlook, _ := overallhandle.StringToInt(fv.PoliticalOutlook)
// if polilOutlook != fav.PoliticalOutlook {
// eitdCont["political_outlook"] = polilOutlook
// }
polilOutlook := politiToInt(fv.PoliticalOutlook)
if polilOutlook != fav.PoliticalOutlook {
eitdCont["political_outlook"] = polilOutlook
eitdCont["political_outlook_cn"] = fv.PoliticalOutlook
}
}
if len(eitdCont) > 0 {
eitdCont["time"] = time.Now().Unix()
@ -776,14 +969,19 @@ func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily)
var addFamliyCont models.FamilyMembers
addFamliyCont.Key = manKeyNum
addFamliyCont.Number = num
addFamliyCont.Relationship = afv.Relationship //亲属关系"`
addFamliyCont.Name = afv.Name //姓名"`
addFamliyCont.Company = afv.Company //所在公司"`
addFamliyCont.Deparment = afv.Department //所在部门"`
addFamliyCont.Postnme = afv.Position //所在岗位"`
addFamliyCont.Tel = afv.Mobilephone //紧急联系人电话"`
addFamliyCont.PoliticalOutlook = afv.PoliticalOutlook //政治面貌
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
addFamliyCont.Relationship = afv.Relationship //亲属关系"`
addFamliyCont.Name = afv.Name //姓名"`
addFamliyCont.Company = afv.Company //所在公司"`
addFamliyCont.Deparment = afv.Department //所在部门"`
addFamliyCont.Postnme = afv.Position //所在岗位"`
addFamliyCont.Tel = afv.Mobilephone //紧急联系人电话"`
// polilOutlook, _ := overallhandle.StringToInt(afv.PoliticalOutlook)
// addFamliyCont.PoliticalOutlook = polilOutlook //政治面貌
addFamliyCont.PoliticalOutlook = politiToInt(afv.PoliticalOutlook) //政治面貌
addFamliyCont.PoliticalOutlookCn = afv.PoliticalOutlook
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
@ -793,14 +991,19 @@ func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily)
var addFamliyCont models.FamilyMembers
addFamliyCont.Key = manKeyNum
addFamliyCont.Number = num
addFamliyCont.Relationship = v.Relationship //亲属关系"`
addFamliyCont.Name = v.Name //姓名"`
addFamliyCont.Company = v.Company //所在公司"`
addFamliyCont.Deparment = v.Department //所在部门"`
addFamliyCont.Postnme = v.Position //所在岗位"`
addFamliyCont.Tel = v.Mobilephone //紧急联系人电话"`
addFamliyCont.PoliticalOutlook = v.PoliticalOutlook //政治面貌
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
addFamliyCont.Relationship = v.Relationship //亲属关系"`
addFamliyCont.Name = v.Name //姓名"`
addFamliyCont.Company = v.Company //所在公司"`
addFamliyCont.Deparment = v.Department //所在部门"`
addFamliyCont.Postnme = v.Position //所在岗位"`
addFamliyCont.Tel = v.Mobilephone //紧急联系人电话"`
// polilOutlook, _ := overallhandle.StringToInt(v.PoliticalOutlook)
// addFamliyCont.PoliticalOutlook = polilOutlook //政治面貌
addFamliyCont.PoliticalOutlook = politiToInt(v.PoliticalOutlook) //政治面貌
addFamliyCont.PoliticalOutlookCn = v.PoliticalOutlook
addFamliyCont.Time = time.Now().Unix() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
@ -808,7 +1011,7 @@ func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily)
}
//教育经历
func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonneles) {
defer synPro.Done()
if manCont.HighestGraduationSchool != "" {
//最高学历
@ -818,11 +1021,22 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
if higErr == nil {
eitdCont := overallhandle.MapOut()
if manCont.HighestEducation != 0 && manCont.HighestEducation != perEduContHig.Education {
eitdCont["education"] = manCont.HighestEducation
if manCont.HighestEducation != "" {
// hightion, _ := overallhandle.StringToInt(manCont.HighestEducation)
hightion := ducationToInt(manCont.HighestEducation)
if hightion != perEduContHig.Education {
eitdCont["education"] = hightion
eitdCont["education_cn"] = manCont.HighestEducation
}
}
if manCont.HighestAcademicDegree != 0 && manCont.HighestAcademicDegree != perEduContHig.AcademicDegree {
eitdCont["academic_degree"] = manCont.HighestAcademicDegree
if manCont.HighestAcademicDegree != "" {
// highecDegree, _ := overallhandle.StringToInt(manCont.HighestAcademicDegree)
highecDegree := hestacademicdegreeToInt(manCont.HighestAcademicDegree)
if highecDegree != perEduContHig.AcademicDegree {
eitdCont["academic_degree"] = highecDegree
eitdCont["academic_degree_cn"] = manCont.HighestAcademicDegree
}
}
if manCont.HighestAdmissionTime != "" {
entranceTime, entranceTimeErr := overallhandle.DateToTimeStamp(manCont.HighestAdmissionTime)
@ -859,8 +1073,11 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
oldFamilyCont.EiteCont(map[string]interface{}{"`key`": manKeyNum, "level": 3}, eitdCont)
}
perEduContHig.Key = manKeyNum
perEduContHig.Number = manCont.Number // 员工工号
perEduContHig.Education = manCont.HighestEducation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContHig.Number = manCont.Number // 员工工号
// highcation, _ := overallhandle.StringToInt(manCont.HighestEducation)
highcation := ducationToInt(manCont.HighestEducation)
perEduContHig.Education = highcation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContHig.EducationCn = manCont.HighestEducation
perEduContHig.GraduationSchool = manCont.HighestGraduationSchool // 毕业学校"`
perEduContHig.Subject = manCont.HighestSubject // 专业"`
entranceTime := time.Now().Unix()
@ -882,7 +1099,10 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
perEduContHig.GraduationTime = graduationTime // 毕业时间"`
perEduContHig.Time = time.Now().Unix() // 写入时间"`
perEduContHig.AcademicDegree = manCont.HighestAcademicDegree
// highgree, _ := overallhandle.StringToInt(manCont.HighestAcademicDegree)
highgree := hestacademicdegreeToInt(manCont.HighestAcademicDegree)
perEduContHig.AcademicDegree = highgree
perEduContHig.AcademicDegreeCn = manCont.HighestAcademicDegree
perEduContHig.Level = 3 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContHig)
}
@ -896,11 +1116,25 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
if higErr == nil {
eitdContFirst := overallhandle.MapOut()
if manCont.FirstEducation != 0 && manCont.FirstEducation != perEduContFirst.Education {
eitdContFirst["education"] = manCont.FirstEducation
if manCont.FirstEducation != "" {
// firation, _ := overallhandle.StringToInt(manCont.FirstEducation)
firation := ducationToInt(manCont.FirstEducation)
if firation != perEduContFirst.Education {
eitdContFirst["education"] = firation
eitdContFirst["education_cn"] = manCont.FirstEducation
}
}
if manCont.FirstAcademicDegree != 0 && manCont.FirstAcademicDegree != perEduContFirst.AcademicDegree {
eitdContFirst["academic_degree"] = manCont.FirstAcademicDegree
if manCont.FirstAcademicDegree != "" {
// firstAcadee, _ := overallhandle.StringToInt(manCont.FirstAcademicDegree)
firstAcadee := hestacademicdegreeToInt(manCont.FirstAcademicDegree)
if firstAcadee != perEduContFirst.AcademicDegree {
eitdContFirst["academic_degree"] = firstAcadee
eitdContFirst["academic_degree_cn"] = manCont.FirstAcademicDegree
}
}
if manCont.FirstAdmissionTime != "" {
entranceTimeFirst, entranceTimeFirstErr := overallhandle.DateToTimeStamp(manCont.FirstAdmissionTime)
@ -937,8 +1171,11 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
oldFamilyContFirst.EiteCont(map[string]interface{}{"`key`": manKeyNum, "level": 2}, eitdContFirst)
}
perEduContFirst.Key = manKeyNum
perEduContFirst.Number = manCont.Number // 员工工号
perEduContFirst.Education = manCont.FirstEducation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContFirst.Number = manCont.Number // 员工工号
// fiEducation, _ := overallhandle.StringToInt(manCont.FirstEducation)
fiEducation := ducationToInt(manCont.FirstEducation)
perEduContFirst.EducationCn = manCont.FirstEducation
perEduContFirst.Education = fiEducation // 学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
perEduContFirst.GraduationSchool = manCont.FirstGraduationSchool // 毕业学校"`
perEduContFirst.Subject = manCont.FirstSubject // 专业"`
entranceTimeFirst := time.Now().Unix()
@ -960,7 +1197,10 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
perEduContFirst.GraduationTime = graduationTimef // 毕业时间"`
perEduContFirst.Time = time.Now().Unix() // 写入时间"`
perEduContFirst.AcademicDegree = manCont.FirstAcademicDegree
// fitAcmicDgree, _ := overallhandle.StringToInt(manCont.FirstAcademicDegree)
fitAcmicDgree := hestacademicdegreeToInt(manCont.FirstAcademicDegree)
perEduContFirst.AcademicDegree = fitAcmicDgree
perEduContFirst.AcademicDegreeCn = manCont.FirstAcademicDegree
perEduContFirst.Level = 2 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContFirst)
}
@ -973,7 +1213,7 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
if len(workHistoryList) > 0 && manKeyNum != 0 {
var oldWork []models.WorkHistory
oldWorkErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&oldWork).Error
if oldWorkErr == nil {
if oldWorkErr == nil && len(oldWork) > 0 {
for _, wvs := range workHistoryList {
var whCont models.WorkHistory
isEidtErr := whCont.GetCont(map[string]interface{}{"`key`": manKeyNum, "`company`": wvs.Company, "`deparment`": wvs.Department, "`job`": wvs.Position}, "id", "entry_time", "leavedate", "witness", "witness_tel", "remarks")
@ -1088,26 +1328,49 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
}
//编辑集团内工作经历
func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistoryer) {
defer synPro.Done()
if len(contList) > 0 && manKeyNum > 0 {
//判断是否已经存在集团内工作履历
var insideWork []models.InsideWorkHistory
err := overall.CONSTANT_DB_HR.Model(&models.InsideWorkHistory{}).Select("`id`").Where("`key` = ?", manKeyNum).Find(&insideWork).Error
fmt.Printf("isErr---err---->%v\n", err)
fmt.Printf("isErr---err--insideWork-->%v-------->%v\n", err, insideWork)
var topGroup int64 = 0
var groupTopCont models.AdministrativeOrganization
groupTopCont.GetCont(map[string]interface{}{"superior": 0}, "id")
topGroup = groupTopCont.Id
if err == nil {
if err == nil && len(insideWork) > 0 {
// if err == nil {
var iInt []int
for i, v := range contList {
var wssCont models.AdministrativeOrganization
wssCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id")
//集团
var groupContes models.AdministrativeOrganization
groupContes.GetCont(map[string]interface{}{"kingdeeid": v.Group}, "id")
// fmt.Printf("groupContes------------>%v\n", groupContes)
if groupContes.Id == 0 {
groupContes.Id = topGroup
}
//部门
var dempCont models.AdministrativeOrganization
dempCont.GetCont(map[string]interface{}{"kingdeeid": v.Department}, "id")
if dempCont.Id == groupContes.Id {
if wssCont.Id != 0 {
dempCont.Id = overallhandle.RecursionOrgLeve(wssCont.Id, 4)
}
}
//公司
var compayCont models.AdministrativeOrganization
compayCont.GetCont(map[string]interface{}{"kingdeeid": v.Company}, "id")
//职务
var postCont models.Position
postCont.GetCont(map[string]interface{}{"kingdeeid": v.Position}, "id")
var insiCont models.InsideWorkHistory
isErr := insiCont.GetCont(map[string]interface{}{"`key`": manKeyNum, "workshop_section": wssCont.Id})
fmt.Printf("isErr--1----->%v\n", isErr)
isErr := insiCont.GetCont(map[string]interface{}{"`key`": manKeyNum, "`group`": groupContes.Id, "`company`": compayCont.Id, "`department`": dempCont.Id, "workshop_section": wssCont.Id, "position": postCont.Id})
// fmt.Printf("isErr--1----->%v\n", isErr)
if isErr == nil {
iInt = append(iInt, i)
saveData := overallhandle.MapOut()
@ -1164,22 +1427,38 @@ func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
if v.StartTime != "" {
if v.EndTime != "至今" && v.EndTime != "2199-12-31 00:00:00" && v.EndTime != "2199-12-31" && v.EndTime != "7258003200" {
// fmt.Printf("EndTime----insiCont.Id------>%v--------->%v\n", v.StartTime, insiCont.Id)
endTime, endTimeErr := overallhandle.DateToTimeStamp(v.EndTime)
if endTimeErr == false {
// fmt.Printf("EndTime----1----->%v----->%v\n", endTime, insiCont.Id)
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime))
// fmt.Printf("EndTime----3----->%v----->%v\n", endTime, insiCont.Id)
}
if endTime != insiCont.EndTime {
// fmt.Printf("EndTime----3----->%v----->%v\n", endTime, insiCont.Id)
saveData["end_time"] = endTime
saveData["state"] = 2
}
// fmt.Printf("EndTime----4----->%v----->%v\n", endTime, insiCont.Id)
} else {
// fmt.Printf("EndTime----5----->%v----->%v\n", 0, insiCont.Id)
saveData["end_time"] = 0
saveData["state"] = 1
}
}
if v.ChangeType != 0 && v.ChangeType != insiCont.ChangeType {
saveData["end_time"] = v.ChangeType
if v.ChangeType != "" {
// chType, _ := overallhandle.StringToInt(v.ChangeType)
chType := changeTypeToInt(v.ChangeType)
if chType != insiCont.ChangeType {
saveData["change_type"] = chType
}
}
if v.AssignType != "" {
assType := assignTypeToInt(v.AssignType)
if assType != insiCont.AssignType {
saveData["assign_type"] = assType
}
}
if len(saveData) > 0 {
insiCont.EditCont(map[string]interface{}{"`id`": insiCont.Id}, saveData)
@ -1276,7 +1555,7 @@ func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
cont.State = 1 //状态(1:启用;2:禁用;3:删除)"`
if vv.EndTime != "" {
if vv.EndTime != "至今" && vv.EndTime != "2199-12-31 00:00:00" && vv.EndTime != "2199-12-31" && vv.EndTime != "7258003200" {
endTime, endTimeErr := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", vv.EndTime))
endTime, endTimeErr := overallhandle.DateToTimeStamp(vv.EndTime)
if endTimeErr == false {
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", vv.EndTime))
}
@ -1284,12 +1563,19 @@ func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
cont.State = 2
}
}
// fmt.Printf("cont.EndTime------------->%v------->%v\n", cont.EndTime, vv.EndTime)
cont.Team = 1 //班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
changeTypes := vv.ChangeType
if changeTypes == 0 {
changeTypes = 1
}
cont.ChangeType = changeTypes //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
// changeTypes := 1
// if vv.ChangeType == "" {
// changeTypes, _ = overallhandle.StringToInt(vv.ChangeType)
// }
// cont.ChangeType = changeTypes //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
cont.AssignType = assignTypeToInt(vv.AssignType)
cont.ChangeType = changeTypeToInt(vv.ChangeType)
cont.Time = time.Now().Unix() //:创建时间"`
addData = append(addData, cont)
@ -1350,12 +1636,21 @@ func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
} else {
cont.WorkShop = 0 //二级部门或车间"`
}
// fmt.Printf("v.WorkshopSection --------------------->%v\n", v.WorkshopSection)
if v.WorkshopSection != "" {
var workShopSecCont models.AdministrativeOrganization
workShopSecErr := workShopSecCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id")
// fmt.Printf("v.WorkshopSection ----------id----------->%v\n", workShopSecCont)
if workShopSecErr == nil {
cont.WorkshopSection = workShopSecCont.Id //工段"`
if v.Department == v.Company {
cont.Department = overallhandle.RecursionOrgLeve(workShopSecCont.Id, 4)
}
if cont.WorkShop == 0 {
cont.WorkShop = overallhandle.RecursionOrgLeve(workShopSecCont.Id, 5)
}
} else {
cont.WorkshopSection = 0 //工段"`
}
@ -1399,12 +1694,15 @@ func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
}
}
cont.Team = 1 //班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
changeTypes := v.ChangeType
if changeTypes == 0 {
changeTypes = 1
}
cont.ChangeType = changeTypes //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
cont.Time = time.Now().Unix() //:创建时间"`
// changeTypes := 1
// if v.ChangeType == "" {
// changeTypes, _ = overallhandle.StringToInt(v.ChangeType)
// }
// cont.ChangeType = changeTypes
cont.AssignType = assignTypeToInt(v.AssignType)
cont.ChangeType = changeTypeToInt(v.ChangeType) //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
cont.Time = time.Now().Unix() //:创建时间"`
addData = append(addData, cont)
}

82
api/version1/personnelapi/staff.go

@ -37,9 +37,9 @@ func (s *StaffApi) StaffList(c *gin.Context) {
if requestData.Company != 0 {
gormDb = gormDb.Where("p.company = ?", requestData.Company)
}
if requestData.Deparment != "" {
gormDb = gormDb.Where("FIND_IN_SET(?,p.`deparment`)", requestData.Deparment)
}
// if requestData.Deparment != "" {
// gormDb = gormDb.Where("FIND_IN_SET(?,p.`deparment`)", requestData.Deparment)
// }
if requestData.AdminOrg != 0 {
gormDb = gormDb.Where("p.admin_org = ?", requestData.AdminOrg)
}
@ -125,13 +125,14 @@ func (s *StaffApi) AddStaff(c *gin.Context) {
if requestData.PoliticalOutlook == 0 {
requestData.PoliticalOutlook = 1
}
if requestData.Company == 0 {
requestData.Company = 1
}
if len(requestData.Department) < 1 {
overallhandle.Result(1, requestData.Department, c, "请您选择该员工归属哪个分厂(部室)!")
if requestData.AdminOrg == 0 {
overallhandle.Result(1, requestData.Position, c, "请选择员工归属行政组织!")
return
}
// if len(requestData.Department) < 1 {
// overallhandle.Result(1, requestData.Department, c, "请您选择该员工归属哪个分厂(部室)!")
// return
// }
if requestData.Position == 0 {
overallhandle.Result(1, requestData.Position, c, "请分配员工职位(岗位)!")
return
@ -193,11 +194,19 @@ func (s *StaffApi) AddStaff(c *gin.Context) {
staffInfo.Icon = requestData.Icon
staffInfo.HireClass = requestData.HireType
staffInfo.EmpType = requestData.EmpType
staffInfo.Company = requestData.Company
mainDepartmentId, _ := strconv.ParseInt(requestData.MainDepartment, 10, 64)
staffInfo.MainDeparment = mainDepartmentId
staffInfo.Deparment = strings.Join(requestData.Department, ",")
// mainDepartmentId, _ := strconv.ParseInt(requestData.MainDepartment, 10, 64)
_, companyId, departmentId, sunDepartId, _ := overallhandle.GetOrgStructure(requestData.AdminOrg)
staffInfo.Company = companyId
staffInfo.MainDeparment = departmentId
staffInfo.SunMainDeparment = sunDepartId
// staffInfo.Deparment = strings.Join(requestData.Department, ",")
staffInfo.AdminOrg = requestData.AdminOrg
teamIdInt, _ := strconv.ParseInt(requestData.Team, 10, 64)
staffInfo.TeamId = teamIdInt
staffInfo.Position = requestData.Position
//获取职务信息
@ -266,6 +275,11 @@ func (s *StaffApi) AddStaff(c *gin.Context) {
synPro.Add(1)
go workHistoryLog(manKeyNum, requestData.Number, requestData.WorkHistoryList)
}
//公司内部工作履历
if len(requestData.InsideWorkHistory) > 0 {
synPro.Add(1)
go workInsideHistoryLog(manKeyNum, requestData.Number, requestData.InsideWorkHistory)
}
synPro.Wait()
overallhandle.Result(0, staffInfo, c)
}
@ -466,6 +480,9 @@ func doubleWorkerStaff(manKeyNum int64, numStr string, dobleMan []DoubleWorkerIn
if dwInFoErr == nil {
eidtIint = append(eidtIint, i)
saveData := overallhandle.MapOut()
if v.Number != "" && v.Number != dwManInfo.Number {
saveData["number"] = v.Number
}
if v.Company != "" && v.Company != dwManInfo.Company {
saveData["company"] = v.Company
}
@ -493,7 +510,7 @@ func doubleWorkerStaff(manKeyNum int64, numStr string, dobleMan []DoubleWorkerIn
for _, v := range dobleMan {
var doublePeople models.DoubleWorker
doublePeople.Key = manKeyNum
doublePeople.Number = numStr
doublePeople.Number = v.Number
doublePeople.Name = v.Name
doublePeople.Company = v.Company
doublePeople.Department = v.Department
@ -1276,3 +1293,42 @@ func doubleWorkerStaffNoXiecheng(manKeyNum int64, numStr string, dobleMan []Doub
}
}
//
func workInsideHistoryLog(manKeyNum int64, num string, workHistoryList []insideHistoryerMy) {
defer synPro.Done()
if len(workHistoryList) > 0 && manKeyNum != 0 {
var insetConr []models.InsideWorkHistory
for _, v := range workHistoryList {
var insetInfor models.InsideWorkHistory
orgIdInt, _ := strconv.ParseInt(v.OrgId, 10, 64)
groupId, companyId, departmentId, sunDepartId, workShopId := overallhandle.GetOrgStructure(orgIdInt)
insetInfor.Group = groupId
insetInfor.Company = companyId
insetInfor.Department = departmentId
insetInfor.WorkShop = sunDepartId
insetInfor.WorkshopSection = workShopId
positionIdInt, _ := strconv.ParseInt(v.Position, 10, 64)
insetInfor.Position = positionIdInt
insetInfor.GradePositions = v.GradePositions
startTimeInt, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.StartTime))
insetInfor.StartTime = startTimeInt
if v.EndTime != "" {
endTimeInt, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime))
insetInfor.EndTime = endTimeInt
}
teamIdInt, _ := strconv.ParseInt(v.Team, 10, 64)
insetInfor.Team = teamIdInt
insetInfor.ChangeType = v.ChangeType
insetInfor.AssignType = v.AssignType
insetInfor.Time = time.Now().Unix()
insetInfor.State = 1
insetConr = append(insetConr, insetInfor)
}
if len(insetConr) > 0 {
overall.CONSTANT_DB_HR.Create(&insetConr)
}
}
}

430
api/version1/personnelapi/staffarchives.go

@ -6,7 +6,6 @@ import (
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
@ -37,11 +36,14 @@ func (s *StaffApi) ArchivesList(c *gin.Context) {
if requestData.Company != 0 {
gormDb = gormDb.Where("company = ?", requestData.Company)
}
if requestData.Deparment != "" {
gormDb = gormDb.Where("FIND_IN_SET(?,`deparment`)", requestData.Deparment)
}
// if requestData.Deparment != "" {
// gormDb = gormDb.Where("FIND_IN_SET(?,`deparment`)", requestData.Deparment)
// }
if requestData.AdminOrg != 0 {
gormDb = gormDb.Where("admin_org = ?", requestData.AdminOrg)
var idAry []int64
idAry = overallhandle.GetDepartmentSun(requestData.AdminOrg, idAry)
idAry = append(idAry, requestData.AdminOrg)
gormDb = gormDb.Where("admin_org IN ?", idAry)
}
if requestData.Position != 0 {
gormDb = gormDb.Where("position = ?", requestData.Position)
@ -84,22 +86,32 @@ func (s *StaffApi) ArchivesList(c *gin.Context) {
getWheDepartMain["id"] = v.MainDeparment
getSpurDepartMain.GetCont(getWheDepartMain, "name")
staffInfo.MainDeparmentName = getSpurDepartMain.Name
//二级著部门
var sunMainDepart models.AdministrativeOrganization
sunMainDepart.GetCont(map[string]interface{}{"`id`": v.SunMainDeparment}, "`name`")
staffInfo.SunMainDeparmentName = sunMainDepart.Name
//获取部门
departmentAry := strings.Split(v.Deparment, ",")
if len(departmentAry) > 0 {
var departCont []getDepartmentInfo
departErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("id,number,name").Where("`id` IN ?", departmentAry).Order("`organization_type` ASC").Find(&departCont).Error
if departErr == nil {
var departNameAry []string
for _, d_v := range departCont {
departNameAry = append(departNameAry, d_v.Name)
}
if len(departNameAry) > 0 {
staffInfo.DeparmentName = strings.Join(departNameAry, " ")
}
}
// departmentAry := strings.Split(v.Deparment, ",")
// if len(departmentAry) > 0 {
// var departCont []getDepartmentInfo
// departErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("id,number,name").Where("`id` IN ?", departmentAry).Order("`organization_type` ASC").Find(&departCont).Error
// if departErr == nil {
// var departNameAry []string
// for _, d_v := range departCont {
// departNameAry = append(departNameAry, d_v.Name)
// }
// if len(departNameAry) > 0 {
// staffInfo.DeparmentName = strings.Join(departNameAry, " ")
// }
// }
// }
var orgContTypeCont models.OrgContType
orgContTypeCont.GetCont(map[string]interface{}{"`id`": v.AdminOrg}, "`name`", "`level`")
if orgContTypeCont.Level >= 6 {
staffInfo.WorkPostName = orgContTypeCont.Name
}
positionAry = append(positionAry, staffInfo)
}
@ -139,6 +151,26 @@ func (s *StaffApi) ArchivesCon(c *gin.Context) {
staffCenter.IdCardEndTimeData = overallhandle.UnixTimeToDay(satffCont.Idcardenddate, 14) //身份证有效期结束时间
staffCenter.EntrydateTime = overallhandle.UnixTimeToDay(satffCont.Entrydate, 14) //入职日期
staffCenter.PlanformaldateTime = overallhandle.UnixTimeToDay(satffCont.Planformaldate, 14) //预计转正日期
var groupInfos models.AdministrativeOrganization
groupInfos.GetCont(map[string]interface{}{"`id`": satffCont.Company}, "`name`")
staffCenter.CompanyName = groupInfos.Name
var demperMainInfos models.AdministrativeOrganization
demperMainInfos.GetCont(map[string]interface{}{"`id`": satffCont.MainDeparment}, "`name`")
staffCenter.MainDeparmentName = demperMainInfos.Name
var adminOrg models.AdministrativeOrganization
adminOrg.GetCont(map[string]interface{}{"`id`": satffCont.AdminOrg}, "`name`")
staffCenter.AdminOrgName = adminOrg.Name
var postisInfo models.Position
postisInfo.GetCont(map[string]interface{}{"`id`": satffCont.Position}, "`name`")
staffCenter.PositionName = postisInfo.Name
var jobsInfo models.JobClass
jobsInfo.GetCont(map[string]interface{}{"`id`": satffCont.JobClass}, "`name`")
staffCenter.JobClassName = jobsInfo.Name
var dutiresInfo models.Duties
dutiresInfo.GetCont(map[string]interface{}{"`id`": satffCont.JobId}, "`name`")
staffCenter.JobIdName = dutiresInfo.Name
staffCenter.PoliticalOutlookName = overallhandle.PolitiToString(satffCont.PoliticalOutlook)
//获取双职工信息
synPro.Add(1)
go func() {
@ -164,6 +196,11 @@ func (s *StaffApi) ArchivesCon(c *gin.Context) {
go func() {
staffCenter.WorkHistoryList = getWorkHistoryList(satffCont.Key) //工作履历
}()
//集团内工作履历
synPro.Add(1)
go func() {
staffCenter.InsideWorkHistory = getGroupWorkHistoryList(satffCont.Key) //工作履历
}()
synPro.Wait()
overallhandle.Result(0, staffCenter, c)
return
@ -1156,3 +1193,358 @@ func (s *StaffApi) EditWorkHistoryState(c *gin.Context) {
}
}
}
//集团内部工作履历
func getGroupWorkHistoryList(key int64) (workHisList []insideHistory) {
defer synPro.Done()
var workHisContList []models.InsideWorkHistory
workHisContListErr := overall.CONSTANT_DB_HR.Where("`state` IN ? AND `key` = ?", []int{1, 2}, key).Find(&workHisContList).Error
if workHisContListErr == nil {
for _, v := range workHisContList {
var workCont insideHistory
var groupInfo models.AdministrativeOrganization
groupInfo.GetCont(map[string]interface{}{"`id`": v.Group}, "`name`")
workCont.Group = groupInfo.Name //集团
var companyInfo models.AdministrativeOrganization
companyInfo.GetCont(map[string]interface{}{"`id`": v.Company}, "`name`")
workCont.Company = companyInfo.Name //公司
var deparment models.AdministrativeOrganization
deparment.GetCont(map[string]interface{}{"`id`": v.Department}, "`name`")
workCont.Department = deparment.Name //部门
var workshop models.AdministrativeOrganization
workshop.GetCont(map[string]interface{}{"`id`": v.WorkShop}, "`name`")
workCont.Workshop = workshop.Name //二级部门或车间
var workshopsetdsas models.AdministrativeOrganization
workshopsetdsas.GetCont(map[string]interface{}{"`id`": v.WorkshopSection}, "`name`")
workCont.WorkshopSection = workshopsetdsas.Name //二级部门或车间
var positCont models.Position
positCont.GetCont(map[string]interface{}{"`id`": v.Position}, "`name`")
workCont.Position = positCont.Name //职务
workCont.GradePositions = v.GradePositions //职务
workCont.StartTime = overallhandle.UnixTimeToDay(v.StartTime, 14) //开始日期
workCont.EndTime = overallhandle.UnixTimeToDay(v.EndTime, 14) //结束日期
workCont.ChangeType = v.ChangeType //
workHisList = append(workHisList, workCont)
}
}
return
}
//添加工作履历
func (s *StaffApi) AddInsideHistory(c *gin.Context) {
var requestData eidtInsideHistoryWork
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(101, err, c)
return
}
if requestData.Id == "" {
overallhandle.Result(1, requestData.Id, c, "员工标识符不能为空")
return
}
if requestData.OrgId == "" {
overallhandle.Result(1, requestData.Id, c, "行政组织不能为空")
return
}
if requestData.Position == "" {
overallhandle.Result(1, requestData.Id, c, "职位不能为空")
return
}
if requestData.Team == "" {
overallhandle.Result(1, requestData.Id, c, "班组不能为空")
return
}
if requestData.StartTime == "" {
overallhandle.Result(1, requestData.Id, c, "就任此职位开始时间不能为空")
return
}
if requestData.ChangeType == 0 {
requestData.ChangeType = 1
}
if requestData.AssignType == 0 {
requestData.AssignType = 1
}
var insiderHistoryWork models.InsideWorkHistory
idInt, _ := strconv.ParseInt(requestData.Id, 10, 64)
insiderHistoryWork.Key = idInt
orgIdInt, _ := strconv.ParseInt(requestData.OrgId, 10, 64)
insiderHistoryWork.Group, insiderHistoryWork.Company, insiderHistoryWork.Department, insiderHistoryWork.WorkShop, insiderHistoryWork.WorkshopSection = overallhandle.GetOrgStructure(orgIdInt)
positionInt, _ := strconv.ParseInt(requestData.Position, 10, 64)
insiderHistoryWork.Position = positionInt
insiderHistoryWork.GradePositions = requestData.GradePositions
startTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.StartTime))
insiderHistoryWork.StartTime = startTime
if requestData.EndTime != "" && requestData.EndTime != "0" && requestData.EndTime != "至今" {
endTime, endErr := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.EndTime))
if endErr == true {
insiderHistoryWork.StartTime = endTime
}
}
teamIdInt, _ := strconv.ParseInt(requestData.Team, 10, 64)
insiderHistoryWork.Team = teamIdInt
insiderHistoryWork.ChangeType = requestData.ChangeType
insiderHistoryWork.Time = time.Now().Unix()
insiderHistoryWork.State = 1
insiderHistoryWork.AssignType = requestData.AssignType
addErr := overall.CONSTANT_DB_HR.Create(&insiderHistoryWork).Error
if addErr != nil {
overallhandle.Result(104, addErr, c)
} else {
overallhandle.Result(0, addErr, c)
}
}
//编辑集团内部工作
func (s *StaffApi) EidtInsideHistoryWorkCont(c *gin.Context) {
var requestData eidtInsideHistoryWork
err := c.ShouldBindJSON(&requestData)
if err != nil {
overallhandle.Result(101, err, c)
return
}
if requestData.Id == "" {
overallhandle.Result(1, requestData.Id, c, "ID不能为空")
return
}
var insiderHistoryWork models.InsideWorkHistory
getErr := insiderHistoryWork.GetCont(map[string]interface{}{"`id`": requestData.Id})
if getErr != nil {
overallhandle.Result(107, requestData.Id, c)
return
}
saveData := overallhandle.MapOut()
if requestData.OrgId == "" {
orgIdInt, _ := strconv.ParseInt(requestData.OrgId, 10, 64)
groupId, companyId, departmentId, sunDepartId, workId := overallhandle.GetOrgStructure(orgIdInt)
if groupId != insiderHistoryWork.Group {
saveData["group"] = groupId
}
if companyId != insiderHistoryWork.Company {
saveData["company"] = groupId
}
if departmentId != insiderHistoryWork.Department {
saveData["department"] = groupId
}
if sunDepartId != insiderHistoryWork.WorkShop {
saveData["workshop"] = groupId
}
if workId != insiderHistoryWork.WorkshopSection {
saveData["workshop_section"] = groupId
}
}
if requestData.Position == "" {
positionInt, _ := strconv.ParseInt(requestData.Position, 10, 64)
if positionInt != insiderHistoryWork.Position {
saveData["position"] = positionInt
}
}
if requestData.Team == "" {
if requestData.Team != strconv.FormatInt(insiderHistoryWork.Team, 10) {
saveData["position"] = requestData.Team
}
}
if requestData.StartTime == "" {
startTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.StartTime))
if startTime != insiderHistoryWork.StartTime {
saveData["start_time"] = startTime
}
}
if requestData.ChangeType != 0 {
if requestData.ChangeType != insiderHistoryWork.ChangeType {
saveData["change_type"] = requestData.ChangeType
}
}
if requestData.AssignType != 0 {
if requestData.AssignType != insiderHistoryWork.AssignType {
saveData["assign_type"] = requestData.AssignType
}
}
if requestData.EndTime != "" && requestData.EndTime != "0" && requestData.EndTime != "至今" {
endTime, endErr := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", requestData.EndTime))
if endErr == true {
if endTime != insiderHistoryWork.EndTime {
saveData["end_time"] = endTime
}
}
} else {
saveData["end_time"] = 0
}
if requestData.GradePositions != 0 && requestData.GradePositions != insiderHistoryWork.GradePositions {
saveData["grade_positions"] = requestData.GradePositions
}
if len(saveData) > 0 {
saveData["time"] = time.Now().Unix()
eidtErr := insiderHistoryWork.EditCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if eidtErr == nil {
overallhandle.Result(0, eidtErr, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
} else {
overallhandle.Result(0, getErr, c)
}
}
//编辑或删除集团内工作记录
func (s *StaffApi) EditOrDelInsideWorkHistoryState(c *gin.Context) {
var requestData eidtWorkState
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var doubleWorkCont models.InsideWorkHistory
wErr := doubleWorkCont.GetCont(map[string]interface{}{"`id`": requestData.Id})
if wErr != nil {
overallhandle.Result(107, requestData.Id, c)
return
}
if requestData.State == 0 {
requestData.State = 1
}
if requestData.IsDel <= 1 {
saveData := overallhandle.MapOut()
saveData["time"] = time.Now().Unix()
saveData["state"] = requestData.State
var eidtCont models.InsideWorkHistory
eidtErr := eidtCont.EditCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if eidtErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
} else {
if requestData.State == 3 {
delErr := overall.CONSTANT_DB_HR.Where(map[string]interface{}{"`id`": requestData.Id}).Delete(&models.InsideWorkHistory{}).Error
if delErr == nil {
overallhandle.Result(0, delErr, c)
} else {
overallhandle.Result(108, delErr, c)
}
} else {
saveData := overallhandle.MapOut()
saveData["time"] = time.Now().Unix()
saveData["state"] = requestData.State
var eidtCont models.InsideWorkHistory
eidtErr := eidtCont.EditCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if eidtErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
}
}
}
//集团内部工作经历列表
func (s *StaffApi) InsideWorkHistoryList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.InsideWorkView
gormDb := overall.CONSTANT_DB_HR.Model(&models.InsideWorkView{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("end_time asc").Order("start_time desc").Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}
//工作履历列表
func (s *StaffApi) WorkHistoryList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.WorkHistory
gormDb := overall.CONSTANT_DB_HR.Model(&models.WorkHistory{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}
//教育经历列表
func (s *StaffApi) PersonnelEducationList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.PersonnelEducation
gormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}
//家庭成员列表
func (s *StaffApi) FamilyMemBersList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.FamilyMembers
gormDb := overall.CONSTANT_DB_HR.Model(&models.FamilyMembers{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}
//紧急联系人列表
func (s *StaffApi) EmergencyContactList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.EmergencyContact
gormDb := overall.CONSTANT_DB_HR.Model(&models.EmergencyContact{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}
//双职工列表
func (s *StaffApi) DoubleWorkerList(c *gin.Context) {
var requestData allocationOfRightsToRole
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var insideWorkHistoryList []models.DoubleWorker
gormDb := overall.CONSTANT_DB_HR.Model(&models.DoubleWorker{}).Where("`state` IN (1,2) AND `key` = ?", requestData.Id)
err := gormDb.Order("`id` desc").Find(&insideWorkHistoryList).Error
if err != nil {
overallhandle.Result(107, err, c)
} else {
overallhandle.Result(0, insideWorkHistoryList, c)
}
}

82
api/version1/personnelapi/type.go

@ -28,11 +28,11 @@ type peopleList struct {
Name string `json:"name"` //name
HireClass int `json:"hireclass"` //雇佣类型
Company int64 `json:"company"` //公司
Deparment string `json:"deparment"` //部门
AdminOrg int64 `json:"adminorg"` //所属行政组织
Position int64 `json:"position"` //职位
EmpType int `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)
Role string `json:"role"`
// Deparment string `json:"deparment"` //部门
AdminOrg int64 `json:"adminorg"` //所属行政组织
Position int64 `json:"position"` //职位
EmpType int `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)
Role string `json:"role"`
}
//人员列表输出
@ -52,11 +52,13 @@ type peopleOutList struct {
}
type peopleManOutList struct {
models.ManCont
CompanyName string `json:"companyname"` //公司名称
MainDeparmentName string `json:"maindeparmentname"` //主部门
DeparmentName string `json:"deparmentname"` //部门名称
PositionName string `json:"positionname"` //职位
KeyStr string `json:"keystr"` //身份认证
CompanyName string `json:"companyname"` //公司名称
MainDeparmentName string `json:"maindeparmentname"` //主部门
SunMainDeparmentName string `json:"sunmaindeparmentname"` //二级主部门
// DeparmentName string `json:"deparmentname"` //部门名称
WorkPostName string `json:"workpostname"` //工段名称
PositionName string `json:"positionname"` //职位
KeyStr string `json:"keystr"` //身份认证
}
//获取部门细腻些
@ -82,6 +84,7 @@ type addPersonnel struct {
Position int64 `json:"position"` //职位(岗位)1
JobName string `json:"jobname"` //职务
PositionGrade int64 `json:"positiongrade"` //入职等级
Team string `json:"team"` //工段
//员工副表
Passportno string `json:"passportno"` //护照号码
Globalroaming string `json:"globalroaming"` //国际区号
@ -114,6 +117,20 @@ type addPersonnel struct {
EmergencyContact []emergencyContact `json:"emergencycontact"` //紧急联系人
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
//集团内工作履历
InsideWorkHistory []insideHistoryerMy `json:"insideworkhistory"` //工作履历
}
//集团内部工作履历
type insideHistoryerMy struct {
OrgId string `json:"orgid"` //行政组织
Position string `json:"position"` //职位
GradePositions int64 `json:"gradepositions"` //职等
StartTime string `json:"starttime"` //开始日期
EndTime string `json:"endtime"` //结束日期
ChangeType int `json:"changetype"` //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
AssignType int `json:"assigntype"` //1:主职,2:兼职
Team string `json:"team"` //班组
}
//教育经历
@ -171,7 +188,7 @@ type addKingdeePersonnel struct {
Name string `json:"name"` //姓名1
Icon string `json:"icon"` //头像
HireType int `json:"hiretype"` //1雇佣类型(1:雇佣入职;2:再入职;3:返聘)
EmpType int `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)
EmpType int `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职) int
Company string `json:"company"` //公司
MainDepartment string `json:"maindepartment"` //主部门
@ -180,7 +197,7 @@ type addKingdeePersonnel struct {
Position string `json:"position"` //职位(岗位)1
JobName string `json:"jobname"` //职务
PositionGrade int64 `json:"positiongrade"` //入职等级
PositionGrade int64 `json:"positiongrade"` //入职等级 int64
//员工副表
Passportno string `json:"passportno"` //护照号码
Globalroaming string `json:"globalroaming"` //国际区号
@ -191,27 +208,27 @@ type addKingdeePersonnel struct {
IDCardIsSued string `json:"idcardissued"` //身份证签发机关
Mobilephone string `json:"mobilephone"` //联系电话
Email string `json:"email"` //电子邮件
Gender int `json:"gender"` //性别
Gender int `json:"gender"` //性别 int
Birthday string `json:"birthday"` //生日
Nation string `json:"nation"` //民族
NativePlace string `json:"nativeplace"` //籍贯
Health int `json:"health"` //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废
Maritalstatus int `json:"maritalstatus"` //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)
Health int `json:"health"` //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废 int
Maritalstatus int `json:"maritalstatus"` //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异) int
CurrentResidence string `json:"currentresidence"` //现居地
WorkingDate string `json:"workingdate"` //参加工作日期
EntryDate string `json:"entrydate"` //入职日期
ProbationPeriod int `json:"probationperiod"` //试用期(月)
ConfirmationDate string `json:"confirmationdate"` //转正日期
ConfirmationDate string `json:"confirmationdate"` //转正日期 int
Constellation int `json:"constellation"` //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)
PoliticalOutlook int `json:"politicaloutlook"` //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
Constellation int `json:"constellation"` //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座) int
PoliticalOutlook int `json:"politicaloutlook"` //政治面貌(1:群众; 2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员) int
//退役军人
Isveterans int `json:"isveterans"` //是否为退役军人(1:是;2:否)
Isveterans int `json:"isveterans"` //是否为退役军人(1:是;2:否) int
Veteransnumber string `json:"veteransnumber"` //退役证编号
//双职工表
//是否为双职工
Iisdoubleworker int `json:"isdoubleworker"` //是否双职工(1:是;2:否)
Iisdoubleworker int `json:"isdoubleworker"` //是否双职工(1:是;2:否) int
SpouseName string `json:"spousename"` //配偶姓名
SpouseCompany string `json:"spousecompany"` //配偶所在公司
SpouseDepartment string `json:"spousedepartment"` //配偶所在部门
@ -220,18 +237,18 @@ type addKingdeePersonnel struct {
//教育经历表
//最高学历
HighestGraduationSchool string `json:"highestschool"` //毕业学校
HighestEducation int `json:"highesteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
HighestEducation int `json:"highesteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)int
HighestSubject string `json:"highestsubject"` //专业
HighestAdmissionTime string `json:"highestadmissiontime"` //入学时间
HighestGraduationTime string `json:"highestgraduationtime"` //毕业时间
HighestAcademicDegree int `json:"highestacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)
HighestAcademicDegree int `json:"highestacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)int
//第一学历
FirstGraduationSchool string `json:"firstschool"` //毕业学校
FirstEducation int `json:"firsteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
FirstEducation int `json:"firsteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)int
FirstSubject string `json:"firstsubject"` //专业
FirstAdmissionTime string `json:"firstadmissiontime"` //入学时间
FirstGraduationTime string `json:"firstgraduationtime"` //毕业时间
FirstAcademicDegree int `json:"firstacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)
FirstAcademicDegree int `json:"firstacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)int
//紧急联系人表
//紧急联系人一
@ -264,7 +281,15 @@ type staffArchivesCont struct {
EmergencyContact []emergencyContact `json:"emergencycontact"` //紧急联系人
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
InsideWorkHistory []insideHistory `json:"groupworkhistorylist"` //集团内工作履历
IdStr string `json:"idstr"`
CompanyName string `json:"companyname"` //公司名称
MainDeparmentName string `json:"maindeparmentname" ` //主部门
AdminOrgName string `json:"adminorgname"` //主岗位
PositionName string `json:"positionname"` //职位
JobClassName string `json:"jobclassname"` //职务分类
JobIdName string `json:"jobidname"` //职务
PoliticalOutlookName string `json:"politicaloutlookname"` //政治面貌
}
//双职工
@ -278,6 +303,7 @@ type DoubleWorkerCont struct {
Mobilephone string `json:"mobilephone"` //联系电话
}
type DoubleWorkerInFo struct {
Number string `json:"number"` //工号
Name string `json:"name"` //姓名
Company string `json:"company"` //公司
Department string `json:"department"` //分厂(部室)
@ -296,7 +322,7 @@ type educatExp struct {
type workHistoryAry struct {
Company string `json:"company"` //公司
Department string `json:"department"` //部门
Position string `json:"position"` //职务
Position string `json:"fposition"` //职务
EntryTime string `json:"entrytime"` //入职时间
LeaveDate string `json:"leavedate"` //离职日期
Witness string `json:"witness"` //证明人
@ -414,3 +440,9 @@ type insideHistory struct {
EndTime string `json:"endtime"` //结束日期
ChangeType int `json:"changetype"` //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
}
//编辑集团工作履历
type eidtInsideHistoryWork struct {
Id string `json:"id"`
insideHistoryerMy
}

113
api/version1/personnelapi/types.go

@ -0,0 +1,113 @@
package personnelapi
//添加员工参数
type addKingdeePersonneles struct {
Number string `json:"fnumber"` //工号1
Name string `json:"name"` //姓名1
Icon string `json:"icon"` //头像
HireType string `json:"hiretype"` //1雇佣类型(1:雇佣入职;2:再入职;3:返聘)int
EmpType string `json:"emptype"` //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职) int
Company string `json:"company"` //公司
MainDepartment string `json:"maindepartment"` //主部门
Department []string `json:"department"` //分厂(部室)
AdminOrg string `json:"adminorg"` //工段
Position string `json:"fposition"` //职位(岗位)1
JobName string `json:"jobname"` //职务
PositionGrade string `json:"positiongrade"` //入职等级 int64
//员工副表
Passportno string `json:"passportno"` //护照号码
Globalroaming string `json:"globalroaming"` //国际区号
IDCardNo string `json:"idcardno"` //身份证号码
IDCardStartTime string `json:"idcardstartdate"` //身份证有效期开始
IDCardEndTime string `json:"idcardenddate"` //身份证有效期结束
IDCardAddress string `json:"idcardaddress"` //身份证地址
IDCardIsSued string `json:"idcardissued"` //身份证签发机关
Mobilephone string `json:"mobilephone"` //联系电话
Email string `json:"email"` //电子邮件
Gender string `json:"gender"` //性别 int
Birthday string `json:"birthday"` //生日
Nation string `json:"nation"` //民族
NativePlace string `json:"nativeplace"` //籍贯
Health string `json:"health"` //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废 int
Maritalstatus string `json:"maritalstatus"` //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异) int
CurrentResidence string `json:"currentresidence"` //现居地
WorkingDate string `json:"workingdate"` //参加工作日期
EntryDate string `json:"entrydate"` //入职日期
ProbationPeriod string `json:"probationperiod"` //试用期(月)int
ConfirmationDate string `json:"confirmationdate"` //转正日期
Constellation string `json:"constellation"` //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座) int
PoliticalOutlook string `json:"politicaloutlook"` //政治面貌(1:群众; 2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员) int
//退役军人
Isveterans string `json:"isveterans"` //是否为退役军人(1:是;2:否) int
Veteransnumber string `json:"veteransnumber"` //退役证编号
//双职工表
//是否为双职工
Iisdoubleworker string `json:"isdoubleworker"` //是否双职工(1:是;2:否) int
SpouseName string `json:"spousename"` //配偶姓名
SpouseCompany string `json:"spousecompany"` //配偶所在公司
SpouseDepartment string `json:"spousedepartment"` //配偶所在部门
SpousePosition string `json:"spouseposition"` //配偶所在岗位
SpouseTel string `json:"spousetel"` //配偶联系方式
//教育经历表
//最高学历
HighestGraduationSchool string `json:"highestschool"` //毕业学校
HighestEducation string `json:"highesteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)int
HighestSubject string `json:"highestsubject"` //专业
HighestAdmissionTime string `json:"highestadmissiontime"` //入学时间
HighestGraduationTime string `json:"highestgraduationtime"` //毕业时间
HighestAcademicDegree string `json:"highestacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)int
//第一学历
FirstGraduationSchool string `json:"firstschool"` //毕业学校
FirstEducation string `json:"firsteducation"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)int
FirstSubject string `json:"firstsubject"` //专业
FirstAdmissionTime string `json:"firstadmissiontime"` //入学时间
FirstGraduationTime string `json:"firstgraduationtime"` //毕业时间
FirstAcademicDegree string `json:"firstacademicdegree"` //学位(0:无;1:学士;2:硕士;3:博士)int
//紧急联系人表
//紧急联系人一
UrgentNameOne string `json:"urgentnameone"` //姓名
UrgentRelationshipOne string `json:"urgentrelationshipone"` //与紧急联系人
UrgentMobilephoneOne string `json:"urgentmobilephoneone"` //联系电话
//紧急联系人二
UrgentNameTwo string `json:"urgentnametwo"` //姓名
UrgentRelationshipTwo string `json:"urgentrelationshiptwo"` //与紧急联系人
UrgentMobilephoneTwo string `json:"urgentmobilephonetwo"` //联系电话
//员工家属表
MemberOfFamily []memberOfFamilyes `json:"memberoffamily"` //家庭成员
//集团外工作履历
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
//集团内工作履历
InsideWorkHistory []insideHistoryer `json:"insideworkhistory"` //工作履历
}
//家庭成员
type memberOfFamilyes struct {
emergencyContact
Company string `json:"company"` //公司
Department string `json:"department"` //分厂(部室)
Position string `json:"fposition"` //职位(岗位)
PoliticalOutlook string `json:"politicaloutlook"` //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员) int
IdStr string `json:"idstr"`
}
//集团内部工作履历
type insideHistoryer struct {
Group string `json:"group"` //集团
Company string `json:"company"` //公司
Department string `json:"department"` //部室
Workshop string `json:"workshop"` //二级部门或车间
WorkshopSection string `json:"grop"` //`json:"workshopsection"` //工段
Position string `json:"fposition"` //职位
GradePositions int64 `json:"gradepositions"` //职等
StartTime string `json:"starttime"` //开始日期
EndTime string `json:"endtime"` //结束日期
ChangeType string `json:"changetype"` //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
AssignType string `json:"assigntype"`
// Grop string `json:"grop"` //工段
}

8
apirouter/organization/organization_group.go

@ -46,5 +46,13 @@ func (o *OrganizationRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("eitepositioncont", apiHandle.EitePositionCont) //编辑职位(岗位)
apiRouter.POST("eitepositionstateordel", apiHandle.EitePositionStateOrDel) //编辑职位(岗位)状态或删除
apiRouter.POST("getpositionrole", apiHandle.GetPositionRole) //岗位(职位)配权 GetPositionRole
//班组
apiRouter.POST("teamcontlist", apiHandle.TeamContList) //班组列表
apiRouter.POST("getteamcont", apiHandle.GetTeamCont) //获取班组
apiRouter.POST("addteamcont", apiHandle.AddTeamCont) //添加班组
apiRouter.POST("eiteteamcont", apiHandle.EiteTeamCont) //编辑班组
// apiRouter.POST("delteamcont", apiHandle.DelTeamCont) //删除班组
apiRouter.POST("eidtdelteamcont", apiHandle.EidtDelTeamCont) //编辑班组状态或删除
}
}

23
apirouter/personnel/people.go

@ -20,28 +20,37 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("archivescont", apiHandle.ArchivesCon) //个人档案
apiRouter.POST("kingdeehr", apiHandle.NewKingdee) //对接金蝶HR系统
//双职工
apiRouter.POST("doubleworkerlist", apiHandle.DoubleWorkerList) //双职工列表
apiRouter.POST("adddoubleworker", apiHandle.AddDoubleWorkerApi) //添加双职工
apiRouter.POST("eidtdoubleworker", apiHandle.EidtDoubleWorkerApi) //编辑双职工
apiRouter.POST("eidtdoubleworkerstate", apiHandle.EidtDoubleWorkerState) //编辑双职工状态
//员工资料
apiRouter.POST("eidtstaffcont", apiHandle.EidtStaffCont) //编辑员工资料
//紧急联系人
apiRouter.POST("addemercycall", apiHandle.AddEmercyCall) //添加紧急联系人
apiRouter.POST("editemercycall", apiHandle.EditEmercyCall) //编辑紧急联系人
apiRouter.POST("editemercycallstate", apiHandle.EditEmercyCallState) //编辑紧急联系人状态
apiRouter.POST("emergencycontactlist", apiHandle.EmergencyContactList) //紧急联系人列表
apiRouter.POST("addemercycall", apiHandle.AddEmercyCall) //添加紧急联系人
apiRouter.POST("editemercycall", apiHandle.EditEmercyCall) //编辑紧急联系人
apiRouter.POST("editemercycallstate", apiHandle.EditEmercyCallState) //编辑紧急联系人状态
//家庭成员
apiRouter.POST("familymemberslist", apiHandle.FamilyMemBersList) //家庭成员列表
apiRouter.POST("addfamilymembers", apiHandle.AddFamilyMembers) //添加家庭成员
apiRouter.POST("editfamilymembers", apiHandle.EditFamilyMembers) //编辑家庭成员
apiRouter.POST("editfamilymemberssatte", apiHandle.EditFamilyMembersSatte) //编辑家庭成员状态
//教育经历
apiRouter.POST("personneleducationlist", apiHandle.PersonnelEducationList) //教育经历列表
apiRouter.POST("addeducationalexperience", apiHandle.AddEducationalExperience) //添加教育经历
apiRouter.POST("editeducationalexperience", apiHandle.EditEducationalExperience) //编辑教育经历
apiRouter.POST("editeduexpstate", apiHandle.EditEduExpState) //编辑教育经历状态
//工作履历
apiRouter.POST("workhistorylist", apiHandle.WorkHistoryList) //工作履历列表
apiRouter.POST("addworkhistorycont", apiHandle.AddWorkHistoryCont) //添加工作履历
apiRouter.POST("editworkhistorycont", apiHandle.EditWorkHistoryCont) //编辑工作履历
apiRouter.POST("editworkhistorystate", apiHandle.EditWorkHistoryState) //编辑工作履历状态
//集团工作履历
apiRouter.POST("insideworkhistorylist", apiHandle.InsideWorkHistoryList) //集团工作履历列表
apiRouter.POST("addinsidehistory", apiHandle.AddInsideHistory) //添加集团工作履历
apiRouter.POST("eidtinsidehistoryworkcont", apiHandle.EidtInsideHistoryWorkCont) //编辑集团工作履历
apiRouter.POST("editordelinsideworkhistorystate", apiHandle.EditOrDelInsideWorkHistoryState) //编辑集团工作履历状态
}
}
@ -80,5 +89,11 @@ func (p *PersonnelRouteKingdee) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("addworkhistorycont", apiHandle.AddWorkHistoryCont) //添加工作履历
apiRouter.POST("editworkhistorycont", apiHandle.EditWorkHistoryCont) //编辑工作履历
apiRouter.POST("editworkhistorystate", apiHandle.EditWorkHistoryState) //编辑工作履历状态
//集团工作履历
apiRouter.POST("insideworkhistorylist", apiHandle.InsideWorkHistoryList) //集团工作履历列表
apiRouter.POST("addinsidehistory", apiHandle.AddInsideHistory) //添加集团工作履历
apiRouter.POST("eidtinsidehistoryworkcont", apiHandle.EidtInsideHistoryWorkCont) //编辑集团工作履历
apiRouter.POST("editordelinsideworkhistorystate", apiHandle.EditOrDelInsideWorkHistoryState) //编辑集团工作履历状态
}
}

12
identification/authentication.go

@ -76,6 +76,8 @@ func Validator() gin.HandlerFunc {
ContentTypeMd5.AppKey = empowerUser.VerificationCode
}
fmt.Printf("ContentTypeMd5Str ----->%v\n", ContentTypeMd5)
ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm()
//Origin
var OriginMd5 overallhandle.Md5Encryption
@ -111,7 +113,9 @@ func Validator() gin.HandlerFunc {
userKeyMd5Str := userKeyMd5.Md5EncryptionAlgorithm()
clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, userAgentMd5Str, originMd5Str, numberMd5, userKeyMd5Str, passWordMd5Str)
clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passWordMd5Str)
fmt.Printf("redisKey---->ContentTypeMd5Str:%v-originMd5Str:%v-userAgentMd5Str:%v-numberMd5:%v-userKeyMd5Str:%v-passwordMd5Str:%v\n", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passWordMd5Str)
//token 加密
var tokenMd5 overallhandle.Md5Encryption
@ -119,6 +123,7 @@ func Validator() gin.HandlerFunc {
if empowerUser.VerificationCode != "" {
tokenMd5.AppKey = empowerUser.VerificationCode
}
fmt.Printf("tokenMd5Appk ----->%v\n", tokenMd5)
tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm()
clearTokenStr := fmt.Sprintf("%v-%v", tokenMd5Str, numberMd5)
@ -146,10 +151,13 @@ func Validator() gin.HandlerFunc {
sss["clearTokenMd5Str"] = clearTokenMd5Str
sss["tokenMd5Str"] = tokenMd5Str
sss["clearCodeToken"] = clearCodeToken
sss["submitTokenStr"] = submitTokenStr
sss["clearTokenStr"] = clearTokenStr
sss["userToken"] = userToken
// tokenMd5Str, numberMd5
// overallhandle.Result(2004, "对不起!非法令牌!不可访问系统", c)
overallhandle.Result(2004, userToken, c, "对不起!非法令牌!不可访问系统")
overallhandle.Result(2004, sss, c, "对不起!非法令牌!不可访问系统")
c.Abort()
return
}

12
log/202206/20220629.log

File diff suppressed because one or more lines are too long

3
log/202206/20220630.log

File diff suppressed because one or more lines are too long

12
log/202207/20220701.log

File diff suppressed because one or more lines are too long

15
log/202207/20220702.log

File diff suppressed because one or more lines are too long

3
log/202207/20220703.log

File diff suppressed because one or more lines are too long

4
models/duties_class_leve.go

@ -13,9 +13,9 @@ type DutiesClassLeve struct {
Number string `json:"number" gorm:"column:d_num;type:varchar(50) unsigned;default:'';not null;comment:编码"`
State int `json:"state" gorm:"column:d_state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
KingdeeId string `json:"kingdeeid" gorm:"column:d_king;type:varchar(255) unsigned;default:'';comment:金蝶对照ID"`
ClassId int64 `json:"classid" gorm:"primaryKey;column:c_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务分类Id
ClassId int64 `json:"classid" gorm:"column:c_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务分类Id
ClassName string `json:"classname" gorm:"column:c_name;type:varchar(255) unsigned;default:'';not null;comment:职务分类名称"`
// LeveId int64 `json:"leveid" gorm:"primaryKey;column:l_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务等级Id
// LeveId int64 `json:"leveid" gorm:"column:l_id;type:bigint(20) unsigned;not null;comment:Id;index"` //职务等级Id
// LeveNumber string `json:"levenumber" gorm:"column:l_num;type:varchar(50) unsigned;default:'';not null;comment:等级编号"`
// LeveName string `json:"levename" gorm:"column:l_name;type:varchar(255) unsigned;default:'';not null;comment:等级名称"`
}

4
models/family_members.go

@ -8,7 +8,7 @@ import (
//员工家属
type FamilyMembers struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;not null;comment:员工工号;index"`
Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"`
Relationship string `json:"relationship" gorm:"column:relation;type:varchar(255) unsigned;default:'';not null;comment:亲属关系"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"`
Company string `json:"company" gorm:"column:company;type:varchar(255) unsigned;default:'';not null;comment:所在公司"`
@ -19,6 +19,8 @@ type FamilyMembers struct {
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
PoliticalOutlookCn string `json:"politicaloutlookcn" gorm:"column:political_outlook_cn;type:varchar(30) unsigned;not null;comment:政治面貌汉字说明"`
}
func (FamilyMembers *FamilyMembers) TableName() string {

7
models/inside_work_history.go

@ -5,7 +5,7 @@ import (
"strings"
)
//职务分类
//集团内部工作经历
type InsideWorkHistory struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Key int64 `json:"key" gorm:"column:key;type:bigint(20) unsigned;default:0;not null;comment:员工识别符"`
@ -18,17 +18,18 @@ type InsideWorkHistory struct {
GradePositions int64 `json:"gradepositions" gorm:"column:grade_positions;type:bigint(20) unsigned;default:0;not null;comment:职等"`
StartTime int64 `json:"starttime" gorm:"column:start_time;type:bigint(20) unsigned;default:0;not null;comment:开始日期"`
EndTime int64 `json:"endtime" gorm:"column:end_time;type:bigint(20) unsigned;default:0;not null;comment:结束日期"`
Team int `json:"team" gorm:"column:team;type:int(1) unsigned;default:1;not null;comment:班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
Team int64 `json:"team" gorm:"column:team;type:int(1) unsigned;default:1;not null;comment:班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
ChangeType int `json:"changetype" gorm:"column:change_type;type:int(1) unsigned;default:1;not null;comment:变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
AssignType int `json:"assigntype" gorm:"column:assign_type;type:int(1) unsigned;default:1;not null;comment:1、主职;2:兼职"`
}
func (InsideWorkHistory *InsideWorkHistory) TableName() string {
return "inside_work_history"
}
//编辑职务分类内容
//编辑集团内部工作经历内容
func (cont *InsideWorkHistory) EditCont(whereMap map[string]interface{}, saveData map[string]interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error
return

39
models/inside_work_view.go

@ -0,0 +1,39 @@
package models
import (
"hr_server/overall"
"strings"
)
type InsideWorkView struct {
InsideWorkHistory
GroupNumber string `json:"groupnumber" gorm:"column:g_number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
GroupName string `json:"groupname" gorm:"column:g_name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
CompanyNumber string `json:"companynumber" gorm:"column:c_number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
CompanyName string `json:"companyname" gorm:"column:c_name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
DepartmentNumber string `json:"departmentnumber" gorm:"column:d_number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
DepartmentName string `json:"departmentname" gorm:"column:d_name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
WorkShopNumber string `json:"workshopnumber" gorm:"column:ws_number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
WorkShopName string `json:"workshopname" gorm:"column:ws_name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
SectionNumber string `json:"sectionnumber" gorm:"column:w_number;type:varchar(50) unsigned;default:'';not null;comment:行政编码"`
SectionName string `json:"sectionnasectionme" gorm:"column:w_name;type:varchar(255) unsigned;default:'';not null;comment:组织名称"`
PostJobNumber string `json:"postjobnumber" gorm:"column:p_number;type:varchar(50) unsigned;default:'';not null;comment:职位编码"`
PostJobName string `json:"postjobname" gorm:"column:p_name;type:varchar(255) unsigned;default:'';not null;comment:职位名称"`
TeamName string `json:"teamname" gorm:"column:r_name;type:varchar(255) unsigned;default:'';not null;comment:班组名称"`
}
func (InsideWorkView *InsideWorkView) TableName() string {
return "inside_work_view"
}
//获取详细内容
func (cont *InsideWorkView) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

36
models/kingdee_log.go

@ -0,0 +1,36 @@
package models
import (
"hr_server/overall"
"strings"
)
//金蝶对照记录
type KingdeeLog struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Number string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:工号"`
Cont string `json:"cont" gorm:"column:cont;type:longtext unsigned;default:'';not null;comment:内容"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
}
func (KingdeeLog *KingdeeLog) TableName() string {
return "kingdee_log"
}
//编辑职务分类内容
func (KingdeeLog *KingdeeLog) EidtCont(whereMap map[string]interface{}, saveData map[string]interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&KingdeeLog).Where(whereMap).Updates(saveData).Error
return
}
//获取详细内容
func (cont *KingdeeLog) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

1
models/man_cont.go

@ -14,6 +14,7 @@ type ManCont struct {
EmpType int `json:"emptype" gorm:"column:emp_type;type:tinyint(1) unsigned;default:1;not null;comment:用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职)"`
Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;not null;comment:入职公司"`
MainDeparment int64 `json:"maindeparment" gorm:"column:maindeparment;type:bigint(20) unsigned;default:0;not null;comment:主部门"`
SunMainDeparment int64 `json:"sunmaindeparment" gorm:"column:sun_main_department;type:bigint(20) unsigned;default:0;not null;comment:二级主部门"`
Deparment string `json:"deparment" gorm:"column:deparment;type:text;comment:部门"`
AdminOrg int64 `json:"adminorg" gorm:"column:admin_org;type:bigint(20) unsigned;default:0;not null;comment:所属行政组织"`
Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;not null;comment:职位"`

1
models/org_cont_type.go

@ -14,6 +14,7 @@ type OrgContType struct {
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
TypeName string `json:"typename" gorm:"column:typename;type:varchar(255) unsigned;default:'';not null;comment:类型名称"`
Level int64 `json:"level" gorm:"column:level;type:int(5) unsigned;default:1;not null;comment:级别"`
IsPower int `json:"ispower" gorm:"column:ispower;type:int(1) unsigned;default:2;not null;comment:是否为实权部门"`
}
func (OrgContType *OrgContType) TableName() string {

6
models/personarchives.go

@ -17,6 +17,7 @@ type PersonArchives struct {
MainDeparment int64 `json:"maindeparment" gorm:"column:maindeparment;type:bigint(20) unsigned;default:0;not null;comment:主部门"`
Deparment string `json:"deparment" gorm:"column:deparment;type:text;comment:部门"`
AdminOrg int64 `json:"adminorg" gorm:"column:admin_org;type:bigint(20) unsigned;default:0;not null;comment:所属行政组织"`
TeamId int64 `json:"teamid" gorm:"column:teamid;type:bigint(20) unsigned;default:0;not null;comment:班组"`
Position int64 `json:"position" gorm:"column:position;type:bigint(20) unsigned;default:0;not null;comment:职位"`
JobClass int64 `json:"jobclass" gorm:"column:job_class;type:bigint(20) unsigned;default:2;not null;comment:职务分类"`
JobId int64 `json:"jobid" gorm:"column:job_id;type:bigint(20) unsigned;default:0;not null;comment:职务"`
@ -30,6 +31,11 @@ type PersonArchives struct {
IsAdmin int `json:"isadmin" gorm:"column:is_admin;type:tinyint(1) unsigned;default:1;not null;comment:是否为管理员(1:不是;2:分公司;3:集团管理员;4:超级管`
Password string `json:"password" gorm:"column:password;type:varchar(255) unsigned;default:'';not null;comment:密码"`
Role string `json:"role" gorm:"column:role;type:longtext;comment:角色"`
EmpTypeName string `json:"emptypename" gorm:"column:emp_type_name;type:varchar(255) unsigned;default:'';not null;comment:用工关系中文"`
HireClassName string `json:"hireclassname" gorm:"column:hire_class_name;type:varchar(255) unsigned;default:'';not null;comment:雇佣类型中文"`
SunMainDeparment int64 `json:"sunmaindeparment" gorm:"column:sun_main_deparment;type:bigint(20) unsigned;default:0;not null;comment:主部门"`
}
func (PersonArchives *PersonArchives) TableName() string {

5
models/personnel_content.go

@ -37,6 +37,11 @@ type PersonnelContent struct {
Planformaldate int64 `json:"planformaldate" gorm:"column:planformaldate;type:bigint(20) unsigned;default:0;comment:预计转正日期"`
PoliticalOutlook int `json:"politicaloutlook" gorm:"column:political_outlook;type:tinyint(3) unsigned;default:1;comment:政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
MaritalstatusCn string `json:"maritalstatuscn" gorm:"column:maritalstatus_cn;type:varchar(50) unsigned;default:'';not null;comment:婚姻状况汉字说明"`
ConstellationingCn string `json:"constellationingcn" gorm:"column:constellationing_cn;type:varchar(50) unsigned;default:'';not null;comment:星座汉字说明"`
PoliticalOutlookCn string `json:"politicaloutlookcn" gorm:"column:political_outlook_cn;type:varchar(50) unsigned;default:'';not null;comment:政治面貌汉字说明"`
HealthCn string `json:"healthcn" gorm:"column:health_cn;type:varchar(50) unsigned;default:'';not null;comment:健康状况中文说明"`
}
func (PersonnelContent *PersonnelContent) TableName() string {

5
models/personnel_education.go

@ -9,7 +9,7 @@ import (
type PersonnelEducation struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"primaryKey;column:number;type:varchar(30) unsigned;comment:员工工号;index"`
Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;comment:员工工号"`
Education int `json:"education" gorm:"column:education;type:int(5) unsigned;default:1;comment:学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)"`
GraduationSchool string `json:"graduationschool" gorm:"column:graduation_school;type:varchar(255) unsigned;default:'';comment:毕业学校"`
Subject string `json:"subject" gorm:"column:subject;type:varchar(255) unsigned;default:'';comment:专业"`
@ -20,6 +20,9 @@ type PersonnelEducation struct {
AcademicDegree int `json:"academicdegree" gorm:"column:academic_degree;type:tinyint(2) unsigned;default:1;comment:学位(1:无;2:学士;3:硕士;4:博士)"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
AcademicDegreeCn string `json:"academicdegreecn" gorm:"column:academic_degree_cn;type:varchar(30) unsigned;comment:学位中文说明"`
EducationCn string `json:"educationcn" gorm:"column:education_cn;type:varchar(30) unsigned;comment:学历中文说明"`
}
func (PersonnelEducation *PersonnelEducation) TableName() string {

36
models/teamgroup.go

@ -0,0 +1,36 @@
package models
import (
"hr_server/overall"
"strings"
)
//班组
type TeamGroup struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:班组名称"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
}
func (TeamGroup *TeamGroup) TableName() string {
return "teamgroup"
}
//编辑班组内容
func (TeamGroup *TeamGroup) EiteTeamGroupCont(whereMap map[string]interface{}, saveData map[string]interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&TeamGroup).Where(whereMap).Updates(saveData).Error
return
}
//获取详细内容
func (cont *TeamGroup) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_HR.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}

146
overall/overallhandle/overall_handle.go

@ -580,3 +580,149 @@ func DifferenceSet[T GenericityVariable](one, two []T) []T {
}
return three
}
//判断类型转换成
/*
字符转int
*/
func StringToInt(val interface{}) (int, error) {
switch val.(type) {
case string:
return strconv.Atoi(val.(string))
case int:
return val.(int), nil
default:
return 0, nil
}
return 0, nil
}
/*
字符转int64
*/
func StringToInt64(val interface{}) (int64, error) {
switch val.(type) {
case string:
return strconv.ParseInt(val.(string), 10, 64)
case int:
return int64(val.(int)), nil
case int64:
return val.(int64), nil
default:
return 0, nil
}
return 0, nil
}
/*
政治面貌
(1群众 2无党派3台盟会员4九三社员5致公党员6农工党员7民进会员8民建会员9民盟盟员10民革会员11共青团员12预备党员13中共党员)
*/
func PolitiToString(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 "中共党员"
default:
return "群众"
}
}
//递归查找
func RecursionOrgLeve(superior int64, leve int64) (groupId int64) {
if leve == 0 {
leve = 1
}
var orgMap models.OrgContType
err := orgMap.GetCont(map[string]interface{}{"`id`": superior, "`state`": 1}, "`id`", "`superior`", "`level`")
if err != nil {
return
}
if orgMap.Level <= leve {
groupId = orgMap.Id
return
} else {
groupId = RecursionOrgLeve(orgMap.Superior, leve)
}
return
}
//获取集团、公司、部门、二级部门、工段
func GetOrgStructure(orgId int64) (groupId, companyId, departmentId, sunDepartId, workShopId int64) {
var orgContTypeInfo models.OrgContType
err := orgContTypeInfo.GetCont(map[string]interface{}{"`id`": orgId})
if err != nil {
return
}
switch orgContTypeInfo.Level {
case 1:
groupId = orgContTypeInfo.Id
case 2:
groupId = RecursionOrgLeve(orgContTypeInfo.Superior, 1)
workShopId = orgContTypeInfo.Id
case 3:
groupId = RecursionOrgLeve(orgContTypeInfo.Superior, 2)
companyId = orgContTypeInfo.Id
case 4:
groupId = RecursionOrgLeve(orgContTypeInfo.Superior, 2)
companyId = RecursionOrgLeve(orgContTypeInfo.Superior, 3)
departmentId = orgContTypeInfo.Id
case 5:
groupId = RecursionOrgLeve(orgContTypeInfo.Superior, 2)
companyId = RecursionOrgLeve(orgContTypeInfo.Superior, 3)
departmentId = RecursionOrgLeve(orgContTypeInfo.Superior, 4)
sunDepartId = orgContTypeInfo.Id
case 6:
groupId = RecursionOrgLeve(orgContTypeInfo.Superior, 2)
companyId = RecursionOrgLeve(orgContTypeInfo.Superior, 3)
departmentId = RecursionOrgLeve(orgContTypeInfo.Superior, 4)
sunDepartId = RecursionOrgLeve(orgContTypeInfo.Superior, 5)
workShopId = orgContTypeInfo.Id
default:
groupId = orgContTypeInfo.Id
companyId = orgContTypeInfo.Id
workShopId = orgContTypeInfo.Id
}
return
}
//获取指定行政组织id,所有子类
func GetDepartmentSun(superior int64, idary []int64) (orgIdAry []int64) {
var orgAry []models.AdministrativeOrganization
err := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Select("`id`").Where("`state` = 1 AND `superior` = ?", superior).Find(&orgAry).Error
if err != nil {
return
}
for _, v := range orgAry {
if IsInTrue[int64](v.Id, orgIdAry) == false {
orgIdAry = append(orgIdAry, v.Id)
GetDepartmentSun(v.Id, orgIdAry)
} else {
GetDepartmentSun(v.Id, orgIdAry)
}
}
return
}

247
参数对照与问题说明.md

@ -0,0 +1,247 @@
## 参数对照与问题说明
### 参数对照
```json
{
//主
"fnumber": "207488", //工号
"name": "王明明", //姓名1
"positiongrade": "", //入职等级 int64
"emptype": "正式员工", //用工关系(1:实习生;2:待分配;3:试用员工;4:正式员工;5:停薪留职;6:退休;7:辞退;8:离职) int
"icon": "", //头像
"maindepartment": "ArIAAAAAAZ3M567U", //主部门
"hiretype": "", //1雇佣类型(1:雇佣入职;2:再入职;3:返聘)
"company": "ArIAAAAAAZ3M567U", //公司
"fposition": "egp3YvoIRo+39jgSX8wYFnSuYS4=", //职位
//员工副表
"idcardno": "370786198401123019", //身份证号码
"maritalstatus": "已婚", //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异) int
"birthday": "1984-01-12 00:00:00",//生日
"nation": "汉族",//民族
"probationperiod": "0", //试用期(月)int
"constellation": "摩羯座", //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)
"mobilephone": "13953717979", //联系电话
"nativeplace": "山东省潍坊市昌邑市", //籍贯
"politicaloutlook": "", //政治面貌(1:群众; 2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
"currentresidence": "济宁市嵩文大道", //现居地
"gender": "男", //性别
"entrydate": "2021-03-01 00:00:00", //入职日期
"workingdate": "2013-10-29 00:00:00", //参加工作日期
"health": "良好", //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废
"confirmationdate": "",//转正日期
//退役军人
"isveterans": "1", //是否为退役军人(1:是;2:否) int
"veteransnumber": "", //退役证编号
//是否为双职工
"spousename": "", //配偶姓名
"isdoubleworker": "1", //是否双职工(1:是;2:否)
"spousecompany": "",//配偶所在公司
"spousedepartment": "", //配偶所在部门
"spouseposition": "", //配偶所在岗位
"spousetel": "",//配偶联系方式
//紧急联系人一
"urgentnameone": "侯亚利", //姓名
"urgentrelationshipone": "",//与紧急联系人关系
"urgentmobilephoneone": "15166730668", //联系电话
//紧急联系人二
"urgentnametwo": "", //姓名
"urgentrelationshiptwo": "", //与紧急联系人关系
"urgentmobilephonetwo": "", //联系电话
//最高学历
"highestschool": "江南大学", //毕业学校
"highestsubject": "工商管理专业", //专业
"highestadmissiontime": "2017-09-01 00:00:00", //入学时间
"highestgraduationtime": "2020-01-20 00:00:00",//毕业时间
"highestacademicdegree": "", //学位(0:无;1:学士;2:硕士;3:博士)int
"highesteducation": "5a35e819-0101-1000-e000-1a1fc0a83c7f9B3E5DD3", //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)int
//第一学历
"firstsubject": "工商管理专业", //专业
"firstschool": "江南大学", //毕业学校
"firstadmissiontime": "", //入学时间
"firstgraduationtime": "2020-01-20 00:00:00", //毕业时间
"firstacademicdegree": "", //学位(0:无;1:学士;2:硕士;3:博士)int
"firsteducation": "5a35e819-0101-1000-e000-1a1fc0a83c7f9B3E5DD3", //学历
//家庭成员
"memberoffamily":[
{ //您的数据结构
"fid": "ArIAAAAmGH+A733t",
"sjh": "",
"dw": "济宁高新区中心小学",
"glgx": "配偶",
"gxmc": "侯亚丽",
"zzmm": ""
},
{//我这边接收的数据参数
"name":"",
"relationship":"",
"mobilephone":"",
"company":"", //公司
"department":"", //分厂(部室)
"fposition":"", //职位(岗位)
"politicaloutlook":"", //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
}
],
//集团内部工作履历
"insideworkhistory": [
{ //您的数据结构
"fid": "ArIAAAAmGH+A733t",
"assigntype": "主职",
"changetype": "雇佣入职",
"gradepositions": "",
"fposition": "qYNSJ5nzSkqChrWfqMvRWXSuYS4=",
"endtime": "2021-05-31 00:00:00",
"company": "ArIAAAAAAZ3M567U",
"starttime": "2021-03-01 00:00:00",
"grop": "ArIAAAAENnfM567U",
"department": "ArIAAAAAAZ3M567U",
"workshopsection": "qYNSJ5nzSkqChrWfqMvRWXSuYS4="
},
{//我这边接收的数据参数
"group":"", //集团
"company":"", //公司
"department":"", //部室
"workshop":"", //二级部门或车间
"workshopsection":"", //工段
"fposition":"", //职位
"gradepositions":"", //职等
"starttime":"", //开始日期
"endtime":"", //结束日期
"changetype":"", //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
}
],
//工作履历
"workhistorylist": [
{
"witness": "", //证明人
"entrytime": "1999-01-01 00:00:00", //入职时间
"fpersonid": "ArIAAAAmGH+A733t",
"fjob": "",
"fposition": "", //职务
"leavedate": "2002-04-02 00:00:00", //离职日期
"company": "青岛海景花园后厨", //公司
"department": "", //部门
"witnesstel": "", //证明人电话
"remarks": "" //备注
}
]
}
```
### 问题说明
1、我这边没有的参数,不知代表什么事项
```json
"idcardbegindate": "", //无
"fid": "ArIAAAAmGH+A733t",
"idcardissueorg": "",
"assigntype": "主职",
"idcardenddate": "",
```
2、我这边需要,未传的参数
```json
"adminorg":"", //主行政组织
"jobname":"",//主职务
"idcardnostarttime":"", //身份证有效期开始
"idcardnoendtime":"", //身份证有效期结束
"idcardnoaddress":"", //身份证地址
"idcardissued":"", //身份证签发机关
"email":"", //电子邮件
```
3、学位与学历这块没有传给我基础数据。我这边拿不到具体值
```json
"highesteducation": "5a35e819-0101-1000-e000-1a1fc0a83c7f9B3E5DD3", 学位没有对照值
"firsteducation": "5a35e819-0101-1000-e000-1a1fc0a83c7f9B3E5DD3", 学历
```
4、家庭成员参数不匹配
```json
{
"memberoffamily":[
{ //您的数据结构
"fid": "ArIAAAAmGH+A733t",
"sjh": "",
"dw": "济宁高新区中心小学",
"glgx": "配偶",
"gxmc": "侯亚丽",
"zzmm": ""
},
{//我这边接收的数据参数
"name":"",
"relationship":"",
"mobilephone":"",
"company":"", //公司
"department":"", //分厂(部室)
"fposition":"", //职位(岗位)
"politicaloutlook":"", //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
}
],
}
```
5、集团内工作履历参数不匹配
```json
{
"insideworkhistory": [
{ //您的数据结构
"fid": "ArIAAAAmGH+A733t",
"assigntype": "主职",
"changetype": "雇佣入职",
"gradepositions": "",
"fposition": "qYNSJ5nzSkqChrWfqMvRWXSuYS4=",
"endtime": "2021-05-31 00:00:00",
"company": "ArIAAAAAAZ3M567U",
"starttime": "2021-03-01 00:00:00",
"grop": "ArIAAAAENnfM567U",
"department": "ArIAAAAAAZ3M567U",
"workshopsection": "qYNSJ5nzSkqChrWfqMvRWXSuYS4="
},
{//我这边接收的数据参数
"group":"", //集团
"company":"", //公司
"department":"", //部室
"workshop":"", //二级部门或车间
"workshopsection":"", //工段
"fposition":"", //职位
"gradepositions":"", //职等
"starttime":"", //开始日期
"endtime":"", //结束日期
"changetype":"", //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
}
]
}
```
Loading…
Cancel
Save