|
|
@@ -132,6 +132,14 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
FileInputStream templateFile = null; |
|
|
|
InputStream inputStream = null; |
|
|
|
Workbook workbook; |
|
|
|
// 定义迟到人数 |
|
|
|
int latePersonCount = 0; |
|
|
|
// 定义早退人数 |
|
|
|
int earlyPersonCount = 0; |
|
|
|
// 定义迟到次数 |
|
|
|
int lateCount = 0; |
|
|
|
// 定义早退次数 |
|
|
|
int earlyCount = 0; |
|
|
|
// 加载模板文件 |
|
|
|
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
|
// templateFile = new FileInputStream("template-guonei.xlsx"); |
|
|
@@ -145,14 +153,22 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
inputStream = resource.getInputStream(); |
|
|
|
} |
|
|
|
workbook = WorkbookFactory.create(inputStream); |
|
|
|
Sheet templateSheet = workbook.getSheetAt(0); |
|
|
|
// Sheet templateSheet = workbook.getSheetAt(0); |
|
|
|
|
|
|
|
// 遍历所有人员 |
|
|
|
for (int i = 0; i < dkCheckInRecordDTOS.size(); i++){ |
|
|
|
DkCheckInRecordDTO dk = dkCheckInRecordDTOS.get(i); |
|
|
|
|
|
|
|
// 获取每个人员的打卡记录并生成excel |
|
|
|
// 自动检测文件格式并创建对应的 Workbook |
|
|
|
for (int i = 0; i <= dkCheckInRecordDTOS.size(); i++){ |
|
|
|
int newSheetIndex = workbook.getNumberOfSheets(); |
|
|
|
if(i == dkCheckInRecordDTOS.size()){ |
|
|
|
workbook.createSheet("汇总"); |
|
|
|
workbook.setSheetName(newSheetIndex, "汇总"); |
|
|
|
// 获取新创建的Sheet |
|
|
|
Sheet newSheet = workbook.getSheetAt(newSheetIndex); |
|
|
|
fillTemplateHuiZong(newSheet, latePersonCount, earlyPersonCount, lateCount, earlyCount); |
|
|
|
}else{ |
|
|
|
DkCheckInRecordDTO dk = dkCheckInRecordDTOS.get(i); |
|
|
|
|
|
|
|
// 获取每个人员的打卡记录并生成excel |
|
|
|
// 自动检测文件格式并创建对应的 Workbook |
|
|
|
// workbook = WorkbookFactory.create(templateFile); |
|
|
|
|
|
|
|
// Workbook workbook = new XSSFWorkbook(templateFile); |
|
|
@@ -160,38 +176,58 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
// Sheet sheet = workbook.getSheetAt(i); // 获取第一个工作表 |
|
|
|
|
|
|
|
// Sheet sheet = getOrCreateSheet(workbook, i, dk.getSysUserName()); |
|
|
|
// 创建新Sheet,使用原始模板Sheet的名称加上序号 |
|
|
|
String sheetName = templateSheet.getSheetName() + "_" + (i + 1); |
|
|
|
int newSheetIndex = workbook.getNumberOfSheets(); |
|
|
|
workbook.cloneSheet(0); |
|
|
|
workbook.setSheetName(newSheetIndex, dk.getSysUserName()); |
|
|
|
// 获取新创建的Sheet |
|
|
|
Sheet newSheet = workbook.getSheetAt(newSheetIndex); |
|
|
|
|
|
|
|
// 准备数据 |
|
|
|
dkCheckInRecordDTO.setSysUserId(dk.getSysUserId()); |
|
|
|
dkCheckInRecordDTO.setSysUserName(dk.getSysUserName()); |
|
|
|
// 国内模版 |
|
|
|
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
|
// 构造导出数据 |
|
|
|
EmployeeAttendance attendanceData = prepareSampleData(dkCheckInRecordDTO); |
|
|
|
// 填充数据到模板 |
|
|
|
if (attendanceData.getDayRecords().size() == 0){ |
|
|
|
return; |
|
|
|
// 创建新Sheet,使用原始模板Sheet的名称加上序号 |
|
|
|
// String sheetName = templateSheet.getSheetName() + "_" + (i + 1); |
|
|
|
if(i == dkCheckInRecordDTOS.size()){ |
|
|
|
workbook.setSheetName(newSheetIndex, "汇总"); |
|
|
|
}else{ |
|
|
|
workbook.cloneSheet(0); |
|
|
|
workbook.setSheetName(newSheetIndex, dk.getSysUserName()); |
|
|
|
} |
|
|
|
fillTemplate(newSheet, attendanceData); |
|
|
|
} |
|
|
|
// 日本模版 |
|
|
|
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
|
// 构造导出数据 |
|
|
|
EmployeeAttendance attendanceData = prepareSampleDataRiBen(dkCheckInRecordDTO); |
|
|
|
// 填充数据到模板 |
|
|
|
if (attendanceData.getDayRecords().size() == 0){ |
|
|
|
return; |
|
|
|
|
|
|
|
// 获取新创建的Sheet |
|
|
|
Sheet newSheet = workbook.getSheetAt(newSheetIndex); |
|
|
|
|
|
|
|
// 准备数据 |
|
|
|
dkCheckInRecordDTO.setSysUserId(dk.getSysUserId()); |
|
|
|
dkCheckInRecordDTO.setSysUserName(dk.getSysUserName()); |
|
|
|
// 国内模版 |
|
|
|
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
|
// 构造导出数据 |
|
|
|
EmployeeAttendance attendanceData = prepareSampleData(dkCheckInRecordDTO); |
|
|
|
if(attendanceData.getChidaocishu() > 0){ |
|
|
|
latePersonCount ++; |
|
|
|
lateCount = lateCount + attendanceData.getChidaocishu(); |
|
|
|
} |
|
|
|
if(attendanceData.getZaotuicishu() > 0){ |
|
|
|
earlyPersonCount ++; |
|
|
|
earlyCount = earlyCount + attendanceData.getZaotuicishu(); |
|
|
|
} |
|
|
|
// 填充数据到模板 |
|
|
|
if (attendanceData.getDayRecords().size() == 0){ |
|
|
|
return; |
|
|
|
} |
|
|
|
fillTemplate(newSheet, attendanceData); |
|
|
|
} |
|
|
|
// 日本模版 |
|
|
|
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
|
// 构造导出数据 |
|
|
|
EmployeeAttendance attendanceData = prepareSampleDataRiBen(dkCheckInRecordDTO); |
|
|
|
if(attendanceData.getChidaocishu() > 0){ |
|
|
|
latePersonCount ++; |
|
|
|
lateCount = lateCount + attendanceData.getChidaocishu(); |
|
|
|
} |
|
|
|
if(attendanceData.getZaotuicishu() > 0){ |
|
|
|
earlyPersonCount ++; |
|
|
|
earlyCount = earlyCount + attendanceData.getZaotuicishu(); |
|
|
|
} |
|
|
|
// 填充数据到模板 |
|
|
|
if (attendanceData.getDayRecords().size() == 0){ |
|
|
|
return; |
|
|
|
} |
|
|
|
fillTemplateRiBen(newSheet, attendanceData); |
|
|
|
} |
|
|
|
fillTemplateRiBen(newSheet, attendanceData); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
// 保存为新文件 |
|
|
|
// FileOutputStream outputFile = new FileOutputStream("output.xlsx"); |
|
|
@@ -204,8 +240,8 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
// 关闭资源 |
|
|
|
// outputFile.close(); |
|
|
|
workbook.close(); |
|
|
|
templateFile.close(); |
|
|
|
|
|
|
|
// templateFile.close(); |
|
|
|
inputStream.close(); |
|
|
|
System.out.println("Excel 导出成功!"); |
|
|
|
} catch (IOException e) { |
|
|
|
e.printStackTrace(); |
|
|
@@ -265,6 +301,11 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
return data; |
|
|
|
} |
|
|
|
// 构造excel数据 |
|
|
|
|
|
|
|
// 定义迟到次数 |
|
|
|
int lateCount = 0; |
|
|
|
// 定义早退次数 |
|
|
|
int earlyCount = 0; |
|
|
|
for(DkCheckInRecordDTO dk : dkCheckInRecordDTOS){ |
|
|
|
// 根据打卡时间获取日期 |
|
|
|
LocalDate localDate = dk.getCheckInTime() != null ? dk.getCheckInTime().toLocalDate() : LocalDate.now(); |
|
|
@@ -277,7 +318,7 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
|
|
|
|
// 构造DayRecord |
|
|
|
DayRecord dayRecord = new DayRecord(); |
|
|
|
dayRecord.setDay(localDate.toString()); |
|
|
|
dayRecord.setDay(localDate.getDayOfMonth()); |
|
|
|
// 获取星期几(返回 DayOfWeek 枚举) |
|
|
|
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); |
|
|
|
int week = dayOfWeek.getValue(); |
|
|
@@ -291,6 +332,11 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
if(dk.getClockIn().isAfter(workStartTime1)){ |
|
|
|
dayRecord.setChidao("*"); |
|
|
|
dayRecord.setRemark("迟到1次"); |
|
|
|
lateCount ++; |
|
|
|
} |
|
|
|
|
|
|
|
if(dk.getClockOut().isBefore(workEndTime1)){ |
|
|
|
earlyCount ++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -298,6 +344,13 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
dayRecord.setYichang("*"); |
|
|
|
dayRecord.setRemark("异常打卡"); |
|
|
|
} |
|
|
|
if(dk.getClockIn() == null && dk.getClockOut() != null){ |
|
|
|
dayRecord.setYichang("*"); |
|
|
|
dayRecord.setRemark("异常打卡"); |
|
|
|
} |
|
|
|
if(dk.getClockIn() == null && dk.getClockOut() == null){ |
|
|
|
dayRecord.setRemark("缺卡"); |
|
|
|
} |
|
|
|
|
|
|
|
// 判断是否为工作日加班 |
|
|
|
if(dk.getClockOut() != null){ |
|
|
@@ -333,6 +386,9 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
dayRecords.add(dayRecord); |
|
|
|
} |
|
|
|
|
|
|
|
data.setChidaocishu(lateCount); |
|
|
|
data.setZaotuicishu(earlyCount); |
|
|
|
|
|
|
|
// dayRecords.add(new DayRecord(1, "金", "09:05", "18:23", "迟到", "", 0.5, "会议")); |
|
|
|
// dayRecords.add(new DayRecord(2, "土", "08:55", "18:30", "正常", "", 1.0, "")); |
|
|
|
// dayRecords.add(new DayRecord(3, "日", "", "", "休息", "年假", 0, "")); |
|
|
@@ -392,27 +448,142 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
setCellValue(sheet, 3, 1, data.getDateTime()); |
|
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
|
|
|
|
|
// 填充数据表格 |
|
|
|
int rowIndex = 10; // 数据起始行(根据模板调整) |
|
|
|
|
|
|
|
for (DayRecord record : data.getDayRecords()) { |
|
|
|
setCellValue(sheet, rowIndex, 1, record.getDay()); |
|
|
|
setCellValue(sheet, rowIndex, 2, record.getWeekday()); |
|
|
|
setCellValue(sheet, rowIndex, 3, record.getStartTime()); |
|
|
|
setCellValue(sheet, rowIndex, 4, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 5, record.getChidao()); |
|
|
|
// setCellValue(sheet, rowIndex, 6, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 7, record.getYichang()); |
|
|
|
setCellValue(sheet, rowIndex, 8, record.getGongzuori()); |
|
|
|
setCellValue(sheet, rowIndex, 9, record.getXiuxiri()); |
|
|
|
setCellValue(sheet, rowIndex, 10, record.getFadingjiari()); |
|
|
|
setCellValue(sheet, rowIndex, 11, record.getXiuxi()); |
|
|
|
setCellValue(sheet, rowIndex, 12, record.getQingjia()); |
|
|
|
setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
|
|
|
|
rowIndex++; |
|
|
|
if(record.getDay() == 1){ |
|
|
|
fillTemplateCell(sheet, 10, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 2){ |
|
|
|
fillTemplateCell(sheet, 11, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 3){ |
|
|
|
fillTemplateCell(sheet, 12, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 4){ |
|
|
|
fillTemplateCell(sheet, 13, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 5){ |
|
|
|
fillTemplateCell(sheet, 14, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 6){ |
|
|
|
fillTemplateCell(sheet, 15, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 7){ |
|
|
|
fillTemplateCell(sheet, 16, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 8){ |
|
|
|
fillTemplateCell(sheet, 17, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 9){ |
|
|
|
fillTemplateCell(sheet, 18, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 10){ |
|
|
|
fillTemplateCell(sheet, 19, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 11){ |
|
|
|
fillTemplateCell(sheet, 20, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 12){ |
|
|
|
fillTemplateCell(sheet, 21, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 13){ |
|
|
|
fillTemplateCell(sheet, 22, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 14){ |
|
|
|
fillTemplateCell(sheet, 23, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 15){ |
|
|
|
fillTemplateCell(sheet, 24, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 16){ |
|
|
|
fillTemplateCell(sheet, 25, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 17){ |
|
|
|
fillTemplateCell(sheet, 26, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 18){ |
|
|
|
fillTemplateCell(sheet, 27, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 19){ |
|
|
|
fillTemplateCell(sheet, 28, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 20){ |
|
|
|
fillTemplateCell(sheet, 29, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 21){ |
|
|
|
fillTemplateCell(sheet, 30, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 22){ |
|
|
|
fillTemplateCell(sheet, 31, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 23){ |
|
|
|
fillTemplateCell(sheet, 32, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 24){ |
|
|
|
fillTemplateCell(sheet, 33, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 25){ |
|
|
|
fillTemplateCell(sheet, 34, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 26){ |
|
|
|
fillTemplateCell(sheet, 35, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 27){ |
|
|
|
fillTemplateCell(sheet, 36, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 28){ |
|
|
|
fillTemplateCell(sheet, 37, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 29){ |
|
|
|
fillTemplateCell(sheet, 38, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 30){ |
|
|
|
fillTemplateCell(sheet, 39, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 31){ |
|
|
|
fillTemplateCell(sheet, 40, record); |
|
|
|
} |
|
|
|
// 填充数据表格 |
|
|
|
// int rowIndex = 10; // 数据起始行(根据模板调整) |
|
|
|
// setCellValue(sheet, rowIndex, 1, record.getDay()); |
|
|
|
// setCellValue(sheet, rowIndex, 2, record.getWeekday()); |
|
|
|
// setCellValue(sheet, rowIndex, 3, record.getStartTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 4, record.getEndTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 5, record.getChidao()); |
|
|
|
//// setCellValue(sheet, rowIndex, 6, record.getEndTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 7, record.getYichang()); |
|
|
|
// setCellValue(sheet, rowIndex, 8, record.getGongzuori()); |
|
|
|
// setCellValue(sheet, rowIndex, 9, record.getXiuxiri()); |
|
|
|
// setCellValue(sheet, rowIndex, 10, record.getFadingjiari()); |
|
|
|
// setCellValue(sheet, rowIndex, 11, record.getXiuxi()); |
|
|
|
// setCellValue(sheet, rowIndex, 12, record.getQingjia()); |
|
|
|
// setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
// rowIndex++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) { |
|
|
|
// setCellValue(sheet, rowIndex, 1, record.getDay()); |
|
|
|
setCellValue(sheet, rowIndex, 2, record.getWeekday()); |
|
|
|
setCellValue(sheet, rowIndex, 3, record.getStartTime()); |
|
|
|
setCellValue(sheet, rowIndex, 4, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 5, record.getChidao()); |
|
|
|
// setCellValue(sheet, rowIndex, 6, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 7, record.getYichang()); |
|
|
|
setCellValue(sheet, rowIndex, 8, record.getGongzuori()); |
|
|
|
setCellValue(sheet, rowIndex, 9, record.getXiuxiri()); |
|
|
|
setCellValue(sheet, rowIndex, 10, record.getFadingjiari()); |
|
|
|
setCellValue(sheet, rowIndex, 11, record.getXiuxi()); |
|
|
|
setCellValue(sheet, rowIndex, 12, record.getQingjia()); |
|
|
|
setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
} |
|
|
|
|
|
|
|
private void setCellValue(Sheet sheet, int rowIndex, int colIndex, Object value) { |
|
|
|
Row row = sheet.getRow(rowIndex); |
|
|
|
if (row == null) { |
|
|
@@ -471,6 +642,10 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
Boolean allowEarly = dkAttendanceGroup.getAllowEarly(); |
|
|
|
// 允许早退的时长 |
|
|
|
Integer earlyRange = dkAttendanceGroup.getEarlyRange(); |
|
|
|
// 定义迟到次数 |
|
|
|
int lateCount = 0; |
|
|
|
// 定义早退次数 |
|
|
|
int earlyCount = 0; |
|
|
|
|
|
|
|
// 定义集合,用于存储每天打卡记录 |
|
|
|
List<DayRecord> dayRecords = new ArrayList<>(); |
|
|
@@ -490,7 +665,7 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
|
|
|
|
// 构造DayRecord |
|
|
|
DayRecord dayRecord = new DayRecord(); |
|
|
|
dayRecord.setDay(localDate.toString()); |
|
|
|
dayRecord.setDay(localDate.getDayOfMonth()); |
|
|
|
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); |
|
|
|
int week = dayOfWeek.getValue(); |
|
|
|
if(week == Constans.EXPORT_ZHOUYI){ |
|
|
@@ -516,6 +691,11 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
if(dk.getClockIn().isAfter(workStartTime1)){ |
|
|
|
dayRecord.setChidao("*"); |
|
|
|
dayRecord.setRemark("迟到1次"); |
|
|
|
lateCount ++; |
|
|
|
} |
|
|
|
|
|
|
|
if(dk.getClockOut().isBefore(workEndTime1)){ |
|
|
|
earlyCount ++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -524,6 +704,14 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
dayRecord.setRemark("异常打卡"); |
|
|
|
} |
|
|
|
|
|
|
|
if(dk.getClockIn() == null && dk.getClockOut() != null){ |
|
|
|
dayRecord.setYichang("*"); |
|
|
|
dayRecord.setRemark("异常打卡"); |
|
|
|
} |
|
|
|
if(dk.getClockIn() == null && dk.getClockOut() == null){ |
|
|
|
dayRecord.setRemark("缺卡"); |
|
|
|
} |
|
|
|
|
|
|
|
// 判断是否为工作日加班 |
|
|
|
if(dk.getClockOut() != null){ |
|
|
|
if(dk.getClockOut().isAfter(workEndTime1)){ |
|
|
@@ -562,38 +750,174 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
// dayRecords.add(new DayRecord(2, "土", "08:55", "18:30", "正常", "", 1.0, "")); |
|
|
|
// dayRecords.add(new DayRecord(3, "日", "", "", "休息", "年假", 0, "")); |
|
|
|
// 添加更多日期记录... |
|
|
|
|
|
|
|
data.setChidaocishu(lateCount); |
|
|
|
data.setZaotuicishu(earlyCount); |
|
|
|
data.setDayRecords(dayRecords); |
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplateRiBen(Sheet sheet, EmployeeAttendance data) { |
|
|
|
// 填充标题区域 |
|
|
|
setCellValue(sheet, 5, 13, data.getEmployeeName()); |
|
|
|
setCellValue(sheet, 5, 6, data.getUserId()); |
|
|
|
setCellValue(sheet, 6, 13, data.getEmployeeName()); |
|
|
|
setCellValue(sheet, 6, 6, data.getUserId()); |
|
|
|
setCellValue(sheet, 2, 0, data.getDateTime()); |
|
|
|
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); |
|
|
|
|
|
|
|
// 填充数据表格 |
|
|
|
int rowIndex = 9; // 数据起始行(根据模板调整) |
|
|
|
for (DayRecord record : data.getDayRecords()) { |
|
|
|
setCellValue(sheet, rowIndex, 0, record.getDay()); |
|
|
|
setCellValue(sheet, rowIndex, 1, record.getWeekday()); |
|
|
|
if(record.getDay() == 1){ |
|
|
|
fillTemplateRiBenCell(sheet, 10, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 2){ |
|
|
|
fillTemplateRiBenCell(sheet, 11, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 3){ |
|
|
|
fillTemplateRiBenCell(sheet, 12, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 4){ |
|
|
|
fillTemplateRiBenCell(sheet, 13, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 5){ |
|
|
|
fillTemplateRiBenCell(sheet, 14, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 6){ |
|
|
|
fillTemplateRiBenCell(sheet, 15, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 7){ |
|
|
|
fillTemplateRiBenCell(sheet, 16, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 8){ |
|
|
|
fillTemplateRiBenCell(sheet, 17, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 9){ |
|
|
|
fillTemplateRiBenCell(sheet, 18, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 10){ |
|
|
|
fillTemplateRiBenCell(sheet, 19, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 11){ |
|
|
|
fillTemplateRiBenCell(sheet, 20, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 12){ |
|
|
|
fillTemplateRiBenCell(sheet, 21, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 13){ |
|
|
|
fillTemplateRiBenCell(sheet, 22, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 14){ |
|
|
|
fillTemplateRiBenCell(sheet, 23, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 15){ |
|
|
|
fillTemplateRiBenCell(sheet, 24, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 16){ |
|
|
|
fillTemplateRiBenCell(sheet, 25, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 17){ |
|
|
|
fillTemplateRiBenCell(sheet, 26, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 18){ |
|
|
|
fillTemplateRiBenCell(sheet, 27, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 19){ |
|
|
|
fillTemplateRiBenCell(sheet, 28, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 20){ |
|
|
|
fillTemplateRiBenCell(sheet, 29, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 21){ |
|
|
|
fillTemplateRiBenCell(sheet, 30, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 22){ |
|
|
|
fillTemplateRiBenCell(sheet, 31, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 23){ |
|
|
|
fillTemplateRiBenCell(sheet, 32, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 24){ |
|
|
|
fillTemplateRiBenCell(sheet, 33, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 25){ |
|
|
|
fillTemplateRiBenCell(sheet, 34, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 26){ |
|
|
|
fillTemplateRiBenCell(sheet, 35, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 27){ |
|
|
|
fillTemplateRiBenCell(sheet, 36, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 28){ |
|
|
|
fillTemplateRiBenCell(sheet, 37, record); |
|
|
|
} |
|
|
|
|
|
|
|
if(record.getDay() == 29){ |
|
|
|
fillTemplateRiBenCell(sheet, 38, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 30){ |
|
|
|
fillTemplateRiBenCell(sheet, 39, record); |
|
|
|
} |
|
|
|
if(record.getDay() == 31){ |
|
|
|
fillTemplateRiBenCell(sheet, 40, record); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 填充数据表格 |
|
|
|
// int rowIndex = 9; // 数据起始行(根据模板调整) |
|
|
|
// for (DayRecord record : data.getDayRecords()) { |
|
|
|
// setCellValue(sheet, rowIndex, 0, record.getDay()); |
|
|
|
// setCellValue(sheet, rowIndex, 1, record.getWeekday()); |
|
|
|
//// setCellValue(sheet, rowIndex, 3, data.getDateTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 2, record.getStartTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 3, record.getEndTime()); |
|
|
|
//// setCellValue(sheet, rowIndex, 6, record.getEndTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 4, record.getChidao()); |
|
|
|
// setCellValue(sheet, rowIndex, 5, record.getYichang()); |
|
|
|
// setCellValue(sheet, rowIndex, 6, record.getXiuxi()); |
|
|
|
// setCellValue(sheet, rowIndex, 7, record.getChuanxiu()); |
|
|
|
// setCellValue(sheet, rowIndex, 8, record.getZhiban()); |
|
|
|
// setCellValue(sheet, rowIndex, 9, record.getQingjia()); |
|
|
|
// setCellValue(sheet, rowIndex, 10, record.getNianjia()); |
|
|
|
// setCellValue(sheet, rowIndex, 11, record.getJiaban()); |
|
|
|
// setCellValue(sheet, rowIndex, 12, record.getHeji()); |
|
|
|
// setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
// rowIndex++; |
|
|
|
// } |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplateRiBenCell(Sheet sheet, int rowIndex, DayRecord record) { |
|
|
|
// setCellValue(sheet, rowIndex, 0, record.getDay()); |
|
|
|
setCellValue(sheet, rowIndex, 1, record.getWeekday()); |
|
|
|
// setCellValue(sheet, rowIndex, 3, data.getDateTime()); |
|
|
|
setCellValue(sheet, rowIndex, 2, record.getStartTime()); |
|
|
|
setCellValue(sheet, rowIndex, 3, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 2, record.getStartTime()); |
|
|
|
setCellValue(sheet, rowIndex, 3, record.getEndTime()); |
|
|
|
// setCellValue(sheet, rowIndex, 6, record.getEndTime()); |
|
|
|
setCellValue(sheet, rowIndex, 4, record.getChidao()); |
|
|
|
setCellValue(sheet, rowIndex, 5, record.getYichang()); |
|
|
|
setCellValue(sheet, rowIndex, 6, record.getXiuxi()); |
|
|
|
setCellValue(sheet, rowIndex, 7, record.getChuanxiu()); |
|
|
|
setCellValue(sheet, rowIndex, 8, record.getZhiban()); |
|
|
|
setCellValue(sheet, rowIndex, 9, record.getQingjia()); |
|
|
|
setCellValue(sheet, rowIndex, 10, record.getNianjia()); |
|
|
|
setCellValue(sheet, rowIndex, 11, record.getJiaban()); |
|
|
|
setCellValue(sheet, rowIndex, 12, record.getHeji()); |
|
|
|
setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
rowIndex++; |
|
|
|
} |
|
|
|
setCellValue(sheet, rowIndex, 4, record.getChidao()); |
|
|
|
setCellValue(sheet, rowIndex, 5, record.getYichang()); |
|
|
|
setCellValue(sheet, rowIndex, 6, record.getXiuxi()); |
|
|
|
setCellValue(sheet, rowIndex, 7, record.getChuanxiu()); |
|
|
|
setCellValue(sheet, rowIndex, 8, record.getZhiban()); |
|
|
|
setCellValue(sheet, rowIndex, 9, record.getQingjia()); |
|
|
|
setCellValue(sheet, rowIndex, 10, record.getNianjia()); |
|
|
|
setCellValue(sheet, rowIndex, 11, record.getJiaban()); |
|
|
|
setCellValue(sheet, rowIndex, 12, record.getHeji()); |
|
|
|
setCellValue(sheet, rowIndex, 13, record.getRemark()); |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplateHuiZong(Sheet sheet, int latePersonCount, int earlyPersonCount, int lateCount, |
|
|
|
int earlyCount) { |
|
|
|
|
|
|
|
setCellValue(sheet, 0, 1, "人数"); |
|
|
|
setCellValue(sheet, 0, 2, "次数"); |
|
|
|
setCellValue(sheet, 1, 0, "迟到"); |
|
|
|
setCellValue(sheet, 2, 0, "早退"); |
|
|
|
setCellValue(sheet, 1, 1, latePersonCount); |
|
|
|
setCellValue(sheet, 1, 2, lateCount); |
|
|
|
setCellValue(sheet, 2, 1, earlyPersonCount); |
|
|
|
setCellValue(sheet, 2, 2, earlyCount); |
|
|
|
|
|
|
|
} |
|
|
|
} |