浏览代码

课表导出

dzx 8 月之前
父节点
当前提交
4b787a1201

+ 25 - 5
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -1395,10 +1395,13 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             Sheet sheet = workbook.createSheet(sheetName);
             String bigHead = "课程表";
             int classTableRowCount = 16;//每个班的课表占用的总行数
-
-            for (int i = 0; i < classroomList.size(); i ++){
-                BaseClassroom baseClassroom = classroomList.get(i);
+            int i = 0;
+            for (BaseClassroom baseClassroom : classroomList) {
                 String classroomName = buildMap.get(baseClassroom.getOfficeBuildId()) + baseClassroom.getName();
+                if(!classroomDataMap.containsKey(classroomName)){
+                    continue;
+                }
+
                 List<CourseDetailVo> courseList = classroomDataMap.get(classroomName);
 
                 CourseTableVo classData = new CourseTableVo();
@@ -1416,6 +1419,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                 createSecondTitle(workbook, sheet, bigHeadRow + 3);
                 //生成内容
                 exportQueryUtil.createContent(workbook, sheet, bigHeadRow + 4, classData, dto.getCourseType());
+
+                i ++;
             }
             workbook.write(bot);
         }else if("all".equals(dto.getCourseType())){//总课表
@@ -1432,6 +1437,9 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             ArrayList<ArrayList<String>> dataList = new ArrayList<>();
             for (BaseClass baseClass : classList) {
                 List<CourseDetailVo> detailVoList = classDataMap.get(baseClass.getName());
+                if(detailVoList == null){
+                    continue;
+                }
                 Map<Integer, List<CourseDetailVo>> weeksMap = detailVoList.stream().collect(Collectors.groupingBy(CourseDetailVo::getWeeks));
 
                 List<Integer> weekList = new ArrayList<>();
@@ -1446,14 +1454,18 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                 ArrayList<String> classData = new ArrayList<>();
                 classData.add(baseClass.getName());
                 for (Integer weeks : weekList) {
-                    Map<String, CourseDetailVo> timeNumberMap = weeksMap.get(weeks).stream().collect(Collectors.toMap(CourseDetailVo::getTimeNumber, x -> x));
+                    if(!weeksMap.containsKey(weeks)){
+                        classData.add("");
+                        continue;
+                    }
+                    Map<String, CourseDetailVo> timeNumberMap = weeksMap.get(weeks).stream().filter(x -> x.getTimeNumber() != null).collect(Collectors.toMap(CourseDetailVo::getTimeNumber, x -> x));
                     for (ClassTime classTime : tableVo.getClassTimeList()) {
                         CourseDetailVo courseDetailVo = timeNumberMap.get(classTime.getNumber().toString());
                         if(courseDetailVo == null){
                             classData.add("");
                             continue;
                         }
-                        classData.add(courseDetailVo.getCourseName() + "\r\n" + courseDetailVo.getTeacherName() + "\r\n" + courseDetailVo.getClassroomName());
+                        classData.add(courseDetailVo.getCourseName() + "\r\n" + courseDetailVo.getTeacherName() + "\n" + courseDetailVo.getClassroomName());
                     }
                 }
                 dataList.add(classData);
@@ -1463,6 +1475,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             String sheetName = "总课表";
             Sheet sheet = workbook.createSheet(sheetName);
 
+            exportQueryUtil.createAllCourseTableTitle(workbook, sheet, tableVo.getClassTimeList());
+
             Font font = workbook.createFont();
             font.setFontName("宋体");
             font.setFontHeightInPoints((short) 12);
@@ -1471,6 +1485,11 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             cellStyle.setFont(font); // 将字体应用到样式
             cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
             cellStyle.setAlignment(HorizontalAlignment.CENTER);
+            cellStyle.setBorderTop(BorderStyle.THIN);
+            cellStyle.setBorderBottom(BorderStyle.THIN);
+            cellStyle.setBorderLeft(BorderStyle.THIN);
+            cellStyle.setBorderRight(BorderStyle.THIN);
+            cellStyle.setWrapText(true);
             int rowNumber = 2;
             for (ArrayList<String> rowData : dataList) {
                 Row row = sheet.createRow(rowNumber);
@@ -1480,6 +1499,7 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                     cell.setCellStyle(cellStyle);
                 }
                 rowNumber++;
+                row.setHeightInPoints(48);
             }
 
             workbook.write(bot);

+ 56 - 79
src/main/java/com/xjrsoft/module/schedule/util/CourseTableExportQueryUtil.java

@@ -33,7 +33,6 @@ public class CourseTableExportQueryUtil {
      */
     public void createThirdTitle(Workbook workbook, Sheet sheet, int rowNumber, String leftTitle, String rightTitle){
         Font font = workbook.createFont();
-        font.setBold(true);// 设置为粗体
         font.setFontName("宋体");
         //font.setColor(IndexedColors.RED.getIndex()); // 设置字体颜色为红色
         font.setFontHeightInPoints((short) 14);
@@ -42,7 +41,7 @@ public class CourseTableExportQueryUtil {
         CellStyle cellStyle = workbook.createCellStyle();
         cellStyle.setFont(font); // 将字体应用到样式
         cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
-        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        cellStyle.setAlignment(HorizontalAlignment.LEFT);
         cellStyle.setBorderTop(BorderStyle.THIN);
         cellStyle.setBorderBottom(BorderStyle.THIN);
         cellStyle.setBorderLeft(BorderStyle.THIN);
@@ -53,11 +52,28 @@ public class CourseTableExportQueryUtil {
         Cell cell = row.createCell(0);
         cell.setCellValue(leftTitle);
         cell.setCellStyle(cellStyle);
+        for (int i = 1; i < 4; i ++){
+            cell = row.createCell(i);
+            cell.setCellStyle(cellStyle);
+        }
         sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, 3));
 
-        cell = row.createCell(1);
+        cellStyle = workbook.createCellStyle();
+        cellStyle.setFont(font); // 将字体应用到样式
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        cellStyle.setAlignment(HorizontalAlignment.RIGHT);
+        cellStyle.setBorderTop(BorderStyle.THIN);
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        cellStyle.setBorderRight(BorderStyle.THIN);
+
+        cell = row.createCell(4);
         cell.setCellValue(rightTitle);
         cell.setCellStyle(cellStyle);
+        for (int i = 5; i < 9; i ++){
+            cell = row.createCell(i);
+            cell.setCellStyle(cellStyle);
+        }
         sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 4, 8));
     }
 
@@ -121,8 +137,9 @@ public class CourseTableExportQueryUtil {
                         } else if ("class".equals(courseType)) {
                             content += courseDetailVo.getClassroomName() + "\r\n";
                             content += courseDetailVo.getTeacherName();
-                        } else if("classroom".equals(content)){
-
+                        } else if("classroom".equals(courseType)){
+                            content += courseDetailVo.getClassName() + "\r\n";
+                            content += courseDetailVo.getTeacherName();
                         }
                     } else {
                         CourseDetailVo courseDetailVo = list.get(0);
@@ -134,8 +151,9 @@ public class CourseTableExportQueryUtil {
                             content += courseDetailVo.getClassroomName() + "\r\n";
                             Set<String> classNames = list.stream().map(CourseDetailVo::getTeacherName).collect(Collectors.toSet());
                             content += classNames.toString().replace("]", "").replace("[", "").replace(" ", "");
-                        } else if("classroom".equals(content)){
-
+                        } else if("classroom".equals(courseType)){
+                            content += courseDetailVo.getClassName() + "\r\n";
+                            content += courseDetailVo.getTeacherName();
                         }
                     }
                 }
@@ -202,91 +220,50 @@ public class CourseTableExportQueryUtil {
         cellStyle.setBorderBottom(BorderStyle.THIN);
         cellStyle.setBorderLeft(BorderStyle.THIN);
         cellStyle.setBorderRight(BorderStyle.THIN);
+        cellStyle.setWrapText(true);
 
         int rowNumber = 0;
         Row row = sheet.createRow(rowNumber);
+        row.setHeightInPoints(48);
+
+        List<String> weekList = new ArrayList<>();
+        weekList.add("周一");
+        weekList.add("周二");
+        weekList.add("周三");
+        weekList.add("周四");
+        weekList.add("周五");
+        weekList.add("周六");
+        weekList.add("周日");
 
         int cellNumber = 0;
         Cell row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("节次");
+        row1cell1.setCellValue("班级");
         row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(0, 4 * 256);
+        sheet.setColumnWidth(0, 24 * 256);
+        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber + 1, cellNumber, cellNumber));
         cellNumber ++;
 
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, 1));
-        sheet.setColumnWidth(1, 12 * 256);
-        cellNumber = cellNumber + 12;
-
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周一");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(2, 16 * 256);
-        cellNumber = cellNumber + 12;
-
-
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周二");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-        cellNumber = cellNumber + 12;
-
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周三");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-        cellNumber = cellNumber + 12;
+        int size = classTimeList.size();
 
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周四");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-        cellNumber = cellNumber + 12;
+        Row row2 = sheet.createRow(rowNumber + 1);
+        int cellNumber2 = 1;
 
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周五");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-        cellNumber = cellNumber + 12;
-
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周六");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-        cellNumber = cellNumber + 12;
-
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("周日");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(cellNumber, 16 * 256);
-
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 1, 12));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 13, 24));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 25, 36));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 37, 48));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 49, 60));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 61, 72));
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 73, 84));
-
-        rowNumber ++;
-        row = sheet.createRow(rowNumber);
-
-        cellNumber = 0;
-        row1cell1 = row.createCell(cellNumber);
-        row1cell1.setCellValue("班级");
-        row1cell1.setCellStyle(cellStyle);
-        sheet.setColumnWidth(2, 16 * 256);
-        cellNumber ++;
-
-        for (ClassTime classTime : classTimeList) {
+        for (String week : weekList) {
             row1cell1 = row.createCell(cellNumber);
-            row1cell1.setCellValue(classTime.getShortName() + "\r\n" + classTime.getSummerStartTime() + "-" + classTime.getSummerEndTime());
+            row1cell1.setCellValue(week);
             row1cell1.setCellStyle(cellStyle);
-            sheet.setColumnWidth(2, 16 * 256);
-            cellNumber ++;
+            int firstCol = cellNumber;
+            int lastCol = firstCol + size - 1;
+            sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, firstCol, lastCol));
+            cellNumber = cellNumber + size;
+
+            for (ClassTime classTime : classTimeList) {
+                row1cell1 = row2.createCell(cellNumber2);
+                row1cell1.setCellValue(classTime.getShortName() + "\r\n" + classTime.getSummerStartTime() + "-" + classTime.getSummerEndTime());
+                row1cell1.setCellStyle(cellStyle);
+                sheet.setColumnWidth(cellNumber2, 24 * 256);
+                cellNumber2 ++;
+            }
         }
-
     }
 }

+ 12 - 0
src/main/java/com/xjrsoft/module/veb/util/ImportExcelUtil.java

@@ -147,6 +147,12 @@ public class ImportExcelUtil {
         Cell cell = row.createCell(0);
         cell.setCellValue(bigHead);
         cell.setCellStyle(normalCellStyle);
+
+        for (int i = 1; i < lastCol + 1; i ++){
+            cell = row.createCell(i);
+            cell.setCellStyle(normalCellStyle);
+        }
+
         sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, lastCol));
     }
 
@@ -261,6 +267,12 @@ public class ImportExcelUtil {
         Cell cell = row.createCell(0);
         cell.setCellValue(bigHead);
         cell.setCellStyle(normalCellStyle);
+
+        for (int i = 1; i < lastCol + 1; i ++){
+            cell = row.createCell(i);
+            cell.setCellStyle(normalCellStyle);
+        }
+
         sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, lastCol));
     }