jeecgboot开启微服务后 项目使用导出excel 字典无法使用

sql  使用leftjoin  也可以操作出来  但是现在我想要得是我开发轻松 不考虑性能  

jeecgboot切换成微服务后  除system 服务以外  其他服务 下面得 实体类pojo 某个属性添加@Excel注解  

	/**人员*/
	@Excel(name = "人员", dictTable = "sys_user", dicCode = "username", dicText = "realname", width = 15)
	@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
    @ApiModelProperty(value = "人员")
    private java.lang.String emp;

都会出现下面情况   无法按照字典导出  

最后定位到 问题 原因  org.jeecgframework.poi.excel.export.base.ExportBase   这个类下面

getExcelField方法 中  AutoPoiDictServiceI jeecgDictService  一直是null    根据他获取这个service 猜测(只是猜测)通过上下文获取  导致其他服务并没有这个东西

但是excel 导出应该是公共得   通过AutoPoi 这个excel 包实现得导出   应该是配置得问题没有找到  所需要得 service 

getExcelField方法 中  AutoPoiDictServiceI jeecgDictService  一直是null  
private void getExcelField(String targetId, Field field, ExcelExportEntity excelEntity, Excel excel, Class<?> pojoClass) throws Exception {
	
			AutoPoiDictServiceI jeecgDictService = null;
			try {
				jeecgDictService = ApplicationContextUtil.getContext().getBean(AutoPoiDictServiceI.class);
			} catch (Exception e) {
			}
			if(jeecgDictService!=null){
				 String[] dictReplace = jeecgDictService.queryDict(excel.dictTable(), excel.dicCode(), excel.dicText());
				 if(excelEntity.getReplace()!=null && dictReplace!=null && dictReplace.length!=0){
					 excelEntity.setReplace(dictReplace);
				 }
			}
		}

  AutoPoiDiceServicel    直接点进去 发现是一个接口  eclipse  ctrl+t 搜索 实现类 会发现只有一个并且在System 服务 下面。。。。

因为这个类没放到公共里面 所以 上下文找不到这个实现类

将这个实现类复制到你得服务中  mapper 改成你自己的 添加查询字典的sql

整好了 再次导出excel 就会发现  能按照字典导出了

还未解决的问题   他还是查了数据库  缓存字典 没有在这里面体现走缓存?   为啥不把这个放到公共下? 我翻了一下jeecgcloud 项目  发现他也没有将这个放到公共下

更新了2.3.0版本开发一段时间 发现 excel 导出 如果是 多表查询   删除某个表数据的时候  导出的数据 不是空的而是数据库的数据  这就导致我这篇文章 屁用没有

模块是框架自带的用户模块   总结  导出数据 你顶一下excel注解  告诉人家excel 标题就好    导出的对应数据还是要写sql

最后还是需要写sql 来导出   如果你使用了 他的数据字典  也要维护好 数据字典  下图是用户管理  导出数据  看到性别有个男  有个8 

用户管理的数据

 下图是  数据库数据  数据改变

数据库数据

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值