
# 1 简介
## 1.1 功能介绍
实施配置中心针对凭证模板在导入凭证模板时需要填写**引入核算组织**需求,做了特殊需求处理,如下图:

实施配置中心添加完数据包后,后续是直接通过一键同步将凭证模板同步导入其他环境的,这个时候引入核算组织就没有地方可以填写了。于是我们做了一个简单的操作,直接点击添加到传输包后,弹出自定义的表单让用户填写引入核算组织,然后记录下用户填写的组织,后续同步时直接使用。如下图:

## 1.2 应用场景
配置项导入时需要填写参数,比如凭证模板导入需要填写引入核算组织作为导入参数。
## 1.3 关键字段
|字段|说明|
|-|-|
|配置项自定义参数表单|既需要在添加到传输包之前,弹出让用户填写相关信息的表单,这里填写开发的动态表单标识|
# 2 主要操作
## 2.1 主要操作
**操作步骤**
**步骤1:** 首先需要创建一个动态表单,以凭证模板为例,创建一个动态表单,模板选择**内容弹窗(中)**,如下图:

**步骤2:** 动态表单创建完成后,打开开发平台设计器,添加插件,**注意,如果没有特殊逻辑,可以直接使用平台提供的公共插件:kd.bos.ricc.formplugin.PacketImportParamsFormPlugin**,只需将该插件注册到动态表单上面,后面的逻辑就全部由该插件处理了,无需另外再写插件。步骤如下图:

**步骤3:** 在动态表单的内容区域添加字段和一些必要的提示信息,添加的字段如果使用平台提供的公共插件默认是校验必须填写(既必录)。

**步骤4:** 动态表单开发好了之后,去基础配置中心,找到对应的配置项,这边同样以凭证模板为例,勾选之后点击查看。

**步骤5:** 进入修改界面,然后找到自定义参数表单,修改该参数为刚刚我们开发的动态表单标识,如我的是:ricc_vchimportparam 则填入ricc_vchimportparam。

**步骤6:** 至此,如果使用的是**平台提供的公共插件:kd.bos.ricc.formplugin.PacketImportParamsFormPlugin**则已经开发完成,具体效果如本文图2。
**自定义插件如何操作**
如果使用的不是**平台提供的公共插件:kd.bos.ricc.formplugin.PacketImportParamsFormPlugin**,而是自己开发的插件,那么必须注意的一点:**必须在完成相关校验和逻辑后,将需要的参数值返回父页面**,具体如下图,点击确认按钮后,执行btnOkAction方法,先处理相关的业务逻辑,然后将需要的值塞入map。返回给父页面。
```java
package kd.bos.ricc.formplugin;
import kd.bos.form.plugin.AbstractFormPlugin;
import java.util.*;
/**
* 数据包导入自定义参数动态表单插件
* @author bw_wang
*
*/
public class PacketImportParamsFormPlugin extends AbstractFormPlugin {
@Override
public void click(EventObject evt) {
String key = ((Control)evt.getSource()).getKey();
//点击确认后事件
if ("btnok".equalsIgnoreCase(key)) {
btnOkAction();
}
}
/**
* 点击确认按钮的动作
*/
public void btnOkAction(){
//todo 业务逻辑
//
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("自定义参数1","自定义参数1值");
paramMap.put("自定义参数2","自定义参数2值");
paramMap.put("自定义参数2","自定义参数2值");
//参数返回给父页面
this.getView().returnDataToParent(paramMap);
this.getView().close();
}
}
```
**补充,自定义的导入导出插件也是支持在执行导出数据包时写入自定义参数**
如下面示例代码,在exportPacket时写入自定义参数。
```java
package kd.bos.ricc.common.datapacket.impl;
import kd.bos.ricc.common.datapacket.SubDataPacket;
import kd.bos.ricc.common.datapacket.model.SDPInputParams;
import kd.bos.ricc.common.datapacket.model.SDPOutputParams;
import java.util.Map;
import java.util.HashMap;
/**
* 凭证模板子传输包处理
*/
public class VchtemplateSubDataPacketImpl implements SubDataPacket {
@Override
public SDPOutputParams exportPacket(SDPInputParams sdpInputParams) {
//定义输出参数
SDPOutputParams sdpOutputParams = new SDPOutputParams();
//todo 业务操作
//添加自定义参数逻辑
sdpOutputParams.param = new HashMap<>();
sdpOutputParams.param.put("自定义参数1","自定义参数1值");
sdpOutputParams.param.put("自定义参数2","自定义参数2值");
sdpOutputParams.param.put("自定义参数3","自定义参数3值");
return sdpOutputParams;
}
@Override
public SDPOutputParams importPacket(SDPInputParams sdpInputParams) {
//定义输出参数
SDPOutputParams sdpOutputParams = new SDPOutputParams();
//todo 业务操作
return sdpOutputParams;
}
}
```