Browse Source

修改金蝶对照时间样式

v1.1_dev
超级管理员 3 years ago
parent
commit
98885f818c
  1. 473
      api/version1/personnelapi/kingdeenew.go
  2. 17
      api/version1/personnelapi/type.go
  3. 19
      api/version1/shiyan/shiyan.go
  4. 4
      initialization/route/route_entry.go
  5. 13
      log/202206/20220623.log
  6. 15
      log/202206/20220624.log
  7. 16
      log/202206/20220625.log
  8. 15
      log/202206/20220626.log
  9. 15
      log/202206/20220627.log
  10. 15
      log/202206/20220628.log
  11. 3
      log/202206/20220629.log
  12. 38
      middleware/snowflake/snowflake.go
  13. 21
      middleware/snowflake/type.go
  14. 47
      models/inside_work_history.go

473
api/version1/personnelapi/kingdeenew.go

@ -2,6 +2,7 @@ package personnelapi
import (
"fmt"
"hr_server/middleware/snowflake"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
@ -193,6 +194,9 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
//编辑工作履历
synPro.Add(1)
go editWorkHistoryMan(perArcInfo.Key, manCont.Number, manCont.WorkHistoryList)
//编辑集团内工作履历
synPro.Add(1)
go editInsideWorkHistoryMan(perArcInfo.Key, manCont.InsideWorkHistory)
synPro.Wait()
}
}
@ -203,7 +207,13 @@ func eidtAddManContJinDie(perArcInfo models.PersonArchives, manCont addKingdeePe
//新增员工
func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel) error {
manKeyNum := overallhandle.TableNumber()
var manKeyNum int64 = 0
node, nodeErr := snowflake.NewWorker(1)
if nodeErr == nil {
manKeyNum = node.GetId()
} else {
manKeyNum = overallhandle.TableNumber()
}
if oldSchool.Key != 0 {
manKeyNum = oldSchool.Key
}
@ -344,9 +354,12 @@ func newAddManContJinDie(oldSchool models.WorkMan, manCont addKingdeePersonnel)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdeeNew(manKeyNum, manCont)
//编辑工作履历
//编辑集团外工作履历
synPro.Add(1)
go editWorkHistoryMan(manKeyNum, manCont.Number, manCont.WorkHistoryList)
//编辑集团内工作履历
synPro.Add(1)
go editInsideWorkHistoryMan(manKeyNum, manCont.InsideWorkHistory)
synPro.Wait()
}
return nil
@ -371,13 +384,20 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
saveData["idcardno"] = manCont.IDCardNo
}
if manCont.IDCardStartTime != "" {
idCardStarTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardStartTime))
idCardStarTime, idCarErr := overallhandle.DateToTimeStamp(manCont.IDCardStartTime)
if idCarErr == false {
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))
idCardEndTime, idCardEndTimeErr := overallhandle.DateToTimeStamp(manCont.IDCardEndTime)
if idCardEndTimeErr == false {
idCardEndTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
}
if idCardEndTime != manInfo.Idcardenddate {
saveData["idcardenddate"] = idCardEndTime
}
@ -398,7 +418,10 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
saveData["gender"] = manCont.Gender
}
if manCont.Birthday != "" {
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
brrthday, brrthdayErr := overallhandle.DateToTimeStamp(manCont.Birthday)
if brrthdayErr == false {
brrthday, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
}
if brrthday != manInfo.Birthday {
saveData["birthday"] = brrthday
}
@ -437,13 +460,20 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
}
}
if manCont.WorkingDate != "" {
workInData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
workInData, workInDataErr := overallhandle.DateToTimeStamp(manCont.WorkingDate)
if workInDataErr == false {
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))
entryData, entryDataErr := overallhandle.DateToTimeStamp(manCont.EntryDate)
if entryDataErr == false {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.EntryDate))
}
if entryData != manInfo.Entrydate {
saveData["entrydate"] = entryData
}
@ -452,14 +482,21 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
saveData["probationperiod"] = manCont.ProbationPeriod
entryData := manInfo.Entrydate
if manCont.EntryDate != "" {
entryDataErr := false
entryData, entryDataErr = overallhandle.DateToTimeStamp(manCont.EntryDate)
if entryDataErr == false {
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))
planformalData, planformalDataErr := overallhandle.DateToTimeStamp(manCont.ConfirmationDate)
if planformalDataErr == false {
planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
}
saveData["planformaldate"] = planformalData
}
if manCont.PoliticalOutlook != 0 && manCont.PoliticalOutlook != manInfo.PoliticalOutlook {
@ -477,12 +514,20 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
manInfo.Idcardno = manCont.IDCardNo
idCardStarTime := time.Now().Unix()
if manCont.IDCardStartTime != "" {
idCardStarTimeErr := false
idCardStarTime, idCardStarTimeErr = overallhandle.DateToTimeStamp(manCont.IDCardStartTime)
if idCardStarTimeErr == false {
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))
idCardEndTimeErr := false
idCardEndTime, idCardEndTimeErr = overallhandle.DateToTimeStamp(manCont.IDCardEndTime)
if idCardEndTimeErr == false {
idCardEndTime, idCardEndTimeErr = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.IDCardEndTime))
}
}
manInfo.Idcardenddate = idCardEndTime //身份证有效期结束
manInfo.Idcardaddress = manCont.IDCardAddress //身份证地址
@ -490,7 +535,11 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
manInfo.Mobilephone = manCont.Mobilephone
manInfo.Email = manCont.Email
manInfo.Gender = manCont.Gender
brrthday, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
brrthday, brrthdayErr := overallhandle.DateToTimeStamp(manCont.Birthday)
if brrthdayErr == false {
brrthday, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.Birthday))
}
manInfo.Birthday = brrthday
manInfo.Myfolk = manCont.Nation
manInfo.Nativeplace = manCont.NativePlace
@ -504,18 +553,31 @@ func editManAuxiliaryDataNew(manKeyNum int64, manCont addKingdeePersonnel) {
manInfo.Veteransnumber = manCont.Veteransnumber
workInData := time.Now().Unix()
if manCont.WorkingDate != "" {
workInDataErr := false
workInData, workInDataErr = overallhandle.DateToTimeStamp(manCont.WorkingDate)
if workInDataErr == false {
workInData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.WorkingDate))
}
}
manInfo.Jobstartdate = workInData
entryData := time.Now().Unix()
if manCont.EntryDate != "" {
entryDataErr := false
entryData, entryDataErr = overallhandle.DateToTimeStamp(manCont.EntryDate)
if entryDataErr == false {
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 != "" {
planformalDataErr := false
planformalData, planformalDataErr = overallhandle.DateToTimeStamp(manCont.ConfirmationDate)
if planformalDataErr == false {
planformalData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.ConfirmationDate))
}
} else {
planformalData = overallhandle.GetFutureMonthTime(entryData, manCont.ProbationPeriod, 2)
}
@ -763,13 +825,19 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
eitdCont["academic_degree"] = manCont.HighestAcademicDegree
}
if manCont.HighestAdmissionTime != "" {
entranceTime, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
entranceTime, entranceTimeErr := overallhandle.DateToTimeStamp(manCont.HighestAdmissionTime)
if entranceTimeErr == false {
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))
graduationTime, graduationTimeErr := overallhandle.DateToTimeStamp(manCont.HighestGraduationTime)
if graduationTimeErr == false {
graduationTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
if graduationTime != perEduContHig.GraduationTime {
eitdCont["graduation_time"] = graduationTime
}
@ -797,13 +865,21 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
perEduContHig.Subject = manCont.HighestSubject // 专业"`
entranceTime := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTimeErr := false
entranceTime, entranceTimeErr = overallhandle.DateToTimeStamp(manCont.HighestAdmissionTime)
if entranceTimeErr == false {
entranceTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
}
perEduContHig.AdmissionTime = entranceTime // 入学时间"`
graduationTime := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTimeErr := false
graduationTime, graduationTimeErr = overallhandle.DateToTimeStamp(manCont.HighestGraduationTime)
if graduationTimeErr == false {
graduationTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
}
perEduContHig.GraduationTime = graduationTime // 毕业时间"`
perEduContHig.Time = time.Now().Unix() // 写入时间"`
perEduContHig.AcademicDegree = manCont.HighestAcademicDegree
@ -827,13 +903,19 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
eitdContFirst["academic_degree"] = manCont.FirstAcademicDegree
}
if manCont.FirstAdmissionTime != "" {
entranceTimeFirst, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstAdmissionTime))
entranceTimeFirst, entranceTimeFirstErr := overallhandle.DateToTimeStamp(manCont.FirstAdmissionTime)
if entranceTimeFirstErr == false {
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))
graduationTimeFirst, graduationTimeFirstErr := overallhandle.DateToTimeStamp(manCont.FirstGraduationTime)
if graduationTimeFirstErr == false {
graduationTimeFirst, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.FirstGraduationTime))
}
if graduationTimeFirst != perEduContFirst.GraduationTime {
eitdContFirst["graduation_time"] = graduationTimeFirst
}
@ -861,13 +943,21 @@ func educatExperKingdeeNew(manKeyNum int64, manCont addKingdeePersonnel) {
perEduContFirst.Subject = manCont.FirstSubject // 专业"`
entranceTimeFirst := time.Now().Unix()
if manCont.HighestAdmissionTime != "" {
entranceTimeFirstErr := false
entranceTimeFirst, entranceTimeFirstErr = overallhandle.DateToTimeStamp(manCont.HighestAdmissionTime)
if entranceTimeFirstErr == false {
entranceTimeFirst, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestAdmissionTime))
}
}
perEduContFirst.AdmissionTime = entranceTimeFirst // 入学时间"`
graduationTimef := time.Now().Unix()
if manCont.HighestGraduationTime != "" {
graduationTimefErr := false
graduationTimef, _ = overallhandle.DateToTimeStamp(manCont.HighestGraduationTime)
if graduationTimefErr == false {
graduationTimef, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", manCont.HighestGraduationTime))
}
}
perEduContFirst.GraduationTime = graduationTimef // 毕业时间"`
perEduContFirst.Time = time.Now().Unix() // 写入时间"`
perEduContFirst.AcademicDegree = manCont.FirstAcademicDegree
@ -890,13 +980,20 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
if isEidtErr == nil {
saveDate := overallhandle.MapOut()
if wvs.EntryTime != "" { //入职时间"`
entryData, _ := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime))
entryData, entryDataErr := overallhandle.DateToTimeStamp(wvs.EntryTime)
if entryDataErr == false {
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))
leaveTime, leaveTimeErr := overallhandle.DateToTimeStamp(wvs.LeaveDate)
if leaveTimeErr == false {
leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate))
}
if leaveTime != whCont.Leavedate {
saveDate["leavedate"] = leaveTime
}
@ -925,13 +1022,21 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
addWorkCont.Job = wvs.Position //职务"`
entryData := time.Now().Unix()
if wvs.EntryTime != "" {
entryDataErr := false
entryData, entryDataErr = overallhandle.DateToTimeStamp(wvs.EntryTime)
if entryDataErr == false {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.EntryTime))
}
}
addWorkCont.EntryTime = entryData //入职时间"`
leaveTime := time.Now().Unix()
if wvs.LeaveDate != "" {
leaveTimeErr := false
leaveTime, leaveTimeErr = overallhandle.DateToTimeStamp(wvs.LeaveDate)
if leaveTimeErr == false {
leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", wvs.LeaveDate))
}
}
addWorkCont.Leavedate = leaveTime //离职日期"`
addWorkCont.Witness = wvs.Witness //证明人"`
addWorkCont.WitnessTel = wvs.WitnessTel //证明人电话"`
@ -952,13 +1057,21 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
addWorkCont.Job = v.Position //职务"`
entryData := time.Now().Unix()
if v.EntryTime != "" {
entryDataErr := false
entryData, entryDataErr = overallhandle.DateToTimeStamp(v.EntryTime)
if entryDataErr == false {
entryData, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.EntryTime))
}
}
addWorkCont.EntryTime = entryData //入职时间"`
leaveTime := time.Now().Unix()
if v.LeaveDate != "" {
leaveTimeErr := false
leaveTime, leaveTimeErr = overallhandle.DateToTimeStamp(v.LeaveDate)
if leaveTimeErr == false {
leaveTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 12:00:00", v.LeaveDate))
}
}
addWorkCont.Leavedate = leaveTime //离职日期"`
addWorkCont.Witness = v.Witness //证明人"`
addWorkCont.WitnessTel = v.WitnessTel //证明人电话"`
@ -973,3 +1086,331 @@ func editWorkHistoryMan(manKeyNum int64, num string, workHistoryList []workHisto
}
}
}
//编辑集团内工作经历
func editInsideWorkHistoryMan(manKeyNum int64, contList []insideHistory) {
defer synPro.Done()
if len(contList) > 0 && manKeyNum > 0 {
//判断是否已经存在集团内工作履历
var insideWork []models.InsideWorkHistory
err := overall.CONSTANT_DB_HR.Model(&models.InsideWorkHistory{}).Select("`id`").Where("`key` = ?", manKeyNum).Find(&insideWork).Error
fmt.Printf("isErr---err---->%v\n", err)
var topGroup int64 = 0
var groupTopCont models.AdministrativeOrganization
groupTopCont.GetCont(map[string]interface{}{"superior": 0}, "id")
topGroup = groupTopCont.Id
if err == nil {
var iInt []int
for i, v := range contList {
var wssCont models.AdministrativeOrganization
wssCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id")
var insiCont models.InsideWorkHistory
isErr := insiCont.GetCont(map[string]interface{}{"`key`": manKeyNum, "workshop_section": wssCont.Id})
fmt.Printf("isErr--1----->%v\n", isErr)
if isErr == nil {
iInt = append(iInt, i)
saveData := overallhandle.MapOut()
if v.Group != "" {
var groupCont models.AdministrativeOrganization
groupCont.GetCont(map[string]interface{}{"kingdeeid": v.Group}, "id")
if groupCont.Id != insiCont.Group {
saveData["group"] = groupCont.Id
}
}
if v.Company != "" {
var companyCont models.AdministrativeOrganization
companyCont.GetCont(map[string]interface{}{"kingdeeid": v.Company}, "id")
if companyCont.Id != insiCont.Company {
saveData["company"] = companyCont.Id
}
}
if v.Department != "" {
var departmentCont models.AdministrativeOrganization
departmentCont.GetCont(map[string]interface{}{"kingdeeid": v.Department}, "id")
if departmentCont.Id != insiCont.Department {
saveData["department"] = departmentCont.Id
}
}
if v.Workshop != "" {
var workshopCont models.AdministrativeOrganization
workshopCont.GetCont(map[string]interface{}{"kingdeeid": v.Workshop}, "id")
if workshopCont.Id != insiCont.WorkShop {
saveData["workshop"] = workshopCont.Id
}
}
if v.WorkshopSection != "" && wssCont.Id != insiCont.WorkshopSection {
saveData["workshop_section"] = wssCont.Id
}
if v.Position != "" {
var positionCont models.Position
positionCont.GetCont(map[string]interface{}{"kingdeeid": v.Position}, "id")
if positionCont.Id != insiCont.Position {
saveData["position"] = positionCont.Id
}
}
if v.GradePositions != 0 && insiCont.GradePositions != insiCont.GradePositions {
saveData["grade_positions"] = v.GradePositions
}
if v.StartTime != "" {
startTime, startTimeErr := overallhandle.DateToTimeStamp(v.StartTime)
if startTimeErr == false {
startTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.StartTime))
}
if startTime != insiCont.StartTime {
saveData["start_time"] = startTime
}
}
if v.StartTime != "" {
if v.EndTime != "至今" && v.EndTime != "2199-12-31 00:00:00" && v.EndTime != "2199-12-31" && v.EndTime != "7258003200" {
endTime, endTimeErr := overallhandle.DateToTimeStamp(v.EndTime)
if endTimeErr == false {
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime))
}
if endTime != insiCont.EndTime {
saveData["end_time"] = endTime
saveData["state"] = 2
}
} else {
saveData["end_time"] = 0
saveData["state"] = 1
}
}
if v.ChangeType != 0 && v.ChangeType != insiCont.ChangeType {
saveData["end_time"] = v.ChangeType
}
if len(saveData) > 0 {
insiCont.EditCont(map[string]interface{}{"`id`": insiCont.Id}, saveData)
}
}
}
if len(iInt) < len(contList) {
var addData []models.InsideWorkHistory
for ii, vv := range contList {
if overallhandle.IsInTrue[int](ii, iInt) == false {
var cont models.InsideWorkHistory
cont.Key = manKeyNum //员工识别符"`
if vv.Group != "" {
var groupCont models.AdministrativeOrganization
groupErr := groupCont.GetCont(map[string]interface{}{"kingdeeid": vv.Group}, "id")
if groupErr == nil {
cont.Group = groupCont.Id //集团"`
} else {
cont.Group = topGroup //集团"`
}
} else {
cont.Group = topGroup //集团"`
}
if vv.Company != "" {
var companyCont models.AdministrativeOrganization
companyErr := companyCont.GetCont(map[string]interface{}{"kingdeeid": vv.Company}, "id")
if companyErr == nil {
cont.Company = companyCont.Id //部室"`
} else {
cont.Company = topGroup //部室"`
}
} else {
cont.Company = topGroup //部室"`
}
if vv.Department != "" {
var departCont models.AdministrativeOrganization
departErr := departCont.GetCont(map[string]interface{}{"kingdeeid": vv.Department}, "id")
if departErr == nil {
cont.Department = departCont.Id //部室"`
} else {
cont.Department = topGroup //部室"`
}
} else {
cont.Department = topGroup //部室"`
}
if vv.Workshop != "" {
var workShopCont models.AdministrativeOrganization
workShopErr := workShopCont.GetCont(map[string]interface{}{"kingdeeid": vv.Workshop}, "id")
if workShopErr == nil {
cont.WorkShop = workShopCont.Id //部室"`
} else {
cont.WorkShop = 0 //二级部门或车间"`
}
} else {
cont.WorkShop = 0 //二级部门或车间"`
}
if vv.WorkshopSection != "" {
var workShopSecCont models.AdministrativeOrganization
workShopSecErr := workShopSecCont.GetCont(map[string]interface{}{"kingdeeid": vv.WorkshopSection}, "id")
if workShopSecErr == nil {
cont.WorkshopSection = workShopSecCont.Id //工段"`
} else {
cont.WorkshopSection = 0 //工段"`
}
} else {
cont.WorkshopSection = 0 //工段"`
}
if vv.Position != "" {
var positionCont models.Position
positionErr := positionCont.GetCont(map[string]interface{}{"kingdeeid": vv.Position}, "id")
if positionErr == nil {
cont.Position = positionCont.Id //职位"`
} else {
cont.Position = 1 //职位"`
}
} else {
cont.Position = 1 //职位"`
}
cont.GradePositions = vv.GradePositions //职等"`
startTime := time.Now().Unix()
if vv.StartTime != "" {
startTimeErr := false
startTime, startTimeErr = overallhandle.DateToTimeStamp(vv.StartTime)
if startTimeErr == false {
startTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", vv.StartTime))
}
}
cont.StartTime = startTime //开始日期"`
cont.State = 1 //状态(1:启用;2:禁用;3:删除)"`
if vv.EndTime != "" {
if vv.EndTime != "至今" && vv.EndTime != "2199-12-31 00:00:00" && vv.EndTime != "2199-12-31" && vv.EndTime != "7258003200" {
endTime, endTimeErr := overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", vv.EndTime))
if endTimeErr == false {
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", vv.EndTime))
}
cont.EndTime = endTime
cont.State = 2
}
}
cont.Team = 1 //班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
changeTypes := vv.ChangeType
if changeTypes == 0 {
changeTypes = 1
}
cont.ChangeType = changeTypes //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
cont.Time = time.Now().Unix() //:创建时间"`
addData = append(addData, cont)
}
}
if len(addData) > 0 {
overall.CONSTANT_DB_HR.Create(&addData)
}
}
} else {
//不存在集团内部工作经历,进行新政
var addData []models.InsideWorkHistory
for _, v := range contList {
var cont models.InsideWorkHistory
cont.Key = manKeyNum //员工识别符"`
if v.Group != "" {
var groupCont models.AdministrativeOrganization
groupErr := groupCont.GetCont(map[string]interface{}{"kingdeeid": v.Group}, "id")
if groupErr == nil {
cont.Group = groupCont.Id //集团"`
} else {
cont.Group = topGroup //集团"`
}
} else {
cont.Group = topGroup //集团"`
}
if v.Company != "" {
var companyCont models.AdministrativeOrganization
companyErr := companyCont.GetCont(map[string]interface{}{"kingdeeid": v.Company}, "id")
if companyErr == nil {
cont.Company = companyCont.Id //部室"`
} else {
cont.Company = topGroup //部室"`
}
} else {
cont.Company = topGroup //部室"`
}
if v.Department != "" {
var departCont models.AdministrativeOrganization
departErr := departCont.GetCont(map[string]interface{}{"kingdeeid": v.Department}, "id")
if departErr == nil {
cont.Department = departCont.Id //部室"`
} else {
cont.Department = topGroup //部室"`
}
} else {
cont.Department = topGroup //部室"`
}
if v.Workshop != "" {
var workShopCont models.AdministrativeOrganization
workShopErr := workShopCont.GetCont(map[string]interface{}{"kingdeeid": v.Workshop}, "id")
if workShopErr == nil {
cont.WorkShop = workShopCont.Id //部室"`
} else {
cont.WorkShop = 0 //二级部门或车间"`
}
} else {
cont.WorkShop = 0 //二级部门或车间"`
}
if v.WorkshopSection != "" {
var workShopSecCont models.AdministrativeOrganization
workShopSecErr := workShopSecCont.GetCont(map[string]interface{}{"kingdeeid": v.WorkshopSection}, "id")
if workShopSecErr == nil {
cont.WorkshopSection = workShopSecCont.Id //工段"`
} else {
cont.WorkshopSection = 0 //工段"`
}
} else {
cont.WorkshopSection = 0 //工段"`
}
if v.Position != "" {
var positionCont models.Position
positionErr := positionCont.GetCont(map[string]interface{}{"kingdeeid": v.Position}, "id")
if positionErr == nil {
cont.Position = positionCont.Id //职位"`
} else {
cont.Position = 1 //职位"`
}
} else {
cont.Position = 1 //职位"`
}
cont.GradePositions = v.GradePositions //职等"`
startTime := time.Now().Unix()
if v.StartTime != "" {
startTimeErr := false
startTime, startTimeErr = overallhandle.DateToTimeStamp(v.StartTime)
if startTimeErr == false {
startTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.StartTime))
}
}
cont.StartTime = startTime //开始日期"`
cont.State = 1 //状态(1:启用;2:休眠;3:删除)"`
if v.EndTime != "" {
if v.EndTime != "至今" && v.EndTime != "2199-12-31 00:00:00" && v.EndTime != "2199-12-31" && v.EndTime != "7258003200" {
endTime, endTimeErr := overallhandle.DateToTimeStamp(v.EndTime)
if endTimeErr == false {
endTime, _ = overallhandle.DateToTimeStamp(fmt.Sprintf("%v 00:00:00", v.EndTime))
}
cont.EndTime = endTime
cont.State = 2 //状态(1:启用;2:休眠;3:删除)"`
}
}
cont.Team = 1 //班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
changeTypes := v.ChangeType
if changeTypes == 0 {
changeTypes = 1
}
cont.ChangeType = changeTypes //变动类型(1:预入职;2:雇佣入职;3:转正;4:职等调整;5:调动调入;6:借调;7:兼职;8:预离职;9:离职;10:退休;11:返聘;12:员工初始化;)"`
cont.Time = time.Now().Unix() //:创建时间"`
addData = append(addData, cont)
}
if len(addData) > 0 {
overall.CONSTANT_DB_HR.Create(&addData)
}
}
}
}

17
api/version1/personnelapi/type.go

@ -245,7 +245,10 @@ type addKingdeePersonnel struct {
UrgentMobilephoneTwo string `json:"urgentmobilephonetwo"` //联系电话
//员工家属表
MemberOfFamily []memberOfFamily `json:"memberoffamily"` //家庭成员
//集团外工作履历
WorkHistoryList []workHistoryAry `json:"workhistorylist"` //工作履历
//集团内工作履历
InsideWorkHistory []insideHistory `json:"insideworkhistory"` //工作履历
}
//人员档案详情
@ -397,3 +400,17 @@ type editWorkHistory struct {
Id string `json:"id"`
workHistoryAry
}
//集团内部工作履历
type insideHistory struct {
Group string `json:"group"` //集团
Company string `json:"company"` //公司
Department string `json:"department"` //部室
Workshop string `json:"workshop"` //二级部门或车间
WorkshopSection string `json:"workshopsection"` //工段
Position string `json:"position"` //职位
GradePositions int64 `json:"gradepositions"` //职等
StartTime string `json:"starttime"` //开始日期
EndTime string `json:"endtime"` //结束日期
ChangeType int `json:"changetype"` //变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)
}

19
api/version1/shiyan/shiyan.go

@ -2,12 +2,14 @@ package shiyan
import (
"fmt"
"hr_server/middleware/snowflake"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"time"
"github.com/gin-gonic/gin"
// "github.com/golang-migrate/migrate/v4/database/snowflake"
)
func (s *ShiYan) ShiyanCont(c *gin.Context) {
@ -287,8 +289,17 @@ func getJobInfo(jobId int64) (cont jobAttber, err error) {
//视图操作
func (s *ShiYan) Shitu(c *gin.Context) {
var shituList []ShituType
err := overall.CONSTANT_DB_HR.Limit(20).Offset(21).Find(&shituList)
fmt.Printf("%v-----------%v\n", err, shituList)
overallhandle.Result(0, shituList, c)
// var shituList []ShituType
// err := overall.CONSTANT_DB_HR.Limit(20).Offset(21).Find(&shituList)
// fmt.Printf("%v-----------%v\n", err, shituList)
out := overallhandle.MapOut()
node, err := snowflake.NewWorker(1)
fmt.Printf("node--------->%v\n", err)
out["node"] = node.GetId()
out["err "] = err
overallhandle.Result(0, out, c)
}

4
initialization/route/route_entry.go

@ -44,6 +44,8 @@ func InitialRouter() *gin.Engine {
jinDieDockingApi := apirouter.RouterGroupInlet.KingdeeApiRouter
{
shhiyanApi.InitRouterGroup(appLoadRouterGroup) //实验
empowerApi.InitRouterGroup(appLoadRouterGroup) //获取token
organizationApi.InitRouterGroup(appLoadRouterGroup) //组织架构
jinDieDockingApi.InitRouterGroup(appLoadRouterGroup) //金蝶对接接口
@ -56,7 +58,7 @@ func InitialRouter() *gin.Engine {
Authentication := router.Group("")
Authentication.Use(identification.Validator()).Use(identification.Interceptor())
{
shhiyanApi.InitRouterGroup(Authentication) //实验
permitPowerApi.InitRouterGroup(Authentication) //权限相关操作
staffApiFuben.InitRouterGroup(Authentication) //人员档案
}

13
log/202206/20220623.log

File diff suppressed because one or more lines are too long

15
log/202206/20220624.log

File diff suppressed because one or more lines are too long

16
log/202206/20220625.log

File diff suppressed because one or more lines are too long

15
log/202206/20220626.log

File diff suppressed because one or more lines are too long

15
log/202206/20220627.log

File diff suppressed because one or more lines are too long

15
log/202206/20220628.log

File diff suppressed because one or more lines are too long

3
log/202206/20220629.log

File diff suppressed because one or more lines are too long

38
middleware/snowflake/snowflake.go

@ -0,0 +1,38 @@
package snowflake
import (
"errors"
"time"
)
//雪花算法
func NewWorker(workerId int64) (*Worker, error) {
if workerId < 0 || workerId > workerMax {
return nil, errors.New("工作机器的ID超出范围!")
}
// 生成一个新节点
return &Worker{
timestamp: 0,
workerId: workerId,
number: 0,
}, nil
}
func (w *Worker) GetId() int64 {
w.mu.Lock()
defer w.mu.Unlock()
now := time.Now().UnixNano() / 1e6
if w.timestamp == now {
w.number++
if w.number > numberMax {
for now <= w.timestamp {
now = time.Now().UnixNano() / 1e6
}
}
} else {
w.number = 0
w.timestamp = now
}
ID := int64((now-startTime)<<timeShift | (w.workerId << workerShift) | (w.number))
return ID
}

21
middleware/snowflake/type.go

@ -0,0 +1,21 @@
package snowflake
import "sync"
//雪花算法
const (
workerBits uint8 = 10
numberBits uint8 = 12
workerMax int64 = -1 ^ (-1 << workerBits)
numberMax int64 = -1 ^ (-1 << numberBits)
timeShift uint8 = workerBits + numberBits
workerShift uint8 = numberBits
startTime int64 = 1655827200000 // 如果在程序跑了一段时间修改了epoch这个值 可能会导致生成相同的ID
)
type Worker struct {
mu sync.Mutex
timestamp int64
workerId int64
number int64
}

47
models/inside_work_history.go

@ -0,0 +1,47 @@
package models
import (
"hr_server/overall"
"strings"
)
//职务分类
type InsideWorkHistory struct {
Id int64 `json:"id" gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null;comment:Id;index"`
Key int64 `json:"key" gorm:"column:key;type:bigint(20) unsigned;default:0;not null;comment:员工识别符"`
Group int64 `json:"group" gorm:"column:group;type:bigint(20) unsigned;default:0;not null;comment:集团"`
Company int64 `json:"company" gorm:"column:company;type:bigint(20) unsigned;default:0;not null;comment:公司"`
Department int64 `json:"department" gorm:"column:department;type:bigint(20) unsigned;default:0;not null;comment:部室"`
WorkShop int64 `json:"workshop" gorm:"column:workshop;type:bigint(20) unsigned;default:0;not null;comment:二级部门或车间"`
WorkshopSection int64 `json:"workshopsection" gorm:"column:workshop_section;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:职位"`
GradePositions int64 `json:"gradepositions" gorm:"column:grade_positions;type:bigint(20) unsigned;default:0;not null;comment:职等"`
StartTime int64 `json:"starttime" gorm:"column:start_time;type:bigint(20) unsigned;default:0;not null;comment:开始日期"`
EndTime int64 `json:"endtime" gorm:"column:end_time;type:bigint(20) unsigned;default:0;not null;comment:结束日期"`
Team int `json:"team" gorm:"column:team;type:int(1) unsigned;default:1;not null;comment:班组(1:长白;2:甲;3:乙;4:丙;5:丁)"`
ChangeType int `json:"changetype" gorm:"column:change_type;type:int(1) unsigned;default:1;not null;comment:变动类型(1:预入职;2:雇佣入职;3:转正;4:晋升;5:降级;6:职等调整;7:调动调入;8:跨公司调动调入;9:借调;10:平调;11:兼职;12:预离职;13:离职;14:退休;15:返聘;16:员工初始化;)"`
Time int64 `json:"time" gorm:"column:time;type:bigint(20) unsigned;default:0;not null;comment:创建时间"`
State int `json:"state" gorm:"column:state;type:int(1) unsigned;default:1;not null;comment:状态(1:启用;2:禁用;3:删除)"`
}
func (InsideWorkHistory *InsideWorkHistory) TableName() string {
return "inside_work_history"
}
//编辑职务分类内容
func (cont *InsideWorkHistory) EditCont(whereMap map[string]interface{}, saveData map[string]interface{}) (err error) {
err = overall.CONSTANT_DB_HR.Model(&cont).Where(whereMap).Updates(saveData).Error
return
}
//获取详细内容
func (cont *InsideWorkHistory) 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
}
Loading…
Cancel
Save