openapi新增人员踩坑系列五:最终章!原创
金蝶云社区-JeremyG
JeremyG
28人赞赏了该文章 2,282次浏览 未经作者许可,禁止转载编辑于2020年12月22日 18:56:08
summary-icon摘要由AI智能服务提供

本文记录了在使用openapi(开放平台)进行新增人员操作时遇到的问题及解决方案,涵盖了多个坑点,如参数字典缺失、类型转换错误、数据状态不允许等。最终成功新增人员并返回主键,同时提供了通过自定义服务代码实现新增人员的示例,强调了使用苍穹提供的api进行操作的建议,并附有请求案例截图的超链接和生态门户中通用接口的推荐。

近日做openapi(开放平台)的新增人员的案例,发现按照自己想的格式去写参数,问题还是挺多的,特此记录下每一步遇到的问题及解决方案。


本章为最终章,没看过前面几章的可以了解下:

openapi新增人员踩坑系列一:在输入参数字典中,没有找到数据参数data或datas节点

openapi新增人员踩坑系列二:LinkedHashMap不能转换为List

openapi新增人员踩坑系列三:"数据状态不允许引入"

openapi新增人员踩坑系列四:"数据校验发现错误!"


经过前面几轮的问题解决,我们看下最终的新增人员的参数。

这里新增成功,并且返回主键,界面上也有了我们新增的人员。

image.png

image.png



因为这里其实只是包含了我们人员的最基本的信息,还有其他信息没有添加,如果使用过程中有需要,也可以类似的按照这个格式去构造重新添加人员即可。


这里是通过操作服务来构造的,其实过程是有点艰辛的,而且也不太符合苍穹的人员设计规范。

对于openapi新增人员,我们推荐使用自定义服务,然后通过苍穹提供的新增人员的api去新建人员。

自定义服务代码:

import kd.bos.bill.IBillWebApiPlugin;
import kd.bos.entity.api.ApiResult;
import kd.bos.permission.model.UserParam;
import kd.bos.servicehelper.user.UserServiceHelper;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AddUserNewDemoPlugin implements IBillWebApiPlugin {

    @Override
    public ApiResult doCustomService(Map<String, Object> params) {
        List<UserParam> paramList = new ArrayList<>();
        UserParam user = new UserParam();
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("number", params.get("number"));
        dataMap.put("name", params.get("name"));
        dataMap.put("usertype", params.get("usertype"));
        dataMap.put("phone", params.get("phone"));

        // 职位分录
        List<Map<String, Object>> posList = new ArrayList<>();
        Map<String, Object> entryentity;
        List<Map<String, Object>> entryentityList = (List<Map<String, Object>>) params.get("entryentity");
        for (Map<String, Object> entryentityMap : entryentityList) {
            entryentity = new HashMap<>();
            // 根据部门编码赋值
            Map<String, Object> dptNumMap = new HashMap<>();
            Map<String, Object> dpt = (Map<String, Object>) entryentityMap.get("dpt");
            dptNumMap.put("number", dpt.get("number"));

            entryentity.put("dpt", dptNumMap);
            entryentity.put("position", entryentityMap.get("position"));
            entryentity.put("isincharge", entryentityMap.get("isincharge"));
            entryentity.put("ispartjob", entryentityMap.get("ispartjob"));
            posList.add(entryentity);
        }

        dataMap.put("entryentity", posList);
        user.setDataMap(dataMap);
        paramList.add(user);

        //通过人员工具类执行
        UserServiceHelper.addOrUpdate(paramList);

        StringBuffer stringBuffer = new StringBuffer();
        // 判断执行结果
        Map<String, Object> stringObjectMap = new HashMap<>();
        for (UserParam result : paramList) {
            if (!result.isSuccess()) {
                stringBuffer.append(result.getMsg());
            } else {
                //成功的话返回
                stringObjectMap.put(result.getDataMap().get("number").toString(),result.getId());
            }
        }

        if (stringBuffer.length()>0) {
            return ApiResult.fail(stringBuffer.toString());
        } else {
            ApiResult apiResult = new ApiResult();
            apiResult.setMessage("新增用户成功!");
            apiResult.setSuccess(true);
            apiResult.setData(stringObjectMap);
            return apiResult;
        }
    }
}

请求案例截图:

image.png

人员相关api请戳这里)超链接里也有很多案例。


生态门户中的通用接口是苍穹对外提供的一些通用的能力,一般有这些接口的都建议大家使用这些接口来实现功能,里面也有很多案例,希望大家能多多查看参考了解

image.png



图标赞 28
28人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!