HR管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

824 lines
31 KiB

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) Kingdee(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 = eidtAddManCont(manContent, requestData)
} else {
//不存在!进行新增操作
manErr = newAddManCont(requestData)
}
if manErr != nil {
overallhandle.Result(104, manErr, c)
return
}
overallhandle.Result(0, manErr, c)
}
//编辑员工
func eidtAddManCont(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
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()
// rybdErr := overall.CONSTANT_DB_HR.Create(&manChangeRecord).Error
// jsonCont, _ := json.Marshal(manChangeRecord)
// fmt.Printf("第二学历--->%v--->%v\n", rybdErr, string(jsonCont))
}
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryData(manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPerson(manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembers(manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdee(manCont)
synPro.Wait()
}
}
return nil
}
//新增员工
func newAddManCont(manCont addKingdeePersonnel) error {
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
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")
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 = overallhandle.TableNumber()
}
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 = overallhandle.TableNumber()
//密码加密
var passwordMd5 overallhandle.Md5Encryption
passwordMd5.Md5EncryptionInit(overall.CONSTANT_CONFIG.Appsetup.DefaultPassword)
manMainCont.Password = passwordMd5.Md5EncryptionAlgorithm()
}
addManContErr := overall.CONSTANT_DB_HR.Create(&manMainCont).Error
if addManContErr != nil {
return addManContErr
} else {
//编辑人员附属信息
synPro.Add(1)
go editManAuxiliaryData(manCont)
//编辑紧急联系人信息
synPro.Add(1)
go emergencyContactPerson(manCont)
//编辑员工家属信息
synPro.Add(1)
go eidtFamilyMembers(manCont.Number, manCont.MemberOfFamily)
//编辑员工教育经历
synPro.Add(1)
go educatExperKingdee(manCont)
synPro.Wait()
}
return nil
}
//编辑人员附属信息
func editManAuxiliaryData(manCont addKingdeePersonnel) {
defer synPro.Done()
var manInfo models.PersonnelContent
manErr := manInfo.GetCont(map[string]interface{}{"`number`": manCont.Number})
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)
}
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.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 {
//编辑双职工
eidtDoubleWorker(manCont, 1)
}
}
}
//编辑双职工
func eidtDoubleWorker(manCont addKingdeePersonnel, state int) {
var doubleWorkCont models.DoubleWorker
dwErr := doubleWorkCont.GetCont(map[string]interface{}{"`number`": manCont.Number})
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.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 emergencyContactPerson(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("`number` = ?", manCont.Number).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.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.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 eidtFamilyMembers(num string, family []memberOfFamily) {
defer synPro.Done()
if len(family) > 0 && num != "" {
var familyAry []models.FamilyMembers
famErr := overall.CONSTANT_DB_HR.Where("`number` = ?", num).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.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.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 educatExperKingdee(manCont addKingdeePersonnel) {
defer synPro.Done()
if manCont.HighestGraduationSchool != "" {
//最高学历
var perEduContHig models.PersonnelEducation
highestGormDb := overall.CONSTANT_DB_HR.Model(&models.PersonnelEducation{}).Where("number = ? AND graduation_school = ? AND subject = ?", manCont.Number, 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("number = ?", manCont.Number).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{}{"`number`": manCont.Number, "level": 3}, eitdCont)
}
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("number = ? AND graduation_school = ? AND subject = ?", manCont.Number, 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"] = 3
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("number = ?", manCont.Number).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{}{"`number`": manCont.Number, "level": 1}, eitdContFirst)
}
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)
}
}
}