|
|
|
|
|
|
|
|
List<DayRecord> dayRecords = new ArrayList<>(); |
|
|
List<DayRecord> dayRecords = new ArrayList<>(); |
|
|
// 根据用户的ID查询该用户所有的打卡记录 |
|
|
// 根据用户的ID查询该用户所有的打卡记录 |
|
|
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO, null); |
|
|
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO, null); |
|
|
|
|
|
//打过卡的 |
|
|
|
|
|
//queryWrapper.ne( DkCheckInRecord::getCheckInStatus, 0); |
|
|
|
|
|
//queryWrapper.orderByAsc(DkCheckInRecord::getCheckInTime); |
|
|
List<DkCheckInRecordDTO> dkCheckInRecordDTOS = dkMapper.selectVoList(queryWrapper); |
|
|
List<DkCheckInRecordDTO> dkCheckInRecordDTOS = dkMapper.selectVoList(queryWrapper); |
|
|
if (dkCheckInRecordDTOS == null && dkCheckInRecordDTOS.isEmpty()){ |
|
|
if (dkCheckInRecordDTOS == null && dkCheckInRecordDTOS.isEmpty()){ |
|
|
return data; |
|
|
return data; |
|
|
|
|
|
|
|
|
//如果只有上班没有下班 而且上班还迟到了 |
|
|
//如果只有上班没有下班 而且上班还迟到了 |
|
|
if(dk.getClockIn().isAfter(workStartTime1)){ |
|
|
if(dk.getClockIn().isAfter(workStartTime1)){ |
|
|
dayRecord.setChidao("●"); |
|
|
dayRecord.setChidao("●"); |
|
|
|
|
|
dayRecord.setRemark(dayRecord.getRemark()+"、迟到1次"); |
|
|
lateCount ++; |
|
|
lateCount ++; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//初始化天数 |
|
|
//初始化天数 |
|
|
setCellValue(sheet, rowIndex, 1, dayInfos.get(i).getDay()); |
|
|
setCellValue(sheet, rowIndex, 1, dayInfos.get(i).getDay()); |
|
|
//初始化星期 |
|
|
//初始化星期 |
|
|
String weekName = dayInfos.get(i).getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); |
|
|
|
|
|
|
|
|
String weekName = dayInfos.get(i).getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE).replace("星期",""); |
|
|
setCellValue(sheet, rowIndex, 2, weekName); |
|
|
setCellValue(sheet, rowIndex, 2, weekName); |
|
|
// 星期六和星期日背景颜色设置 |
|
|
// 星期六和星期日背景颜色设置 |
|
|
if ("星期六".equals(weekName) || "星期日".equals(weekName)) { |
|
|
|
|
|
|
|
|
if ("六".equals(weekName) || "日".equals(weekName)) { |
|
|
Row row = sheet.getRow(rowIndex); |
|
|
Row row = sheet.getRow(rowIndex); |
|
|
if (row == null) row = sheet.createRow(rowIndex); |
|
|
if (row == null) row = sheet.createRow(rowIndex); |
|
|
Cell cell = row.getCell(2); |
|
|
Cell cell = row.getCell(2); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//3. 汇总数据区域 |
|
|
//3. 汇总数据区域 |
|
|
setCellValue(sheet, 41, 5, data.getChidaocishu()); |
|
|
setCellValue(sheet, 41, 5, data.getChidaocishu()); |
|
|
setCellValue(sheet, 41, 7, data.getExceptionCount()); |
|
|
|
|
|
setCellValue(sheet, 41, 8, formatOvertime(data.getWorkOverTime()==null?0:data.getWorkOverTime().doubleValue())); |
|
|
|
|
|
setCellValue(sheet, 41, 9, formatOvertime(data.getRestOverTime()==null?0:data.getRestOverTime().doubleValue())); |
|
|
|
|
|
|
|
|
setCellValue(sheet, 41, 6, data.getExceptionCount()); |
|
|
|
|
|
setCellValue(sheet, 41, 7, formatOvertime(data.getWorkOverTime()==null?0:data.getWorkOverTime().doubleValue())); |
|
|
|
|
|
setCellValue(sheet, 41, 8, formatOvertime(data.getRestOverTime()==null?0:data.getRestOverTime().doubleValue())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) { |
|
|
private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) { |
|
|
setCellValue(sheet, rowIndex, 3, record.getStartTime()); |
|
|
setCellValue(sheet, rowIndex, 3, record.getStartTime()); |
|
|
setCellValue(sheet, rowIndex, 4, record.getEndTime()); |
|
|
setCellValue(sheet, rowIndex, 4, record.getEndTime()); |
|
|
setCellValue(sheet, rowIndex, 5, record.getChidao()); |
|
|
setCellValue(sheet, rowIndex, 5, record.getChidao()); |
|
|
//第六列 早退 暂时不需要了 |
|
|
|
|
|
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()); |
|
|
|
|
|
|
|
|
setCellValue(sheet, rowIndex, 6, record.getYichang()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 7, record.getGongzuori()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 8, record.getXiuxiri()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 9, record.getFadingjiari()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 10, record.getXiuxi()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 11, record.getQingjia()); |
|
|
|
|
|
setCellValue(sheet, rowIndex, 12, record.getRemark()); |
|
|
} |
|
|
} |
|
|
//查询两个时间的时间差 以0.5为准 多的按0.5算 少的 为0 |
|
|
//查询两个时间的时间差 以0.5为准 多的按0.5算 少的 为0 |
|
|
public static Double getHalfHourDiffAsCleanString(String startTime, String endTime) { |
|
|
public static Double getHalfHourDiffAsCleanString(String startTime, String endTime) { |