前言
支持农垦项目中,需要增加抓取银行接口传输数据,需求有两点:一是银企平台前置机需要增加扩展中行、农行数据字段。(代理账号、代理账户名称、代理银行) 二是EAS资金模块中的交易明细查询列表界面能够显示扩展的上述三个字段数据。
资金模块
交易明细表:T_BE_TransDetail
实体:TransDetail
新增字段 <String 80>:代理账号: agentAccNo
代理账户名称:agentAccName
代理银行名称:agentAccBkName
银企平台与资金平台二者数据关系:银企平台使用的是基于插件的开发,通过抓起对应银行接口数据,然后以响应报文方式传输数据给EAS资金平台,资金平台通过对报文XML的结构化解析,获得对应的数据存入数据库中。
项目过程问题:通过对银企平台响应报文的研究,发现其已经对代理账号等上述三个字段进行抓取并相应,因此不再需要对此进行扩展开发。只是EAS7.5版本资金平台没有对其进行抓取而已(EAS8.2版本已解决)。因此,只需要对资金平台抓取数据部分进行扩展开发。其中源代码 com.kingdee.eas.fm.be.app.BankFacadeControllerBean 中的 parseDetailOtherMessage 方法是进行的数据抓取,可供扩展使用。然后再对交易明细实体进行扩展字段,及修改列表界面,增加新抓取字段(对实体 列表界面 查询Query 的修改 使用 DEP扩展平台 进行扩展开发,专门针对修改标准产品,而且是热更新部署,不需要重启服务器。开发出来这个DEP平台的是真大牛啊!)闲话少说,下面开始阐述开发过程。
分为两部分:一是源码的扩展。二是DEP扩展交易明细开发。
先贴出整理的整个开发过程的思维导图进行总体的概述,在进行各个部分的细致描述:
Xmind下载链接:https://pan.baidu.com/s/1slI2TtV
整体开发过程思维导图:
源码的扩展
BankFacadeControllerBean
我们只需要对这个类进行扩展,重写该方法即可。
1 package com.kingdee.eas.fm.be.app; 2 3 import org.apache.log4j.Logger; 4 import com.kingdee.bos.Context; 5 import com.kingdee.bos.ebservice.Detail; 6 import com.kingdee.eas.base.core.util.EmptyUtil; 7 import com.kingdee.eas.fm.be.TransDetailInfo; 8 9 public class BankFacadeControllerBeanEx extends com.kingdee.eas.fm.be.app.BankFacadeControllerBean 10 { 11 private static Logger logger = 12 Logger.getLogger("com.kingdee.eas.fm.be.app.BankFacadeControllerBeanEx"); 13 public TransDetailInfo parseDetailOtherMessage(Context ctx, 14 TransDetailInfo transDetailInfo, Detail detail) { 15 String[] reserveds = detail.getReserveds(); 16 if (!EmptyUtil.isEmpty(reserveds)) { 17 for (int i = 0; i < reserveds.length; i++) { 18 String returnValue = reserveds[i].trim(); 19 if (returnValue.toUpperCase().startsWith("agentAccNo=".toUpperCase())) { 20 transDetailInfo.put("agentAccNo", returnValue.substring("agentAccNo=".length())); 21 } 22 if (returnValue.toUpperCase().startsWith("agentAccName=".toUpperCase())) { 23 24 transDetailInfo.put("agentAccName", returnValue.substring("agentAccName=".length())); 25 } 26 if (returnValue.toUpperCase().startsWith("agentAccBkName=".toUpperCase())) { 27 28 transDetailInfo.put("agentAccBkName", returnValue.substring("agentAccBkName=".length())); 29 } 30 31 } 32 33 } 34 return transDetailInfo; 35 } 36 }
然后将代码进行导出jar部署到路径:Eas根目录\server\lib\sp\ sp_bankFacade2017051504_class.jar
DEP扩展交易明细开发
扩展交易明细列表界面TransDetailListUI 时提示不能扩展开发,原因是DEP中缺少该UI的注册记录,因此需要将该UI添加到白名单中。
1. 添加白名单
白名单路径:Eas\Server\server\properties\dep\whitelist\depwhitelist_FM.xml <ui name="com.kingdee.eas.fm.be.client.TransDetailListUI" alias="银行交易明细"/> <ui name="com.kingdee.eas.fm.be.client.TransDetailFilterUI" alias="银行交易明细过滤"/>
2. 在动态扩展平台DEP中新增扩展方案
3. 新建扩展单元
4. 导入系统标准的交易明细实体
5. 在导入的交易明细实体中新增 数据字段
6. 因为还要在列表中进行显示,因此还需要导入交易明细Query,新增刚在新增加的查询字段
7. 导入交易明细查询列表界面
然后右键 编辑表信息,新增显示的数据列
此时,虽然新增了表列,但是新增加的列还没有绑定修改后的Query数据字段。因此,还需要进行空间和查询Query 的数据绑定
右键列表ListUI,数据绑定,选中控件,然后再选中对应的数据字段,左框和右框进行一一匹配,一一对应添加!
此时,交易明细的DEP开发就完成了,进行扩展方案的发布就可以了,即使就会实时的进行实体的修改,数据表修改,列表List修改。在配合上面的代码扩展开发,新增加的字段就会存储到数据交易明细表中了。
最后,初次接触DEP扩展平台,实在是太强大了!不仅可以在标准产品扩展中使用,还是在独立的开发中使用DEP哦!