Jelajahi Sumber

1、课表导出
2、机构列表查询调整

dzx 8 bulan lalu
induk
melakukan
8b20207e61

+ 105 - 11
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -32,7 +32,11 @@ import com.xjrsoft.common.utils.excel.ExcelFillCellMergePrevColUtil;
 import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
 import com.xjrsoft.config.TimetableConfig;
 import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseClassroom;
+import com.xjrsoft.module.base.entity.BaseOfficeBuild;
 import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseClassroomMapper;
+import com.xjrsoft.module.base.mapper.BaseOfficeBuildMapper;
 import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseSemesterService;
@@ -109,6 +113,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
     private final IBaseStudentSchoolRollService baseStudentSchoolRollService;
     private final CourseTableBakMapper courseTableBakMapper;
     private final IUserService userService;
+    private final BaseClassroomMapper classroomMapper;
+    private final BaseOfficeBuildMapper officeBuildMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -1264,6 +1270,13 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         CourseTableExportQueryUtil exportQueryUtil = new CourseTableExportQueryUtil();
         String schoolName = "重庆市铜梁职业教育中心";
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
+
+        //查询数据
+        CourseTableDto dataDto = new CourseTableDto();
+        dataDto.setSemesterId(dto.getSemesterId());
+        dataDto.setWeek(dto.getWeek());
+        CourseTableVo tableVo = this.getList(dataDto);
+
         if("calss".equals(dto.getCourseType())){//班级课表
             //根据年级、专业部,查询需要导出的班级
             List<BaseClass> classList = baseClassService.list(
@@ -1274,6 +1287,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                             .in(BaseClass::getOrgId, dto.getDeptIds())
             );
 
+            Map<String, List<CourseDetailVo>> classDataMap = tableVo.getCourseList().stream().collect(Collectors.groupingBy(CourseDetailVo::getClassName));
+
             Workbook workbook = new XSSFWorkbook();
             String sheetName = "班级课表";
             Sheet sheet = workbook.createSheet(sheetName);
@@ -1282,15 +1297,13 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             int classTableRowCount = 16;//每个班的课表占用的总行数
             for(int i = 0; i < classList.size(); i ++){
                 BaseClass baseClass = classList.get(i);
-                //查询数据
-                CourseTableDto dataDto = new CourseTableDto();
-                dataDto.setSemesterId(dto.getSemesterId());
-                dataDto.setClassId(baseClass.getId());
-                dataDto.setWeek(dto.getWeek());
-                CourseTableVo tableVo = this.getList(dataDto);
-                String rightName = "班主任:" + tableVo.getTeacherName() + " 行政班:" + tableVo.getClassName();
-
-                int bigHeadRow = (classTableRowCount + 2) * i;
+
+                CourseTableVo classData = new CourseTableVo();
+                classData.setClassTimeList(tableVo.getClassTimeList());
+                classData.setCourseList(classDataMap.get(baseClass.getName()));
+
+                String rightName = "班主任:" + tableVo.getTeacherName() + " 行政班:" + baseClass.getName();
+                int bigHeadRow = (classTableRowCount + 3) * i;
                 //生成第一行title
                 ImportExcelUtil.createBigHead(workbook, sheet, bigHead, bigHeadRow, 8);
                 //生成副标题,展示所属学期
@@ -1300,7 +1313,7 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                 //生成表头
                 createSecondTitle(workbook, sheet, bigHeadRow + 3);
                 //生成内容
-                exportQueryUtil.createContent(workbook, sheet, bigHeadRow + 4, tableVo, dto.getCourseType());
+                exportQueryUtil.createContent(workbook, sheet, bigHeadRow + 4, classData, dto.getCourseType());
             }
             workbook.write(bot);
         }else if("teacher".equals(dto.getCourseType())){//教师课表
@@ -1316,12 +1329,93 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                             .ge(CourseTable::getScheduleDate, startDate)
                             .le(CourseTable::getScheduleDate, endDate)
             );
+            Set<String> teacherIds = list.stream().map(CourseTable::getTeacherId).collect(Collectors.toSet());
+            Set<Long> teacherIdList = new HashSet<>();
+            for (String teacherId : teacherIds) {
+                String[] split = teacherId.split(", ");
+                for (String s : split) {
+                    teacherIdList.add(Long.parseLong(s));
+                }
+            }
+            List<User> userList = userService.listByIds(teacherIdList);
+
+            Workbook workbook = new XSSFWorkbook();
+            String sheetName = "教师课表";
+            Sheet sheet = workbook.createSheet(sheetName);
+            String bigHead = "课程表";
+            int classTableRowCount = 16;//每个班的课表占用的总行数
+
+            for(int i = 0; i < userList.size(); i ++){
+                User user = userList.get(i);
+                List<CourseDetailVo> courseList = tableVo.getCourseList().stream().filter(x -> x.getTeacherName().contains(user.getName())).collect(Collectors.toList());
 
+                CourseTableVo classData = new CourseTableVo();
+                classData.setClassTimeList(tableVo.getClassTimeList());
+                classData.setCourseList(courseList);
 
+                String rightName = "教师:" + user.getName();
+                int bigHeadRow = (classTableRowCount + 3) * i;
+                //生成第一行title
+                ImportExcelUtil.createBigHead(workbook, sheet, bigHead, bigHeadRow, 8);
+                //生成副标题,展示所属学期
+                ImportExcelUtil.createSubtitle(workbook, sheet, baseSemester.getName(), bigHeadRow + 1, 8);
+                //生成第三行,显示学校名字、班主任和班级名字
+                exportQueryUtil.createThirdTitle(workbook, sheet, bigHeadRow + 2, schoolName, rightName);
+                //生成表头
+                createSecondTitle(workbook, sheet, bigHeadRow + 3);
+                //生成内容
+                exportQueryUtil.createContent(workbook, sheet, bigHeadRow + 4, classData, dto.getCourseType());
+            }
+            workbook.write(bot);
         }else if("classroom".equals(dto.getCourseType())){//教室课表
+            Map<String, List<CourseDetailVo>> classroomDataMap = tableVo.getCourseList().stream().filter(x -> x.getClassroomName() != null).collect(Collectors.groupingBy(CourseDetailVo::getClassroomName));
+            List<BaseClassroom> classroomList = classroomMapper.selectList(
+                    new QueryWrapper<BaseClassroom>().lambda()
+                            .eq(BaseClassroom::getDeleteMark, DeleteMark.NODELETE.getCode())
+            );
+            List<BaseOfficeBuild> buildList = officeBuildMapper.selectList(
+                    new QueryWrapper<BaseOfficeBuild>().lambda()
+                            .eq(BaseOfficeBuild::getDeleteMark, DeleteMark.NODELETE.getCode())
+            );
+            Map<Long, String> buildMap = buildList.stream().collect(Collectors.toMap(BaseOfficeBuild::getId, BaseOfficeBuild::getName));
 
-        }else if("all".equals(dto.getCourseType())){//总课表
+            Workbook workbook = new XSSFWorkbook();
+            String sheetName = "教室课表";
+            Sheet sheet = workbook.createSheet(sheetName);
+            String bigHead = "课程表";
+            int classTableRowCount = 16;//每个班的课表占用的总行数
+
+            for (int i = 0; i < classroomList.size(); i ++){
+                BaseClassroom baseClassroom = classroomList.get(i);
+                String classroomName = buildMap.get(baseClassroom.getOfficeBuildId()) + baseClassroom.getName();
+                List<CourseDetailVo> courseList = classroomDataMap.get(classroomName);
+
+                CourseTableVo classData = new CourseTableVo();
+                classData.setClassTimeList(tableVo.getClassTimeList());
+                classData.setCourseList(courseList);
 
+                int bigHeadRow = (classTableRowCount + 3) * i;
+                //生成第一行title
+                ImportExcelUtil.createBigHead(workbook, sheet, bigHead, bigHeadRow, 8);
+                //生成副标题,展示所属学期
+                ImportExcelUtil.createSubtitle(workbook, sheet, baseSemester.getName(), bigHeadRow + 1, 8);
+                //生成第三行,显示学校名字、班主任和班级名字
+                exportQueryUtil.createThirdTitle(workbook, sheet, bigHeadRow + 2, schoolName, classroomName);
+                //生成表头
+                createSecondTitle(workbook, sheet, bigHeadRow + 3);
+                //生成内容
+                exportQueryUtil.createContent(workbook, sheet, bigHeadRow + 4, classData, dto.getCourseType());
+            }
+            workbook.write(bot);
+        }else if("all".equals(dto.getCourseType())){//总课表
+            //根据年级、专业部,查询需要导出的班级
+            List<BaseClass> classList = baseClassService.list(
+                    new QueryWrapper<BaseClass>().lambda()
+                            .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BaseClass::getIsGraduate, 1)
+                            .in(BaseClass::getGradeId, dto.getGradeIds())
+                            .in(BaseClass::getOrgId, dto.getDeptIds())
+            );
         }
 
         return bot;

+ 7 - 3
src/main/java/com/xjrsoft/module/organization/controller/DepartmentController.java

@@ -66,9 +66,13 @@ public class DepartmentController {
     @GetMapping(value = "/list")
     @ApiOperation(value = "机构列表(不分页)")
     @XjrLog(value = "获取不分页机构列表")
-    public R list() {
-        List<Department> list = departmentService.list(Wrappers.lambdaQuery(Department.class)
-                .select(Department.class, x -> VoToColumnUtil.fieldsToColumns(DepartmentListVo.class).contains(x.getProperty())));
+    public R list(DepartmentPageDto dto) {
+        List<Department> list = departmentService.list(
+                Wrappers.lambdaQuery(Department.class)
+                .select(Department.class, x -> VoToColumnUtil.fieldsToColumns(DepartmentListVo.class).contains(x.getProperty()))
+                        .eq(dto.getIsMajor() != null, Department::getIsMajor, dto.getIsMajor())
+                        .orderByAsc(Department::getId)
+        );
 
         List<DepartmentListVo> departmentListVos = BeanUtil.copyToList(list, DepartmentListVo.class);
         return R.ok(departmentListVos);

+ 40 - 4
src/main/java/com/xjrsoft/module/schedule/util/CourseTableExportQueryUtil.java

@@ -53,12 +53,12 @@ public class CourseTableExportQueryUtil {
         Cell cell = row.createCell(0);
         cell.setCellValue(leftTitle);
         cell.setCellStyle(cellStyle);
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, 2));
+        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 0, 3));
 
         cell = row.createCell(1);
         cell.setCellValue(rightTitle);
         cell.setCellStyle(cellStyle);
-        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 3, 8));
+        sheet.addMergedRegion(new CellRangeAddress(rowNumber, rowNumber, 4, 8));
     }
 
 
@@ -114,21 +114,27 @@ public class CourseTableExportQueryUtil {
                     if (list.size() == 1) {
                         CourseDetailVo courseDetailVo = list.get(0);
                         content += courseDetailVo.getCourseName() + "\r\n";
-                        content += courseDetailVo.getClassroomName() + "\r\n";
                         if ("teacher".equals(courseType)) {
+                            content += courseDetailVo.getClassroomName() + "\r\n";
                             content += courseDetailVo.getClassName();
                         } else if ("class".equals(courseType)) {
+                            content += courseDetailVo.getClassroomName() + "\r\n";
                             content += courseDetailVo.getTeacherName();
+                        } else if("classroom".equals(content)){
+
                         }
                     } else {
                         CourseDetailVo courseDetailVo = list.get(0);
                         content += courseDetailVo.getCourseName() + "\r\n";
-                        content += courseDetailVo.getClassroomName() + "\r\n";
                         if ("teacher".equals(courseType)) {
+                            content += courseDetailVo.getClassroomName() + "\r\n";
                             content += courseDetailVo.getClassName();
                         } else if ("class".equals(courseType)) {
+                            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)){
+
                         }
                     }
                 }
@@ -178,4 +184,34 @@ public class CourseTableExportQueryUtil {
             firstRow = firstRow + collect.get(i).size();
         }
     }
+
+    public void createAllCourseTableTitle(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);
+
+        //设置样式
+        CellStyle cellStyle = workbook.createCellStyle();
+        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);
+
+        //创建一行
+        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));
+    }
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/student/service/impl/PbCseFeeobjupdateServiceImpl.java

@@ -122,7 +122,7 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
                 setValue(entry.getValue());
                 if (pbCseSpecplanSumMap.get(entry.getKey()) != null) {
                     setPlannedNumber(pbCseSpecplanSumMap.get(entry.getKey()));
-                    setRemainder(pbCseSpecplanSumMap.get(entry.getKey()) - entry.getValue());
+                    setRemainder(pbCseSpecplanSumMap.get(entry.getKey()) - specnameCountMap.get(entry.getKey()));
                     setPaymentCount(specnameCountMap.get(entry.getKey()));
                 }
                 if (specnameCountMap.get(entry.getKey()) != null) {