package dockingorganization import ( "encoding/json" "fmt" "hr_server/models" "hr_server/overall" "hr_server/overall/overallhandle" "strconv" "strings" "time" "github.com/gin-gonic/gin" "gorm.io/gorm" ) // 接口实验 func (d *DockingJinDieApi) DockKingdeeApi(c *gin.Context) { // GetOrgType() // JobClass() // DutiesContrast() OrgAdmin() // Position() // xingzheng() outMap := overallhandle.MapOut() overallhandle.Result(0, outMap, c) } func xingzheng() { var orgList []models.AdministrativeOrganization // orgList.GetCont(map[string]interface{}{"ispower": 1}) overall.CONSTANT_DB_HR.Where("ispower = 1").Find(&orgList) var id []string var num []string for _, v := range orgList { id = append(id, strconv.FormatInt(v.Id, 10)) num = append(num, v.Number) } fmt.Println(strings.Join(id, ",")) fmt.Println(strings.Join(num, ",")) } // 行政组织类型 func GetOrgType() { var orgContAry []orgClass sendUrl := fmt.Sprintf("%v/person/adminUnitType", overall.DockingKingdeeUrl) respBody, err := GetUrl(sendUrl) if err != nil { overallhandle.WriteLog("e", "未能获取到行政组织类型!", err) return } err = json.Unmarshal(respBody, &orgContAry) if err != nil { overallhandle.WriteLog("e", "行政组织类型映射错误!", err) return } overallhandle.WriteLog("i", "行政组织类型映射成功!", orgContAry) if len(orgContAry) < 0 { overallhandle.WriteLog("e", "未能获取到行政组织类型!", orgContAry) return } fmt.Printf("err---------------------->%v\n", err) var kingDeeIdAry []string //进行行政组织类别对照 for _, v := range orgContAry { if overallhandle.StringIsInMap(v.Id, kingDeeIdAry) == false { kingDeeIdAry = append(kingDeeIdAry, v.Id) } //判断该项是否存在 var orgCont models.AdministrativeOrganizationType orgErr := orgCont.GetCont(map[string]interface{}{"kingdeeid": v.Id}, "id", "name", "state") if orgErr == nil { //判断是否编辑 if v.Name != orgCont.Name { editOrgErr := orgCont.EiteCont(map[string]interface{}{"id": orgCont.Id}, map[string]interface{}{"name": v.Name, "state": 1}) if editOrgErr == nil { overallhandle.WriteLog("edit", "行政组织类型更新成功!", editOrgErr, v) } else { overallhandle.WriteLog("edit", "行政组织类型更新失败!", editOrgErr, v) } } else { if orgCont.State != 1 { editOrgErr := orgCont.EiteCont(map[string]interface{}{"id": orgCont.Id}, map[string]interface{}{"state": 1}) if editOrgErr == nil { overallhandle.WriteLog("edit", "行政组织类型更新成功!state", editOrgErr, v) } else { overallhandle.WriteLog("edit", "行政组织类型更新失败!state", editOrgErr, v) } } } } else { orgCont.Name = v.Name orgCont.State = 1 orgCont.Time = time.Now().Unix() orgCont.KingdeeId = v.Id addOrgErr := overall.CONSTANT_DB_HR.Create(&orgCont).Error if addOrgErr == nil { overallhandle.WriteLog("add", "行政组织类型写入成功!", addOrgErr, orgCont) } else { overallhandle.WriteLog("add", "行政组织类型写入失败!", addOrgErr, orgCont) } } } var orgAll []models.AdministrativeOrganizationType allErr := overall.CONSTANT_DB_HR.Where("`state` = 1").Find(&orgAll).Error if allErr == nil && len(orgAll) > 0 { var eidtId []string for _, av := range orgAll { if overallhandle.StringIsInMap(av.KingdeeId, kingDeeIdAry) == false { if overallhandle.StringIsInMap(av.KingdeeId, eidtId) == false { eidtId = append(eidtId, av.KingdeeId) } } } if len(eidtId) > 0 && len(orgAll) > len(eidtId) { orgContEditErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganizationType{}).Where("`kingdeeid` IN ?", eidtId).Updates(map[string]interface{}{"state": 2}).Error if orgContEditErr == nil { overallhandle.WriteLog("edit", "禁用已不使用得行政组织类型成功!", orgContEditErr, eidtId) } else { overallhandle.WriteLog("edit", "禁用已不使用得行政组织类型失败!", orgContEditErr, eidtId) } } } } // 职务类型 func JobClass() { // fmt.Printf("1") var jobClassInfo []jobClassType sendUrl := fmt.Sprintf("%v/person/ptype", overall.DockingKingdeeUrl) respBody, err := GetUrl(sendUrl) if err != nil { overallhandle.WriteLog("e", "未能获取到职务类型!", err) return } err = json.Unmarshal(respBody, &jobClassInfo) if err != nil { overallhandle.WriteLog("e", "职务类型映射错误!", err) return } overallhandle.WriteLog("i", "职务类型映射成功!", jobClassInfo) if len(jobClassInfo) < 0 { overallhandle.WriteLog("e", "未能获取到职务类型!", jobClassInfo) return } var kingDeeIdAry []string //进行职务类型对照 for _, v := range jobClassInfo { if overallhandle.StringIsInMap(v.Id, kingDeeIdAry) == false { kingDeeIdAry = append(kingDeeIdAry, v.Id) } //判断该项是否存在 var jobClassCont models.JobClass jobClassErr := jobClassCont.GetCont(map[string]interface{}{"kingdeeid": v.Id}) if jobClassErr == nil { //存在判断是否要进行更新 if v.Name != jobClassCont.Name { editOrgErr := jobClassCont.EiteJobClassCont(map[string]interface{}{"id": jobClassCont.Id}, map[string]interface{}{"name": v.Name, "state": 1}) if editOrgErr == nil { overallhandle.WriteLog("edit", "职务类型更新成功!", editOrgErr, v) } else { overallhandle.WriteLog("edit", "职务类型更新失败!", editOrgErr, v) } } else { if jobClassCont.State != 1 { editOrgErr := jobClassCont.EiteJobClassCont(map[string]interface{}{"id": jobClassCont.Id}, map[string]interface{}{"state": 1}) if editOrgErr == nil { overallhandle.WriteLog("edit", "职务类型更新成功!state", editOrgErr, v) } else { overallhandle.WriteLog("edit", "职务类型更新失败!state", editOrgErr, v) } } } } else { //不存在,进行新增 jobClassCont.Name = v.Name jobClassCont.KingdeeNum = v.Fnumber jobClassCont.KingdeeId = v.Id jobClassCont.State = 1 jobClassCont.Time = time.Now().Unix() addErr := overall.CONSTANT_DB_HR.Create(&jobClassCont).Error if addErr == nil { overallhandle.WriteLog("add", "职务类型写入成功!", addErr, jobClassCont) } else { overallhandle.WriteLog("add", "职务类型写入失败!", addErr, jobClassCont) } } } var jobClassAll []models.JobClass allErr := overall.CONSTANT_DB_HR.Where("`state` = 1").Find(&jobClassAll).Error if allErr == nil && len(jobClassAll) > 0 { var eidtId []string for _, av := range jobClassAll { if overallhandle.StringIsInMap(av.KingdeeId, kingDeeIdAry) == false { if overallhandle.StringIsInMap(av.KingdeeId, eidtId) == false { eidtId = append(eidtId, av.KingdeeId) } } } if len(eidtId) > 0 && len(jobClassAll) > len(eidtId) { jobClassContEditErr := overall.CONSTANT_DB_HR.Model(&models.JobClass{}).Where("`kingdeeid` IN ?", eidtId).Updates(map[string]interface{}{"state": 2}).Error if jobClassContEditErr == nil { overallhandle.WriteLog("edit", "禁用已不使用得职务类型成功!", jobClassContEditErr, eidtId) } else { overallhandle.WriteLog("edit", "禁用已不使用得职务类型失败!", jobClassContEditErr, eidtId) } } } } // 职务 func DutiesContrast() { var jobInfo []jobContDuck sendUrl := fmt.Sprintf("%v/person/job", overall.DockingKingdeeUrl) respBody, err := GetUrl(sendUrl) if err != nil { overallhandle.WriteLog("e", "未能获取到职务!", err) return } err = json.Unmarshal(respBody, &jobInfo) if err != nil { overallhandle.WriteLog("e", "职务映射错误!", err) return } overallhandle.WriteLog("i", "职务映射成功!", jobInfo) if len(jobInfo) < 0 { overallhandle.WriteLog("e", "未能获取到职务!", jobInfo) return } // fmt.Printf("jobInfo:%v\n", jobInfo) var kingDeeIdAry []string //进行职务对照 for _, v := range jobInfo { if overallhandle.StringIsInMap(v.Id, kingDeeIdAry) == false { kingDeeIdAry = append(kingDeeIdAry, v.Id) } //判断该项是否存在 var dutiesCont models.Duties dutiesErr := dutiesCont.GetCont(map[string]interface{}{"kingdeeid": v.Id}, "`id`", "`name`", "`number`", "`state`", "`job_type`") if dutiesErr == nil { //存在,进行更新 //获取职务Id var jobClassInfo models.JobClass jobClassInfo.GetCont(map[string]interface{}{"kingdeeid": v.Fjobtype}, "`id`") var editOrgErr error isCaoZuo := false if v.Name != dutiesCont.Name { if dutiesCont.JobType != jobClassInfo.Id { editOrgErr = dutiesCont.EiteCont(map[string]interface{}{"id": dutiesCont.Id}, map[string]interface{}{"name": v.Name, "state": 1, "job_type": jobClassInfo.Id, "`number`": v.Fnumber}) isCaoZuo = true } else { editOrgErr = dutiesCont.EiteCont(map[string]interface{}{"id": dutiesCont.Id}, map[string]interface{}{"name": v.Name, "state": 1, "`number`": v.Fnumber}) isCaoZuo = true } } else { if dutiesCont.State != 1 { if dutiesCont.JobType != jobClassInfo.Id { editOrgErr = dutiesCont.EiteCont(map[string]interface{}{"id": dutiesCont.Id}, map[string]interface{}{"state": 1, "job_type": jobClassInfo.Id, "`number`": v.Fnumber}) isCaoZuo = true } else { editOrgErr = dutiesCont.EiteCont(map[string]interface{}{"id": dutiesCont.Id}, map[string]interface{}{"state": 1, "`number`": v.Fnumber}) isCaoZuo = true } } } if v.Fnumber != dutiesCont.Number { editOrgErr = dutiesCont.EiteCont(map[string]interface{}{"id": dutiesCont.Id}, map[string]interface{}{"`number`": v.Fnumber}) isCaoZuo = true } if isCaoZuo == true { if editOrgErr == nil { overallhandle.WriteLog("edit", "职务更新成功!", editOrgErr, v) } else { overallhandle.WriteLog("edit", "职务更新失败!", editOrgErr, v) } } } else { //不存在,进行新增 //获取旧对照表数据 var oldDutiesInfo models.Duties oldDutErr := overall.CONSTANT_DB_HR_Jin.Model(&models.Duties{}).Select("weight,number").Where("`name` = ?", v.Name).First(&oldDutiesInfo).Error //获取职务Id var jobClassInfo models.JobClass jobClassErr := jobClassInfo.GetCont(map[string]interface{}{"kingdeeid": v.Fjobtype}, "`id`") var dutiesInfo models.Duties dutiesInfo.Name = v.Name if jobClassErr == nil { dutiesInfo.JobType = jobClassInfo.Id } if oldDutErr == nil { dutiesInfo.Weight = oldDutiesInfo.Weight dutiesInfo.Number = oldDutiesInfo.Number } else { dutiesInfo.Weight = 0 dutiesInfo.Number = "" } dutiesInfo.Time = time.Now().Unix() dutiesInfo.State = 1 dutiesInfo.KingdeeId = v.Id dutiesInfo.KingdeeNum = v.Fnumber addErr := overall.CONSTANT_DB_HR.Create(&dutiesInfo).Error if addErr == nil { overallhandle.WriteLog("add", "职务写入成功!", addErr, dutiesInfo) } else { overallhandle.WriteLog("add", "职务写入失败!", addErr, dutiesInfo) } } } var dutiesAll []models.Duties allErr := overall.CONSTANT_DB_HR.Where("`state` = 1").Find(&dutiesAll).Error if allErr == nil && len(dutiesAll) > 0 { var eidtId []string for _, av := range dutiesAll { if overallhandle.StringIsInMap(av.KingdeeId, kingDeeIdAry) == false { if overallhandle.StringIsInMap(av.KingdeeId, eidtId) == false { eidtId = append(eidtId, av.KingdeeId) } } } if len(eidtId) > 0 && len(dutiesAll) > len(eidtId) { dutiesContEditErr := overall.CONSTANT_DB_HR.Model(&models.Duties{}).Where("`kingdeeid` IN ?", eidtId).Updates(map[string]interface{}{"state": 2}).Error if dutiesContEditErr == nil { overallhandle.WriteLog("edit", "禁用已不使用得职务成功!", dutiesContEditErr, eidtId) } else { overallhandle.WriteLog("edit", "禁用已不使用得职务失败!", dutiesContEditErr, eidtId) } } } } // 行政组织 func OrgAdmin() { var orgInfo []orgAdminType sendUrl := fmt.Sprintf("%v/person/adminunit", overall.DockingKingdeeUrl) respBody, err := GetUrl(sendUrl) if err != nil { overallhandle.WriteLog("e", "未能获取到行政组织!", err) return } err = json.Unmarshal(respBody, &orgInfo) if err != nil { overallhandle.WriteLog("e", "行政组织映射错误!", err) return } overallhandle.WriteLog("i", "行政组织映射完成!", orgInfo) if len(orgInfo) < 0 { overallhandle.WriteLog("e", "未能获取到行政组织!", orgInfo) return } var kingDeeIdAry []string //进行职务对照 for _, v := range orgInfo { if overallhandle.StringIsInMap(v.Id, kingDeeIdAry) == false { kingDeeIdAry = append(kingDeeIdAry, v.Id) } //判断该项是否存在 var orgInfoContCont models.AdministrativeOrganization orgInfoContErr := orgInfoContCont.GetCont(map[string]interface{}{"kingdeeid": v.Id}) if orgInfoContErr == nil { //存在,进行更新 isEdit := false saveData := overallhandle.MapOut() if v.Name != orgInfoContCont.Name { saveData["name"] = v.Name isEdit = true } if v.Abbreviation != orgInfoContCont.Abbreviation { saveData["abbreviation"] = v.Abbreviation isEdit = true } if v.Number != orgInfoContCont.Number { saveData["number"] = v.Number isEdit = true } if orgInfoContCont.State != 1 { saveData["state"] = 1 isEdit = true } //判断行政组织类型是否需要改变 var judgeOrgType models.AdministrativeOrganizationType judgeOrgTypeErr := judgeOrgType.GetCont(map[string]interface{}{"id": orgInfoContCont.OrganizationType}, "`id`", "`kingdeeid`") if judgeOrgTypeErr == nil { if v.GovClass != judgeOrgType.KingdeeId { var orgTypeNewType models.AdministrativeOrganizationType orgTypeNewTypeErr := orgTypeNewType.GetCont(map[string]interface{}{"kingdeeid": v.GovClass}, "id") if orgTypeNewTypeErr == nil { saveData["organization_type"] = orgTypeNewType.Id isEdit = true } } } if isEdit == true { saveData["time"] = time.Now().Unix() editErr := orgInfoContCont.EiteCont(map[string]interface{}{"id": orgInfoContCont.Id}, saveData) if editErr == nil { overallhandle.WriteLog("edit", "行政组织更新成功!", editErr, v, saveData) } else { overallhandle.WriteLog("edit", "行政组织更新失败!", editErr, v, saveData) } } } else { //不存在进行添加 var orgCont models.AdministrativeOrganization orgCont.KingdeeId = v.Id orgCont.Number = v.Number orgCont.Name = v.Name orgCont.Abbreviation = v.Abbreviation orgCont.State = 1 orgCont.Time = time.Now().Unix() //获取行政组织类型 var orgType models.AdministrativeOrganizationType orgTypeErr := orgType.GetCont(map[string]interface{}{"kingdeeid": v.GovClass}, "id") if orgTypeErr == nil { orgCont.OrganizationType = orgType.Id } //获取知行学院及企业微信对照码 var orgOldCont models.AdministrativeOrganization orgOldErr := overall.CONSTANT_DB_HR_Jin.Model(&models.AdministrativeOrganization{}).Select("wechat_organization_id,schoole").Where("`number` = ?", v.Number).First(&orgOldCont).Error if orgOldErr == nil { orgCont.WechatOrganizationId = orgOldCont.WechatOrganizationId orgCont.Schoole = orgOldCont.Schoole } if overallhandle.StringIsInMap(v.Number, OrgNumberDuiZhao) { orgCont.IsPower = 1 } // orgCont.IsPower addErr := overall.CONSTANT_DB_HR.Create(&orgCont).Error if addErr == nil { overallhandle.WriteLog("add", "行政组织写入成功!", addErr, orgCont) } else { overallhandle.WriteLog("add", "行政组织写入失败!", addErr, orgCont) } } } //职务上级校正 for _, cv := range orgInfo { var parentContCorre models.AdministrativeOrganization parentErr := parentContCorre.GetCont(map[string]interface{}{"kingdeeid": cv.Id}, "`id`", "`superior`") if parentErr == nil { if cv.Superior != "" { var orgCorrePrent models.AdministrativeOrganization orgCorrePrentErr := orgCorrePrent.GetCont(map[string]interface{}{"kingdeeid": cv.Superior}, "id") if orgCorrePrentErr == nil { if parentContCorre.Superior != orgCorrePrent.Id { saveData := overallhandle.MapOut() saveData["superior"] = orgCorrePrent.Id saveData["time"] = time.Now().Unix() parentIngErr := parentContCorre.EiteCont(map[string]interface{}{"id": parentContCorre.Id}, saveData) overallhandle.WriteLog("add", "行政组织写入成功!", parentIngErr, saveData) } } } } } //关闭已经弃用得行政组织 var orgAdminAll []models.AdministrativeOrganization allErr := overall.CONSTANT_DB_HR.Where("`state` = 1").Find(&orgAdminAll).Error if allErr == nil && len(orgAdminAll) > 0 { var eidtId []string for _, av := range orgAdminAll { if overallhandle.StringIsInMap(av.KingdeeId, kingDeeIdAry) == false { if overallhandle.StringIsInMap(av.KingdeeId, eidtId) == false { eidtId = append(eidtId, av.KingdeeId) } } } if len(eidtId) > 0 && len(orgAdminAll) > len(eidtId) { orgAdminEditErr := overall.CONSTANT_DB_HR.Model(&models.AdministrativeOrganization{}).Where("`kingdeeid` IN ?", eidtId).Updates(map[string]interface{}{"state": 2}).Error if orgAdminEditErr == nil { overallhandle.WriteLog("edit", "禁用已不使用得行政组织成功!", orgAdminEditErr, eidtId) } else { overallhandle.WriteLog("edit", "禁用已不使用得行政组织失败!", orgAdminEditErr, eidtId) } } } } // 职位 func Position() { var orgInfo []positionType sendUrl := fmt.Sprintf("%v/person/position", overall.DockingKingdeeUrl) respBody, err := GetUrl(sendUrl) if err != nil { overallhandle.WriteLog("e", "未能获取到职位!", err) return } err = json.Unmarshal(respBody, &orgInfo) if err != nil { overallhandle.WriteLog("e", "职位映射错误!", err) return } overallhandle.WriteLog("i", "职位映射完成!", orgInfo) if len(orgInfo) < 0 { overallhandle.WriteLog("e", "金蝶对照数据!", orgInfo) return } var kingDeeIdAry []string //批量写入 var batchPosition []models.Position //进行职位对照 for _, v := range orgInfo { if overallhandle.StringIsInMap(v.Id, kingDeeIdAry) == false { kingDeeIdAry = append(kingDeeIdAry, v.Id) } // strconv.Atoi(v.FIsRespPosition) personInt64, _ := strconv.Atoi(v.FIsRespPosition) //获取职务信息 var zhiwuCont models.Duties zhiwuCont.GetCont(map[string]interface{}{"kingdeeid": v.FJobID}, "id") //判断该项是否存在 var positCont models.Position positContErr := positCont.GetCont(map[string]interface{}{"kingdeeid": v.Id}) if positContErr == nil { //存在,进行更新 isEdit := false saveData := overallhandle.MapOut() if v.Name != positCont.Name { saveData["name"] = v.Name isEdit = true } if positCont.State != 1 { saveData["state"] = 1 isEdit = true } if v.Fnumber != positCont.Number { saveData["number"] = v.Fnumber isEdit = true } if zhiwuCont.Id != positCont.Duties { saveData["duties"] = zhiwuCont.Id isEdit = true } //获取行政组织 var orgCont models.AdministrativeOrganization orgContErr := orgCont.GetCont(map[string]interface{}{"kingdeeid": v.FAdminOrgUnitID}, "id", "superior") if orgContErr == nil { if orgCont.Id != positCont.AdministrativeOrganization { saveData["administrative_organization"] = orgCont.Id saveData["department"] = overallhandle.GetGroupOrDepartPower(orgCont.Superior, 1) isEdit = true } } if isEdit == true { saveData["time"] = time.Now().Unix() editErr := positCont.EiteCont(map[string]interface{}{"id": positCont.Id}, saveData) if editErr == nil { overallhandle.WriteLog("edit", "职位更新成功!", editErr, v, saveData) } else { overallhandle.WriteLog("edit", "职位更新失败!", editErr, v, saveData) } } } else { //不存在,新增 positCont.Number = v.Fnumber positCont.Name = v.Name positCont.KingdeeId = v.Id positCont.Time = time.Now().Unix() positCont.State = 1 //获取行政组织 var orgCont models.AdministrativeOrganization orgContErr := orgCont.GetCont(map[string]interface{}{"kingdeeid": v.FAdminOrgUnitID}, "id", "superior") if orgContErr == nil { positCont.AdministrativeOrganization = orgCont.Id positCont.Department = overallhandle.GetGroupOrDepartPower(orgCont.Superior, 1) } //获取知行学院及企业微信对照码 var orgOldCont models.Position orgOldErr := overall.CONSTANT_DB_HR_Jin.Model(&models.Position{}).Select("school,person_in_charge").Where("`number` = ?", v.Fnumber).First(&orgOldCont).Error positCont.PersonInCharge = personInt64 if orgOldErr == nil { if personInt64 != orgOldCont.PersonInCharge { if orgOldCont.PersonInCharge == 1 { positCont.PersonInCharge = orgOldCont.PersonInCharge } } positCont.School = orgOldCont.School } positCont.Duties = zhiwuCont.Id //判断该部门下此职位是否已经存在 var posistInfo models.Position overall.CONSTANT_DB_HR.Where("`name` = ? AND `department` = ?", v.Name, orgCont.Superior).First(&posistInfo) if posistInfo.Id != 0 { saveData := overallhandle.MapOut() saveData["`number`"] = v.Fnumber saveData["`duties`"] = zhiwuCont.Id saveData["`time`"] = time.Now().Unix() saveData["`administrative_organization`"] = orgCont.Id // saveData["`superior`"] = orgCont.Superior saveData["`person_in_charge`"] = positCont.PersonInCharge saveData["`department`"] = orgCont.Superior saveData["`kingdeeid`"] = v.FAdminOrgUnitID var savePostInfo models.Position savePostInfo.EiteCont(map[string]interface{}{"`id`": posistInfo.Id}, saveData) } else { batchPosition = append(batchPosition, positCont) } // if v.Id == "QBsfJ1fbSKW+3q6eOJltjHSuYS4=" { // fmt.Printf("positCont---->%v\n", positCont) // return // } if len(batchPosition)%100 == 0 { synPro.Add(1) go writePositis(batchPosition) var batchPositionNew []models.Position batchPosition = batchPositionNew // addErr := overall.CONSTANT_DB_HR.Create(&batchPosition).Error // if addErr == nil { // var batchPositionNew []models.Position // batchPosition = batchPositionNew // overallhandle.WriteLog("add", "职位写入成功!", addErr, batchPosition) // } else { // overallhandle.WriteLog("add", "职位写入失败!", addErr, batchPosition) // } } } } if len(batchPosition) > 0 { synPro.Add(1) go writePositis(batchPosition) } synPro.Wait() //职位上级校正 var calibPositList []positionType for _, cv := range orgInfo { calibPositList = append(calibPositList, cv) if len(calibPositList)%100 == 0 { synPro.Add(1) go calibrationPosition(calibPositList) var calibPositListNew []positionType calibPositList = calibPositListNew } } if len(calibPositList) > 0 { synPro.Add(1) go calibrationPosition(calibPositList) } synPro.Wait() //关闭已经弃用得行政组织 var orgAdminAll []models.Position allErr := overall.CONSTANT_DB_HR.Where("`state` = 1").Find(&orgAdminAll).Error if allErr == nil && len(orgAdminAll) > 0 { var eidtId []string for _, av := range orgAdminAll { if overallhandle.StringIsInMap(av.KingdeeId, kingDeeIdAry) == false { if overallhandle.StringIsInMap(av.KingdeeId, eidtId) == false { eidtId = append(eidtId, av.KingdeeId) } } } if len(eidtId) > 0 && len(orgAdminAll) > len(eidtId) { orgAdminEditErr := overall.CONSTANT_DB_HR.Model(&models.Position{}).Where("`kingdeeid` IN ?", eidtId).Updates(map[string]interface{}{"state": 2}).Error if orgAdminEditErr == nil { overallhandle.WriteLog("edit", "禁用已不使用得职位成功!", orgAdminEditErr, eidtId) } else { overallhandle.WriteLog("edit", "禁用已不使用得职位失败!", orgAdminEditErr, eidtId) } } } } // 协程写入职位 func writePositis(batchPositionNew []models.Position) { defer synPro.Done() if len(batchPositionNew) > 0 { addErr := overall.CONSTANT_DB_HR.Create(&batchPositionNew).Error if addErr == nil { overallhandle.WriteLog("add", "职位写入成功!", addErr, batchPositionNew) } else { overallhandle.WriteLog("add", "职位写入失败!", addErr, batchPositionNew) } } } // 协程职位校正 func calibrationPosition(orgInfo []positionType) { defer synPro.Done() if len(orgInfo) > 0 { for _, cv := range orgInfo { var parentContCorre models.Position parentErr := parentContCorre.GetCont(map[string]interface{}{"kingdeeid": cv.Id}, "`id`", "`superior`") if parentErr == nil { var orgCorrePrent models.Position orgCorrePrentErr := orgCorrePrent.GetCont(map[string]interface{}{"kingdeeid": cv.FParentID}, "id") if orgCorrePrentErr == nil { if parentContCorre.Superior != orgCorrePrent.Id { saveData := overallhandle.MapOut() saveData["superior"] = orgCorrePrent.Id saveData["time"] = time.Now().Unix() parentContCorre.EiteCont(map[string]interface{}{"id": parentContCorre.Id}, saveData) } } } } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 09:36:18 @ 功能: 数据校正 @ 参数 # @ 返回值 # @ 方法原型 # */ func UserDataCorrection() { var userId []int64 overall.CONSTANT_DB_HR.Model(&models.PersonArchives{}).Select("`id`").Find(&userId) if len(userId) > 0 { var guoduId []int64 for i, v := range userId { //分组启动携程 if (i+1)%500 == 0 { synPro.Add(1) go SynProCorrection(guoduId) guoduId = []int64{} } else { guoduId = append(guoduId, v) } } if len(guoduId) > 0 { synPro.Add(1) go SynProCorrection(guoduId) } synPro.Wait() } fmt.Println("数据校验完成!") } /* * @ 作者: 秦东 @ 时间: 2025-04-02 10:04:44 @ 功能: 协程处理同步 #userId 要处理人的ID */ func SynProCorrection(userIdAry []int64) { defer synPro.Done() var userAry []models.PersonArchives overall.CONSTANT_DB_HR.Where("`id` IN ?", userIdAry).Find(&userAry) // fmt.Printf("userAry--->%v--->%v\n\n", len(userAry), userAry) if len(userAry) > 0 { for _, v := range userAry { var manInfo models.PersonnelContent overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).First(&manInfo) var emeContact []models.EmergencyContact //紧机联系人 overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).Find(&emeContact) var familyList []models.FamilyMembers //家庭成员 overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).Find(&familyList) var perEduList []models.PersonnelEducation //教育经历 overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).Find(&perEduList) var workEduList []models.WorkHistory //工作履历 overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).Find(&workEduList) var workInsideEduList []models.InsideWorkHistory //编辑集团内工作履历 overall.CONSTANT_DB_HR.Where("`key` = ?", v.Key).Find(&workInsideEduList) var creadContList []models.UserOrg //任职关系 overall.CONSTANT_DB_HR.Where("`userKey` = ?", v.Key).Find(&creadContList) //TiDb 数据库 tidbSubHandel(v) //编辑人员附属信息 editUserAttribute(overall.CONSTANT_Hr_Server, manInfo) //紧急联系人 if len(emeContact) > 0 { editEmerCpntcat(overall.CONSTANT_Hr_Server, v.Key, emeContact) } //家庭成员 if len(familyList) > 0 { editFamilyMember(overall.CONSTANT_Hr_Server, v.Key, familyList) } //教育经历 if len(perEduList) > 0 { editPerEdu(overall.CONSTANT_Hr_Server, v.Key, perEduList) } //工作履历 if len(workEduList) > 0 { editWorkJob(overall.CONSTANT_Hr_Server, v.Key, workEduList) } //编辑集团内工作履历 if len(workInsideEduList) > 0 { editInsideWorkJob(overall.CONSTANT_Hr_Server, v.Key, workInsideEduList) } //任职关系 if len(creadContList) > 0 { editInsideWorkJobOrg(overall.CONSTANT_Hr_Server, v.Key, creadContList) } //外网数据库 waiSubHandel(v) //编辑人员附属信息 editUserAttribute(overall.CONSTANT_HRSERVER_DATABASE, manInfo) //紧急联系人 if len(emeContact) > 0 { editEmerCpntcat(overall.CONSTANT_HRSERVER_DATABASE, v.Key, emeContact) } //家庭成员 if len(familyList) > 0 { editFamilyMember(overall.CONSTANT_HRSERVER_DATABASE, v.Key, familyList) } //教育经历 if len(perEduList) > 0 { editPerEdu(overall.CONSTANT_HRSERVER_DATABASE, v.Key, perEduList) } //工作履历 if len(workEduList) > 0 { editWorkJob(overall.CONSTANT_HRSERVER_DATABASE, v.Key, workEduList) } //编辑集团内工作履历 if len(workInsideEduList) > 0 { editInsideWorkJob(overall.CONSTANT_HRSERVER_DATABASE, v.Key, workInsideEduList) } //任职关系 if len(creadContList) > 0 { editInsideWorkJobOrg(overall.CONSTANT_HRSERVER_DATABASE, v.Key, creadContList) } } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 任职关系 */ func editInsideWorkJobOrg(gormDb *gorm.DB, userKry int64, emeList []models.UserOrg) { if len(emeList) > 0 { gormDb.Where("`userKey` = ?", userKry).Delete(&models.UserOrg{}) var newWrite []models.UserOrg for _, v := range emeList { var newInfo models.UserOrg newInfo.Company = v.Company newInfo.Orgid = v.Orgid newInfo.Position = v.Position newInfo.TeamsId = v.TeamsId newInfo.StartTime = v.StartTime newInfo.AssignType = v.AssignType newInfo.Time = time.Now().Unix() newWrite = append(newWrite, newInfo) } if len(newWrite) > 0 { gormDb.Create(&newWrite) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 编辑集团内工作履历 */ func editInsideWorkJob(gormDb *gorm.DB, userKry int64, emeList []models.InsideWorkHistory) { if len(emeList) > 0 { gormDb.Where("`key` = ?", userKry).Delete(&models.InsideWorkHistory{}) var newWrite []models.InsideWorkHistory for _, v := range emeList { var newInfo models.InsideWorkHistory newInfo.Key = v.Key newInfo.Group = v.Group newInfo.Company = v.Company newInfo.Department = v.Department newInfo.WorkShop = v.WorkShop newInfo.WorkshopSection = v.WorkshopSection newInfo.Position = v.Position newInfo.GradePositions = v.GradePositions newInfo.StartTime = v.StartTime newInfo.EndTime = v.EndTime newInfo.Team = v.Team newInfo.ChangeType = v.ChangeType newInfo.Time = time.Now().Unix() newInfo.State = v.State newInfo.AssignType = v.AssignType newInfo.JobId = v.JobId newInfo.WorkCont = v.WorkCont newInfo.ChangeReason = v.ChangeReason newInfo.SuperiorPosition = v.SuperiorPosition newInfo.SuperiorName = v.SuperiorName newInfo.Subordinates = v.Subordinates newInfo.Bdlx = v.Bdlx newInfo.Gsmc = v.Gsmc newInfo.Yjbm = v.Yjbm newInfo.Ejbm = v.Ejbm newInfo.Gongduan = v.Gongduan newInfo.Dengji = v.Dengji newInfo.Zhiwei = v.Zhiwei newWrite = append(newWrite, newInfo) } if len(newWrite) > 0 { gormDb.Create(&newWrite) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 教育经历 */ func editWorkJob(gormDb *gorm.DB, userKry int64, emeList []models.WorkHistory) { if len(emeList) > 0 { gormDb.Where("`key` = ?", userKry).Delete(&models.WorkHistory{}) var newWrite []models.WorkHistory for _, v := range emeList { var newInfo models.WorkHistory newInfo.Number = v.Number newInfo.Key = v.Key newInfo.Company = v.Company newInfo.Deparment = v.Deparment newInfo.Job = v.Job newInfo.EntryTime = v.EntryTime newInfo.Leavedate = v.Leavedate newInfo.Witness = v.Witness newInfo.WitnessTel = v.WitnessTel newInfo.Remarks = v.Remarks newInfo.Time = time.Now().Unix() newInfo.State = v.State newInfo.WorkCont = v.WorkCont newInfo.SuperiorPosition = v.SuperiorPosition newInfo.MinionNumber = v.MinionNumber newInfo.CompanyNature = v.CompanyNature newInfo.Industry = v.Industry newWrite = append(newWrite, newInfo) } if len(newWrite) > 0 { gormDb.Create(&newWrite) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 教育经历 */ func editPerEdu(gormDb *gorm.DB, userKry int64, emeList []models.PersonnelEducation) { if len(emeList) > 0 { err := gormDb.Where("`key` = ?", userKry).Delete(&models.PersonnelEducation{}).Error if err == nil { gormDb.Create(&emeList) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 家庭成员 */ func editFamilyMember(gormDb *gorm.DB, userKry int64, emeList []models.FamilyMembers) { if len(emeList) > 0 { err := gormDb.Where("`key` = ?", userKry).Delete(&models.FamilyMembers{}).Error if err == nil { gormDb.Create(&emeList) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 13:39:28 @ 功能: 紧急联系人 */ func editEmerCpntcat(gormDb *gorm.DB, userKry int64, emeList []models.EmergencyContact) { if len(emeList) > 0 { err := gormDb.Where("`key` = ?", userKry).Delete(&models.EmergencyContact{}).Error if err == nil { gormDb.Create(&emeList) } } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 10:38:08 @ 功能: tidb数据库数据处理 */ func tidbSubHandel(user models.PersonArchives) { var tidbUser models.PersonArchives overall.CONSTANT_Hr_Server.Where("`number` = ?", user.Number).First(&tidbUser) if tidbUser.Id != 0 { //存在就修改 editMap := overallhandle.MapOut() if user.Name != "" && user.Name != tidbUser.Name { editMap["name"] = user.Name } if user.Icon != "" && user.Icon != tidbUser.Icon { editMap["icon"] = user.Icon } if user.HireClass != 0 && user.HireClass != tidbUser.HireClass { editMap["hire_class"] = user.HireClass } if user.EmpType != 0 && user.EmpType != tidbUser.EmpType { editMap["emp_type"] = user.EmpType } if user.Company != 0 && user.Company != tidbUser.Company { editMap["company"] = user.Company } if user.MainDeparment != 0 && user.MainDeparment != tidbUser.MainDeparment { editMap["maindeparment"] = user.MainDeparment } if user.Deparment != "" && user.Deparment != tidbUser.Deparment { editMap["deparment"] = user.Deparment } if user.AdminOrg != 0 && user.AdminOrg != tidbUser.AdminOrg { editMap["admin_org"] = user.AdminOrg } if user.Position != 0 && user.Position != tidbUser.Position { editMap["position"] = user.Position } if user.JobClass != 0 && user.JobClass != tidbUser.JobClass { editMap["job_class"] = user.JobClass } if user.JobId != 0 && user.JobId != tidbUser.JobId { editMap["job_id"] = user.JobId } if user.JobLeve != 0 && user.JobLeve != tidbUser.JobLeve { editMap["job_leve"] = user.JobLeve } if user.Wechat != "" && user.Wechat != tidbUser.Wechat { editMap["wechat"] = user.Wechat } if user.WorkWechat != "" && user.WorkWechat != tidbUser.WorkWechat { editMap["work_wechat"] = user.WorkWechat } if user.State != 0 && user.State != tidbUser.State { editMap["state"] = user.State } if user.IsAdmin != 0 && user.IsAdmin != tidbUser.IsAdmin { editMap["is_admin"] = user.IsAdmin } if user.EmpTypeName != "" && user.EmpTypeName != tidbUser.EmpTypeName { editMap["emp_type_name"] = user.EmpTypeName } if user.HireClassName != "" && user.HireClassName != tidbUser.HireClassName { editMap["hire_class_name"] = user.HireClassName } if user.SunMainDeparment != 0 && user.SunMainDeparment != tidbUser.SunMainDeparment { editMap["sun_main_deparment"] = user.SunMainDeparment } if user.TeamId != 0 && user.TeamId != tidbUser.TeamId { editMap["teamid"] = user.TeamId } if user.Ruleid != 0 && user.Ruleid != tidbUser.Ruleid { editMap["ruleid"] = user.Ruleid } if user.IconPhoto != "" && user.IconPhoto != tidbUser.IconPhoto { editMap["icon_photo"] = user.IconPhoto } if user.PersonInCharge != 0 && user.PersonInCharge != tidbUser.PersonInCharge { editMap["person_in_charge"] = user.PersonInCharge } if user.ResponsibleDepartment != "" && user.ResponsibleDepartment != tidbUser.ResponsibleDepartment { editMap["responsible_department"] = user.ResponsibleDepartment } if user.ResponsibleDepartmentJson != "" && user.ResponsibleDepartmentJson != tidbUser.ResponsibleDepartmentJson { editMap["responsible_department_json"] = user.ResponsibleDepartmentJson } if user.WorkSection != 0 && user.WorkSection != tidbUser.WorkSection { editMap["work_section"] = user.WorkSection } if user.IsShowTrue != 0 && user.IsShowTrue != tidbUser.IsShowTrue { editMap["is_show_true"] = user.IsShowTrue } if user.ExcelTemplate != 0 && user.ExcelTemplate != tidbUser.ExcelTemplate { editMap["excel_template"] = user.ExcelTemplate } if len(editMap) > 0 { editMap["eite_time"] = time.Now().Unix() overall.CONSTANT_Hr_Server.Model(&models.PersonArchives{}).Where("`number` = ?", user.Number).Updates(editMap) } } else { //不存在就新增 overall.CONSTANT_Hr_Server.Create(&user) } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 10:38:08 @ 功能: 外网数据库数据处理 */ func waiSubHandel(user models.PersonArchives) { var tidbUser models.PersonArchives overall.CONSTANT_HRSERVER_DATABASE.Where("`number` = ?", user.Number).First(&tidbUser) fmt.Printf("外网数据库数据处理->%v\n", tidbUser) if tidbUser.Id != 0 { //存在就修改 editMap := overallhandle.MapOut() if user.Name != "" && user.Name != tidbUser.Name { editMap["name"] = user.Name } if user.Icon != "" && user.Icon != tidbUser.Icon { editMap["icon"] = user.Icon } if user.HireClass != 0 && user.HireClass != tidbUser.HireClass { editMap["hire_class"] = user.HireClass } if user.EmpType != 0 && user.EmpType != tidbUser.EmpType { editMap["emp_type"] = user.EmpType } if user.Company != 0 && user.Company != tidbUser.Company { editMap["company"] = user.Company } if user.MainDeparment != 0 && user.MainDeparment != tidbUser.MainDeparment { editMap["maindeparment"] = user.MainDeparment } if user.Deparment != "" && user.Deparment != tidbUser.Deparment { editMap["deparment"] = user.Deparment } if user.AdminOrg != 0 && user.AdminOrg != tidbUser.AdminOrg { editMap["admin_org"] = user.AdminOrg } if user.Position != 0 && user.Position != tidbUser.Position { editMap["position"] = user.Position } if user.JobClass != 0 && user.JobClass != tidbUser.JobClass { editMap["job_class"] = user.JobClass } if user.JobId != 0 && user.JobId != tidbUser.JobId { editMap["job_id"] = user.JobId } if user.JobLeve != 0 && user.JobLeve != tidbUser.JobLeve { editMap["job_leve"] = user.JobLeve } if user.Wechat != "" && user.Wechat != tidbUser.Wechat { editMap["wechat"] = user.Wechat } if user.WorkWechat != "" && user.WorkWechat != tidbUser.WorkWechat { editMap["work_wechat"] = user.WorkWechat } if user.State != 0 && user.State != tidbUser.State { editMap["state"] = user.State } if user.IsAdmin != 0 && user.IsAdmin != tidbUser.IsAdmin { editMap["is_admin"] = user.IsAdmin } if user.EmpTypeName != "" && user.EmpTypeName != tidbUser.EmpTypeName { editMap["emp_type_name"] = user.EmpTypeName } if user.HireClassName != "" && user.HireClassName != tidbUser.HireClassName { editMap["hire_class_name"] = user.HireClassName } if user.SunMainDeparment != 0 && user.SunMainDeparment != tidbUser.SunMainDeparment { editMap["sun_main_deparment"] = user.SunMainDeparment } if user.TeamId != 0 && user.TeamId != tidbUser.TeamId { editMap["teamid"] = user.TeamId } if user.Ruleid != 0 && user.Ruleid != tidbUser.Ruleid { editMap["ruleid"] = user.Ruleid } if user.IconPhoto != "" && user.IconPhoto != tidbUser.IconPhoto { editMap["icon_photo"] = user.IconPhoto } if user.PersonInCharge != 0 && user.PersonInCharge != tidbUser.PersonInCharge { editMap["person_in_charge"] = user.PersonInCharge } if user.ResponsibleDepartment != "" && user.ResponsibleDepartment != tidbUser.ResponsibleDepartment { editMap["responsible_department"] = user.ResponsibleDepartment } if user.ResponsibleDepartmentJson != "" && user.ResponsibleDepartmentJson != tidbUser.ResponsibleDepartmentJson { editMap["responsible_department_json"] = user.ResponsibleDepartmentJson } if user.WorkSection != 0 && user.WorkSection != tidbUser.WorkSection { editMap["work_section"] = user.WorkSection } if user.IsShowTrue != 0 && user.IsShowTrue != tidbUser.IsShowTrue { editMap["is_show_true"] = user.IsShowTrue } if user.ExcelTemplate != 0 && user.ExcelTemplate != tidbUser.ExcelTemplate { editMap["excel_template"] = user.ExcelTemplate } fmt.Printf("外网数据库数据处理------要修改的数据------>%v----->%v\n", len(editMap), editMap) if len(editMap) > 0 { editMap["eite_time"] = time.Now().Unix() err := overall.CONSTANT_HRSERVER_DATABASE.Model(&models.PersonArchives{}).Where("`number` = ?", user.Number).Updates(editMap).Error fmt.Printf("外网数据库数据处理------要修改的数据------>%v----->%v\n", len(editMap), err) } } else { //不存在就新增 overall.CONSTANT_HRSERVER_DATABASE.Create(&user) } } /* * @ 作者: 秦东 @ 时间: 2025-04-02 11:36:47 @ 功能: 编辑附属人员信息 */ func editUserAttribute(gormDb *gorm.DB, userAttribute models.PersonnelContent) { var manInfo models.PersonnelContent gormDb.Where("`key` = ?", userAttribute.Key).First(&manInfo) if manInfo.Number != "" { //数据存在修改 editMap := overallhandle.MapOut() if userAttribute.Idcardno != "" && userAttribute.Idcardno != manInfo.Idcardno { editMap["idcardno"] = userAttribute.Idcardno } if userAttribute.Passportno != "" && userAttribute.Passportno != manInfo.Passportno { editMap["passportno"] = userAttribute.Passportno } if userAttribute.Globalroaming != "" && userAttribute.Globalroaming != manInfo.Globalroaming { editMap["globalroaming"] = userAttribute.Globalroaming } if userAttribute.Mobilephone != "" && userAttribute.Mobilephone != manInfo.Mobilephone { editMap["mobilephone"] = userAttribute.Mobilephone } if userAttribute.Gender != 0 && userAttribute.Gender != manInfo.Gender { editMap["gender"] = userAttribute.Gender } if userAttribute.Birthday != 0 && userAttribute.Birthday != manInfo.Birthday { editMap["birthday"] = userAttribute.Birthday } if userAttribute.Myfolk != "" && userAttribute.Myfolk != manInfo.Myfolk { editMap["myfolk"] = userAttribute.Myfolk } if userAttribute.Nativeplace != "" && userAttribute.Nativeplace != manInfo.Nativeplace { editMap["nativeplace"] = userAttribute.Nativeplace } if userAttribute.Idcardstartdate != 0 && userAttribute.Idcardstartdate != manInfo.Idcardstartdate { editMap["idcardstartdate"] = userAttribute.Idcardstartdate } if userAttribute.Idcardenddate != 0 && userAttribute.Idcardenddate != manInfo.Idcardenddate { editMap["idcardenddate"] = userAttribute.Idcardenddate } if userAttribute.Idcardaddress != "" && userAttribute.Idcardaddress != manInfo.Idcardaddress { editMap["idcardaddress"] = userAttribute.Idcardaddress } if userAttribute.IdcardIssued != "" && userAttribute.IdcardIssued != manInfo.IdcardIssued { editMap["idcardIssued"] = userAttribute.IdcardIssued } if userAttribute.Health != 0 && userAttribute.Health != manInfo.Health { editMap["health"] = userAttribute.Health } if userAttribute.Maritalstatus != 0 && userAttribute.Maritalstatus != manInfo.Maritalstatus { editMap["maritalstatus"] = userAttribute.Maritalstatus } if userAttribute.Internaltelephone != "" && userAttribute.Internaltelephone != manInfo.Internaltelephone { editMap["internaltelephone"] = userAttribute.Internaltelephone } if userAttribute.Currentresidence != "" && userAttribute.Currentresidence != manInfo.Currentresidence { editMap["currentresidence"] = userAttribute.Currentresidence } if userAttribute.Constellation != 0 && userAttribute.Constellation != manInfo.Constellation { editMap["constellationing"] = userAttribute.Constellation } if userAttribute.Isdoubleworker != 0 && userAttribute.Isdoubleworker != manInfo.Isdoubleworker { editMap["isdoubleworker"] = userAttribute.Isdoubleworker } if userAttribute.Isveterans != 0 && userAttribute.Isveterans != manInfo.Isveterans { editMap["isveterans"] = userAttribute.Isveterans } if userAttribute.Veteransnumber != "" && userAttribute.Veteransnumber != manInfo.Veteransnumber { editMap["veteransnumber"] = userAttribute.Veteransnumber } if userAttribute.Jobstartdate != 0 && userAttribute.Jobstartdate != manInfo.Jobstartdate { editMap["jobstartdate"] = userAttribute.Jobstartdate } if userAttribute.Entrydate != 0 && userAttribute.Entrydate != manInfo.Entrydate { editMap["entrydate"] = userAttribute.Entrydate } if userAttribute.Probationperiod != 0 && userAttribute.Probationperiod != manInfo.Probationperiod { editMap["probationperiod"] = userAttribute.Probationperiod } if userAttribute.Planformaldate != 0 && userAttribute.Planformaldate != manInfo.Planformaldate { editMap["planformaldate"] = userAttribute.Planformaldate } if userAttribute.PoliticalOutlook != 0 && userAttribute.PoliticalOutlook != manInfo.PoliticalOutlook { editMap["political_outlook"] = userAttribute.PoliticalOutlook } if userAttribute.MaritalstatusCn != "" && userAttribute.MaritalstatusCn != manInfo.MaritalstatusCn { editMap["maritalstatus_cn"] = userAttribute.MaritalstatusCn } if userAttribute.PoliticalOutlookCn != "" && userAttribute.PoliticalOutlookCn != manInfo.PoliticalOutlookCn { editMap["political_outlook_cn"] = userAttribute.PoliticalOutlookCn } if userAttribute.HealthCn != "" && userAttribute.HealthCn != manInfo.HealthCn { editMap["health_cn"] = userAttribute.HealthCn } if userAttribute.NameUsedBefore != "" && userAttribute.NameUsedBefore != manInfo.NameUsedBefore { editMap["name_used_before"] = userAttribute.NameUsedBefore } if userAttribute.CareerPlanning != "" && userAttribute.CareerPlanning != manInfo.CareerPlanning { editMap["career_planning"] = userAttribute.CareerPlanning } if userAttribute.HelpObtained != "" && userAttribute.HelpObtained != manInfo.HelpObtained { editMap["help_obtained"] = userAttribute.HelpObtained } if userAttribute.Hobby != "" && userAttribute.Hobby != manInfo.Hobby { editMap["hobby"] = userAttribute.Hobby } if userAttribute.DomicileType != "" && userAttribute.DomicileType != manInfo.DomicileType { editMap["domicile_type"] = userAttribute.DomicileType } if userAttribute.IdCardnoLongTerm != 0 && userAttribute.IdCardnoLongTerm != manInfo.IdCardnoLongTerm { editMap["idCardnoLongTerm"] = userAttribute.IdCardnoLongTerm } if userAttribute.MobileShortNumber != "" && userAttribute.MobileShortNumber != manInfo.MobileShortNumber { editMap["mobileShortNumber"] = userAttribute.MobileShortNumber } if userAttribute.Channel != 0 && userAttribute.Channel != manInfo.Channel { editMap["channel"] = userAttribute.Channel } if userAttribute.BloodType != "" && userAttribute.BloodType != manInfo.BloodType { editMap["bloodType"] = userAttribute.BloodType } if len(editMap) > 0 { editMap["time"] = time.Now().Unix() gormDb.Model(&models.PersonnelContent{}).Where("`key` = ?", userAttribute.Key).Updates(editMap) } } else { //数据不存在,新增 gormDb.Create(&userAttribute) } }