openapi新增人员踩坑系列五:最终章!原创
28人赞赏了该文章
2,158次浏览
编辑于2020年12月22日 18:56:08
近日做openapi(开放平台)的新增人员的案例,发现按照自己想的格式去写参数,问题还是挺多的,特此记录下每一步遇到的问题及解决方案。
本章为最终章,没看过前面几章的可以了解下:
openapi新增人员踩坑系列一:在输入参数字典中,没有找到数据参数data或datas节点
openapi新增人员踩坑系列二:LinkedHashMap不能转换为List
经过前面几轮的问题解决,我们看下最终的新增人员的参数。
这里新增成功,并且返回主键,界面上也有了我们新增的人员。
因为这里其实只是包含了我们人员的最基本的信息,还有其他信息没有添加,如果使用过程中有需要,也可以类似的按照这个格式去构造重新添加人员即可。
这里是通过操作服务来构造的,其实过程是有点艰辛的,而且也不太符合苍穹的人员设计规范。
对于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; } } }
请求案例截图:
(人员相关api请戳这里)超链接里也有很多案例。
生态门户中的通用接口是苍穹对外提供的一些通用的能力,一般有这些接口的都建议大家使用这些接口来实现功能,里面也有很多案例,希望大家能多多查看参考了解
推荐阅读