自定义引入引出插件接口详解

栏目:云星瀚知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:3

自定义引入引出插件接口详解

# 1 简介 ## 1.1 功能介绍 基础配置中心可以灵活的添加客户二开的基础配置,标准已经支持了两种引入引出方式:一是标准产品的excel引入引出;二是JSON引入引出,对于二开复杂的基础配置,则需要开发人员二开插件来实现引入引出。 ## 1.2 应用场景 对于二开复杂的基础配置,二开单据的引入引出是自定义的插件代码实现的,这种情况就要选择**自定义引入引出**来实现引入引出功能。 # 2 主要操作 ## 2.1 注册配置项 添加客户二开的单据或者是基础资料可参考:[添加二开配置项](https://club.kdcloud.com/article/230400210919230976) 此处以转换规则为例,如下图,填写相关必录数据,引入引出方式选择**自定义引入引出**,然后此处需要填写插件,这个插件就是需要开发的插件,例如:**kd.bos.ricc.common.datapacket.impl.BOTPSubDataPacketImpl** ![image.webp](/download/01003baa18b9bf09424aae91ce92f14f19d0.webp) ## 2.2 编写插件 **插件要求:** 必须实现 ==kd.bos.ricc.common.datapacket.SubDataPacket== 接口 **插件主要参数解析:** 1. SDPInputParams 输入参数 |参数|解释| |-|-|-| |selectRows|列表勾选的数据| |localPath|服务器本地存储路径,主要用来定义导出的文件(txt、excel或者json文件)路径,可以将导出的文件放到该目录| |param|可以在此map里面获取到二开的参数,具体可参考:[导入自定义参数二开配置详解](https://vip.kingdee.com/article/240905621250586112)| |addPacketProgress|导出进度条| 2. SDPOutputParams 方法返回参数sdpOutputParams |参数|解释| |-|-|-| |exportFilePath|导出到本地的文件完整路径,例如:sdpInputParams的localPath为D:\kingdee\cosmic\ 导出文件为ricc.txt,那么这个路径为D:\kingdee\cosmic\ricc.txt | |status|导出文件的状态 0-成功 1-失败 失败需要返回错误信息,错误信息写在error里面| |error|导出失败时的错误信息,需要将错误信息写入此参数| |selectRows|列表勾选的数据| |selectedInfo|勾选信息| 示例代码如下,SubDataPacket接口包含2个方法,exportPacket()导出传输包到文件,importPacket()导入传输包到系统。 ```java package kd.bos.ricc.common.datapacket.impl; import kd.bos.devportal.plugin.botp.BOTPFileUtil; import kd.bos.ricc.common.datapacket.SubDataPacket; import kd.bos.ricc.common.datapacket.SubDataPacketCommon; import kd.bos.ricc.common.datapacket.model.SDPInputParams; import kd.bos.ricc.common.datapacket.model.SDPOutputParams; /** * BOTP 子传输包处理 */ public class BOTPSubDataPacketImpl implements SubDataPacket { @Override public SDPOutputParams exportPacket(SDPInputParams sdpInputParams) { //定义输出参数 SDPOutputParams sdpOutputParams = new SDPOutputParams(); sdpOutputParams.setExportFilePath(""); if (sdpInputParams == null) { sdpOutputParams.append("导出失败,传入参数为空"); return sdpOutputParams; } //勾选数据处理 String[] ruleIds = CommonUtil.getStrArrByRowCollection(sdpInputParams.getSelectRows()); BOTPFileUtil fileUtil = new BOTPFileUtil(BOTPFileUtil.Type_ConvertRule); JSONObject exportResult = new JSONObject(); //引出进度条 AddPacketProgress addPacketProgress = sdpInputParams.getAddPacketProgress(); String exportFilePath = null; //处理导入业务逻辑 try { exportFilePath = fileUtil.exportRule(sdpInputParams.getLocalPath(), ruleIds, exportResult); if (exportResult.get("error") != null) { sdpOutputParams.append(exportResult.get("error").toString()); sdpOutputParams.append("\n"); } } catch (Exception e) { logger.error(e); sdpOutputParams.append(CommonUtil.getExceptionDetailInfo(e)); sdpOutputParams.append("\n"); } //设置导出后的文件完整路径 sdpOutputParams.setExportFilePath(exportFilePath); //判断成功与否 sdpOutputParams.isSuccess(); //返回相关结果 return sdpOutputParams; } @Override public SDPOutputParams importPacket(SDPInputParams sdpInputParams) { //获取导入文件路径 String fileUrl = (String)sdpInputParams.getParam().get("fileUrl"); //定义输出参数 SDPOutputParams sdpOutputParams = new SDPOutputParams(); BOTPFileUtil fileUtil = new BOTPFileUtil(BOTPFileUtil.Type_ConvertRule); JSONObject importResult = new JSONObject(); importResult.put("ERROR", ""); //导入处理逻辑 try { ByteArrayOutputStream outputStream = CommonUtil.getFileOnputStream(fileUrl); //获取临时文件路径 TempFileCache cache = CacheFactory.getCommonCacheFactory().getTempFileCache(); String tempFileUrl = cache.saveAsUrl(fileUrl, outputStream.toByteArray(), 10000); if (tempFileUrl.startsWith("tempfile") && !tempFileUrl.contains("http")) { tempFileUrl = UrlService.getDomainContextUrl() + "/" + tempFileUrl; } boolean success = fileUtil.uploadRule(tempFileUrl, importResult); if (!success) { sdpOutputParams.append(importResult.get("ERROR").toString()); sdpOutputParams.append("\n"); } } catch (Exception e) { logger.error(e); sdpOutputParams.append(CommonUtil.getExceptionDetailInfo(e)); sdpOutputParams.append("\n"); } //判断成功与否 sdpOutputParams.isSuccess(); //返回相关结果 return sdpOutputParams; } } ``` ## 2.3 测试验证 点击添加到传输包后,可以正常添加到传输包,并可以去传输包详情查看里面导出的内容是否正确,如果出现添加失败或者是报错,可自行断点调试处理。同步传输包的逻辑这里就不演示了,具体条件逻辑差不多。 ![botp演示.webp](/download/0100f44e2d86ec034860bf911eaaa56ae232.webp)

自定义引入引出插件接口详解

# 1 简介## 1.1 功能介绍基础配置中心可以灵活的添加客户二开的基础配置,标准已经支持了两种引入引出方式:一是标准产品的excel引入引...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息