1.首先,若依在Controller表,修改将导出纪录列表
这块代码相当于查询这个区域
重写一下这个方法:
重写之后,导出页面爆红报错,若依要改对应的修改方法:
2.在本页面(***Controller)向上滑,找到
@Autowiredprivate ITAttendRecordService tAttendRecordService;
点击ctrl+ITAttendRecordService,导出去到对应的若依service页面
对应Controller改的方法,在Service处对应重写方法
Controller/** * 导出考勤记录列表 */ @RequiresPermissions("jh_product:record:export") @Log(title = "考勤记录",修改 businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(TAttendRecord tAttendRecord) { // Listlist = tAttendRecordService.selectTAttendRecordList(tAttendRecord); Listlist = tAttendRecordService.selectTAttendRecordListexport(tAttendRecord); ExcelUtilutil = new ExcelUtil(TAttendRecord.class); return util.exportExcel(list, "考勤记录数据"); }Service /** * 查询考勤记录列表 * * @param tAttendRecord 考勤记录 * @return 考勤记录集合 */ public ListselectTAttendRecordList(TAttendRecord tAttendRecord); public ListselectTAttendRecordListexport(TAttendRecord tAttendRecord);
3.去service对应的impl.java去修改对应方法
/** * 查询考勤记录列表 * * @param tAttendRecord 考勤记录 * @return 考勤记录 */ @Override public ListselectTAttendRecordList(TAttendRecord tAttendRecord) { return tAttendRecordMapper.selectTAttendRecordList(tAttendRecord); } @Override public ListselectTAttendRecordListexport(TAttendRecord tAttendRecord) { return tAttendRecordMapper.selectTAttendRecordListexport(tAttendRecord); }
4.去对应的mapper接口去修改接口方法
/** * 查询考勤记录列表 * * @param tAttendRecord 考勤记录 * @return 考勤记录集合 */ public ListselectTAttendRecordList(TAttendRecord tAttendRecord); public ListselectTAttendRecordListexport(TAttendRecord tAttendRecord);
5.去对应的mapper.xml
select id, year, month, day, user_id, att_time, status, remark, section, type from t_attend_record
//是一个可以复用的语句 方便本文件内其他地方使用 只需要引用id 一个语句写好了 其他地方都能用select id, year, month, day, user_id, att_time, status, remark, section, type from t_attend_record //refid="selectTAttendRecordVo这就是复用语句
我们这里因为要修改查询语句,所以要这样做
当然,导出之前的若依哪个sql语句和原本若依调用的哪个语句也不需要删,只需要按我们命名的修改重新写一个即可,如下图画框部分
6.因为我的导出sql语句,type对应得是若依下拉框,在若依中新建字典那种(有正常上班,修改迟到,导出正常下班,早退,漏刷这几个选项),因此,我们想导出的类型是(有正常上班,迟到,正常下班,早退,漏刷这几个选项)而不是(0,1,2,3,4,5)这个数字,我们应该在查询语句这里做对应。
(select dict_label from sys_dict_data where dict_type ='clock_type' and dict_value =section)
as type
from t_attend_record
(select dict_label from sys_dict_data where dict_type ='clock_type' and dict_value =section)括号里面是查出的值 as type这个是表字段 要跟实体类匹配的
也可以这样理解:
(select dict_label from sys_dict_data where dict_type ='clock_type' and dict_value =section)查出来是值
然后用as type
将查出来的值赋给type(把查出来的文字以type作为字段 放到type那一栏底下)
要是as test的话 出来的就是字段 test下面是迟到早退
其实第6步操作还有一个简单的方法:
若依导入导出注解参数:
readConverterExp | String | 空 | 读取内容转表达式 (如: 0=男,1=女,2=未知) |
补充一个新问题:
类型直接用long 不用手动改成String
接上图