二次开发流程介绍

1、插件元数据介绍
插件元数据属性字段说明:
字段名 | 说明 | 默认值 | 示例 |
host | 前置机IP地址配置 | ||
port | 前置机端口配置 | ||
protocol | 前置机通信协议 | http | |
timeout | 前置机读取流超时(min) | 3 | |
charset | 前置机编码字符集 | GBK | |
bankShortName | 银行名称英文简称 | ABC | |
bankName | 银行名称 | 中国农业银行 | |
bankVersionID | 银行版本标识 | ABC_DC | |
bankVersionName | 银行版本名称 | 中国农业银行公网版 | |
description | 银行插件描述信息 | 中国农业银行 | |
keyNames | 同行匹配关键字 | "中国农业银行", "农业银行", "农行" | |
concurrentCount | 前置机并发数量 | 1 |
插件元数据方法说明:
方法名称 | 说明 |
baseConfigInit | 预置前置机基本属性值:protocol、timeout、charset |
metaDataInit | 预置插件描述信息:bankShortName、bankName、bankVersionID、bankVersionName、description、keyNames、concurrentCount |
getBankLoginExtraConfig | 前置机额外业务关联配置,如:前置机账号、密码等,可不重写 |
getFrontProxyConfig | 金蝶前置机代理连接配置项,如:金蝶代理程序端口、协议类型等,可不重写 |
getBizImplClasses | 注册开发的银行接口实现类 |
getBatchSeqIDClasses | 银行付款批次流水号生成器(银企框架默认为16位),可不重写 |
getDetailSeqIDClasses | 银行付款明细流水号生成器(银企框架默认为8位),可不重写 |
getPropertyConfig | 银行级别业务配置项 |
getDetailNoRule | 设置回单匹配码规则,可不重写 |
2、开发环境搭建:
(1)、本地搭建windows版轻量级苍穹平台,登录苍穹 平台 官网 查看具体安装步骤;

图1 苍穹平台官网
(2)、使用IntelliJ IDEA创建gradle工程,步骤如下:


填写银行插件名称
GroupId固定填写:kd.ebg.aqap
ArtifactId命名规则:ebg-aqap-banks-custom,其中custom代表具体银行版本
Version填写:1.0

创建完成后等待预置处理,系统自动下载gradle6.3依赖,需要停止下载,前往idea的settings,搜索gradle配置默认gradle home,选取安装苍穹轻量级环境下的gradle目录。

(3)、按照下面配置信息,修改build.gradle文件,注意修改仓库目录为苍穹平台安装目录:
apply plugin: 'java' apply plugin: 'maven' sourceCompatibility=1.8 group = 'kd.ebg.aqap' version = '1.0' tasks.withType(JavaCompile) { options.encoding = "UTF-8" } def trd= 'D:/ierp3.0/mservice-cosmic/lib/trd' def bos= 'D:/ierp3.0/mservice-cosmic/lib/bos' def biz= 'D:/ierp3.0/mservice-cosmic/lib/biz' dependencies { compile fileTree(dir: bos, include: '*.jar') compile fileTree(dir: trd, include: '*.jar') compile fileTree(dir: biz, include: '*.jar') } task sourcesJar(type: org.gradle.jvm.tasks.Jar, dependsOn: build) { classifier = 'sources' from sourceSets.main.allSource } task copyJarTodir(type: Copy){ from 'build/libs' into '/home/local/bos' exclude '**/*.class' } test.ignoreFailures true |
打开右侧栏gradle进行编译、打包,确认在项目工程输出ebg-aqap-banks-custom-1.0.jar

至此,开发环境搭建完成。
3、插件开发
(1)、目录结构:

插件包必须按照kd.ebg.aqap.banks作为开头,后面拼接银行版本,例如:kd.ebg.aqap.banks.moc.test
插件包内部结构主要分为四个部分:
kd.ebg.aqap.banks.*
|-- /customize 扩展实现客户化业务接口
|-- /service 实现银行业务接口
|-- BankBusinessConfig 银行参数配置
|-- MetaDataImpl 银行插件元数据
(2)、银行插件元数据
默认套用FBEMetaDataTemplate模板,实现BankMetaDataCollector接口
public class MocTestMetaDataImpl extends FBEMetaDataTemplate implements BankMetaDataCollector { @Override public void baseConfigInit(){ setExchangeProtocol(BankLoginConfigUtil.PROTOCOL_TCP); setTimeOut(3); setCharSet(BankLoginConfigUtil.CHARSET_GBK); } @Override public void metaDataInit() { setBankName("客户化开发银行"); setBankVersionID(MocTestConstants.BANK_VERSION_ID); setBankShortName("MOC"); setBankVersionName("客户化开发银行测试版本"); setDescription("客户化开发银行"); setKeyNames(Lists.newArrayList("客户化开发银行")); } /** * 前置机代理配置项,不需要可以不填 * @return */ @Override public List<BankLoginConfig> getFrontProxyConfig(){ return Lists.newArrayList( BankLoginConfigUtil.getBankLoginConfig("proxy_config","前置机代理配置项", "示例配置" ,"test", false, true) ); } /** * 前置机额外配置项,前置机特有配置项 * @return */ @Override public List<BankLoginConfig> getBankLoginExtraConfig(){ return Lists.newArrayList( BankLoginConfigUtil.getBankLoginConfig("moc_login_config1", "企业机构编号"), BankLoginConfigUtil.getBankLoginConfig("moc_login_config2", "操作员编号"), BankLoginConfigUtil.getBankLoginConfig("moc_login_config3","测试开关,是否启用", "", Lists.newArrayList("true", "false"), "false", false, false,false), BankLoginConfigUtil.getBankLoginConfig("moc_login_config4","测试服务器日期格式yyyy-MM-dd", "正式环境不要配置" ,"", false, true), BankLoginConfigUtil.getBankLoginConfig("moc_login_config5", "流读取过程中等待间隔(ms)", "500").set2Nullable() ); } /** * 电子回单类型配置项 * @return */ @Override public List<BankLoginConfig> getBankLoginReceiptBaseConfig(){ return Lists.newArrayList( BankLoginConfigUtil.getBankLoginConfig("moc_receipt_config1", "是否银行主动推送回单", "默认请选择'是',银行主动推送文件;若需要通过erp接口下载则选'否',要求回单量小于50m每日,且不保存7天前的历史回单,且回单任务不展示每单的详情", Lists.newArrayList("是", "否"), "是", false, false, false), BankLoginConfigUtil.getBankLoginConfig("moc_receipt_config2", "是否使用总行推送通道", "总行文件格式和分行不同:总行11123412300001234_20200101_CommonSingle_1.zip,分行20200101.zip。请根据实际情况选择,否则无法解析。银企平台也需要做同样的配置", Lists.newArrayList("是", "否"), "否", false, false, false) ); } /** * 注册接口实现类 * @return */ @Override public List<Class<? extends IBankService>> getBizImplClasses() { return Lists.newArrayList( kd.ebg.aqap.bank.moc.test.service.balance.HistoryBalanceImpl.class, kd.ebg.aqap.bank.moc.test.service.balance.TodayBalanceImpl.class, kd.ebg.aqap.bank.moc.test.service.detail.HistoryDetailImpl.class, kd.ebg.aqap.bank.moc.test.service.detail.TodayDetailImpl.class ); } /** * 自定义付款批次流水号生成器 * @return */ @Override public List<Class<? extends IBankBatchSeqIDCreator>> getBatchSeqIDClasses() { return Lists.newArrayList(); } /** * 自定义付款明细流水号生成器 * @return */ @Override public List<Class<? extends IBankDetailSeqIDCreator>> getDetailSeqIDClasses() { return Lists.newArrayList(); } /** * 注册插件业务配置项 * @return */ @Override public BankPropertyConfig getPropertyConfig() { return new BankBusinessConfig(); } } |
(3)、银行参数配置
public class BankBusinessConfig extends BankPropertyConfig { @Override public String getBankVersionID() { return MocTestConstants.BANK_VERSION_ID; } @Override public List<PropertyConfigItem> getAllPropertyConfigItems() { // 账号基本属性配置项 List<PropertyConfigItem> list = getBankAddtionalPropertyConfigItems(); list.addAll(Lists.newArrayList( MOC_BUSINESS_CONFIG )); return list; } private static final PropertyConfigItem MOC_BUSINESS_CONFIG = PropertyConfigItem.builder() .key("moc_business_config") .name("示例业务配置项") .desc("示例业务配置项(公共参数)") .minValueNum(0) .maxValueNum(200) .type(BankPropertyConfigType.COMMON_PARAM.getName()) .build(); } |
(4)、实现银行业务接口:
service
|-- balance 余额查询(当日、历史)
|-- detail 明细查询(当日、历史)
|-
二次开发流程介绍
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



