瀏覽代碼

课表导出

dzx 8 月之前
父節點
當前提交
7b0dd9867f

+ 56 - 1
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -1415,9 +1415,64 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                             .eq(BaseClass::getIsGraduate, 1)
                             .in(BaseClass::getGradeId, dto.getGradeIds())
                             .in(BaseClass::getOrgId, dto.getDeptIds())
+                            .orderByAsc(BaseClass::getName)
             );
-        }
+            Map<String, List<CourseDetailVo>> classDataMap = tableVo.getCourseList().stream().collect(Collectors.groupingBy(CourseDetailVo::getClassName));
+            ArrayList<ArrayList<String>> dataList = new ArrayList<>();
+            for (BaseClass baseClass : classList) {
+                List<CourseDetailVo> detailVoList = classDataMap.get(baseClass.getName());
+                Map<Integer, List<CourseDetailVo>> weeksMap = detailVoList.stream().collect(Collectors.groupingBy(CourseDetailVo::getWeeks));
+
+                List<Integer> weekList = new ArrayList<>();
+                weekList.add(1);
+                weekList.add(2);
+                weekList.add(3);
+                weekList.add(4);
+                weekList.add(5);
+                weekList.add(6);
+                weekList.add(7);
+
+                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));
+                    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());
+                    }
+                }
+                dataList.add(classData);
+            }
+
+            Workbook workbook = new XSSFWorkbook();
+            String sheetName = "总课表";
+            Sheet sheet = workbook.createSheet(sheetName);
+
+            Font font = workbook.createFont();
+            font.setFontName("宋体");
+            font.setFontHeightInPoints((short) 12);
 
+            CellStyle cellStyle = workbook.createCellStyle();
+            cellStyle.setFont(font); // 将字体应用到样式
+            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+            cellStyle.setAlignment(HorizontalAlignment.CENTER);
+            int rowNumber = 2;
+            for (ArrayList<String> rowData : dataList) {
+                Row row = sheet.createRow(rowNumber);
+                for (int i = 0; i < rowData.size(); i++) {
+                    Cell cell = row.createCell(i);
+                    cell.setCellValue(rowData.get(i));
+                    cell.setCellStyle(cellStyle);
+                }
+                rowNumber++;
+            }
+
+            workbook.write(bot);
+        }
         return bot;
     }
 

+ 87 - 12
src/main/java/com/xjrsoft/module/schedule/util/CourseTableExportQueryUtil.java

@@ -185,14 +185,15 @@ public class CourseTableExportQueryUtil {
         }
     }
 
-    public void createAllCourseTableTitle(Workbook workbook, Sheet sheet, int rowNumber, String leftTitle, String rightTitle){
+    public void createAllCourseTableTitle(Workbook workbook, Sheet sheet, List<ClassTime> classTimeList){
+        // 创建一个字体对象
         Font font = workbook.createFont();
         font.setBold(true);// 设置为粗体
         font.setFontName("宋体");
         //font.setColor(IndexedColors.RED.getIndex()); // 设置字体颜色为红色
-        font.setFontHeightInPoints((short) 14);
+        font.setFontHeightInPoints((short) 12);
 
-        //设置样式
+        // 创建一个单元格样式对象
         CellStyle cellStyle = workbook.createCellStyle();
         cellStyle.setFont(font); // 将字体应用到样式
         cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
@@ -202,16 +203,90 @@ public class CourseTableExportQueryUtil {
         cellStyle.setBorderLeft(BorderStyle.THIN);
         cellStyle.setBorderRight(BorderStyle.THIN);
 
-        //创建一行
+        int rowNumber = 0;
         Row row = sheet.createRow(rowNumber);
-        Cell cell = row.createCell(0);
-        cell.setCellValue(leftTitle);
-        cell.setCellStyle(cellStyle);
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, 3));
 
-        cell = row.createCell(1);
-        cell.setCellValue(rightTitle);
-        cell.setCellStyle(cellStyle);
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 4, 8));
+        int cellNumber = 0;
+        Cell row1cell1 = row.createCell(cellNumber);
+        row1cell1.setCellValue("节次");
+        row1cell1.setCellStyle(cellStyle);
+        sheet.setColumnWidth(0, 4 * 256);
+        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;
+
+        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);
+        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) {
+            row1cell1 = row.createCell(cellNumber);
+            row1cell1.setCellValue(classTime.getShortName() + "\r\n" + classTime.getSummerStartTime() + "-" + classTime.getSummerEndTime());
+            row1cell1.setCellStyle(cellStyle);
+            sheet.setColumnWidth(2, 16 * 256);
+            cellNumber ++;
+        }
+
     }
 }

+ 1 - 1
src/main/resources/mapper/courseTable/CourseTable.xml

@@ -44,7 +44,7 @@
         <if test="dto.classId != null">
             and t5.id = #{dto.classId}
         </if>
-
+        ORDER BY t1.weeks,t1.time_period,t1.time_number
     </select>
     <select id="getAdjustList" parameterType="com.xjrsoft.module.schedule.dto.CourseTableAdjustDto" resultType="com.xjrsoft.module.schedule.vo.CourseListVo">
         SELECT t1.time_period,t4.short_name as time_number,t1.course_name,t2.name AS class_name,t3.name AS classroom_name,t1.id,t2.id as class_id FROM course_table t1