Browse Source

金蝶接口对症

v1.1_dev
超级管理员 3 years ago
parent
commit
135f4bb111
  1. 2
      README.md
  2. 12
      api/version1/administrativeorganization/job_class.go
  3. 7
      api/version1/administrativeorganization/type.go
  4. BIN
      api/version1/personnelapi/__debug_bin.exe
  5. 965
      api/version1/personnelapi/kingdeenew.go
  6. 449
      api/version1/personnelapi/staffarchives.go
  7. 82
      api/version1/personnelapi/type.go
  8. 1
      apirouter/inlet.go
  9. 28
      apirouter/personnel/people.go
  10. 1
      apirouter/personnel/type.go
  11. BIN
      hr_server.exe
  12. 9
      identification/authentication.go
  13. 10
      initialization/route/route_entry.go
  14. 149
      log/202206/20220602.log
  15. 14
      log/202206/20220603.log
  16. 28
      log/202206/20220604.log
  17. 175
      log/202206/20220607.log
  18. 13
      log/202206/20220614.log
  19. 15
      log/202206/20220615.log
  20. 3
      log/202206/20220616.log
  21. 501
      log/20220603.log
  22. 23
      log/20220604.log
  23. 3
      models/double_worker.go
  24. 1
      models/emergency_contact.go
  25. 2
      models/family_members.go
  26. 74
      models/man_cont.go
  27. 17
      models/myuser.go
  28. 2
      models/personnel_change_record.go
  29. 13
      models/personnel_content.go
  30. 2
      models/personnel_education.go
  31. 51
      models/work_history.go

2
README.md

@ -85,7 +85,7 @@
| code | | 状态码 |
| msg | | 信息 |
| data | | 附加值 |
| | token | Token |
| | token | Token(有效时间为180分钟) |
| | number | 随机数 |

12
api/version1/administrativeorganization/job_class.go

@ -21,7 +21,7 @@ func (o *OrganizationApi) DutiesClassList(c *gin.Context) {
requestData.PageSize = 10
}
var jobClassList []models.JobClass
gormDb := overall.CONSTANT_DB_HR.Model(&models.JobClass{})
gormDb := overall.CONSTANT_DB_HR.Model(&models.JobClass{}).Select("`id`", "`name`", "`state`")
if requestData.Name != "" {
// nameFactor := fmt.Sprintf("%%v%")
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData.Name+"%")
@ -36,8 +36,16 @@ func (o *OrganizationApi) DutiesClassList(c *gin.Context) {
if errGorm != nil {
overallhandle.Result(105, errGorm, c)
} else {
var jobClassAry []outJobClassList
for _, v := range jobClassList {
var jobClassCont outJobClassList
jobClassCont.Id = strconv.FormatInt(v.Id, 10)
jobClassCont.Name = v.Name
jobClassCont.State = v.State
jobClassAry = append(jobClassAry, jobClassCont)
}
// overallhandle.Result(0, jobClassList, c)
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(jobClassList)), jobClassList, c)
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(jobClassAry)), jobClassAry, c)
}
}

7
api/version1/administrativeorganization/type.go

@ -188,3 +188,10 @@ type powerConfigList struct {
Child []powerConfigList `json:"child"`
MenuOperation []powerCont `json:"menuOperation"`
}
//输出职务分类列表
type outJobClassList struct {
Id string `json:"id"`
Name string `json:"name"`
State int `json:"state"`
}

BIN
api/version1/personnelapi/__debug_bin.exe

Binary file not shown.

965
api/version1/personnelapi/kingdeenew.go

@ -0,0 +1,965 @@
package personnelapi
import (
"fmt"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
//金蝶人员信息对接
func (s *StaffApi) NewKingdee(c *gin.Context) {
var requestData addKingdeePersonnel
c.ShouldBindJSON(&requestData)
if requestData.Number == "" {
overallhandle.Result(1, requestData.Number, c, "工号不能为空!")
return
}
var manContent models.PersonArchives
manErr := manContent.GetCont(map[string]interface{}{"`number`": requestData.Number})
if manErr == nil {
//已经存在!进行变动操作
manErr = eidtAddManContJinDie(manContent, requestData)
} else {
//不存在!进行新增操作
var oldSchool models.WorkMan
oldSchool.GetCont(map[string]interface{}{"wm_number": requestData.Number})
manErr = newAddManContJinDie(oldSchool, requestData)
}
if manErr != nil {
overallhandle.Result(104, manErr, c)
return
}
overallhandle.Result(0, manErr, c)
}
//编辑员工
func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePersonnel) error {
eidtManCont := overallhandle.MapOut()
if manCont.Name != "" && manCont.Name != perArcInfo.Name {
eidtManCont["`name`"] = manCont.Name
}
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.EmpType != 0 && manCont.EmpType != perArcInfo.EmpType {
eidtManCont["`emp_type`"] = manCont.EmpType
}
//人员变更记录
var manChangeRecord models.PersonnelChangeRecord
changeRecordTrue := false
//公司
if manCont.Company != "" {
var orgCompany models.AdministrativeOrganization
orgErr := orgCompany.GetCont(map[string]interface{}{"kingdeeid": manCont.Company}, "`id`")
if orgErr == nil {
if orgCompany.Id != perArcInfo.Company {
eidtManCont["`company`"] = orgCompany.Id
changeRecordTrue = true
}
manChangeRecord.Company = orgCompany.Id
}
}
//主部门
if manCont.MainDepartment != "" {
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
changeRecordTrue = true
}
manChangeRecord.MainDepartment = orgMainDepart.Id
}
}
//部门
if len(manCont.Department) > 0 {
var departId []string
if manCont.MainDepartment != "" {
if overallhandle.IsInTrue[string](manCont.MainDepartment, manCont.Department) == false {
manCont.Department = append(manCont.Department, manCont.MainDepartment)
}
}
for _, dv := range manCont.Department {
var orgMainDepartAry models.AdministrativeOrganization
orgErr := orgMainDepartAry.GetCont(map[string]interface{}{"kingdeeid": dv}, "`id`")
if orgErr == nil {
orgIdStr := strconv.FormatInt(orgMainDepartAry.Id, 10)
if overallhandle.StringIsInMap(orgIdStr, departId) == false {
departId = append(departId, orgIdStr)
}
}
}
oldDepart := strings.Split(perArcInfo.Deparment, ",")
chaJiDepart := overallhandle.DifferenceSet[string](departId, oldDepart)
if len(chaJiDepart) > 0 {
departIdStr := strings.Join(departId, ",")
eidtManCont["`deparment`"] = departIdStr
manChangeRecord.Department = departIdStr
changeRecordTrue = true
}
}
//行政组织
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
positErr := positionCont.GetCont(map[string]interface{}{`kingdeeid`: manCont.Position}, "`id`")
if positErr == nil {
if positionCont.Id != perArcInfo.Position {
eidtManCont["`position`"] = positionCont.Id
changeRecordTrue = true
}
manChangeRecord.Position = positionCont.Id
}
}
//职务
if manCont.JobName != "" {
var dutiesCont models.DutiesClassLeve
dutiesErr := dutiesCont.GetCont(map[string]interface{}{"`d_king`": manCont.JobName}, "d_id")
if dutiesErr == nil {
if dutiesCont.Id != perArcInfo.Position {
eidtManCont["`job_id`"] = dutiesCont.Id
changeRecordTrue = true
}
if dutiesCont.ClassId != perArcInfo.JobClass {
eidtManCont["`job_class`"] = dutiesCont.ClassId
changeRecordTrue = true
}
manChangeRecord.JobId = dutiesCont.Id
manChangeRecord.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
if manCont.PositionGrade != perArcInfo.JobLeve {
eidtManCont["`job_leve`"] = manCont.PositionGrade
}
manChangeRecord.JobLevel = manCont.PositionGrade
changeRecordTrue = true
}
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)
if eidtErrMain != nil {
return eidtErrMain
} else {
if changeRecordTrue == true {
//写入变动记录
manChangeRecord.Type = manCont.HireType
manChangeRecord.Number = perArcInfo.Number
manChangeRecord.Time = time.Now().Unix()
manChangeRecord.Key = perArcInfo.Key
// rybdErr := overall.CONSTANT_DB_HR.Create(&manChangeRecord).Error
// 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.Wait()
}
}
return nil
}
//新增员工
func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel) error {
manKeyNum := overallhandle.TableNumber()
if oldSchool.Key != 0 {
manKeyNum = oldSchool.Key
}
var manMainCont models.PersonArchives
manMainCont.Number = manCont.Number
manMainCont.Name = manCont.Name
manMainCont.Icon = manCont.Icon
manMainCont.HireClass = manCont.HireType
manMainCont.EmpType = manCont.EmpType
timeTady := time.Now().Unix()
manMainCont.Time = timeTady
manMainCont.EiteTime = timeTady
manMainCont.State = 1
if manCont.Company != "" {
var orgCompany models.AdministrativeOrganization
orgErr := orgCompany.GetCont(map[string]interface{}{"kingdeeid": manCont.Company}, "`id`")
if orgErr == nil {
manMainCont.Company = orgCompany.Id
}
}
if manCont.MainDepartment != "" {
var orgMainDepart models.AdministrativeOrganization
orgErr := orgMainDepart.GetCont(map[string]interface{}{"kingdeeid": manCont.MainDepartment}, "`id`")
if orgErr == nil {
manMainCont.MainDeparment = orgMainDepart.Id
}
}
if len(manCont.Department) > 0 {
var departId []string
if manCont.MainDepartment != "" {
if overallhandle.IsInTrue[string](manCont.MainDepartment, manCont.Department) == false {
manCont.Department = append(manCont.Department, manCont.MainDepartment)
}
}
for _, dv := range manCont.Department {
var orgMainDepartAry models.AdministrativeOrganization
orgErr := orgMainDepartAry.GetCont(map[string]interface{}{"kingdeeid": dv}, "`id`")
if orgErr == nil {
orgIdStr := strconv.FormatInt(orgMainDepartAry.Id, 10)
if overallhandle.StringIsInMap(orgIdStr, departId) == false {
departId = append(departId, orgIdStr)
}
}
}
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.Position != "" {
var positionCont models.Position
positErr := positionCont.GetCont(map[string]interface{}{`kingdeeid`: manCont.Position}, "`id`")
if positErr == nil {
manMainCont.Position = positionCont.Id
}
}
//职务
if manCont.JobName != "" {
var dutiesCont models.DutiesClassLeve
dutiesErr := dutiesCont.GetCont(map[string]interface{}{"`d_king`": manCont.JobName}, "d_id", "c_id")
if dutiesErr == nil {
manMainCont.JobId = dutiesCont.Id
manMainCont.JobClass = dutiesCont.ClassId
}
}
if manCont.PositionGrade != 0 {
manMainCont.JobLeve = manCont.PositionGrade
}
//获取老人员主表内容
var oldPersonArchives models.Personnel
oldPersErr := overall.CONSTANT_DB_HR_Jin.Where(map[string]interface{}{"`number`": manCont.Number}).First(&oldPersonArchives).Error
if oldPersErr == nil {
if manCont.Icon == "" {
manMainCont.Icon = oldPersonArchives.Icon
}
if oldPersonArchives.Key != 0 {
manMainCont.Key = oldPersonArchives.Key
} else {
manMainCont.Key = manKeyNum
}
if oldPersonArchives.Wechat != "" {
manMainCont.Wechat = oldPersonArchives.Wechat
}
if oldPersonArchives.WorkWechat != "" {
manMainCont.WorkWechat = oldPersonArchives.WorkWechat
}
manMainCont.IsAdmin = oldPersonArchives.IsAdmin
manMainCont.Role = oldPersonArchives.Role
if oldPersonArchives.Password != "" {
manMainCont.Password = oldPersonArchives.Password
} else {
//密码加密
var passwordMd5 overallhandle.Md5Encryption
passwordMd5.Md5EncryptionInit(overall.CONSTANT_CONFIG.Appsetup.DefaultPassword)
manMainCont.Password = passwordMd5.Md5EncryptionAlgorithm()
}
} else {
manMainCont.Key = manKeyNum
if oldSchool.Password != "" {
manMainCont.Password = oldSchool.Password
} else {
//密码加密
var passwordMd5 overallhandle.Md5Encryption
passwordMd5.Md5EncryptionInit(overall.CONSTANT_CONFIG.Appsetup.DefaultPassword)
manMainCont.Password = passwordMd5.Md5EncryptionAlgorithm()
}
if oldSchool.WorkWechatId != "" {
manMainCont.WorkWechat = oldSchool.WorkWechatId
}
if oldSchool.WechatId != "" {
manMainCont.Wechat = oldSchool.WechatId
}
}
addManContErr := overall.CONSTANT_DB_HR.Create(&manMainCont).Error
if addManContErr != nil {
return addManContErr
} else {
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryDataNew(manKeyNum, manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPersonNew(manKeyNum, manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembersNew(manKeyNum, manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdeeNew(manKeyNum, manCont)
//编辑工作履历
synPro.Add(1)
go editWorkHistoryMan(manKeyNum, manCont.Number, manCont.WorkHistoryList)
synPro.Wait()
}
return nil
}
//编辑人员附属信息
func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
defer synPro.Done()
var manInfo models.PersonnelContent
manErr := manInfo.GetCont(map[string]interface{}{"`key`": manKeyNum})
if manErr == nil {
saveData := overallhandle.MapOut()
if manCont.IDCardNo != "" && manCont.IDCardNo != manInfo.Idcardno {
saveData["idcardno"] = manCont.IDCardNo
}
if manCont.IDCardStartTime != "" {
idCardStarTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardStartTime))
if idCardStarTime != manInfo.Idcardstartdate {
saveData["idcardstartdate"] = idCardStarTime
}
}
if manCont.IDCardEndTime != "" {
idCardEndTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
if idCardEndTime != manInfo.Idcardenddate {
saveData["idcardenddate"] = idCardEndTime
}
}
if manCont.IDCardAddress != "" && manCont.IDCardAddress != manInfo.Idcardaddress {
saveData["idcardaddress"] = manCont.IDCardAddress
}
if manCont.IDCardIsSued != "" && manCont.IDCardIsSued != manInfo.IdcardIssued {
saveData["idcardIssued"] = manCont.IDCardIsSued
}
if manCont.Mobilephone != "" && manCont.Mobilephone != manInfo.Mobilephone {
saveData["mobilephone"] = manCont.Mobilephone
}
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.Birthday != "" {
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
if brrthday != manInfo.Birthday {
saveData["birthday"] = brrthday
}
}
if manCont.Nation != "" && manCont.Nation != manInfo.Myfolk {
saveData["myfolk"] = manCont.Nation
}
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.Maritalstatus != 0 && manCont.Maritalstatus != manInfo.Maritalstatus {
saveData["maritalstatus"] = 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.Iisdoubleworker != 0 && manCont.Iisdoubleworker != manInfo.Isdoubleworker {
saveData["isdoubleworker"] = manCont.Iisdoubleworker
// eidtDoubleWorker(manCont, manCont.Iisdoubleworker)
eidtDoubleWorkerNew(manKeyNum, manCont, manCont.Iisdoubleworker)
}
if manCont.Isveterans != 0 && manCont.Isveterans != manInfo.Isveterans {
saveData["isveterans"] = manCont.Isveterans
if manCont.Isveterans == 1 {
if manCont.Veteransnumber != "" && manCont.Veteransnumber != manInfo.Veteransnumber {
saveData["veteransnumber"] = manCont.Veteransnumber
}
} else {
saveData["veteransnumber"] = ""
}
}
if manCont.WorkingDate != "" {
workInData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
if workInData != manInfo.Jobstartdate {
saveData["jobstartdate"] = workInData
}
}
if manCont.EntryDate != "" {
entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
if entryData != manInfo.Entrydate {
saveData["entrydate"] = entryData
}
}
if manCont.ProbationPeriod != 0 && manCont.ProbationPeriod != manInfo.Probationperiod {
saveData["probationperiod"] = manCont.ProbationPeriod
entryData := manInfo.Entrydate
if manCont.EntryDate != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
planformalData := overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
saveData["planformaldate"] = planformalData
}
if manCont.ConfirmationDate != "" {
planformalData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
saveData["planformaldate"] = planformalData
}
if manCont.PoliticalOutlook != 0 && manCont.PoliticalOutlook != manInfo.PoliticalOutlook {
saveData["political_outlook"] = manCont.PoliticalOutlook
}
if len(saveData) > 0 {
saveData["`time`"] = time.Now().Unix()
manInfo.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
}
} else {
manInfo.Key = manKeyNum
manInfo.Number = manCont.Number
manInfo.Idcardno = manCont.IDCardNo
idCardStarTime := time.Now().Unix()
if manCont.IDCardStartTime != "" {
idCardStarTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardStartTime))
}
manInfo.Idcardstartdate = idCardStarTime //身份证有效期开始
idCardEndTime := time.Now().Unix()
if manCont.IDCardEndTime != "" {
idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
}
manInfo.Idcardenddate = idCardEndTime //身份证有效期结束
manInfo.Idcardaddress = manCont.IDCardAddress //身份证地址
manInfo.IdcardIssued = manCont.IDCardIsSued //身份证签发机关
manInfo.Mobilephone = manCont.Mobilephone
manInfo.Email = manCont.Email
manInfo.Gender = manCont.Gender
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
manInfo.Birthday = brrthday
manInfo.Myfolk = manCont.Nation
manInfo.Nativeplace = manCont.NativePlace
manInfo.Health = manCont.Health
manInfo.Maritalstatus = manCont.Maritalstatus
manInfo.Currentresidence = manCont.CurrentResidence
manInfo.Time = time.Now().Unix()
manInfo.Constellation = manCont.Constellation
manInfo.Isdoubleworker = manCont.Iisdoubleworker
manInfo.Isveterans = manCont.Isveterans
manInfo.Veteransnumber = manCont.Veteransnumber
workInData := time.Now().Unix()
if manCont.WorkingDate != "" {
workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
}
manInfo.Jobstartdate = workInData
entryData := time.Now().Unix()
if manCont.EntryDate != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
manInfo.Entrydate = entryData
manInfo.Probationperiod = manCont.ProbationPeriod
planformalData := time.Now().Unix()
if manCont.ConfirmationDate != "" {
planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
} else {
planformalData = overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
}
manInfo.Planformaldate = planformalData
manInfo.PoliticalOutlook = manCont.PoliticalOutlook
overall.CONSTANT_DB_HR.Create(&manInfo)
if manCont.Iisdoubleworker == 1 {
//编辑双职工
eidtDoubleWorkerNew(manKeyNum, manCont, 1)
}
}
}
//编辑双职工
func eidtDoubleWorkerNew(manKeyNum int64, manCont addKingdeePersonnel, state int) {
var doubleWorkCont models.DoubleWorker
dwErr := doubleWorkCont.GetCont(map[string]interface{}{"`key`": manKeyNum})
if dwErr == nil {
saveData := overallhandle.MapOut()
if manCont.SpouseName != "" && manCont.SpouseName != doubleWorkCont.Name {
saveData["`name`"] = manCont.SpouseName
}
if manCont.SpouseCompany != "" && manCont.SpouseCompany != doubleWorkCont.Company {
saveData["`company`"] = manCont.SpouseCompany
}
if manCont.SpouseDepartment != "" && manCont.SpouseDepartment != doubleWorkCont.Department {
saveData["`department`"] = manCont.SpouseDepartment
}
if manCont.SpousePosition != "" && manCont.SpousePosition != doubleWorkCont.Position {
saveData["`position`"] = manCont.SpousePosition
}
if manCont.SpouseTel != "" && manCont.SpouseTel != doubleWorkCont.Tel {
saveData["`tel`"] = manCont.SpouseTel
}
if state != 0 && state != doubleWorkCont.State {
saveData["`state`"] = state
}
if len(saveData) > 0 {
saveData["`time`"] = time.Now().Unix()
doubleWorkCont.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
}
} else {
saveData := overallhandle.MapOut()
saveData["state"] = 2
doubleWorkCont.EiteCont(map[string]interface{}{"`number`": manCont.Number}, saveData)
doubleWorkCont.Key = manKeyNum
doubleWorkCont.Number = manCont.Number
doubleWorkCont.Name = manCont.SpouseName
doubleWorkCont.Tel = manCont.SpouseTel
doubleWorkCont.Company = manCont.SpouseCompany
doubleWorkCont.Department = manCont.SpouseDepartment
doubleWorkCont.Position = manCont.SpousePosition
doubleWorkCont.State = state
overall.CONSTANT_DB_HR.Create(&doubleWorkCont)
}
}
//编辑紧急联系人信息
func emergencyContactPersonNew(manKeyNum int64, manCont addKingdeePersonnel) {
defer synPro.Done()
var emeContPerAry []emergencyContact
if manCont.UrgentNameOne != "" || manCont.UrgentRelationshipOne != "" || manCont.UrgentMobilephoneOne != "" {
var emeContPerOne emergencyContact
emeContPerOne.Name = manCont.UrgentNameOne //姓名1
emeContPerOne.Relationship = manCont.UrgentRelationshipOne //与紧急联系人1
emeContPerOne.Mobilephone = manCont.UrgentMobilephoneOne //联系电话1
emeContPerAry = append(emeContPerAry, emeContPerOne)
}
if manCont.UrgentNameTwo != "" || manCont.UrgentRelationshipTwo != "" || manCont.UrgentMobilephoneTwo != "" {
var emeContPerTwo emergencyContact
emeContPerTwo.Name = manCont.UrgentNameTwo //姓名2
emeContPerTwo.Relationship = manCont.UrgentRelationshipTwo //与紧急联系人2
emeContPerTwo.Mobilephone = manCont.UrgentMobilephoneTwo //联系电话2
emeContPerAry = append(emeContPerAry, emeContPerTwo)
}
if len(emeContPerAry) > 0 {
var oldEmePersList []models.EmergencyContact
oldEmeErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&oldEmePersList).Error
if oldEmeErr == nil {
var writeName []string
var allId []int64
var isEite []int64
for _, ev := range emeContPerAry {
for _, ov := range oldEmePersList {
if overallhandle.JudgeInMap(ov.Id, allId) == false {
allId = append(allId, ov.Id)
}
if ev.Name == ov.Name {
writeName = append(writeName, ev.Name)
if overallhandle.JudgeInMap(ov.Id, isEite) == false {
isEite = append(isEite, ov.Id)
}
eitdCont := overallhandle.MapOut()
if ev.Relationship != "" && ev.Relationship != ov.Relationship {
eitdCont["relationship"] = ev.Relationship
}
if ev.Mobilephone != "" && ev.Mobilephone != ov.Tel {
eitdCont["tel"] = ev.Mobilephone
}
if ov.State != 1 {
eitdCont["state"] = 1
}
if len(eitdCont) > 0 {
eitdCont["time"] = time.Now().Unix()
var oldEmePersCont models.EmergencyContact
oldEmePersCont.EiteCont(map[string]interface{}{"`id`": ov.Id}, eitdCont)
}
}
}
}
//判断两个紧急人员是否都写入
// if len(writeName) != 2 {
for _, sv := range emeContPerAry {
if overallhandle.StringIsInMap(sv.Name, writeName) == false {
var addEmeCont models.EmergencyContact
addEmeCont.Key = manKeyNum
addEmeCont.Number = manCont.Number
addEmeCont.Name = sv.Name
addEmeCont.Relationship = sv.Relationship
addEmeCont.Tel = sv.Mobilephone
addEmeCont.State = 1
addEmeCont.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&addEmeCont)
}
}
// }
} else {
for _, insetv := range emeContPerAry {
var addEmeCont models.EmergencyContact
addEmeCont.Key = manKeyNum
addEmeCont.Number = manCont.Number
addEmeCont.Name = insetv.Name
addEmeCont.Relationship = insetv.Relationship
addEmeCont.Tel = insetv.Mobilephone
addEmeCont.State = 1
addEmeCont.Time = time.Now().Unix()
overall.CONSTANT_DB_HR.Create(&addEmeCont)
}
}
}
}
//编辑员工家属
func eidtFamilyMembersNew(manKeyNum int64, num string, family []memberOfFamily) {
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 {
var writeName []string
var allId []int64
var isEite []int64
for _, fv := range family {
for _, fav := range familyAry {
if overallhandle.JudgeInMap(fav.Id, allId) == false {
allId = append(allId, fav.Id)
}
if fv.Name == fav.Name {
writeName = append(writeName, fv.Name)
if overallhandle.JudgeInMap(fav.Id, isEite) == false {
isEite = append(isEite, fav.Id)
}
eitdCont := overallhandle.MapOut()
if fv.Relationship != "" && fv.Relationship != fav.Relationship {
eitdCont["relation"] = fv.Relationship
}
if fv.Mobilephone != "" && fv.Mobilephone != fav.Tel {
eitdCont["tel"] = fv.Mobilephone
}
if fv.Company != "" && fv.Company != fav.Company {
eitdCont["company"] = fv.Company
}
if fv.Department != "" && fv.Department != fav.Deparment {
eitdCont["deparment"] = fv.Department
}
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 len(eitdCont) > 0 {
eitdCont["time"] = time.Now().Unix()
var oldFamilyCont models.FamilyMembers
oldFamilyCont.EiteCont(map[string]interface{}{"`id`": fav.Id}, eitdCont)
}
}
}
}
//新增不存在得家庭成员
for _, afv := range family {
if overallhandle.StringIsInMap(afv.Name, writeName) == false {
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() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
} else {
//新增家庭成员
for _, v := range family {
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() // 创建时间"`
overall.CONSTANT_DB_HR.Create(&addFamliyCont)
}
}
}
}
//教育经历
func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
defer synPro.Done()
if manCont.HighestGraduationSchool != "" {
//最高学历
var perEduContHig models.PersonnelEducation
highestGormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`key` = ? AND `graduation_school` = ? AND `subject` = ?", manKeyNum, manCont.HighestGraduationSchool, manCont.HighestSubject)
higErr := highestGormDb.First(&perEduContHig).Error
if higErr == nil {
eitdCont := overallhandle.MapOut()
if manCont.HighestEducation != 0 && manCont.HighestEducation != perEduContHig.Education {
eitdCont["education"] = manCont.HighestEducation
}
if manCont.HighestAcademicDegree != 0 && manCont.HighestAcademicDegree != perEduContHig.AcademicDegree {
eitdCont["academic_degree"] = manCont.HighestAcademicDegree
}
if manCont.HighestAdmissionTime != "" {
entranceTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
if entranceTime != perEduContHig.AdmissionTime {
eitdCont["admission_time"] = entranceTime
}
}
if manCont.HighestGraduationTime != "" {
graduationTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
if graduationTime != perEduContHig.GraduationTime {
eitdCont["graduation_time"] = graduationTime
}
}
if len(eitdCont) > 0 {
eitdCont["Time"] = time.Now().Unix()
eitdCont["level"] = 3
var oldFamilyCont models.PersonnelEducation
oldFamilyCont.EiteCont(map[string]interface{}{"`id`": perEduContHig.Id}, eitdCont)
}
} else {
var perEduContFirstIsTrue models.PersonnelEducation
highestGormDbIsTrue := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`level` = 3 AND `key` = ?", manKeyNum).First(&perEduContFirstIsTrue).Error
if highestGormDbIsTrue == nil {
eitdCont := overallhandle.MapOut()
eitdCont["Time"] = time.Now().Unix()
eitdCont["level"] = 1
var oldFamilyCont models.PersonnelEducation
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.GraduationSchool = manCont.HighestGraduationSchool // 毕业学校"`
perEduContHig.Subject = manCont.HighestSubject // 专业"`
entranceTime := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
perEduContHig.AdmissionTime = entranceTime // 入学时间"`
graduationTime := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
perEduContHig.GraduationTime = graduationTime // 毕业时间"`
perEduContHig.Time = time.Now().Unix() // 写入时间"`
perEduContHig.AcademicDegree = manCont.HighestAcademicDegree
perEduContHig.Level = 3 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContHig)
}
}
//第一学历
if manCont.FirstGraduationSchool != "" {
//第一学历
var perEduContFirst models.PersonnelEducation
firsthestGormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`key` = ? AND graduation_school = ? AND subject = ?", manKeyNum, manCont.FirstGraduationSchool, manCont.FirstSubject)
higErr := firsthestGormDb.First(&perEduContFirst).Error
if higErr == nil {
eitdContFirst := overallhandle.MapOut()
if manCont.FirstEducation != 0 && manCont.FirstEducation != perEduContFirst.Education {
eitdContFirst["education"] = manCont.FirstEducation
}
if manCont.FirstAcademicDegree != 0 && manCont.FirstAcademicDegree != perEduContFirst.AcademicDegree {
eitdContFirst["academic_degree"] = manCont.FirstAcademicDegree
}
if manCont.FirstAdmissionTime != "" {
entranceTimeFirst, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstAdmissionTime))
if entranceTimeFirst != perEduContFirst.AdmissionTime {
eitdContFirst["admission_time"] = entranceTimeFirst
}
}
if manCont.FirstGraduationTime != "" {
graduationTimeFirst, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstGraduationTime))
if graduationTimeFirst != perEduContFirst.GraduationTime {
eitdContFirst["graduation_time"] = graduationTimeFirst
}
}
if len(eitdContFirst) > 0 {
eitdContFirst["Time"] = time.Now().Unix()
eitdContFirst["level"] = 2
var oldFamilyContFirst models.PersonnelEducation
oldFamilyContFirst.EiteCont(map[string]interface{}{"`id`": perEduContFirst.Id}, eitdContFirst)
}
} else {
var perEduContFirstIsTrue models.PersonnelEducation
highestGormDbIsTrue := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("`level` = 1 AND `key` = ?", manKeyNum).First(&perEduContFirstIsTrue).Error
if highestGormDbIsTrue == nil {
eitdContFirst := overallhandle.MapOut()
eitdContFirst["Time"] = time.Now().Unix()
eitdContFirst["level"] = 1
var oldFamilyContFirst models.PersonnelEducation
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.GraduationSchool = manCont.FirstGraduationSchool // 毕业学校"`
perEduContFirst.Subject = manCont.FirstSubject // 专业"`
entranceTimeFirst := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTimeFirst, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
perEduContFirst.AdmissionTime = entranceTimeFirst // 入学时间"`
graduationTimef := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTimef, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
perEduContFirst.GraduationTime = graduationTimef // 毕业时间"`
perEduContFirst.Time = time.Now().Unix() // 写入时间"`
perEduContFirst.AcademicDegree = manCont.FirstAcademicDegree
perEduContFirst.Level = 2 // 学历类型(1:普通;2:第一学历;3:最高学历)"`
overall.CONSTANT_DB_HR.Create(&perEduContFirst)
}
}
}
//编辑工作履历
func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHistoryAry) {
defer synPro.Done()
if len(workHistoryList) > 0 && manKeyNum != 0 {
var oldWork []models.WorkHistory
oldWorkErr := overall.CONSTANT_DB_HR.Where("`key` = ?", manKeyNum).Find(&oldWork).Error
if oldWorkErr == nil {
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")
if isEidtErr == nil {
saveDate := overallhandle.MapOut()
if wvs.EntryTime != "" { //入职时间"`
entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime))
if entryData != whCont.EntryTime {
saveDate["entry_time"] = entryData
}
}
if wvs.LeaveDate != "" { //离职日期"`
leaveTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate))
if leaveTime != whCont.Leavedate {
saveDate["leavedate"] = leaveTime
}
}
if wvs.Witness != "" && wvs.Witness != whCont.Witness {
saveDate["witness"] = wvs.Witness
}
if wvs.WitnessTel != "" && wvs.WitnessTel != whCont.WitnessTel {
saveDate["witness_tel"] = wvs.WitnessTel
}
if wvs.Remarks != "" && wvs.Remarks != whCont.Remarks {
saveDate["remarks"] = wvs.Remarks
}
if len(saveDate) > 0 {
saveDate["time"] = time.Now().Unix()
saveDate["state"] = 1
var eidtWorkHisCont models.WorkHistory
eidtWorkHisCont.EiteCont(map[string]interface{}{"`id`": whCont.Id}, saveDate)
}
} else {
var addWorkCont models.WorkHistory
addWorkCont.Number = num //工号"`
addWorkCont.Key = manKeyNum //身份识别"`
addWorkCont.Company = wvs.Company //公司"`
addWorkCont.Deparment = wvs.Department //部门"`
addWorkCont.Job = wvs.Position //职务"`
entryData := time.Now().Unix()
if wvs.EntryTime != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime))
}
addWorkCont.EntryTime = entryData //入职时间"`
leaveTime := time.Now().Unix()
if wvs.LeaveDate != "" {
leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate))
}
addWorkCont.Leavedate = leaveTime //离职日期"`
addWorkCont.Witness = wvs.Witness //证明人"`
addWorkCont.WitnessTel = wvs.WitnessTel //证明人电话"`
addWorkCont.Remarks = wvs.Remarks //备注"`
addWorkCont.Time = time.Now().Unix() //创建时间"`
addWorkCont.State = 1 //状态(1:启用;2:禁用;3:删除)"`
overall.CONSTANT_DB_HR.Create(&addWorkCont)
}
}
} else {
var addAllWork []models.WorkHistory
for _, v := range workHistoryList {
var addWorkCont models.WorkHistory
addWorkCont.Number = num //工号"`
addWorkCont.Key = manKeyNum //身份识别"`
addWorkCont.Company = v.Company //公司"`
addWorkCont.Deparment = v.Department //部门"`
addWorkCont.Job = v.Position //职务"`
entryData := time.Now().Unix()
if v.EntryTime != "" {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.EntryTime))
}
addWorkCont.EntryTime = entryData //入职时间"`
leaveTime := time.Now().Unix()
if v.LeaveDate != "" {
leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.LeaveDate))
}
addWorkCont.Leavedate = leaveTime //离职日期"`
addWorkCont.Witness = v.Witness //证明人"`
addWorkCont.WitnessTel = v.WitnessTel //证明人电话"`
addWorkCont.Remarks = v.Remarks //备注"`
addWorkCont.Time = time.Now().Unix() //创建时间"`
addWorkCont.State = 1 //状态(1:启用;2:禁用;3:删除)"`
addAllWork = append(addAllWork, addWorkCont)
}
if len(addAllWork) > 0 {
overall.CONSTANT_DB_HR.Create(&addAllWork)
}
}
}
}

449
api/version1/personnelapi/staffarchives.go

@ -0,0 +1,449 @@
package personnelapi
import (
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
//人员列表
func (s *StaffApi) ArchivesList(c *gin.Context) {
var requestData peopleList
c.ShouldBindJSON(&requestData)
if requestData.Page < 0 {
requestData.Page = 1
}
if requestData.PageSize < 0 {
requestData.PageSize = 10
}
var staffList []models.ManCont
gormDb := overall.CONSTANT_DB_HR.Model(&models.ManCont{}).Where("state = 1")
if requestData.Number != "" {
gormDb = gormDb.Where("number LIKE ?", "%"+requestData.Number+"%")
}
if requestData.Name != "" {
gormDb = gormDb.Where("name LIKE ?", "%"+requestData.Name+"%")
}
if requestData.HireClass != 0 {
gormDb = gormDb.Where("hire_class = ?", requestData.HireClass)
}
if requestData.Company != 0 {
gormDb = gormDb.Where("company = ?", requestData.Company)
}
if requestData.Deparment != "" {
gormDb = gormDb.Where("FIND_IN_SET(?,`deparment`)", requestData.Deparment)
}
if requestData.AdminOrg != 0 {
gormDb = gormDb.Where("admin_org = ?", requestData.AdminOrg)
}
if requestData.Position != 0 {
gormDb = gormDb.Where("position = ?", requestData.Position)
}
if requestData.EmpType != 0 {
gormDb = gormDb.Where("emp_type = ?", requestData.EmpType)
} else {
gormDb = gormDb.Where("emp_type IN ?", overall.EmployeeStatusIng)
}
if requestData.Role != "" {
gormDb = gormDb.Where("FIND_IN_SET(?,`role`)", requestData.Role)
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
errGorm := gormDb.Order("company ASC,maindeparment ASC,admin_org ASC,position ASC").Limit(requestData.PageSize).Offset(overallhandle.LimitPage(requestData.Page, requestData.PageSize)).Find(&staffList).Error
var positionAry []peopleManOutList
for _, v := range staffList {
var staffInfo peopleManOutList
staffInfo.ManCont = v
var getSpur models.Position
getWhe := overallhandle.MapOut()
getWhe["id"] = v.Position
getSpur.GetCont(getWhe, "name")
staffInfo.PositionName = getSpur.Name
staffInfo.KeyStr = strconv.FormatInt(v.Key, 10)
//公司
var getSpurDepart models.AdministrativeOrganization
getWheDepart := overallhandle.MapOut()
getWheDepart["id"] = v.Company
getSpurDepart.GetCont(getWheDepart, "name")
staffInfo.CompanyName = getSpurDepart.Name
//主部门
var getSpurDepartMain models.AdministrativeOrganization
getWheDepartMain := overallhandle.MapOut()
getWheDepartMain["id"] = v.MainDeparment
getSpurDepartMain.GetCont(getWheDepartMain, "name")
staffInfo.MainDeparmentName = getSpurDepartMain.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, " ")
}
}
}
positionAry = append(positionAry, staffInfo)
}
if errGorm != nil {
overallhandle.Result(105, errGorm, c)
} else {
overallhandle.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(positionAry)), positionAry, c)
}
}
//获取单个人员档案
//人员列表
func (s *StaffApi) ArchivesCon(c *gin.Context) {
var requestData overallhandle.GetId
c.ShouldBindJSON(&requestData)
if requestData.IdStr == "" && requestData.Id == 0 {
overallhandle.Result(101, requestData, c)
return
}
if requestData.IdStr != "" {
idInt, idErr := strconv.ParseInt(requestData.IdStr, 10, 64)
if idErr == nil {
requestData.Id = idInt
}
}
var satffCont models.ManCont
staffErr := satffCont.GetCont(map[string]interface{}{"`id`": requestData.Id})
if staffErr != nil {
overallhandle.Result(105, staffErr, c)
return
}
var staffCenter staffArchivesCont
staffCenter.ManCont = satffCont
staffCenter.IdStr = strconv.FormatInt(satffCont.Id, 10)
staffCenter.BirthdayTime = overallhandle.UnixTimeToDay(satffCont.Birthday, 14) //生日
staffCenter.IdCardStartTimeData = overallhandle.UnixTimeToDay(satffCont.Idcardstartdate, 14) //身份证有效期开始时间
staffCenter.IdCardEndTimeData = overallhandle.UnixTimeToDay(satffCont.Idcardenddate, 14) //身份证有效期结束时间
staffCenter.EntrydateTime = overallhandle.UnixTimeToDay(satffCont.Entrydate, 14) //入职日期
staffCenter.PlanformaldateTime = overallhandle.UnixTimeToDay(satffCont.Planformaldate, 14) //预计转正日期
//获取双职工信息
synPro.Add(1)
go func() {
staffCenter.DoubleWorkerList = getDoubleWorkerCont(satffCont.Key) //双职工
}()
//紧急联系人
synPro.Add(1)
go func() {
staffCenter.EmergencyContact = getEmercyCallMan(satffCont.Key) //紧急联系人
}()
//家庭成员
synPro.Add(1)
go func() {
staffCenter.MemberOfFamily = getMemberOfFamily(satffCont.Key) //家庭成员
}()
//教育经历
synPro.Add(1)
go func() {
staffCenter.EducationalExperience = getEducationalExperience(satffCont.Key) //教育经历
}()
//工作履历
synPro.Add(1)
go func() {
staffCenter.WorkHistoryList = getWorkHistoryList(satffCont.Key) //工作履历
}()
synPro.Wait()
overallhandle.Result(0, staffCenter, c)
return
}
//获取双职工信息
func getDoubleWorkerCont(key int64) (doubleworkerlist []DoubleWorkerCont) {
defer synPro.Done()
var dowWorkMan []models.DoubleWorker
err := overall.CONSTANT_DB_HR.Select("`id`", "`number`", "`name`", "`company`", "`department`", "`position`", "`tel`").Where("`state` = 1 AND `key` = ?", key).Find(&dowWorkMan).Error
if err == nil {
for _, v := range dowWorkMan {
var dwManCont DoubleWorkerCont
dwManCont.Id = strconv.FormatInt(v.Id, 10)
dwManCont.Number = v.Number //工号
dwManCont.Name = v.Name //姓名
dwManCont.Company = v.Company //公司
dwManCont.Department = v.Department //分厂(部室)
dwManCont.Position = v.Position //职位(岗位)
dwManCont.Mobilephone = v.Tel //联系电话
doubleworkerlist = append(doubleworkerlist, dwManCont)
}
}
return
}
//紧急联系人
func getEmercyCallMan(key int64) (callMan []emergencyContact) {
defer synPro.Done()
var dowWorkMan []models.EmergencyContact
err := overall.CONSTANT_DB_HR.Select("`id`", "`name`", "`relationship`", "`tel`").Where("`state` = 1 AND `key` = ?", key).Find(&dowWorkMan).Error
if err == nil {
for _, v := range dowWorkMan {
var dwManCont emergencyContact //
dwManCont.Id = strconv.FormatInt(v.Id, 10)
dwManCont.Name = v.Name //姓名
dwManCont.Relationship = v.Relationship //与紧急联系人
dwManCont.Mobilephone = v.Tel //联系电话
callMan = append(callMan, dwManCont)
}
}
return
}
//获取家庭成员
func getMemberOfFamily(key int64) (callMan []memberOfFamily) {
defer synPro.Done()
var dowWorkMan []models.FamilyMembers
err := overall.CONSTANT_DB_HR.Select("`id`", "`name`", "`relation`", "`company`", "`deparment`", "`postnme`", "`tel`,`political_outlook`").Where("`state` = 1 AND `key` = ?", key).Find(&dowWorkMan).Error
if err == nil {
for _, v := range dowWorkMan {
var dwManCont memberOfFamily //工号
dwManCont.Name = v.Name //姓名
dwManCont.Relationship = v.Relationship //与紧急联系人
dwManCont.Mobilephone = v.Tel //联系电话
dwManCont.Company = v.Company //公司
dwManCont.Department = v.Deparment //分厂(部室)
dwManCont.Position = v.Postnme //职位(岗位)
dwManCont.PoliticalOutlook = v.PoliticalOutlook //政治面貌
dwManCont.IdStr = strconv.FormatInt(v.Id, 10)
callMan = append(callMan, dwManCont)
}
}
return
}
//获取教育经历
func getEducationalExperience(key int64) (callMan []educatExp) {
defer synPro.Done()
var dowWorkMan []models.PersonnelEducation
err := overall.CONSTANT_DB_HR.Select("`id`", "`education`", "`graduation_school`", "`subject`", "`admission_time`", "`graduation_time`", "`level`,`academic_degree`").Where("`state` = 1 AND `key` = ?", key).Find(&dowWorkMan).Error
if err == nil {
for _, v := range dowWorkMan {
var dwManCont educatExp //
dwManCont.GraduationSchool = v.GraduationSchool //毕业学校
dwManCont.Subject = v.Subject //专业
dwManCont.Education = v.Education //学历
dwManCont.AdmissionTime = overallhandle.UnixTimeToDay(v.AdmissionTime, 14) //入学时间
dwManCont.GraduationTime = overallhandle.UnixTimeToDay(v.GraduationTime, 14) //毕业时间
dwManCont.AcademicDegree = getXueWei(v.AcademicDegree) //学位
dwManCont.AcademicDegreeId = v.AcademicDegree
dwManCont.Level = getXueWeiClass(v.Level)
dwManCont.LevelId = v.Level //学历类型
dwManCont.Id = strconv.FormatInt(v.Id, 10)
callMan = append(callMan, dwManCont)
}
}
return
}
//学位
func getXueWei(id int) string {
switch id {
case 1:
return "无"
case 2:
return "学士"
case 3:
return "硕士"
case 4:
return "博士"
default:
return "无"
}
return "无"
}
//学历类型
func getXueWeiClass(id int) string {
switch id {
case 2:
return "第一学历"
case 3:
return "最高学历"
default:
return "普通"
}
return "普通"
}
//工作履历
func getWorkHistoryList(key int64) (workHisList []workHistoryAry) {
defer synPro.Done()
var workHisContList []models.WorkHistory
workHisContListErr := overall.CONSTANT_DB_HR.Where("`state` = 1 AND `key` = ?", key).Find(&workHisContList).Error
if workHisContListErr == nil {
for _, v := range workHisContList {
var workCont workHistoryAry
workCont.Company = v.Company //公司
workCont.Department = v.Deparment //部门
workCont.Position = v.Job //职务
workCont.EntryTime = overallhandle.UnixTimeToDay(v.EntryTime, 14) //入职时间
workCont.LeaveDate = overallhandle.UnixTimeToDay(v.Leavedate, 14) //离职日期
workCont.Witness = v.Witness //证明人
workCont.WitnessTel = v.WitnessTel //证明人电话
workCont.Remarks = v.Remarks //备注
workHisList = append(workHisList, workCont)
}
}
return
}
//添加双职工
func (s *StaffApi) AddDoubleWorkerApi(c *gin.Context) {
var requestData DoubleWorkerCont
c.ShouldBindJSON(&requestData)
// if err != nil {
// overallhandle.Result(100, err, c)
// return
// }
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c, "参数错误")
return
}
if requestData.Name == "" {
overallhandle.Result(101, requestData.Name, c, "请输入姓名")
return
}
if requestData.Mobilephone == "" {
overallhandle.Result(101, requestData.Mobilephone, c, "请输入联系方式")
return
}
var manCont models.PersonArchives
manCont.GetCont(map[string]interface{}{"`key`": requestData.Id}, "`number`")
var doubleWorkInfo models.DoubleWorker
doubleWorkInfo.Number = manCont.Number
doubleWorkInfo.Name = requestData.Name
doubleWorkInfo.Company = requestData.Company
doubleWorkInfo.Department = requestData.Department
doubleWorkInfo.Position = requestData.Position
doubleWorkInfo.Tel = requestData.Mobilephone
doubleWorkInfo.Time = time.Now().Unix()
doubleWorkInfo.State = 1
keyInt, _ := strconv.ParseInt(requestData.Id, 10, 64)
doubleWorkInfo.Key = keyInt
addErr := overall.CONSTANT_DB_HR.Create(&doubleWorkInfo).Error
if addErr != nil {
overallhandle.Result(104, addErr, c)
return
}
overallhandle.Result(0, addErr, c)
}
//编辑双职工
func (s *StaffApi) EidtDoubleWorkerApi(c *gin.Context) {
var requestData DoubleWorkerCont
c.ShouldBindJSON(&requestData)
// if err != nil {
// overallhandle.Result(100, err, c)
// return
// }
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var doubleWorkCont models.DoubleWorker
wErr := doubleWorkCont.GetCont(map[string]interface{}{"`id`": requestData.Id})
if wErr != nil {
overallhandle.Result(107, requestData.Id, c)
return
}
saveData := overallhandle.MapOut()
if requestData.Name != "" && requestData.Name != doubleWorkCont.Name {
saveData["name"] = requestData.Name
}
if requestData.Company != "" && requestData.Company != doubleWorkCont.Company {
saveData["company"] = requestData.Company
}
if requestData.Department != "" && requestData.Department != doubleWorkCont.Department {
saveData["department"] = requestData.Department
}
if requestData.Position != "" && requestData.Position != doubleWorkCont.Position {
saveData["position"] = requestData.Position
}
if requestData.Mobilephone != "" && requestData.Mobilephone != doubleWorkCont.Tel {
saveData["tel"] = requestData.Mobilephone
}
if len(saveData) > 0 {
saveData["time"] = time.Now().Unix()
var eidtCont models.DoubleWorker
eidtErr := eidtCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if eidtErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
} else {
overallhandle.Result(0, saveData, c)
}
}
//编辑双职工状态
func (s *StaffApi) EidtDoubleWorkerState(c *gin.Context) {
var requestData eidtWorkState
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
overallhandle.Result(101, requestData.Id, c)
return
}
var doubleWorkCont models.DoubleWorker
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.DoubleWorker
eidtErr := eidtCont.EiteCont(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.DoubleWorker{}).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.DoubleWorker
eidtErr := eidtCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if eidtErr == nil {
overallhandle.Result(0, saveData, c)
} else {
overallhandle.Result(106, eidtErr, c)
}
}
}
}

82
api/version1/personnelapi/type.go

@ -48,7 +48,15 @@ type peopleOutList struct {
CompanyName string `json:"companyname"` //公司名称
DeparmentName string `json:"deparmentname"` //部门名称
PositionName string `json:"positionname"` //职位
KeyStr string `json:"keystr"` //职位
KeyStr string `json:"keystr"` //身份认证
}
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"` //身份认证
}
//获取部门细腻些
@ -101,15 +109,19 @@ type addPersonnel struct {
//教育经历
type educationalExperience struct {
GraduationSchool string `json:"graduationschool"` //毕业学校
Subject string `json:"subject"` //专业
Education int `json:"education"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
AdmissionTime string `json:"admissiontime"` //入学时间
GraduationTime string `json:"graduationtime"` //毕业时间
Education int `json:"education"` //学历(1:初中及以下;2:中专;3:高中;4:中技;5:高技;6:函数专科;7:大学专科;8:函数本科;9:大学本科;10:硕士研究生;11:博士研究生;12:专家、教授)
Subject string `json:"subject"` //专业
GraduationSchool string `json:"graduationschool"` //毕业学校
AcademicDegree string `json:"academicdegree"` //学位
Level string `json:"level"` //学历类型
}
//紧急联系人
type emergencyContact struct {
Id string `json:"id"`
Name string `json:"name"` //姓名
Relationship string `json:"relationship"` //与紧急联系人
Mobilephone string `json:"mobilephone"` //联系电话
@ -122,6 +134,7 @@ type memberOfFamily struct {
Department string `json:"department"` //分厂(部室)
Position string `json:"position"` //职位(岗位)
PoliticalOutlook int `json:"politicaloutlook"` //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)
IdStr string `json:"idstr"`
}
//职务相关
@ -221,4 +234,65 @@ type addKingdeePersonnel struct {
UrgentMobilephoneTwo string `json:"urgentmobilephonetwo"` //联系电话
//员工家属表
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
}
//人员档案详情
type staffArchivesCont struct {
models.ManCont
BirthdayTime string `json:"birthdaytime"` //生日
IdCardStartTimeData string `json:"idcardstarttimedata"` //身份证有效期开始时间
IdCardEndTimeData string `json:"idcardendtimedata"` //身份证有效期结束时间
EntrydateTime string `json:"entrydatetime"` //入职日期
PlanformaldateTime string `json:"planformaldatetime"` //预计转正日期
DoubleWorkerList []DoubleWorkerCont `json:"doubleworkerlist"`
EducationalExperience []educatExp `json:"educationalexperience"` //教育经历
EmergencyContact []emergencyContact `json:"emergencycontact"` //紧急联系人
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
IdStr string `json:"idstr"`
}
//双职工
type DoubleWorkerCont struct {
Id string `json:"id"`
Number string `json:"number"` //工号
Name string `json:"name"` //姓名
Company string `json:"company"` //公司
Department string `json:"department"` //分厂(部室)
Position string `json:"position"` //职位(岗位)
Mobilephone string `json:"mobilephone"` //联系电话
}
type educatExp struct {
educationalExperience
AcademicDegreeId int `json:"academicdegreeid"` //学位(0:无;1:学士;2:硕士;3:博士)
LevelId int `json:"levelid"` //学历类型(1:普通;2:第一学历;3:最高学历)
Id string `json:"id"`
}
//工作履历
type workHistoryAry struct {
Company string `json:"company"` //公司
Department string `json:"department"` //部门
Position string `json:"position"` //职务
EntryTime string `json:"entrytime"` //入职时间
LeaveDate string `json:"leavedate"` //离职日期
Witness string `json:"witness"` //证明人
WitnessTel string `json:"witnesstel"` //证明人电话
Remarks string `json:"remarks"` //备注
}
//判断是否需要编辑工作履历
type judgeWorkHistory struct {
Company string `json:"company"` //公司
Department string `json:"department"` //部门
Position string `json:"position"` //职务
}
//编辑双职工状态
type eidtWorkState struct {
Id string `json:"id"`
State int `json:"state"`
IsDel int `json:"isdel"`
}

1
apirouter/inlet.go

@ -15,6 +15,7 @@ type RouterGroup struct {
OrganizationApi organization.OrganizationRoute //组织架构
PermitPowerApi permit.PermitPower //权限相关操作
PersonnelRoute personnel.PersonnelRoute //人员管理
PersonnelRouteKingdee personnel.PersonnelRouteKingdee //人员管理Kingdee
ShiyanApiRRouter shiyanrouter.ShiyanApiRouter
EmpowerApiRouter empowerrote.EmpowerApiRouter
KingdeeApiRouter dockingjindie.DockingJindieApiRouter

28
apirouter/personnel/people.go

@ -16,8 +16,34 @@ func (p *PersonnelRoute) InitRouterGroup(route *gin.RouterGroup) {
apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表
apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案
apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限
apiRouter.POST("archiveslist", apiHandle.ArchivesList) //人员列表(新)
apiRouter.POST("archivescont", apiHandle.ArchivesCon) //个人档案
apiRouter.POST("kingdeehr", apiHandle.NewKingdee) //对接金蝶HR系统
apiRouter.POST("kingdeehr", apiHandle.Kingdee) //对接金蝶HR系统
apiRouter.POST("adddoubleworker", apiHandle.AddDoubleWorkerApi) //添加双职工
apiRouter.POST("eidtdoubleworker", apiHandle.EidtDoubleWorkerApi) //编辑双职工
apiRouter.POST("eidtdoubleworkerstate", apiHandle.EidtDoubleWorkerState) //编辑双职工状态
}
}
//员工档案
func (p *PersonnelRouteKingdee) InitRouterGroup(route *gin.RouterGroup) {
apiRouter := route.Group("staffkingdee")
var apiHandle = version1.AppApiInlet.StaffApi
{
apiRouter.GET("", apiHandle.Index) //入口
apiRouter.POST("", apiHandle.Index) //入口
apiRouter.POST("stafflist", apiHandle.StaffList) //人员列表
apiRouter.POST("addstaff", apiHandle.AddStaff) //添加人员档案
apiRouter.POST("allocationofrights", apiHandle.AllocationOfRights) //分配权限
apiRouter.POST("archiveslist", apiHandle.ArchivesList) //人员列表(新)
apiRouter.POST("archivescont", apiHandle.ArchivesCon) //个人档案
apiRouter.POST("kingdeehr", apiHandle.NewKingdee) //对接金蝶HR系统
apiRouter.POST("adddoubleworker", apiHandle.AddDoubleWorkerApi) //添加双职工
apiRouter.POST("eidtdoubleworker", apiHandle.EidtDoubleWorkerApi) //编辑双职工
apiRouter.POST("eidtdoubleworkerstate", apiHandle.EidtDoubleWorkerState) //编辑双职工状态
}
}

1
apirouter/personnel/type.go

@ -2,3 +2,4 @@ package personnel
//人员管理方面
type PersonnelRoute struct{}
type PersonnelRouteKingdee struct{}

BIN
hr_server.exe

Binary file not shown.

9
identification/authentication.go

@ -27,7 +27,7 @@ func Validator() gin.HandlerFunc {
iii["userAgent"] = userAgent
iii["Origin"] = Origin
iii["randomNumber"] = randomNumber
overallhandle.Result(2001, iii, c)
overallhandle.Result(2001, "请输入关键信息数据!", c)
c.Abort()
return
}
@ -42,7 +42,9 @@ func Validator() gin.HandlerFunc {
iii["userAgent"] = userAgent
iii["Origin"] = Origin
iii["randomNumber"] = randomNumber
overallhandle.Result(2002, iii, c)
iii["redisKey"] = redisKey
iii["isTrue"] = isTrue
overallhandle.Result(2002, "您的指令不正确!或已经超时!请重新获取指令!", c)
c.Abort()
return
}
@ -125,7 +127,8 @@ func Validator() gin.HandlerFunc {
submitTokenMd5Str := submitTokenMd5.Md5EncryptionAlgorithm()
if submitTokenMd5Str != clearTokenMd5Str {
overallhandle.Result(2004, "对不起!非法令牌!不可访问系统", c)
// overallhandle.Result(2004, "对不起!非法令牌!不可访问系统", c)
overallhandle.Result(2004, numberMd5, c, "对不起!非法令牌!不可访问系统")
c.Abort()
return
}

10
initialization/route/route_entry.go

@ -38,17 +38,18 @@ func InitialRouter() *gin.Engine {
permitPowerApi := apirouter.RouterGroupInlet.PermitPowerApi
//人员档案
staffApi := apirouter.RouterGroupInlet.PersonnelRoute
// staffApiFuben := apirouter.RouterGroupInlet.PersonnelRoute
staffApiFuben := apirouter.RouterGroupInlet.PersonnelRouteKingdee
//金蝶对接接口
jinDieDockingApi := apirouter.RouterGroupInlet.KingdeeApiRouter
{
empowerApi.InitRouterGroup(appLoadRouterGroup) //获取token
organizationApi.InitRouterGroup(appLoadRouterGroup) //组织架构
jinDieDockingApi.InitRouterGroup(appLoadRouterGroup) //金蝶对接接口
// staffApiFuben.InitRouterGroup(appLoadRouterGroup) //人员档案
staffApi.InitRouterGroup(appLoadRouterGroup) //人员档案
}
//身份验证
@ -57,8 +58,7 @@ func InitialRouter() *gin.Engine {
{
shhiyanApi.InitRouterGroup(Authentication) //实验
permitPowerApi.InitRouterGroup(Authentication) //权限相关操作
organizationApi.InitRouterGroup(appLoadRouterGroup) //组织架构
staffApi.InitRouterGroup(Authentication) //人员档案
staffApiFuben.InitRouterGroup(Authentication) //人员档案
}
return router

149
log/202206/20220602.log

@ -1,149 +0,0 @@
[Info] 2022/06/02 15:40:59 [[{{ArIAAAAERv73eoRQ 高管} } {{ArIAAAAERwP3eoRQ 中层正职} } {{ArIAAAAERwb3eoRQ 中层副职} } {{ArIAAAAERwn3eoRQ 中层助理} } {{ArIAAAAERwz3eoRQ 基层管理} } {{ArIAAAAERw/3eoRQ 执行人员} } {{ArIAAAAERxL3eoRQ 临时工} } {{ArIAAAAER/X3eoRQ 测试} }]]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {1 高管 1654155659 1 ArIAAAAERv73eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {2 中层正职 1654155659 1 ArIAAAAERwP3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {3 中层副职 1654155659 1 ArIAAAAERwb3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {4 中层助理 1654155659 1 ArIAAAAERwn3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {5 基层管理 1654155659 1 ArIAAAAERwz3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {6 执行人员 1654155659 1 ArIAAAAERw/3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {7 临时工 1654155659 1 ArIAAAAERxL3eoRQ }]
[Add] 2022/06/02 15:40:59 [职务类型写入成功! <nil> {8 测试 1654155659 1 ArIAAAAER/X3eoRQ }]
[Info] 2022/06/02 15:41:39 [[{{ArIAAAAERv73eoRQ 高管} } {{ArIAAAAERwP3eoRQ 中层正职} } {{ArIAAAAERwb3eoRQ 中层副职} } {{ArIAAAAERwn3eoRQ 中层助理} } {{ArIAAAAERwz3eoRQ 基层管理} } {{ArIAAAAERw/3eoRQ 执行人员} } {{ArIAAAAERxL3eoRQ 临时工} } {{ArIAAAAER/X3eoRQ 测试} }]]
[Info] 2022/06/02 16:21:53 [[{{{ArIAAAAEOuW4hF0d 生产操作工} 56} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOt+4hF0d 仪表工} 54} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuK4hF0d 临时工} 55} ArIAAAAERxL3eoRQ} {{{ArIAAAAEOui4hF0d 组长} 57} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuu4hF0d 技工} 58} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOu64hF0d 保卫班长} 59} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOvG4hF0d 帮厨} 60} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvS4hF0d 保洁员} 61} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOve4hF0d 业务员} 62} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvq4hF0d 技术员助理} 63} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOjq4hF0d 董事长} 001} ArIAAAAERv73eoRQ} {{{ArIAAAAEOj24hF0d 副董事长} 002} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkC4hF0d 总经理} 01} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkO4hF0d 第一副总经理} 02} ArIAAAAERv73eoRQ} {{{ArIAAAAEOka4hF0d 常务副总经理} 03} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkm4hF0d 副总经理} 04} ArIAAAAERv73eoRQ} {{{ArIAAAAEOky4hF0d 总工程师} 05} ArIAAAAERv73eoRQ} {{{ArIAAAAEOk+4hF0d 总经济师} 06} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlK4hF0d 财务总监} 07} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlW4hF0d 总经理助理} 08} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOli4hF0d 副总工程师} 09} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOlu4hF0d 厂长} 10} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOl64hF0d 部长} 11} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmG4hF0d 主任} 12} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmS4hF0d 副厂长} 13} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOme4hF0d 副部长} 14} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOmq4hF0d 副主任} 15} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOm24hF0d 厂长助理} 16} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnC4hF0d 部长助理} 17} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnO4hF0d 主任助理} 18} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOna4hF0d 主管工程师} 19} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnm4hF0d 车间主任} 20} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOny4hF0d 车间副主任} 21} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOn+4hF0d 科长} 22} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoK4hF0d 炉长} 23} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoW4hF0d 主管} 24} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoi4hF0d 三大员} 25} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOou4hF0d 值长} 26} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOo64hF0d 副值长} 27} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpG4hF0d 工段长} 28} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpS4hF0d 班长} 29} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpe4hF0d 副班长} 30} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpq4hF0d 车队队长} 31} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOp24hF0d 车队副队长} 32} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqC4hF0d 车队副班长} 33} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqO4hF0d 保卫队长} 34} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqa4hF0d 保卫副队长} 35} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqm4hF0d 专工} 36} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqy4hF0d 技术人员} 37} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOq+4hF0d 技师} 38} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrK4hF0d 维修工} 39} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrW4hF0d 科员} 40} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOri4hF0d 队员} 41} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOru4hF0d 小车司机} 42} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOr64hF0d 厨师} 43} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsG4hF0d 面点师} 44} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsS4hF0d 服务员} 45} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOse4hF0d 主操} 46} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsq4hF0d 副操} 47} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOs24hF0d 工程车司机} 48} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtC4hF0d 管理员} 49} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtO4hF0d 电工} 50} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOta4hF0d 化验员} 51} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtm4hF0d 计量员} 52} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOty4hF0d 采样工} 53} ArIAAAAERw/3eoRQ}]]
[Info] 2022/06/02 16:25:52 [[{{{ArIAAAAEOuW4hF0d 生产操作工} 56} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOt+4hF0d 仪表工} 54} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuK4hF0d 临时工} 55} ArIAAAAERxL3eoRQ} {{{ArIAAAAEOui4hF0d 组长} 57} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuu4hF0d 技工} 58} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOu64hF0d 保卫班长} 59} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOvG4hF0d 帮厨} 60} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvS4hF0d 保洁员} 61} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOve4hF0d 业务员} 62} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvq4hF0d 技术员助理} 63} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOjq4hF0d 董事长} 001} ArIAAAAERv73eoRQ} {{{ArIAAAAEOj24hF0d 副董事长} 002} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkC4hF0d 总经理} 01} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkO4hF0d 第一副总经理} 02} ArIAAAAERv73eoRQ} {{{ArIAAAAEOka4hF0d 常务副总经理} 03} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkm4hF0d 副总经理} 04} ArIAAAAERv73eoRQ} {{{ArIAAAAEOky4hF0d 总工程师} 05} ArIAAAAERv73eoRQ} {{{ArIAAAAEOk+4hF0d 总经济师} 06} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlK4hF0d 财务总监} 07} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlW4hF0d 总经理助理} 08} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOli4hF0d 副总工程师} 09} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOlu4hF0d 厂长} 10} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOl64hF0d 部长} 11} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmG4hF0d 主任} 12} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmS4hF0d 副厂长} 13} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOme4hF0d 副部长} 14} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOmq4hF0d 副主任} 15} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOm24hF0d 厂长助理} 16} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnC4hF0d 部长助理} 17} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnO4hF0d 主任助理} 18} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOna4hF0d 主管工程师} 19} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnm4hF0d 车间主任} 20} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOny4hF0d 车间副主任} 21} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOn+4hF0d 科长} 22} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoK4hF0d 炉长} 23} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoW4hF0d 主管} 24} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoi4hF0d 三大员} 25} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOou4hF0d 值长} 26} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOo64hF0d 副值长} 27} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpG4hF0d 工段长} 28} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpS4hF0d 班长} 29} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpe4hF0d 副班长} 30} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpq4hF0d 车队队长} 31} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOp24hF0d 车队副队长} 32} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqC4hF0d 车队副班长} 33} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqO4hF0d 保卫队长} 34} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqa4hF0d 保卫副队长} 35} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqm4hF0d 专工} 36} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqy4hF0d 技术人员} 37} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOq+4hF0d 技师} 38} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrK4hF0d 维修工} 39} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrW4hF0d 科员} 40} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOri4hF0d 队员} 41} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOru4hF0d 小车司机} 42} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOr64hF0d 厨师} 43} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsG4hF0d 面点师} 44} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsS4hF0d 服务员} 45} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOse4hF0d 主操} 46} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsq4hF0d 副操} 47} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOs24hF0d 工程车司机} 48} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtC4hF0d 管理员} 49} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtO4hF0d 电工} 50} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOta4hF0d 化验员} 51} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtm4hF0d 计量员} 52} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOty4hF0d 采样工} 53} ArIAAAAERw/3eoRQ}]]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {1 生产操作工 6 2 1654158352 ZW202204100003 1 ArIAAAAEOuW4hF0d 56}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {2 仪表工 6 2 1654158352 ZW20220410002 1 ArIAAAAEOt+4hF0d 54}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {3 临时工 7 1 1654158352 ZW202204110063 1 ArIAAAAEOuK4hF0d 55}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {4 组长 6 2 1654158352 ZW202204100021 1 ArIAAAAEOui4hF0d 57}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {5 技工 6 2 1654158352 ZW202204100002 1 ArIAAAAEOuu4hF0d 58}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {6 保卫班长 5 3 1654158352 ZW202204100026 1 ArIAAAAEOu64hF0d 59}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {7 帮厨 6 2 1654158352 ZW202204100022 1 ArIAAAAEOvG4hF0d 60}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {8 保洁员 6 2 1654158352 ZW202204100023 1 ArIAAAAEOvS4hF0d 61}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {9 业务员 6 2 1654158352 ZW202204100024 1 ArIAAAAEOve4hF0d 62}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {10 技术员助理 6 2 1654158352 ZW202204100025 1 ArIAAAAEOvq4hF0d 63}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {11 董事长 1 23 1654158352 ZW202204110062 1 ArIAAAAEOjq4hF0d 001}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {12 副董事长 1 22 1654158352 ZW202204110061 1 ArIAAAAEOj24hF0d 002}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {13 总经理 1 21 1654158352 ZW20220411006 1 ArIAAAAEOkC4hF0d 01}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {14 第一副总经理 1 20 1654158352 ZW202204110059 1 ArIAAAAEOkO4hF0d 02}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {15 常务副总经理 1 19 1654158352 ZW202204110058 1 ArIAAAAEOka4hF0d 03}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {16 副总经理 1 18 1654158352 ZW202204110057 1 ArIAAAAEOkm4hF0d 04}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {17 总工程师 1 17 1654158352 ZW202204110056 1 ArIAAAAEOky4hF0d 05}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {18 总经济师 1 16 1654158352 ZW202204110055 1 ArIAAAAEOk+4hF0d 06}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {19 财务总监 1 15 1654158352 ZW202204110054 1 ArIAAAAEOlK4hF0d 07}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {20 总经理助理 2 14 1654158352 ZW202204110053 1 ArIAAAAEOlW4hF0d 08}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {21 副总工程师 2 13 1654158352 ZW202204110052 1 ArIAAAAEOli4hF0d 09}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {22 厂长 2 12 1654158352 ZW202204110051 1 ArIAAAAEOlu4hF0d 10}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {23 部长 2 12 1654158352 ZW20220411005 1 ArIAAAAEOl64hF0d 11}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {24 主任 2 12 1654158352 ZW202204110049 1 ArIAAAAEOmG4hF0d 12}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {25 副厂长 3 11 1654158352 ZW202204110047 1 ArIAAAAEOmS4hF0d 13}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {26 副部长 3 11 1654158352 ZW202204110046 1 ArIAAAAEOme4hF0d 14}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {27 副主任 3 11 1654158352 ZW202204110045 1 ArIAAAAEOmq4hF0d 15}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {28 厂长助理 4 10 1654158352 ZW202204110044 1 ArIAAAAEOm24hF0d 16}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {29 部长助理 4 10 1654158352 ZW202204110043 1 ArIAAAAEOnC4hF0d 17}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {30 主任助理 4 10 1654158352 ZW202204110042 1 ArIAAAAEOnO4hF0d 18}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {31 主管工程师 4 10 1654158352 ZW202204110041 1 ArIAAAAEOna4hF0d 19}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {32 车间主任 4 10 1654158352 ZW202204110048 1 ArIAAAAEOnm4hF0d 20}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {33 车间副主任 4 10 1654158352 ZW20220411004 1 ArIAAAAEOny4hF0d 21}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {34 科长 5 9 1654158352 ZW202204100039 1 ArIAAAAEOn+4hF0d 22}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {35 炉长 5 4 1654158352 ZW202204100038 1 ArIAAAAEOoK4hF0d 23}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {36 主管 5 8 1654158352 ZW202204100037 1 ArIAAAAEOoW4hF0d 24}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {37 三大员 5 7 1654158352 ZW202204100036 1 ArIAAAAEOoi4hF0d 25}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {38 值长 5 6 1654158352 ZW202204100035 1 ArIAAAAEOou4hF0d 26}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {39 副值长 5 5 1654158352 ZW202204100034 1 ArIAAAAEOo64hF0d 27}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {40 工段长 5 4 1654158352 ZW202204100033 1 ArIAAAAEOpG4hF0d 28}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {41 班长 5 3 1654158352 ZW202204100032 1 ArIAAAAEOpS4hF0d 29}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {42 副班长 5 3 1654158352 ZW202204100031 1 ArIAAAAEOpe4hF0d 30}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {43 车队队长 5 3 1654158352 ZW20220410003 1 ArIAAAAEOpq4hF0d 31}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {44 车队副队长 5 3 1654158352 ZW202204100029 1 ArIAAAAEOp24hF0d 32}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {45 车队副班长 5 1 1654158352 1 ArIAAAAEOqC4hF0d 33}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {46 保卫队长 5 3 1654158352 ZW202204100028 1 ArIAAAAEOqO4hF0d 34}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {47 保卫副队长 5 3 1654158352 ZW202204100027 1 ArIAAAAEOqa4hF0d 35}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {48 专工 5 6 1654158352 ZW202204190066 1 ArIAAAAEOqm4hF0d 36}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {49 技术人员 5 6 1654158352 ZW202204190067 1 ArIAAAAEOqy4hF0d 37}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {50 技师 6 2 1654158352 ZW202204100004 1 ArIAAAAEOq+4hF0d 38}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {51 维修工 6 2 1654158352 ZW202204100005 1 ArIAAAAEOrK4hF0d 39}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {52 科员 6 2 1654158352 ZW202204100006 1 ArIAAAAEOrW4hF0d 40}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {53 队员 6 2 1654158352 ZW202204100007 1 ArIAAAAEOri4hF0d 41}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {54 小车司机 6 2 1654158352 ZW202204100008 1 ArIAAAAEOru4hF0d 42}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {55 厨师 6 2 1654158352 ZW202204100009 1 ArIAAAAEOr64hF0d 43}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {56 面点师 6 2 1654158352 ZW20220410001 1 ArIAAAAEOsG4hF0d 44}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {57 服务员 6 2 1654158352 ZW202204100011 1 ArIAAAAEOsS4hF0d 45}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {58 主操 6 2 1654158352 ZW202204100012 1 ArIAAAAEOse4hF0d 46}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {59 副操 6 2 1654158352 ZW202204100013 1 ArIAAAAEOsq4hF0d 47}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {60 工程车司机 6 2 1654158352 ZW202204100014 1 ArIAAAAEOs24hF0d 48}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {61 管理员 6 2 1654158352 ZW202204100015 1 ArIAAAAEOtC4hF0d 49}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {62 电工 6 2 1654158352 ZW202204100016 1 ArIAAAAEOtO4hF0d 50}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {63 化验员 6 2 1654158352 ZW202204100017 1 ArIAAAAEOta4hF0d 51}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {64 计量员 6 2 1654158352 ZW202204100018 1 ArIAAAAEOtm4hF0d 52}]
[Add] 2022/06/02 16:25:52 [职务写入成功! <nil> {65 采样工 6 2 1654158352 ZW202204100019 1 ArIAAAAEOty4hF0d 53}]
[Info] 2022/06/02 16:28:33 [[{{{ArIAAAAEOuW4hF0d 生产操作工} 56} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOt+4hF0d 仪表工} 54} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuK4hF0d 临时工} 55} ArIAAAAERxL3eoRQ} {{{ArIAAAAEOui4hF0d 组长} 57} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOuu4hF0d 技工} 58} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOu64hF0d 保卫班长} 59} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOvG4hF0d 帮厨} 60} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvS4hF0d 保洁员} 61} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOve4hF0d 业务员} 62} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOvq4hF0d 技术员助理} 63} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOjq4hF0d 董事长} 001} ArIAAAAERv73eoRQ} {{{ArIAAAAEOj24hF0d 副董事长} 002} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkC4hF0d 总经理} 01} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkO4hF0d 第一副总经理} 02} ArIAAAAERv73eoRQ} {{{ArIAAAAEOka4hF0d 常务副总经理} 03} ArIAAAAERv73eoRQ} {{{ArIAAAAEOkm4hF0d 副总经理} 04} ArIAAAAERv73eoRQ} {{{ArIAAAAEOky4hF0d 总工程师} 05} ArIAAAAERv73eoRQ} {{{ArIAAAAEOk+4hF0d 总经济师} 06} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlK4hF0d 财务总监} 07} ArIAAAAERv73eoRQ} {{{ArIAAAAEOlW4hF0d 总经理助理} 08} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOli4hF0d 副总工程师} 09} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOlu4hF0d 厂长} 10} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOl64hF0d 部长} 11} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmG4hF0d 主任} 12} ArIAAAAERwP3eoRQ} {{{ArIAAAAEOmS4hF0d 副厂长} 13} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOme4hF0d 副部长} 14} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOmq4hF0d 副主任} 15} ArIAAAAERwb3eoRQ} {{{ArIAAAAEOm24hF0d 厂长助理} 16} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnC4hF0d 部长助理} 17} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnO4hF0d 主任助理} 18} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOna4hF0d 主管工程师} 19} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOnm4hF0d 车间主任} 20} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOny4hF0d 车间副主任} 21} ArIAAAAERwn3eoRQ} {{{ArIAAAAEOn+4hF0d 科长} 22} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoK4hF0d 炉长} 23} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoW4hF0d 主管} 24} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOoi4hF0d 三大员} 25} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOou4hF0d 值长} 26} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOo64hF0d 副值长} 27} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpG4hF0d 工段长} 28} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpS4hF0d 班长} 29} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpe4hF0d 副班长} 30} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOpq4hF0d 车队队长} 31} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOp24hF0d 车队副队长} 32} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqC4hF0d 车队副班长} 33} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqO4hF0d 保卫队长} 34} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqa4hF0d 保卫副队长} 35} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqm4hF0d 专工} 36} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOqy4hF0d 技术人员} 37} ArIAAAAERwz3eoRQ} {{{ArIAAAAEOq+4hF0d 技师} 38} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrK4hF0d 维修工} 39} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOrW4hF0d 科员} 40} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOri4hF0d 队员} 41} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOru4hF0d 小车司机} 42} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOr64hF0d 厨师} 43} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsG4hF0d 面点师} 44} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsS4hF0d 服务员} 45} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOse4hF0d 主操} 46} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOsq4hF0d 副操} 47} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOs24hF0d 工程车司机} 48} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtC4hF0d 管理员} 49} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtO4hF0d 电工} 50} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOta4hF0d 化验员} 51} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOtm4hF0d 计量员} 52} ArIAAAAERw/3eoRQ} {{{ArIAAAAEOty4hF0d 采样工} 53} ArIAAAAERw/3eoRQ}]]
[Add] 2022/06/02 16:28:33 [职务写入成功! <nil> {66 生产操作工 6 1 1654158513 1 ArIAAAAEOuW4hF0d 56}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOt+4hF0d 仪表工} 54} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOuK4hF0d 临时工} 55} ArIAAAAERxL3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOui4hF0d 组长} 57} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOuu4hF0d 技工} 58} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOu64hF0d 保卫班长} 59} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOvG4hF0d 帮厨} 60} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOvS4hF0d 保洁员} 61} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOve4hF0d 业务员} 62} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOvq4hF0d 技术员助理} 63} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOjq4hF0d 董事长} 001} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOj24hF0d 副董事长} 002} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOkC4hF0d 总经理} 01} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOkO4hF0d 第一副总经理} 02} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOka4hF0d 常务副总经理} 03} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOkm4hF0d 副总经理} 04} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOky4hF0d 总工程师} 05} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOk+4hF0d 总经济师} 06} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOlK4hF0d 财务总监} 07} ArIAAAAERv73eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOlW4hF0d 总经理助理} 08} ArIAAAAERwP3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOli4hF0d 副总工程师} 09} ArIAAAAERwP3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOlu4hF0d 厂长} 10} ArIAAAAERwP3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOl64hF0d 部长} 11} ArIAAAAERwP3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOmG4hF0d 主任} 12} ArIAAAAERwP3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOmS4hF0d 副厂长} 13} ArIAAAAERwb3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOme4hF0d 副部长} 14} ArIAAAAERwb3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOmq4hF0d 副主任} 15} ArIAAAAERwb3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOm24hF0d 厂长助理} 16} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOnC4hF0d 部长助理} 17} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOnO4hF0d 主任助理} 18} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOna4hF0d 主管工程师} 19} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOnm4hF0d 车间主任} 20} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOny4hF0d 车间副主任} 21} ArIAAAAERwn3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOn+4hF0d 科长} 22} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOoK4hF0d 炉长} 23} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOoW4hF0d 主管} 24} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOoi4hF0d 三大员} 25} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOou4hF0d 值长} 26} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOo64hF0d 副值长} 27} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOpG4hF0d 工段长} 28} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOpS4hF0d 班长} 29} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOpe4hF0d 副班长} 30} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOpq4hF0d 车队队长} 31} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOp24hF0d 车队副队长} 32} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOqC4hF0d 车队副班长} 33} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOqO4hF0d 保卫队长} 34} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOqa4hF0d 保卫副队长} 35} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOqm4hF0d 专工} 36} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOqy4hF0d 技术人员} 37} ArIAAAAERwz3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOq+4hF0d 技师} 38} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOrK4hF0d 维修工} 39} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOrW4hF0d 科员} 40} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOri4hF0d 队员} 41} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOru4hF0d 小车司机} 42} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOr64hF0d 厨师} 43} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOsG4hF0d 面点师} 44} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOsS4hF0d 服务员} 45} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOse4hF0d 主操} 46} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOsq4hF0d 副操} 47} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOs24hF0d 工程车司机} 48} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOtC4hF0d 管理员} 49} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOtO4hF0d 电工} 50} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOta4hF0d 化验员} 51} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOtm4hF0d 计量员} 52} ArIAAAAERw/3eoRQ}]
[Edit] 2022/06/02 16:28:33 [职务更新成功! <nil> {{{ArIAAAAEOty4hF0d 采样工} 53} ArIAAAAERw/3eoRQ}]
[Trace] 2022/06/02 22:30:00 [开始执行行政组织类型对照]
[Info] 2022/06/02 22:30:00 [[{00000000-0000-0000-0000-00000000000162824988 集团} {00000000-0000-0000-0000-00000000000262824988 公司} {00000000-0000-0000-0000-00000000000362824988 部门} {ArIAAAAENi5igkmI 集团本部} {ArIAAAAENjFigkmI 二级部门} {ArIAAAAEPtpigkmI 车间} {ArIAAAAENitigkmI 子集团} {ArIAAAAENjRigkmI 工段}]]
[Trace] 2022/06/02 22:30:00 [结束执行行政组织类型对照]
[Trace] 2022/06/02 22:30:00 [开始执行职务类型对照]
[Info] 2022/06/02 22:30:00 [[{{ArIAAAAERv73eoRQ 高管} } {{ArIAAAAERwP3eoRQ 中层正职} } {{ArIAAAAERwb3eoRQ 中层副职} } {{ArIAAAAERwn3eoRQ 中层助理} } {{ArIAAAAERwz3eoRQ 基层管理} } {{ArIAAAAERw/3eoRQ 执行人员} } {{ArIAAAAERxL3eoRQ 临时工} } {{ArIAAAAER/X3eoRQ 测试} }]]
[Trace] 2022/06/02 22:30:00 [结束执行职务类型对照]

14
log/202206/20220603.log

File diff suppressed because one or more lines are too long

28
log/202206/20220604.log

File diff suppressed because one or more lines are too long

175
log/202206/20220607.log

File diff suppressed because one or more lines are too long

13
log/202206/20220614.log

File diff suppressed because one or more lines are too long

15
log/202206/20220615.log

File diff suppressed because one or more lines are too long

3
log/202206/20220616.log

File diff suppressed because one or more lines are too long

501
log/20220603.log

File diff suppressed because one or more lines are too long

23
log/20220604.log

File diff suppressed because one or more lines are too long

3
models/double_worker.go

@ -8,7 +8,7 @@ import (
//双职工
type DoubleWorker 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:员工工号;index"`
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:所在公司"`
Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:'';not null;comment:所在部门"`
@ -16,6 +16,7 @@ type DoubleWorker struct {
Tel string `json:"tel" gorm:"column:tel;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:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
}
func (DoubleWorker *DoubleWorker) TableName() string {

1
models/emergency_contact.go

@ -14,6 +14,7 @@ type EmergencyContact struct {
Tel string `json:"tel" gorm:"column:tel;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:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
}
func (EmergencyContact *EmergencyContact) TableName() string {

2
models/family_members.go

@ -17,6 +17,8 @@ type FamilyMembers struct {
Tel string `json:"tel" gorm:"column:tel;type:varchar(255) unsigned;default:'';not null;comment:紧急联系人电话"`
PoliticalOutlook int `json:"politicaloutlook" gorm:"column:political_outlook;type:int(3) unsigned;default:1;not null;comment:政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)"`
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:删除)"`
}
func (FamilyMembers *FamilyMembers) TableName() string {

74
models/man_cont.go

@ -0,0 +1,74 @@
package models
import (
"hr_server/overall"
"strings"
)
type ManCont struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:ID"`
Number string `json:"number" gorm:"column:number;type:varchar(30) unsigned;not null;comment:员工工号"`
Name string `json:"name" gorm:"column:name;type:varchar(255) unsigned;default:'';not null;comment:姓名"`
Icon string `json:"icon" gorm:"column:icon;type:varchar(255) unsigned;default:'';not null;comment:头像"`
HireClass int `json:"hireclass" gorm:"column:hire_class;type:tinyint(1) unsigned;default:1;not null;comment:雇佣类型(1:雇佣入职;2:再入职;)"`
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:主部门"`
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:职位"`
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:职务"`
JobLeve int64 `json:"jobleve" gorm:"column:job_leve;type:bigint(20) unsigned;default:0;not null;comment:职务等级"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:写入时间"`
EiteTime int64 `json:"eitetime" gorm:"column:eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"`
Wechat string `json:"wechat" gorm:"column:wechat;type:varchar(255) unsigned;default:'';not null;comment:微信UserId"`
WorkWechat string `json:"workwechat" gorm:"column:work_wechat;type:varchar(255) unsigned;default:'';not null;comment:企业微信UserId"`
State int `json:"state" gorm:"column:state;type:tinyint(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
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:角色"`
Idcardno string `json:"idcardno" gorm:"column:idcardno;type:varchar(50) unsigned;default:'';not null;comment:身份证号"`
Passportno string `json:"passportno" gorm:"column:passportno;type:varchar(50) unsigned;default:'';not null;comment:护照号码"`
Globalroaming string `json:"globalroaming" gorm:"column:globalroaming;type:varchar(50) unsigned;default:'';not null;comment:国际区号"`
Mobilephone string `json:"mobilephone" gorm:"column:mobilephone;type:varchar(50) unsigned;default:'';not null;comment:手机号码"`
Email string `json:"email" gorm:"column:email;type:varchar(255) unsigned;default:'';not null;comment:电子邮件"`
Gender int `json:"gender" gorm:"column:gender;type:tinyint(1) unsigned;default:1;not null;comment:性别(1:男性;2:女性;3:中性)"`
Birthday int64 `json:"birthday" gorm:"column:birthday;type:bigint(20) unsigned;default:0;not null;comment:birthday"`
Myfolk string `json:"myfolk" gorm:"column:myfolk;type:varchar(50) unsigned;default:'';not null;comment:民族"`
Nativeplace string `json:"nativeplace" gorm:"column:nativeplace;type:varchar(255) unsigned;default:'';not null;comment:籍贯"`
Idcardstartdate int64 `json:"idcardstartdate" gorm:"column:idcardstartdate;type:bigint(20) unsigned;default:0;not null;comment:身份证有效期开始"`
Idcardenddate int64 `json:"idcardenddate" gorm:"column:idcardenddate;type:bigint(20) unsigned;default:0;not null;comment:身份证有效期结束"`
Idcardaddress string `json:"idcardaddress" gorm:"column:idcardaddress;type:varchar(255) unsigned;default:'';not null;comment:身份证地址"`
IdcardIssued string `json:"idcardIssued" gorm:"column:idcardIssued;type:varchar(255) unsigned;default:'';not null;comment:身份证签发机关"`
Health int `json:"health" gorm:"column:health;type:tinyint(1) unsigned;default:1;not null;comment:健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废)"`
Maritalstatus int `json:"maritalstatus" gorm:"column:maritalstatus;type:tinyint(1) unsigned;default:1;not null;comment:婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)"`
Internaltelephone string `json:"internaltelephone" gorm:"column:internaltelephone;type:varchar(255) unsigned;default:'';not null;comment:内线电话"`
Currentresidence string `json:"currentresidence" gorm:"column:currentresidence;type:varchar(255) unsigned;default:'';not null;comment:现居住地址"`
Constellation int `json:"constellationing" gorm:"column:constellationing;type:tinyint(3) unsigned;comment:星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)"`
Isdoubleworker int `json:"isdoubleworker" gorm:"column:isdoubleworker;type:tinyint(1) unsigned;default:1;comment:是否双职工(1:是;2:否)"`
Isveterans int `json:"isveterans" gorm:"column:isveterans;type:tinyint(1) unsigned;default:1;comment:是否为退役军人(1:是;2:否)"`
Veteransnumber string `json:"veteransnumber" gorm:"column:veteransnumber;type:varchar(255) unsigned;default:'';comment:退役证编号"`
Jobstartdate int64 `json:"jobstartdate" gorm:"column:jobstartdate;type:bigint(20) unsigned;default:0;comment:参加工作日期"`
Entrydate int64 `json:"entrydate" gorm:"column:entrydate;type:bigint(20) unsigned;default:0;comment:入职日期"`
Probationperiod int `json:"probationperiod" gorm:"column:probationperiod;type:int(5) unsigned;default:0;comment:试用期"`
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:中共党员)"`
}
func (ManCont *ManCont) TableName() string {
return "man_cont"
}
//获取职务分类内容
func (cont *ManCont) 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
}

17
models/myuser.go

@ -1,5 +1,10 @@
package models
import (
"hr_server/overall"
"strings"
)
//个人信息主表
type WorkMan struct {
Id int64 `json:"id" gorm:"column:wm_id;type:bigint(20);;primaryKey;unique;not null;autoIncrement;index"`
@ -27,6 +32,18 @@ func (WorkMan *WorkMan) TableName() string {
return "worker_man"
}
//获取职务分类内容
func (cont *WorkMan) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_Master.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}
//个人信息附表
type WorkManAttribute struct {
KeyAttr int64 `json:"key" gorm:"column:wmd_key;type:bigint(50) unsigned;default:0;not null;comment:唯一识别符"`

2
models/personnel_change_record.go

@ -17,6 +17,7 @@ type PersonnelChangeRecord struct {
Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:0;comment:入职分厂"`
Adminorg int64 `json:"adminorg" gorm:"column:adminorg;type:bigint(20) unsigned;default:0;comment:入职行政组织"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
}
func (PersonnelChangeRecord *PersonnelChangeRecord) TableName() string {
@ -43,6 +44,7 @@ type ManTransferLog struct {
Department string `json:"department" gorm:"column:department;type:varchar(255) unsigned;default:0;comment:入职分厂"`
Adminorg int64 `json:"adminorg" gorm:"column:adminorg;type:bigint(20) unsigned;default:0;comment:入职行政组织"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:key"`
}
func (ManTransferLog *ManTransferLog) TableName() string {

13
models/personnel_content.go

@ -14,7 +14,7 @@ type PersonnelContent struct {
Globalroaming string `json:"globalroaming" gorm:"column:globalroaming;type:varchar(50) unsigned;default:'';not null;comment:国际区号"`
Mobilephone string `json:"mobilephone" gorm:"column:mobilephone;type:varchar(50) unsigned;default:'';not null;comment:手机号码"`
Email string `json:"email" gorm:"column:email;type:varchar(255) unsigned;default:'';not null;comment:电子邮件"`
Gender int `json:"gender" gorm:"column:gender;gender:tinyint(1) unsigned;default:1;not null;comment:性别(1:男性;2:女性;3:中性)"`
Gender int `json:"gender" gorm:"column:gender;type:tinyint(1) unsigned;default:1;not null;comment:性别(1:男性;2:女性;3:中性)"`
Birthday int64 `json:"birthday" gorm:"column:birthday;type:bigint(20) unsigned;default:0;not null;comment:birthday"`
Myfolk string `json:"myfolk" gorm:"column:myfolk;type:varchar(50) unsigned;default:'';not null;comment:民族"`
Nativeplace string `json:"nativeplace" gorm:"column:nativeplace;type:varchar(255) unsigned;default:'';not null;comment:籍贯"`
@ -22,20 +22,21 @@ type PersonnelContent struct {
Idcardenddate int64 `json:"idcardenddate" gorm:"column:idcardenddate;type:bigint(20) unsigned;default:0;not null;comment:身份证有效期结束"`
Idcardaddress string `json:"idcardaddress" gorm:"column:idcardaddress;type:varchar(255) unsigned;default:'';not null;comment:身份证地址"`
IdcardIssued string `json:"idcardIssued" gorm:"column:idcardIssued;type:varchar(255) unsigned;default:'';not null;comment:身份证签发机关"`
Health int `json:"health" gorm:"column:health;health:tinyint(1) unsigned;default:1;not null;comment:健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废)"`
Maritalstatus int `json:"maritalstatus" gorm:"column:maritalstatus;maritalstatus:tinyint(1) unsigned;default:1;not null;comment:婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)"`
Health int `json:"health" gorm:"column:health;type:tinyint(1) unsigned;default:1;not null;comment:健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废)"`
Maritalstatus int `json:"maritalstatus" gorm:"column:maritalstatus;type:tinyint(1) unsigned;default:1;not null;comment:婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异)"`
Internaltelephone string `json:"internaltelephone" gorm:"column:internaltelephone;type:varchar(255) unsigned;default:'';not null;comment:内线电话"`
Currentresidence string `json:"currentresidence" gorm:"column:currentresidence;type:varchar(255) unsigned;default:'';not null;comment:现居住地址"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
Constellation int `json:"constellationing" gorm:"column:constellationing;type:tinyint(3) unsigned;comment:星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座)"`
Isdoubleworker int `json:"isdoubleworker" gorm:"column:isdoubleworker;isdoubleworker:tinyint(1) unsigned;default:1;comment:是否双职工(1:是;2:否)"`
Isveterans int `json:"isveterans" gorm:"column:isveterans;isveterans:tinyint(1) unsigned;default:1;comment:是否为退役军人(1:是;2:否)"`
Isdoubleworker int `json:"isdoubleworker" gorm:"column:isdoubleworker;type:tinyint(1) unsigned;default:1;comment:是否双职工(1:是;2:否)"`
Isveterans int `json:"isveterans" gorm:"column:isveterans;type:tinyint(1) unsigned;default:1;comment:是否为退役军人(1:是;2:否)"`
Veteransnumber string `json:"veteransnumber" gorm:"column:veteransnumber;type:varchar(255) unsigned;default:'';comment:退役证编号"`
Jobstartdate int64 `json:"jobstartdate" gorm:"column:jobstartdate;type:bigint(20) unsigned;default:0;comment:参加工作日期"`
Entrydate int64 `json:"entrydate" gorm:"column:entrydate;type:bigint(20) unsigned;default:0;comment:入职日期"`
Probationperiod int `json:"probationperiod" gorm:"column:probationperiod;type:int(5) unsigned;default:0;comment:试用期"`
Planformaldate int64 `json:"planformaldate" gorm:"column:planformaldate;type:bigint(20) unsigned;default:0;comment:预计转正日期"`
PoliticalOutlook int `json:"politicaloutlook" gorm:"column:political_outlook;political_outlook:tinyint(3) unsigned;default:1;comment:政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员)"`
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"`
}
func (PersonnelContent *PersonnelContent) TableName() string {

2
models/personnel_education.go

@ -18,6 +18,8 @@ type PersonnelEducation struct {
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;comment:写入时间"`
Level int `json:"level" gorm:"column:level;type:tinyint(1) unsigned;default:1;comment:学历类型(1:普通;2:第一学历;3:最高学历)"`
AcademicDegree int `json:"academicdegree" gorm:"column:academic_degree;type:tinyint(2) unsigned;default:1;comment:学位(0:无;1:学士;2:硕士;3:博士)"`
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:删除)"`
}
func (PersonnelEducation *PersonnelEducation) TableName() string {

51
models/work_history.go

@ -0,0 +1,51 @@
package models
import (
"hr_server/overall"
"strings"
)
//工作履历
type WorkHistory struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Number string `json:"number" gorm:"column:number;type:varchar(50) unsigned;default:'';not null;comment:工号"`
Key int64 `json:"key" gorm:"column:key;type:bigint(50) unsigned;default:0;not null;comment:身份识别"`
Company string `json:"company" gorm:"column:company;type:varchar(255) unsigned;default:'';comment:公司"`
Deparment string `json:"deparment" gorm:"column:deparment;type:varchar(255) unsigned;default:'';comment:部门"`
Job string `json:"job" gorm:"column:job;type:varchar(255) unsigned;default:'';comment:职务"`
EntryTime int64 `json:"entrytime" gorm:"column:entry_time;type:bigint(20) unsigned;default:0;not null;comment:入职时间"`
Leavedate int64 `json:"leavedate" gorm:"column:leavedate;type:bigint(20) unsigned;default:0;not null;comment:离职日期"`
Witness string `json:"witness" gorm:"column:witness;type:varchar(255) unsigned;default:'';comment:证明人"`
WitnessTel string `json:"witnesstel" gorm:"column:witness_tel;type:varchar(255) unsigned;default:'';comment:证明人电话"`
Remarks string `json:"remarks" gorm:"column:remarks;type:text unsigned;default:'';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 (WorkHistory *WorkHistory) TableName() string {
return "work_history"
}
//编辑职务分类内容
func (cont *WorkHistory) EiteCont(whereMap interface{}, saveData map[string]interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error
return
}
//获取行政组织内容
func (cont *WorkHistory) 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
}
//根据条件获取总数
func (cont *WorkHistory) CountCont(whereMap interface{}) (countId int64) {
overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Count(&countId)
return
}
Loading…
Cancel
Save