自定义引入引出插件接口详解
# 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引入引...
点击下载文档
本文2024-09-23 00:16:06发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-138377.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章