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 0 9 : 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 : 0 8
@ 功能 : 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 : 0 8
@ 功能 : 外网数据库数据处理
* /
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 )
}
}