|
|
|
|
|
|
|
|
if(flag != null){ |
|
|
if(flag != null){ |
|
|
queryWrapper.select(DkCheckInRecord::getSysUserName, DkCheckInRecord::getSysUserId); |
|
|
queryWrapper.select(DkCheckInRecord::getSysUserName, DkCheckInRecord::getSysUserId); |
|
|
queryWrapper.groupBy(DkCheckInRecord::getSysUserName).groupBy(DkCheckInRecord::getSysUserId); |
|
|
queryWrapper.groupBy(DkCheckInRecord::getSysUserName).groupBy(DkCheckInRecord::getSysUserId); |
|
|
|
|
|
}else{ |
|
|
|
|
|
queryWrapper.orderByDesc(DkCheckInRecord::getSysUserName).orderByDesc(DkCheckInRecord::getCheckInTime); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
queryWrapper.orderByDesc(DkCheckInRecord::getSysUserName).orderByDesc(DkCheckInRecord::getCheckInTime); |
|
|
|
|
|
return queryWrapper; |
|
|
return queryWrapper; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Workbook workbook; |
|
|
Workbook workbook; |
|
|
// 加载模板文件 |
|
|
// 加载模板文件 |
|
|
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
templateFile = new FileInputStream("template-guonei.xlsx"); |
|
|
|
|
|
|
|
|
// templateFile = new FileInputStream("template-guonei.xlsx"); |
|
|
// DkRecordServiceImpl.class.getClassLoader().getResourceAsStream("template/template-guonei.xlsx"); |
|
|
// DkRecordServiceImpl.class.getClassLoader().getResourceAsStream("template/template-guonei.xlsx"); |
|
|
ClassPathResource resource = new ClassPathResource("template/template-guonei.xlsx"); |
|
|
ClassPathResource resource = new ClassPathResource("template/template-guonei.xlsx"); |
|
|
inputStream = resource.getInputStream(); |
|
|
inputStream = resource.getInputStream(); |
|
|
} |
|
|
} |
|
|
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
templateFile = new FileInputStream("template-riben.xlsx"); |
|
|
|
|
|
|
|
|
// templateFile = new FileInputStream("template-riben.xlsx"); |
|
|
ClassPathResource resource = new ClassPathResource("template/template-riben.xlsx"); |
|
|
ClassPathResource resource = new ClassPathResource("template/template-riben.xlsx"); |
|
|
inputStream = resource.getInputStream(); |
|
|
inputStream = resource.getInputStream(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
EmployeeAttendance data = new EmployeeAttendance(); |
|
|
EmployeeAttendance data = new EmployeeAttendance(); |
|
|
// 设置员工的名字 |
|
|
// 设置员工的名字 |
|
|
data.setEmployeeName(dkCheckInRecordDTO.getSysUserName()); |
|
|
data.setEmployeeName(dkCheckInRecordDTO.getSysUserName()); |
|
|
|
|
|
|
|
|
|
|
|
// 设置员工的id |
|
|
|
|
|
data.setUserId(dkCheckInRecordDTO.getSysUserId()); |
|
|
// 判断月日是否为空 |
|
|
// 判断月日是否为空 |
|
|
if(dkCheckInRecordDTO.getStrMonth() != null){ |
|
|
if(dkCheckInRecordDTO.getStrMonth() != null){ |
|
|
data.setDateTime(dkCheckInRecordDTO.getStrMonth()); |
|
|
data.setDateTime(dkCheckInRecordDTO.getStrMonth()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void fillTemplate(Sheet sheet, EmployeeAttendance data) { |
|
|
private void fillTemplate(Sheet sheet, EmployeeAttendance data) { |
|
|
// 填充标题区域 |
|
|
// 填充标题区域 |
|
|
|
|
|
setCellValue(sheet, 6, 6, data.getUserId()); |
|
|
setCellValue(sheet, 6, 10, data.getEmployeeName()); |
|
|
setCellValue(sheet, 6, 10, data.getEmployeeName()); |
|
|
setCellValue(sheet, 3, 1, data.getDateTime()); |
|
|
setCellValue(sheet, 3, 1, data.getDateTime()); |
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
|
|
|
|
|
|
EmployeeAttendance data = new EmployeeAttendance(); |
|
|
EmployeeAttendance data = new EmployeeAttendance(); |
|
|
// 设置员工的名字 |
|
|
// 设置员工的名字 |
|
|
data.setEmployeeName(dkCheckInRecordDTO.getSysUserName()); |
|
|
data.setEmployeeName(dkCheckInRecordDTO.getSysUserName()); |
|
|
|
|
|
// 设置员工id |
|
|
|
|
|
data.setUserId(dkCheckInRecordDTO.getSysUserId()); |
|
|
|
|
|
// 判断月日是否为空 |
|
|
|
|
|
if(dkCheckInRecordDTO.getStrMonth() != null){ |
|
|
|
|
|
data.setDateTime(dkCheckInRecordDTO.getStrMonth()); |
|
|
|
|
|
} |
|
|
|
|
|
if(dkCheckInRecordDTO.getStrDay() != null){ |
|
|
|
|
|
data.setDateTime(dkCheckInRecordDTO.getStrDay()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 判断月日是否为空 |
|
|
// 判断月日是否为空 |
|
|
if(dkCheckInRecordDTO.getStrMonth() != null){ |
|
|
if(dkCheckInRecordDTO.getStrMonth() != null){ |
|
|
|
|
|
|
|
|
// 构造excel数据 |
|
|
// 构造excel数据 |
|
|
for(DkCheckInRecordDTO dk : dkCheckInRecordDTOS){ |
|
|
for(DkCheckInRecordDTO dk : dkCheckInRecordDTOS){ |
|
|
// 根据打卡时间获取日期 |
|
|
// 根据打卡时间获取日期 |
|
|
LocalDate localDate = dk.getCheckInTime().toLocalDate(); |
|
|
|
|
|
|
|
|
LocalDate localDate = dk.getCheckInTime() != null ? dk.getCheckInTime().toLocalDate() : LocalDate.now(); |
|
|
// 构造当天开始打卡时间 |
|
|
// 构造当天开始打卡时间 |
|
|
String workStartTime = dkAttendanceGroup.getWorkStartTime(); |
|
|
String workStartTime = dkAttendanceGroup.getWorkStartTime(); |
|
|
LocalDateTime workStartTime1 = LocalDateTime.of(localDate, LocalTime.parse(workStartTime)); |
|
|
LocalDateTime workStartTime1 = LocalDateTime.of(localDate, LocalTime.parse(workStartTime)); |
|
|
|
|
|
|
|
|
// 构造DayRecord |
|
|
// 构造DayRecord |
|
|
DayRecord dayRecord = new DayRecord(); |
|
|
DayRecord dayRecord = new DayRecord(); |
|
|
dayRecord.setDay(localDate.toString()); |
|
|
dayRecord.setDay(localDate.toString()); |
|
|
dayRecord.setWeekday(dk.getWeek()); |
|
|
|
|
|
|
|
|
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); |
|
|
|
|
|
int week = dayOfWeek.getValue(); |
|
|
|
|
|
if(week == Constans.EXPORT_ZHOUYI){ |
|
|
|
|
|
|
|
|
|
|
|
dayRecord.setWeekday("月"); |
|
|
|
|
|
}else if(week == Constans.EXPORT_ZHOUER){ |
|
|
|
|
|
dayRecord.setWeekday("火"); |
|
|
|
|
|
}else if(week == Constans.EXPORT_ZHOUSAN){ |
|
|
|
|
|
dayRecord.setWeekday("水"); |
|
|
|
|
|
}else if(week == Constans.EXPORT_ZHOUSI){ |
|
|
|
|
|
dayRecord.setWeekday("木"); |
|
|
|
|
|
}else if(week == Constans.EXPORT_ZHOUWU){ |
|
|
|
|
|
dayRecord.setWeekday("金"); |
|
|
|
|
|
} else if(week == Constans.EXPORT_ZHOULIU){ |
|
|
|
|
|
dayRecord.setWeekday("土"); |
|
|
|
|
|
}else if(week == Constans.EXPORT_ZHOURI){ |
|
|
|
|
|
dayRecord.setWeekday("日"); |
|
|
|
|
|
} |
|
|
dayRecord.setStartTime(null != dk.getClockIn() ? dk.getClockIn().format(DateTimeFormatter.ofPattern("HH:mm")) : ""); |
|
|
dayRecord.setStartTime(null != dk.getClockIn() ? dk.getClockIn().format(DateTimeFormatter.ofPattern("HH:mm")) : ""); |
|
|
dayRecord.setEndTime(null != dk.getClockOut() ? dk.getClockOut().format(DateTimeFormatter.ofPattern("HH:mm")) : ""); |
|
|
dayRecord.setEndTime(null != dk.getClockOut() ? dk.getClockOut().format(DateTimeFormatter.ofPattern("HH:mm")) : ""); |
|
|
// 打卡异常判断 |
|
|
// 打卡异常判断 |
|
|
|
|
|
|
|
|
private void fillTemplateRiBen(Sheet sheet, EmployeeAttendance data) { |
|
|
private void fillTemplateRiBen(Sheet sheet, EmployeeAttendance data) { |
|
|
// 填充标题区域 |
|
|
// 填充标题区域 |
|
|
setCellValue(sheet, 5, 13, data.getEmployeeName()); |
|
|
setCellValue(sheet, 5, 13, data.getEmployeeName()); |
|
|
setCellValue(sheet, 2, 1, data.getDateTime()); |
|
|
|
|
|
|
|
|
setCellValue(sheet, 5, 6, data.getUserId()); |
|
|
|
|
|
setCellValue(sheet, 2, 0, data.getDateTime()); |
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
|
|
|
|
|
|
// 填充数据表格 |
|
|
// 填充数据表格 |