# CIP组织机构同步-接口模式

# 介绍

  • 官方说明文档见 组织同步 (opens new window)
  • 与中间库方式一致,均支持集团、单位、部门、岗位、职务、人员基本信息、人员任职信息、人员兼职信息

1730364145573.png

# 产品登记

  • {产品编码}自定义录入(建议具备一定含义)
  • {产品名称}自定义录入(建议具备一定含义)
  • {出品公司}自定义录入(建议具备一定含义)

1730364156126.png

# 应用注册

  • {应用名称}自定义录入(建议具备一定含义)
  • {登记产品编码}选择刚才登记的产品
  • {版本号}选择刚才登记产品的版本号
  • {版本说明}自定义录入(建议具备一定含义)
  • {应用说明}自定义录入(建议具备一定含义)
  • {应用服务商}自定义录入(建议具备一定含义)
  • {接入方式}根据实际情况选择,如需同时支持PC和移动端则选择"PC&移动URL接入应用"

1730364165211.png

# 创建第三方应用接口库

# 新建分类

  • 选择左侧树中层级,层级名称为"产品登记"中的{产品编码}与{版本号}拼接
  • 新建接口分类,{分类名称}自定义录入(建议具备一定含义)

1730364173630.png

# 新建接口

说明:新建接口中的动作根据需要多次创建,一般情况下集团、单位、部门是必须的

  • 选择创建的分类名称,点击新建接口

1730364182717.png

# 录入基本信息

  • {接口名称}自定义录入(建议具备一定含义)
  • {接口描述}自定义录入(建议具备一定含义)
  • {版权所有}自定义录入(建议具备一定含义)

1730364195532.png

# 录入语义定义

  • {接口访问协议}根据实际情况选择
  • {接口应用类型}根据实际情况选择
  • {接口服务地址}根据实际情况填写
  • {HTTP/Rest/Webservice 接口基础信息}根据实际情况选择

1730364203994.png

  • 参数设置,根据与接口提供方约定参数名称与类型,是否存在入参等信息。集团接口返回参数{数据类型}使用"JSON",其他接口使用"JSONArray",因为集团只会有一个,其他信息对于整个系统来说都应该是批量数据(根据实际情况自行调整)。

1730364216202.png

  • 数据类型为"JSON"或者"JSONArray",需要进行格式设置,设置中的字段名称要求与接口字段命名一致

1730364225031.png

# 同步方案设置

  • {方案名称}自定义录入(建议具备一定含义)

  • {第三方应用}选择应用注册中的应用

  • {同步方式}选择"接口同步"

  • 点击"同步接口绑定"按钮

1730364232906.png

  • 展开{扩展信息匹配设置}支持将数据同步至主数据中

1730364242804.png

1730364250713.png

  • 按照实际情况配置各接口

1730364258670.png

  • 配置接口中各参数对应关系。注意:人员基本信息的主键字段与人员任职信息中的人员主键、基础信息主键,要求相同,否则人员基本信息无法同步过去(推测是一个BUG)

1730364267304.png

# 同步初始化

  • 新建初始化配置
  • {同步方案}选择同步方案设置操作中设置的方案
  • {协同组织}根据实际情况选择,需要同步整个集团的信息选择集团。需要同步某个单位的信息选择对应单位
  • {第三方应用组织}根据实际情况选择集团或者单位。此时将会调用集团接口、单位接口,如未出现数据,说明没有正确获取到接口中的集团和单位信息,可能是配置问题,也可能是接口中数据问题等
  • {同步范围}根据实际情况勾选/取消勾选

1730364274891.png

# 同步操作

  • 勾选同步操作,{同步方式}为手工同步时点击确定立刻触发同步动作。选择定时同步,根据设置定时触发同步操作

1730364282463.png

  • 同步进行中

1730364289960.png

  • 同步完成

1730364297614.png

# 同步日志

  • 查看同步结果

1730364304840.png

# 示例

# 接口定义

  • 集团

1730364969004.png

  • 单位

1730364976977.png

  • 部门

1730364984430.png

  • 岗位

1730364996105.png

  • 人员基本信息

1730365005333.png

  • 人员任职信息

1730365012715.png

# 接口绑定

  • 集团

1730365020051.png

  • 单位

1730365031875.png

  • 部门

1730365039491.png

  • 岗位

1730365045989.png

1730365052586.png

  • 人员基本信息

1730365059125.png

1730365065668.png

  • 人员任职信息

1730365072101.png

1730365078256.png

# 接口

    @GetMapping("/getGroup")
    public Map<String, Object> getGroup(){
        Map<String, Object> group1 = new HashMap<>();
        group1.put("id", "groupId_1");
        group1.put("name", "三方集团");
        group1.put("code", "group");
        return group1;
    }

    @GetMapping("/getAccount")
    public List<Map<String, Object>> getAccount(){
        List<Map<String, Object>> accountList = new ArrayList<>();
        Map<String, Object> account1 = new HashMap<>();
        account1.put("id", "accountId_1");
        account1.put("name", "单位1");
        account1.put("code", "account1");
        account1.put("groupId", "groupId_1");
        accountList.add(account1);

        Map<String, Object> account2 = new HashMap<>();
        account2.put("id", "accountId_2");
        account2.put("name", "单位2");
        account2.put("code", "account2");
        account2.put("groupId", "groupId_1");
        accountList.add(account2);

        return accountList;
    }

    @GetMapping("/getDepartment")
    public List<Map<String, Object>> getDepartment(){
        List<Map<String, Object>> departmentList = new ArrayList<>();
        Map<String, Object> department1 = new HashMap<>();
        department1.put("id", "depId_1");
        department1.put("name", "部门1");
        department1.put("code", "department1");
        department1.put("accountId", "accountId_1");
        departmentList.add(department1);

        Map<String, Object> department2 = new HashMap<>();
        department2.put("id", "depId_2");
        department2.put("name", "部门2");
        department2.put("code", "department2");
        department2.put("accountId", "accountId_1");
        departmentList.add(department2);

        return departmentList;
    }

    @GetMapping("/getPost")
    public List<Map<String, Object>> getPost(){
        List<Map<String, Object>> postList = new ArrayList<>();
        Map<String, Object> post1 = new HashMap<>();
        post1.put("id", "postId_1");
        post1.put("name", "岗位1");
        post1.put("code", "post1");
        post1.put("accountId", "accountId_1");
        postList.add(post1);

        Map<String, Object> post2 = new HashMap<>();
        post2.put("id", "postId_2");
        post2.put("name", "岗位2");
        post2.put("code", "post2");
        post2.put("accountId", "accountId_1");
        postList.add(post2);

        return postList;
    }

    @GetMapping("getMemberBase")
    public List<Map<String, Object>> getMemberBase(){
        List<Map<String, Object>> memberBaseList = new ArrayList<>();
        Map<String, Object> memberBase1 = new HashMap<>();
        memberBase1.put("id", "memberId_1");
        memberBase1.put("idNum", "12344111");
        memberBaseList.add(memberBase1);

        Map<String, Object> memberBase2 = new HashMap<>();
        memberBase2.put("id", "memberId_2");
        memberBase2.put("idNum", "45655111");
        memberBaseList.add(memberBase2);

        return memberBaseList;
    }

    @GetMapping("getMemberPost")
    public List<Map<String, Object>> getMemberPost(){
        List<Map<String, Object>> memberPostList = new ArrayList<>();
        Map<String, Object> memberPost1 = new HashMap<>();
        memberPost1.put("id", "memberId_1");
        memberPost1.put("name", "张三");
        memberPost1.put("code", "memebrCode1");
        memberPost1.put("depId", "depId_1");
        memberPost1.put("accountId", "accountId_1");
        memberPost1.put("postId", "postId_1");
        memberPostList.add(memberPost1);

        Map<String, Object> memberPost2 = new HashMap<>();
        memberPost2.put("id", "memberId_2");
        memberPost2.put("name", "李四");
        memberPost2.put("code", "memebrCode2");
        memberPost2.put("depId", "depId_1");
        memberPost2.put("accountId", "accountId_1");
        memberPost2.put("postId", "postId_1");
        memberPostList.add(memberPost2);

        return memberPostList;
    }
创建人:lichaoj
修改人:lichaoj