package gn import ( "eta_gn/eta_bridge/global" "eta_gn/eta_bridge/models/eta" "eta_gn/eta_bridge/models/gn" "eta_gn/eta_bridge/utils" "fmt" "strconv" "time" ) func SyncSysDepartment(mdmDepart *gn.MDM_COMSTRU) (err error) { defer func() { if err != nil { global.LOG.Info(fmt.Sprintf("同步ETA部门失败, %v", err)) } }() if mdmDepart == nil { err = fmt.Errorf("部门信息有误") return } if mdmDepart.MainFieldParentAdminComstruCode == "" { existDepart, e := eta.GetSysDepartmentByOutId(mdmDepart.MainFieldComstruCode) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("获取ETA部门失败, %v", e) return } if existDepart != nil && existDepart.DepartmentId > 0 { if existDepart.DepartmentName != mdmDepart.MainFieldComstruNameHR { existDepart.DepartmentName = mdmDepart.MainFieldComstruNameHR updateCols := []string{"DepartmentName"} if e = existDepart.Update(updateCols); e != nil { err = fmt.Errorf("更新ETA部门失败, %v", e) } } return } newDepart := new(eta.SysDepartment) newDepart.DepartmentName = mdmDepart.MainFieldComstruNameHR newDepart.OutID = mdmDepart.MainFieldComstruCode s, _ := strconv.Atoi(mdmDepart.MainFieldOrderHR) newDepart.Sort = s newDepart.CreateTime = time.Now() if e = newDepart.Create(); e != nil { err = fmt.Errorf("新增ETA部门失败, %v", e) } return } if mdmDepart.MainFieldParentAdminComstruCode != "" { var departmentId, parentId int var isFind bool parentGroup, e := eta.GetSysGroupByOutId(mdmDepart.MainFieldParentAdminComstruCode) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("获取ETA父级分组失败, %v", e) return } if parentGroup != nil && parentGroup.GroupId > 0 { isFind = true departmentId = parentGroup.DepartmentId parentId = parentGroup.GroupId } if !isFind { parentDepart, e := eta.GetSysDepartmentByOutId(mdmDepart.MainFieldParentAdminComstruCode) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("获取ETA父级部门失败, %v", e) return } if parentDepart != nil && parentDepart.DepartmentId > 0 { isFind = true departmentId = parentDepart.DepartmentId parentId = 0 } } if !isFind { err = fmt.Errorf("未找到对应父级部门或分组, ParentCode: %s", mdmDepart.MainFieldParentAdminComstruCode) return } existGroup, e := eta.GetSysGroupByOutId(mdmDepart.MainFieldComstruCode) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("获取ETA分组失败, %v", e) return } if existGroup != nil && existGroup.GroupId > 0 { updateCols := []string{"GroupName", "DepartmentId", "ParentId"} existGroup.GroupName = mdmDepart.MainFieldComstruNameHR existGroup.DepartmentId = departmentId existGroup.ParentId = parentId if e = existGroup.Update(updateCols); e != nil { err = fmt.Errorf("更新ETA分组失败, %v", e) } return } newGroup := new(eta.SysGroup) newGroup.DepartmentId = departmentId newGroup.GroupName = mdmDepart.MainFieldComstruNameHR newGroup.ParentId = parentId newGroup.OutID = mdmDepart.MainFieldComstruCode s, _ := strconv.Atoi(mdmDepart.MainFieldOrderHR) newGroup.Sort = s newGroup.CreateTime = time.Now() if e = newGroup.Create(); e != nil { err = fmt.Errorf("新增ETA分组失败, %v", e) return } } return } func GetDepartmentGroupIdByMdmCode(mdmCode string) (departmentId, groupId int, departmentName, groupName string, err error) { defer func() { if departmentId == 0 && groupId == 0 { global.LOG.Info(fmt.Sprintf("MDM编码: %s, 未找到对应部门或分组", mdmCode)) } }() groupOb := new(eta.SysGroup) cond := ` AND out_id = ?` pars := make([]interface{}, 0) pars = append(pars, mdmCode) groupItem, e := groupOb.GetItemByCondition(cond, pars) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("编码获取分组失败, %v", e) return } if groupItem != nil && groupItem.GroupId > 0 { groupId = groupItem.GroupId groupName = groupItem.GroupName depart, e := eta.GetDepartmentById(groupItem.DepartmentId) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("获取部门失败, %v", e) return } departmentId = depart.DepartmentId departmentName = depart.DepartmentName return } departOb := new(eta.SysDepartment) departItem, e := departOb.GetItemByCondition(cond, pars) if e != nil && !utils.IsErrNoRow(e) { err = fmt.Errorf("编码获取部门失败, %v", e) return } if departItem != nil && departItem.DepartmentId > 0 { departmentId = departItem.DepartmentId departmentName = departItem.DepartmentName } return } func GetParentDepartmentOrGroup() (err error) { return }