1.首先,在Controller表,将导出纪录列表
重写一下这个方法:
重写之后,页面爆红报错,要改对应的方法:
2.在本页面(***Controller)向上滑,找到
@Autowired private 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)
{
// List list = tAttendRecordService.selectTAttendRecordList(tAttendRecord);
List list = tAttendRecordService.selectTAttendRecordListexport(tAttendRecord);
ExcelUtil util = new ExcelUtil(TAttendRecord.class);
return util.exportExcel(list, "考勤记录数据");
}
Service
/**
* 查询考勤记录列表
*
* @param tAttendRecord 考勤记录
* @return 考勤记录集合
*/
public List selectTAttendRecordList(TAttendRecord tAttendRecord);
public List selectTAttendRecordListexport(TAttendRecord tAttendRecord);
3.去service对应的impl.java去修改对应方法
/**
* 查询考勤记录列表
*
* @param tAttendRecord 考勤记录
* @return 考勤记录
*/
@Override
public List selectTAttendRecordList(TAttendRecord tAttendRecord)
{
return tAttendRecordMapper.selectTAttendRecordList(tAttendRecord);
}
@Override
public List selectTAttendRecordListexport(TAttendRecord tAttendRecord)
{
return tAttendRecordMapper.selectTAttendRecordListexport(tAttendRecord);
}
4.去对应的mapper接口去修改接口方法
/**
* 查询考勤记录列表
*
* @param tAttendRecord 考勤记录
* @return 考勤记录集合
*/
public List selectTAttendRecordList(TAttendRecord tAttendRecord);
public List selectTAttendRecordListexport(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
接上图