引入Excel的插件开发原创
6人赞赏了该文章
6,517次浏览
编辑于2021年11月16日 09:23:28
引入excel的原理, 首先是通过resolveExcel解析excel,并将数据放入缓存队列->importData从队列分批取数->save导入数据->initImportData初始化导入数据->执行beforeImportData后保存到数据模型->执行afterImportData后保存到数据库,其中会执行一个小的循环从importData分批取数后执行执行beforeImportData后保存到数据模型->执行afterImportData后保存到数据库。如果缓存队列里还有数据会循环执行importData从队列分批取数->save导入数据->initImportData初始化导入数据->执行beforeImportData后保存到数据模型。
下面的插件代码可以测试一下引入的原理
///在单据列表界面注册操作编码ImportData的操作类插件 public class DemoImport extends BatchImportPlugin { @Override protected ApiResult save(List<ImportBillData> rowdatas, ImportLogger logger) { //可以在此设置引入日志 Iterator<ImportBillData> it= rowdatas.iterator(); //可以查看是否循环save方法 return super.save(rowdatas, logger); } @Override protected void resolveExcel() { super.resolveExcel(); } @Override protected void importData() throws Throwable { super.importData(); } }
//在单据界面注册的界面插件 public class DemoImportPlugin extends AbstractFormPlugin { @Override public void initImportData(InitImportDataEventArgs e) { super.initImportData(e); } @Override public void beforeImportData(BeforeImportDataEventArgs e) { //查看是否进行小循环 super.beforeImportData(e); } @Override public void afterImportData(ImportDataEventArgs e) { super.afterImportData(e); } }
插件常见的三种情况:
1.引入前对Excel数据进行过滤
2.引入失败自定义失败日志
3.引入后可能动态关联其他单据
实现的方案就是单据页面注册插件类需要继承AbstractFormPlugin
然后重写beforeImportData保存到数据模型之前触发事件,批量处理时,每张单据触发一次,可以对引入的源单数据包进行修改或者取消本单引入。
重写afterImportData保存数据到数据模型后保存到数据库前触发事件,批量处理时,每张单据触发一次,可在此事件进行单据的关联操作(建立联查、反写等)
具体学习链接:https://vip.kingdee.com/school/242301697266367744?topicId=239384541469947648
赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!