要求:
导出主数据以及明细数据,明细数据可能有多条,标准的一对多导出。
唯一的难点是:有两个字段是字典项,而且字典项是级联的,第一个字典项好控制,但是第二个字段的字典项需要根据第一个字典项的值来确定。
举个例子:有10个字典,第一个字段用第一个字典,但是第二个字段需要从那9个字典中取。
导出形式:
思路:
整体思路还是按照jeecg官网给出的例子,地址:http://doc.jeecg.com/2044230
本想在前端将字典项中的内容都传过来保存,但是字段用的dicCode注解,不太好处理,于是转后端处理。
解决办法:
方法一:在获取子表数据时,将对应的字段附上值。
1:需要注入ISysDictService ,以此获取对应字典项。
@Autowired
private ISysDictService sysDictService;
2:如下图:
我的项目对sysDictService进行了封装,所以可能方法会有些对不上,但是功能都是一样的。
方法二:此方法未验证,仅作为一种参考.
子表中,字段处使用exportConvert注解。然后在下面的convertget方法中添加需要处理的代码。
如下图:
遇到的其他问题:
1.报错: java.lang.IllegalArgumentException: object is not an instance of declaring class
原因:对象的类型匹配不正确,我在属性复制的时候,子类没有复制过去。子类对应错误,修改子类,解决。
如下图:InspectMonitorCheckDetailVO改为InspectMonitorCheckDetail。
2. 排序:要加都加,我之前明细这里没加orderNum,所以排到了第一。
3. 子表中的dicCode注解不生效
原因:第一个字段的dicCode的值中有特殊字符:下划线
解决:修改去掉特殊字符
4.Merged region A5 must contain 2 or more cells
导出一对多时,当子list的size为1时会报错
这个只是个错误日志,实际发现不影响导出功能
官方解释:版本问题,autopoi升级到1.2.2即可。
https://gitee.com/jeecg/jeecg-boot/issues/I1YH6B