|
|
@@ -160,14 +160,10 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
inputStream = resource.getInputStream(); |
|
|
|
} |
|
|
|
|
|
|
|
// 定义迟到人数 |
|
|
|
int latePersonCount = 0; |
|
|
|
// 定义早退人数 |
|
|
|
int earlyPersonCount = 0; |
|
|
|
// 定义迟到次数 |
|
|
|
int lateCount = 0; |
|
|
|
// 定义早退次数 |
|
|
|
int earlyCount = 0; |
|
|
|
|
|
|
|
//汇总表参数 记录每个用户的 迟到总数和年假总数 |
|
|
|
Map<String, Map<String,Integer>> summary = new HashMap<>(); |
|
|
|
|
|
|
|
Workbook workbook = WorkbookFactory.create(inputStream); |
|
|
|
// 遍历所有人员 |
|
|
|
for (int i = 0; i <= users.size(); i++){ |
|
|
@@ -179,7 +175,7 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
workbook.setSheetName(newSheetIndex, "汇总"); |
|
|
|
// 获取新创建的Sheet |
|
|
|
Sheet newSheet = workbook.getSheetAt(newSheetIndex); |
|
|
|
fillTemplateHuiZong(newSheet, latePersonCount, earlyPersonCount, lateCount, earlyCount); |
|
|
|
fillTemplateHuiZong(newSheet, summary); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
DkAttendanceGroupAndUser user = users.get(i); |
|
|
@@ -198,21 +194,20 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
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 (summary.containsKey(user.getNickName())) { |
|
|
|
Map map = summary.get(user.getNickName()); |
|
|
|
map.put("lateCount",attendanceData.getChidaocishu()); |
|
|
|
} else { |
|
|
|
Map map = new HashMap(); |
|
|
|
map.put("lateCount",attendanceData.getChidaocishu()); |
|
|
|
summary.put(user.getNickName(),map); |
|
|
|
} |
|
|
|
} |
|
|
|
// 填充数据到模板 |
|
|
|
/* if (attendanceData.getDayRecords().size() == 0){ |
|
|
|
continue; |
|
|
|
}*/ |
|
|
|
|
|
|
|
//excel内容构建 |
|
|
|
fillTemplate(newSheet, attendanceData,dkCheckInRecordDTO.getStrMonth(),user); |
|
|
|
fillTemplate(newSheet, attendanceData,dkCheckInRecordDTO.getStrMonth(),user,summary); |
|
|
|
} |
|
|
|
// 日本模版 |
|
|
|
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ |
|
|
@@ -325,17 +320,19 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
return clockOut.isBefore(endDateTime); |
|
|
|
} |
|
|
|
/*--------------------------------------------------国内汇总信息 --------------------------*/ |
|
|
|
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); |
|
|
|
private void fillTemplateHuiZong(Sheet sheet, Map<String, Map<String,Integer>> summary) { |
|
|
|
|
|
|
|
setCellValue(sheet, 0, 0, "姓名"); |
|
|
|
setCellValue(sheet, 0, 1, "年假合计"); |
|
|
|
setCellValue(sheet, 0, 2, "迟到合计"); |
|
|
|
int i =1; |
|
|
|
for (String key : summary.keySet()) { |
|
|
|
Map<String,Integer> value = summary.get(key); |
|
|
|
setCellValue(sheet, i, 0, key); |
|
|
|
setCellValue(sheet, i, 1, value.get("njCount")); |
|
|
|
setCellValue(sheet, i, 2, value.get("lateCount")); |
|
|
|
i++; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@@ -474,7 +471,6 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
} |
|
|
|
|
|
|
|
data.setChidaocishu(lateCount); |
|
|
|
data.setZaotuicishu(earlyCount); |
|
|
|
data.setWorkOverTime(workOverTime); |
|
|
|
data.setRestOverTime(restOverTime); |
|
|
|
data.setExceptionCount(exceptionCount); |
|
|
@@ -482,7 +478,7 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplate(Sheet sheet, EmployeeAttendance data,String date,DkAttendanceGroupAndUser user) { |
|
|
|
private void fillTemplate(Sheet sheet, EmployeeAttendance data,String date,DkAttendanceGroupAndUser user,Map<String, Map<String,Integer>> summary) { |
|
|
|
// 1.填充标题区域 |
|
|
|
setCellValue(sheet, 6, 6, user.getUserName()); |
|
|
|
setCellValue(sheet, 6, 9, user.getNickName()); |
|
|
@@ -523,8 +519,7 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
QueryWrapper<NjBalanceManageDetail> njWrapper = new QueryWrapper<>(); |
|
|
|
njWrapper.eq("user_id", user.getUserId()); |
|
|
|
njWrapper.eq("status","2"); |
|
|
|
njWrapper.apply("YEAR(create_time) = {0}", Integer.parseInt(date.substring(0,4))); |
|
|
|
njWrapper.apply("MONTH(create_time) = {0}",Integer.parseInt(date.substring(5))); |
|
|
|
njWrapper.like("apply_dates",date); |
|
|
|
List<NjBalanceManageDetail> njList = njBalanceManageDetailMapper.selectList(njWrapper); |
|
|
|
|
|
|
|
boolean isLeave = false; |
|
|
@@ -570,6 +565,16 @@ public class DkRecordServiceImpl implements DkRecordService { |
|
|
|
setCellValue(sheet, 41, 7, formatOvertime(data.getWorkOverTime()==null?0:data.getWorkOverTime().doubleValue())); |
|
|
|
setCellValue(sheet, 41, 8, formatOvertime(data.getRestOverTime()==null?0:data.getRestOverTime().doubleValue())); |
|
|
|
setCellValue(sheet, 41, 10, njCount); |
|
|
|
if (njCount>0) { |
|
|
|
if (summary.containsKey(user.getNickName())) { |
|
|
|
Map map = summary.get(user.getNickName()); |
|
|
|
map.put("njCount",njCount); |
|
|
|
} else { |
|
|
|
Map map = new HashMap(); |
|
|
|
map.put("njCount",njCount); |
|
|
|
summary.put(user.getNickName(),map); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) { |