Your Name
2023-06-08 7007db947ea409a973aee8a681ee86cf9d2708bf
service-job/src/main/java/com/java110/job/export/adapt/MonthAttendanceAdapt.java
@@ -37,7 +37,7 @@
        workbook = new SXSSFWorkbook();
        workbook.setCompressTempFiles(false);
        Sheet sheet = workbook.createSheet("月考勤表");
        Sheet sheet = workbook.createSheet(reqJson.getIntValue("taskYear") + "年" + reqJson.getIntValue("taskMonth") + "月考勤表");
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("部门");
        row.createCell(1).setCellValue("员工");
@@ -47,14 +47,14 @@
        calendar.set(Calendar.MONTH, reqJson.getIntValue("taskMonth") - 1);
        int maxDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        for (int day = 1; day <= maxDayOfMonth; day++) {
            row.createCell(day + 2).setCellValue(day + "日");
            row.createCell(day + 1).setCellValue(day + "日");
        }
        row.createCell(2 + maxDayOfMonth + 1).setCellValue("正常考勤");
        row.createCell(2 + maxDayOfMonth + 2).setCellValue("迟到");
        row.createCell(2 + maxDayOfMonth + 3).setCellValue("早退");
        row.createCell(2 + maxDayOfMonth + 4).setCellValue("旷工");
        row.createCell(2 + maxDayOfMonth + 5).setCellValue("免考勤");
        row.createCell(1 + maxDayOfMonth + 1).setCellValue("正常考勤");
        row.createCell(1 + maxDayOfMonth + 2).setCellValue("迟到");
        row.createCell(1 + maxDayOfMonth + 3).setCellValue("早退");
        row.createCell(1 + maxDayOfMonth + 4).setCellValue("旷工");
        row.createCell(1 + maxDayOfMonth + 5).setCellValue("免考勤");
        AttendanceClassesTaskDto attendanceClassesTaskDto = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskDto.class);
@@ -81,17 +81,22 @@
            List<AttendanceClassesTaskDto> attendanceClassesTaskDtos = reportAttendanceInnerServiceSMOImpl.getMonthAttendance(attendanceClassesTaskDto);
            //输入考勤明细
            refreshDetail(attendanceClassesTaskDtos, reqJson);
            appendData(attendanceClassesTaskDtos, sheet, (page - 1) * MAX_ROW, maxDayOfMonth);
            appendData(attendanceClassesTaskDtos, sheet, (page - 1) * MAX_ROW, maxDayOfMonth, reqJson);
        }
    }
    private void appendData(List<AttendanceClassesTaskDto> attendanceClassesTaskDtos, Sheet sheet, int step, int maxDayOfMonth) {
    private void appendData(List<AttendanceClassesTaskDto> attendanceClassesTaskDtos, Sheet sheet, int step, int maxDayOfMonth, JSONObject reqJson) {
        Row row = null;
        JSONObject dayObj = null;
        AttendanceClassesTaskDto attendanceClassesTaskDto = null;
        List<AttendanceClassesTaskDetailDto> detailDtos = null;
        String value = "";
        Calendar calendar = Calendar.getInstance();
        int today = calendar.get(Calendar.DAY_OF_MONTH);
        int taskYear = reqJson.getIntValue("taskYear");
        int taskMonth = reqJson.getIntValue("taskMonth");
        for (int roomIndex = 0; roomIndex < attendanceClassesTaskDtos.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + step + 1);
            attendanceClassesTaskDto = attendanceClassesTaskDtos.get(roomIndex);
@@ -99,17 +104,23 @@
            row.createCell(1).setCellValue(attendanceClassesTaskDto.getStaffName());
            dayObj = attendanceClassesTaskDto.getDays();
            for (int day = 1; day <= maxDayOfMonth; day++) {
                if(taskYear == calendar.get(Calendar.YEAR) && taskMonth == (calendar.get(Calendar.MONTH)+1) && day > today){
                    row.createCell(day + 1).setCellValue("未到时间");
                    continue;
                }
                if (!dayObj.containsKey(day)) {
                    row.createCell(day + 2).setCellValue("无需考勤");
                    row.createCell(day + 1).setCellValue("无需考勤");
                    continue;
                }
                if (dayObj.get(day) == null) {
                    row.createCell(day + 2).setCellValue("无需考勤");
                    row.createCell(day + 1).setCellValue("无需考勤");
                    continue;
                }
                detailDtos = (List<AttendanceClassesTaskDetailDto>) dayObj.get(day);
                if (detailDtos == null || detailDtos.size() < 1) {
                    row.createCell(day + 2).setCellValue("无需考勤");
                    row.createCell(day + 1).setCellValue("无需考勤");
                    continue;
                }
@@ -122,19 +133,19 @@
                    }
                    if (!AttendanceClassesTaskDetailDto.STATE_WAIT.equals(detailDto.getState())) {
                        value += (detailDto.getCheckTime()+"("+detailDto.getStateName()+");");
                        value += (detailDto.getCheckTime() + "(" + detailDto.getStateName() + ");" + String.valueOf((char) 10));
                    } else {
                        value += (" - ("+detailDto.getStateName()+");");
                        value += (" - (" + detailDto.getStateName() + ");" + String.valueOf((char) 10));
                    }
                }
                row.createCell(day + 2).setCellValue(value);
                row.createCell(day + 1).setCellValue(value);
            }
            row.createCell(2 + maxDayOfMonth + 1).setCellValue(attendanceClassesTaskDto.getClockIn());
            row.createCell(2 + maxDayOfMonth + 2).setCellValue(attendanceClassesTaskDto.getLate());
            row.createCell(2 + maxDayOfMonth + 3).setCellValue(attendanceClassesTaskDto.getEarly());
            row.createCell(2 + maxDayOfMonth + 4).setCellValue(attendanceClassesTaskDto.getNoClockIn());
            row.createCell(2 + maxDayOfMonth + 5).setCellValue(attendanceClassesTaskDto.getFree());
            row.createCell(1 + maxDayOfMonth + 1).setCellValue(attendanceClassesTaskDto.getClockIn());
            row.createCell(1 + maxDayOfMonth + 2).setCellValue(attendanceClassesTaskDto.getLate());
            row.createCell(1 + maxDayOfMonth + 3).setCellValue(attendanceClassesTaskDto.getEarly());
            row.createCell(1 + maxDayOfMonth + 4).setCellValue(attendanceClassesTaskDto.getNoClockIn());
            row.createCell(1 + maxDayOfMonth + 5).setCellValue(attendanceClassesTaskDto.getFree());
        }
    }
@@ -152,7 +163,7 @@
        AttendanceClassesTaskDto tmpAttendanceClassesTaskDto = new AttendanceClassesTaskDto();
        tmpAttendanceClassesTaskDto.setClassId(reqJson.getString("classesId"));
        tmpAttendanceClassesTaskDto.setTaskYear(reqJson.getString("taskYear"));
        tmpAttendanceClassesTaskDto.setTaskDay(reqJson.getString("taskDay"));
        tmpAttendanceClassesTaskDto.setTaskMonth(reqJson.getString("taskMonth"));
        tmpAttendanceClassesTaskDto.setStaffIds(staffIds.toArray(new String[staffIds.size()]));
        List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = reportAttendanceInnerServiceSMOImpl.getMonthAttendanceDetail(tmpAttendanceClassesTaskDto);
@@ -165,7 +176,11 @@
                attendanceClassesTaskDto.setDays(days);
            }
            for (AttendanceClassesTaskDetailDto tmpAttendanceClassesTaskDetailDto : attendanceClassesTaskDetailDtos) {
                if (days.containsKey(tmpAttendanceClassesTaskDetailDto.getTaskDay())) {
                if(!attendanceClassesTaskDto.getStaffId().equals(tmpAttendanceClassesTaskDetailDto.getStaffId())){
                    continue;
                }
                if (days.containsKey(tmpAttendanceClassesTaskDetailDto.getTaskDay())
                ) {
                    tAttendanceClassesTaskDetailDto = (List<AttendanceClassesTaskDetailDto>) days.get(tmpAttendanceClassesTaskDetailDto.getTaskDay());
                    tAttendanceClassesTaskDetailDto.add(tmpAttendanceClassesTaskDetailDto);
                } else {