Parcourir la source

课表和请假

LIVE_YE il y a 7 mois
Parent
commit
710b99325b
64 fichiers modifiés avec 2342 ajouts et 739 suppressions
  1. 10 1
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  2. 3 0
      ruoyi-admin/src/main/resources/application.yml
  3. 28 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableController.java
  4. 16 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableTimeController.java
  5. 12 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalParentsStudentController.java
  6. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalTeacherClassController.java
  7. 128 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveController.java
  8. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveCourseController.java
  9. 105 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveFjController.java
  10. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  11. 111 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeave.java
  12. 66 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeaveCourse.java
  13. 56 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeaveFj.java
  14. 10 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseChange.java
  15. 10 66
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTable.java
  16. 8 68
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTableTime.java
  17. 119 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveBo.java
  18. 72 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveCourseBo.java
  19. 60 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveFjBo.java
  20. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseChangeBo.java
  21. 17 81
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableBo.java
  22. 14 84
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableTimeBo.java
  23. 38 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/list/CourseTableList.java
  24. 22 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/list/CourseTableTimeListVo.java
  25. 80 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveCourseVo.java
  26. 68 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveFjVo.java
  27. 130 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveVo.java
  28. 14 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseChangeVo.java
  29. 12 84
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableTimeVo.java
  30. 24 82
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableVo.java
  31. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveCourseMapper.java
  32. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveFjMapper.java
  33. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveMapper.java
  34. 8 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableMapper.java
  35. 3 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableTimeMapper.java
  36. 3 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/FormalTeacherClassMapper.java
  37. 3 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherMapper.java
  38. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
  39. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveCourseService.java
  40. 49 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveFjService.java
  41. 53 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveService.java
  42. 9 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableService.java
  43. 5 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableTimeService.java
  44. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalParentsStudentService.java
  45. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalTeacherClassService.java
  46. 114 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveCourseServiceImpl.java
  47. 112 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveFjServiceImpl.java
  48. 238 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveServiceImpl.java
  49. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseChangeServiceImpl.java
  50. 167 184
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableServiceImpl.java
  51. 53 29
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableTimeServiceImpl.java
  52. 6 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/FormalParentsStudentServiceImpl.java
  53. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/FormalTeacherClassServiceImpl.java
  54. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherServiceImpl.java
  55. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ZhxyShyjServiceImpl.java
  56. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveCourseMapper.xml
  57. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveFjMapper.xml
  58. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveMapper.xml
  59. 3 1
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseChangeMapper.xml
  60. 10 17
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableMapper.xml
  61. 5 17
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableTimeMapper.xml
  62. 2 1
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/FormalParentsStudentMapper.xml
  63. 4 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/FormalTeacherClassMapper.xml
  64. 4 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherMapper.xml

+ 10 - 1
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -25,12 +25,14 @@ import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
 import org.dromara.common.social.config.properties.SocialProperties;
 import org.dromara.common.social.utils.SocialUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.system.domain.FormalParentsStudent;
 import org.dromara.system.domain.SysClient;
 import org.dromara.system.domain.admin.LoginVo;
 import org.dromara.system.domain.app.AppletLoginForm;
 import org.dromara.system.domain.bo.SysTenantBo;
 import org.dromara.system.domain.school.bo.SysSchoolNameBo;
 import org.dromara.system.domain.school.vo.SysSchoolNameVo;
+import org.dromara.system.domain.vo.FormalParentsStudentVo;
 import org.dromara.system.domain.vo.SysRoleVo;
 import org.dromara.system.domain.vo.SysTenantVo;
 import org.dromara.system.domain.vo.SysUserVo;
@@ -75,6 +77,7 @@ public class AuthController {
     private final ISysSchoolNameService sysSchoolNameService;
     private final SysUserMapper sysUserMapper;
     private final SysRoleMapper sysRoleMapper;
+    private final IFormalParentsStudentService formalParentsStudentService;
 
     /**
      * 登录方法
@@ -282,7 +285,13 @@ public class AuthController {
                 }
             }
             if (bl) {
-                tList.add(sysUserVo.getTenantId());
+                //查询家长名下的学生
+                List<FormalParentsStudentVo> studentVoList= formalParentsStudentService.getParentsStudentAll();
+                if(studentVoList!=null && studentVoList.size()>0){
+                    for (FormalParentsStudentVo formalParentsStudentVo : studentVoList) {
+                        tList.add(formalParentsStudentVo.getTenantId());
+                    }
+                }
             }
 
         }

+ 3 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -153,6 +153,9 @@ tenant:
     - xiaoyuan_reservat
     - xiaoyuan_opinion
     - update_app
+    - ask_leave
+    - ask_leave_course
+    - ask_leave_fj
 
 # MyBatisPlus配置
 # https://baomidou.com/config/

+ 28 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableController.java

@@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.list.CourseTableList;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -42,7 +43,7 @@ public class CourseTableController extends BaseController {
      */
     @SaCheckPermission("course:table:list")
     @GetMapping("/list")
-    public TableDataInfo<CourseTableVo> list(CourseTableBo bo, PageQuery pageQuery) {
+    public TableDataInfo<List<CourseTableVo>> list(CourseTableBo bo, PageQuery pageQuery) {
         return courseTableService.queryPageList(bo, pageQuery);
     }
 
@@ -51,7 +52,7 @@ public class CourseTableController extends BaseController {
      */
     @SaCheckPermission("course:table:list")
     @GetMapping("/pc/list")
-    public TableDataInfo<CourseTableVo> pcList(CourseTableBo bo, PageQuery pageQuery) {
+    public TableDataInfo<List<CourseTableVo>> pcList(CourseTableBo bo, PageQuery pageQuery) {
         return courseTableService.queryPagePcList(bo, pageQuery);
     }
 
@@ -85,8 +86,8 @@ public class CourseTableController extends BaseController {
     @Log(title = "课程", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody CourseTableBo bo) {
-        return courseTableService.insertByBo(bo);
+    public R<Void> add(@RequestBody CourseTableList boList) {
+        return courseTableService.insertByBo(boList);
     }
 
     /**
@@ -96,8 +97,8 @@ public class CourseTableController extends BaseController {
     @Log(title = "课程", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PostMapping("/put")
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CourseTableBo bo) {
-        return toAjax(courseTableService.updateByBo(bo));
+    public R<Void> edit(@RequestBody CourseTableList boList) {
+        return toAjax(courseTableService.updateByBo(boList));
     }
 
     /**
@@ -124,4 +125,25 @@ public class CourseTableController extends BaseController {
     {
         return courseTableService.now(schoolId,classId);
     }
+
+    /**
+     * 根据时间查询课表
+     * @return
+     */
+    @PostMapping(value = "/dataCourse")
+    public R<List<CourseTableVo>> dataCourse(@Validated(EditGroup.class) @RequestBody CourseTableBo bo)
+    {
+        return courseTableService.dataCourse(bo);
+    }
+
+    /**
+     * 删除课程 学校id和班级id
+     *
+     */
+    @SaCheckPermission("course:table:remove:all")
+    @Log(title = "课程-时间", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/classId")
+    public R<Void> remove(String schoolId,@NotEmpty(message = "参数错误")String classId,@NotEmpty(message = "参数错误")String week) {
+        return toAjax(courseTableService.deleteWithValidBySchoolId(schoolId,classId,week));
+    }
 }

+ 16 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/course/CourseTableTimeController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.list.CourseTableTimeListVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -75,8 +76,8 @@ public class CourseTableTimeController extends BaseController {
     @Log(title = "课程-时间", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody CourseTableTimeBo bo) {
-        return toAjax(courseTableTimeService.insertByBo(bo));
+    public R<Void> add(@RequestBody CourseTableTimeListVo boList) {
+        return toAjax(courseTableTimeService.insertByBo(boList));
     }
 
     /**
@@ -86,8 +87,8 @@ public class CourseTableTimeController extends BaseController {
     @Log(title = "课程-时间", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PostMapping("/put")
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CourseTableTimeBo bo) {
-        return toAjax(courseTableTimeService.updateByBo(bo));
+    public R<Void> edit(@RequestBody CourseTableTimeListVo boList) {
+        return toAjax(courseTableTimeService.updateByBo(boList));
     }
 
     /**
@@ -102,4 +103,15 @@ public class CourseTableTimeController extends BaseController {
                           @PathVariable Long[] ids) {
         return toAjax(courseTableTimeService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    /**
+     * 删除课程-时间 学校id
+     *
+     */
+    @SaCheckPermission("course:time:remove:all")
+    @Log(title = "课程-时间", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/schoolId")
+    public R<Void> remove(String schoolId) {
+        return toAjax(courseTableTimeService.deleteWithValidBySchoolId(schoolId));
+    }
 }

+ 12 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalParentsStudentController.java

@@ -48,7 +48,7 @@ public class FormalParentsStudentController extends BaseController {
     /**
      * 查询家长-学生(审核通过之后数据)列表不分页
      */
-    @GetMapping("noPage/list")
+    @GetMapping("/noPage/list")
     public TableDataInfo<FormalParentsStudentVo> noPage(FormalParentsStudentBo bo)
     {
 
@@ -114,4 +114,15 @@ public class FormalParentsStudentController extends BaseController {
     }
 
 
+    /**
+     * 获取家长下面的所有学生信息(仅家长角色使用)
+     *
+     */
+    @SaCheckPermission("system:student:all:query")
+    @GetMapping("/all")
+    public R<List<FormalParentsStudentVo>> getParentsStudentAll() {
+        return R.ok(formalParentsStudentService.getParentsStudentAll());
+    }
+
+
 }

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/formal/FormalTeacherClassController.java

@@ -122,4 +122,15 @@ public class FormalTeacherClassController extends BaseController {
     public TableDataInfo<FormalTeacherClassVo> noPage(FormalTeacherClassBo bo) {
         return formalTeacherClassService.selectFormalTeacherClassListNoPage(bo);
     }
+
+    /**
+     * 获取班级下的所有老师
+     *
+     */
+    @SaCheckPermission("formal:class:all:query")
+    @GetMapping("/all")
+    public R<List<FormalTeacherClassVo>> getTeacherClassAll(@NotNull(message = "班级id不能为空")
+                                           @PathVariable Long classId) {
+        return R.ok(formalTeacherClassService.getTeacherClassAll(classId));
+    }
 }

+ 128 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveController.java

@@ -0,0 +1,128 @@
+package org.dromara.system.controller.leave;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.AskLeaveVo;
+import org.dromara.system.domain.bo.AskLeaveBo;
+import org.dromara.system.service.IAskLeaveService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 请假
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/ask/leave")
+public class AskLeaveController extends BaseController {
+
+    private final IAskLeaveService askLeaveService;
+
+    /**
+     * 查询请假列表
+     */
+    @SaCheckPermission("ask:leave:list")
+    @GetMapping("/list")
+    public TableDataInfo<AskLeaveVo> list(AskLeaveBo bo, PageQuery pageQuery) {
+        return askLeaveService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出请假列表
+     */
+    @SaCheckPermission("ask:leave:export")
+    @Log(title = "请假", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(AskLeaveBo bo, HttpServletResponse response) {
+        List<AskLeaveVo> list = askLeaveService.queryList(bo);
+        ExcelUtil.exportExcel(list, "请假", AskLeaveVo.class, response);
+    }
+
+    /**
+     * 获取请假详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("ask:leave:query")
+    @GetMapping("/{id}")
+    public R<AskLeaveVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(askLeaveService.queryById(id));
+    }
+
+    /**
+     * 新增请假
+     */
+    @SaCheckPermission("ask:leave:add")
+    @Log(title = "请假", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody AskLeaveBo bo) {
+        return toAjax(askLeaveService.insertByBo(bo));
+    }
+
+    /**
+     * 修改请假
+     */
+    @SaCheckPermission("ask:leave:edit")
+    @Log(title = "请假", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody AskLeaveBo bo) {
+        return toAjax(askLeaveService.updateByBo(bo));
+    }
+
+    /**
+     * 删除请假
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("ask:leave:remove")
+    @Log(title = "请假", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(askLeaveService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 删除请假
+     *
+     */
+    @SaCheckPermission("ask:leave:remove")
+    @Log(title = "请假", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{id}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long id) {
+        return toAjax(askLeaveService.deleteWithValidById(id, true));
+    }
+
+    /**
+     * 审核
+     */
+    @SaCheckPermission("ask:leave:sh")
+    @Log(title = "请假", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/sh")
+    public R<Void> sh(@Validated(EditGroup.class) @RequestBody AskLeaveBo bo) {
+        return toAjax(askLeaveService.sh(bo));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveCourseController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.leave;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.AskLeaveCourseVo;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.system.service.IAskLeaveCourseService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 请假课程信息
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/leaveCourse")
+public class AskLeaveCourseController extends BaseController {
+
+    private final IAskLeaveCourseService askLeaveCourseService;
+
+    /**
+     * 查询请假课程信息列表
+     */
+    @SaCheckPermission("system:leaveCourse:list")
+    @GetMapping("/list")
+    public TableDataInfo<AskLeaveCourseVo> list(AskLeaveCourseBo bo, PageQuery pageQuery) {
+        return askLeaveCourseService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出请假课程信息列表
+     */
+    @SaCheckPermission("system:leaveCourse:export")
+    @Log(title = "请假课程信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(AskLeaveCourseBo bo, HttpServletResponse response) {
+        List<AskLeaveCourseVo> list = askLeaveCourseService.queryList(bo);
+        ExcelUtil.exportExcel(list, "请假课程信息", AskLeaveCourseVo.class, response);
+    }
+
+    /**
+     * 获取请假课程信息详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:leaveCourse:query")
+    @GetMapping("/{id}")
+    public R<AskLeaveCourseVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(askLeaveCourseService.queryById(id));
+    }
+
+    /**
+     * 新增请假课程信息
+     */
+    @SaCheckPermission("system:leaveCourse:add")
+    @Log(title = "请假课程信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody AskLeaveCourseBo bo) {
+        return toAjax(askLeaveCourseService.insertByBo(bo));
+    }
+
+    /**
+     * 修改请假课程信息
+     */
+    @SaCheckPermission("system:leaveCourse:edit")
+    @Log(title = "请假课程信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody AskLeaveCourseBo bo) {
+        return toAjax(askLeaveCourseService.updateByBo(bo));
+    }
+
+    /**
+     * 删除请假课程信息
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:leaveCourse:remove")
+    @Log(title = "请假课程信息", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(askLeaveCourseService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/leave/AskLeaveFjController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller.leave;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.AskLeaveFjVo;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+import org.dromara.system.service.IAskLeaveFjService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 请假附件
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/leaveFj")
+public class AskLeaveFjController extends BaseController {
+
+    private final IAskLeaveFjService askLeaveFjService;
+
+    /**
+     * 查询请假附件列表
+     */
+    @SaCheckPermission("system:leaveFj:list")
+    @GetMapping("/list")
+    public TableDataInfo<AskLeaveFjVo> list(AskLeaveFjBo bo, PageQuery pageQuery) {
+        return askLeaveFjService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出请假附件列表
+     */
+    @SaCheckPermission("system:leaveFj:export")
+    @Log(title = "请假附件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(AskLeaveFjBo bo, HttpServletResponse response) {
+        List<AskLeaveFjVo> list = askLeaveFjService.queryList(bo);
+        ExcelUtil.exportExcel(list, "请假附件", AskLeaveFjVo.class, response);
+    }
+
+    /**
+     * 获取请假附件详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:leaveFj:query")
+    @GetMapping("/{id}")
+    public R<AskLeaveFjVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(askLeaveFjService.queryById(id));
+    }
+
+    /**
+     * 新增请假附件
+     */
+    @SaCheckPermission("system:leaveFj:add")
+    @Log(title = "请假附件", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody AskLeaveFjBo bo) {
+        return toAjax(askLeaveFjService.insertByBo(bo));
+    }
+
+    /**
+     * 修改请假附件
+     */
+    @SaCheckPermission("system:leaveFj:edit")
+    @Log(title = "请假附件", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody AskLeaveFjBo bo) {
+        return toAjax(askLeaveFjService.updateByBo(bo));
+    }
+
+    /**
+     * 删除请假附件
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:leaveFj:remove")
+    @Log(title = "请假附件", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(askLeaveFjService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@@ -178,7 +178,7 @@ public class SysUserController extends BaseController {
 
     private void getParentsStudent(SysUserVo user) {
 
-        List<FormalParentsStudentVo> parentsStudent = formalParentsStudentMapper.getStudentByParentId(String.valueOf(user .getUserId()));
+        List<FormalParentsStudentVo> parentsStudent = formalParentsStudentMapper.getStudentByParentId(String.valueOf(user.getUserId()));
         user.setParentsStudent(parentsStudent);
     }
 

+ 111 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeave.java

@@ -0,0 +1,111 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+
+import java.io.Serial;
+import java.util.List;
+
+/**
+ * 请假对象 ask_leave
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("ask_leave")
+public class AskLeave extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 请假人
+     */
+    private String leaveName;
+
+    /**
+     * 请假类型
+     */
+    private Long leaveType;
+
+    /**
+     * 请假事由
+     */
+    private String description;
+
+    /**
+     * 请假时长
+     */
+    private String leaveDuration;
+
+    /**
+     * 请假时段
+     */
+    private String leaveFrame;
+
+    /**
+     * 审核人id
+     */
+    private String examineId;
+
+    /**
+     * 审核人姓名
+     */
+    private String examineName;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 审核结果  0:未审核,1:审核通过,2:未通过
+     */
+    private String examineResult;
+
+    /**
+     * 请假课程信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveCourseBo> askLeaveCourseBoList;
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveFjBo> askLeaveFjBoList;
+
+
+}

+ 66 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeaveCourse.java

@@ -0,0 +1,66 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 请假课程信息对象 ask_leave_course
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("ask_leave_course")
+public class AskLeaveCourse extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    private Long leaveId;
+
+    /**
+     * 请假日期
+     */
+    private String courseDate;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    private String week;
+
+    /**
+     * 第几节课
+     */
+    private Long classNumber;
+
+    /**
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
+     */
+    private String timeFrame;
+
+    /**
+     * 课程名称
+     */
+    private String courseName;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 56 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AskLeaveFj.java

@@ -0,0 +1,56 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 请假附件对象 ask_leave_fj
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("ask_leave_fj")
+public class AskLeaveFj extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    private Long leaveId;
+
+    /**
+     * 附件名称
+     */
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    private String url;
+
+    /**
+     * 上传日期
+     */
+    private String createDate;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 10 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseChange.java

@@ -63,6 +63,11 @@ public class CourseChange extends BaseEntity {
      */
     private String subject;
 
+    /**
+     * 调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    private String isFrame;
+
     /**
      * 调课科目是第几节课
      */
@@ -94,6 +99,11 @@ public class CourseChange extends BaseEntity {
      */
     private String beSubject;
 
+    /**
+     * 被调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    private String beIsFrame;
+
     /**
      * 被调课科目是第几节课
      */

+ 10 - 66
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTable.java

@@ -1,5 +1,6 @@
 package org.dromara.system.domain;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
@@ -53,84 +54,27 @@ public class CourseTable extends BaseEntity {
     private String week;
 
     /**
-     * 第节课
+     * 第节课
      */
-    private String oneClass;
+    @ExcelProperty(value = "第几节课")
+    private Long classNumber;
 
-    /**
-     * 第一节课老师
-     */
-    private String oneTeacher;
-
-    /**
-     * 第二节课
-     */
-    private String twoClass;
-
-    /**
-     * 第二节课老师
-     */
-    private String twoTeacher;
-
-    /**
-     * 第三节课
-     */
-    private String threeClass;
-
-    /**
-     * 第三节课老师
-     */
-    private String threeTeacher;
-
-    /**
-     * 第四节课
-     */
-    private String fourClass;
 
     /**
-     * 第四节课老师
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    private String fourTeacher;
+    private String timeFrame;
 
-    /**
-     * 第五节课
-     */
-    private String fiveClass;
-
-    /**
-     * 第五节课老师
-     */
-    private String fiveTeacher;
-
-    /**
-     * 第六节课
-     */
-    private String sixClass;
-
-    /**
-     * 第六节课老师
-     */
-    private String sixTeacher;
-
-    /**
-     * 第七节课
-     */
-    private String sevenClass;
-
-    /**
-     * 第七节课老师
-     */
-    private String sevenTeacher;
 
     /**
-     * 第八节
+     * 课程名称
      */
-    private String eightClass;
+    private String courseName;
 
     /**
-     * 第八节课老师
+     * 课程老师
      */
-    private String eightTeacher;
+    private String courseTeacher;
 
     /**
      * 备注

+ 8 - 68
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CourseTableTime.java

@@ -38,84 +38,24 @@ public class CourseTableTime extends BaseEntity {
     private String schoolName;
 
     /**
-     * 第一节课开始时间
+     * 第几节课
      */
-    private String oneStartTime;
+    private Long classNumber;
 
     /**
-     * 第一节课结束时间
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    private String oneEndTime;
+    private String timeFrame;
 
     /**
-     * 第二节课开始时间
+     * 课开始时间
      */
-    private String twoStartTime;
+    private String startTime;
 
     /**
-     * 第二节课结束时间
+     * 课结束时间
      */
-    private String twoEndTime;
-
-    /**
-     * 第三节课开始时间
-     */
-    private String threeStartTime;
-
-    /**
-     * 第三节课结束时间
-     */
-    private String threeEndTime;
-
-    /**
-     * 第四节课开始时间
-     */
-    private String fourStartTime;
-
-    /**
-     * 第四节课结束时间
-     */
-    private String fourEndTime;
-
-    /**
-     * 第五节课开始时间
-     */
-    private String fiveStartTime;
-
-    /**
-     * 第五节课结束时间
-     */
-    private String fiveEndTime;
-
-    /**
-     * 第六节课开始时间
-     */
-    private String sixStartTime;
-
-    /**
-     * 第六节课结束时间
-     */
-    private String sixEndTime;
-
-    /**
-     * 第七节课开始时间
-     */
-    private String sevenStartTime;
-
-    /**
-     * 第七节课结束时间
-     */
-    private String sevenEndTime;
-
-    /**
-     * 第八节课开始时间
-     */
-    private String eightStartTime;
-
-    /**
-     * 第八节课结束时间
-     */
-    private String eightEndTime;
+    private String endTime;
 
     /**
      * 备注

+ 119 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveBo.java

@@ -0,0 +1,119 @@
+package org.dromara.system.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.AskLeave;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.List;
+
+/**
+ * 请假业务对象 ask_leave
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = AskLeave.class, reverseConvertGenerate = false)
+public class AskLeaveBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @NotBlank(message = "学校id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    @NotBlank(message = "班级id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 请假人
+     */
+    @NotBlank(message = "请假人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String leaveName;
+
+    /**
+     * 请假类型
+     */
+    @NotNull(message = "请假类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long leaveType;
+
+    /**
+     * 请假事由
+     */
+    private String description;
+
+    /**
+     * 请假时长
+     */
+    @NotBlank(message = "请假时长不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String leaveDuration;
+
+    /**
+     * 请假时段
+     */
+    @NotBlank(message = "请假时段不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String leaveFrame;
+
+    /**
+     * 审核人id
+     */
+    @NotBlank(message = "审核人id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String examineId;
+
+    /**
+     * 审核人姓名
+     */
+    @NotBlank(message = "审核人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String examineName;
+
+
+    /**
+     * 审核结果  0:未审核,1:审核通过,2:未通过
+     */
+    private String examineResult;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 请假课程信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveCourseBo> askLeaveCourseBoList;
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveFjBo> askLeaveFjBoList;
+
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveCourseBo.java

@@ -0,0 +1,72 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.AskLeaveCourse;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 请假课程信息业务对象 ask_leave_course
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = AskLeaveCourse.class, reverseConvertGenerate = false)
+public class AskLeaveCourseBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    @NotNull(message = "请假主表id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long leaveId;
+
+    /**
+     * 请假日期
+     */
+    @NotBlank(message = "请假日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String courseDate;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    @NotBlank(message = "周几:1:周一,2:周二,3:周三,4:周四,5:周五不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String week;
+
+    /**
+     * 第几节课
+     */
+    @NotNull(message = "第几节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long classNumber;
+
+    /**
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
+     */
+    @NotBlank(message = "时段:AM:上午,PM:下午,NIGHT:晚上不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String timeFrame;
+
+    /**
+     * 课程名称
+     */
+    @NotBlank(message = "课程名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String courseName;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 60 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AskLeaveFjBo.java

@@ -0,0 +1,60 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.AskLeaveFj;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 请假附件业务对象 ask_leave_fj
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = AskLeaveFj.class, reverseConvertGenerate = false)
+public class AskLeaveFjBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    @NotNull(message = "请假主表id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long leaveId;
+
+    /**
+     * 附件名称
+     */
+    @NotBlank(message = "附件名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    @NotBlank(message = "附件地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String url;
+
+    /**
+     * 上传日期
+     */
+    @NotBlank(message = "上传日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String createDate;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseChangeBo.java

@@ -1,5 +1,6 @@
 package org.dromara.system.domain.bo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import org.dromara.system.domain.CourseChange;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
@@ -68,6 +69,11 @@ public class CourseChangeBo extends BaseEntity {
     //@NotNull(message = "调课科目不能为空", groups = { AddGroup.class, EditGroup.class })
     private String subject;
 
+    /**
+     * 调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    private String isFrame;
+
     /**
      * 调课科目是第几节课
      */
@@ -105,6 +111,11 @@ public class CourseChangeBo extends BaseEntity {
     ////@NotNull(message = "被调科目不能为空", groups = { AddGroup.class, EditGroup.class })
     private String beSubject;
 
+    /**
+     * 被调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    private String beIsFrame;
+
     /**
      * 被调课科目是第几节课
      */

+ 17 - 81
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableBo.java

@@ -1,5 +1,6 @@
 package org.dromara.system.domain.bo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import org.dromara.system.domain.CourseTable;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.core.validate.AddGroup;
@@ -23,7 +24,7 @@ public class CourseTableBo extends BaseEntity {
     /**
      * ID
      */
-    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
+    //@NotNull(message = "ID不能为空", groups = { EditGroup.class })
     private Long id;
 
     /**
@@ -57,100 +58,31 @@ public class CourseTableBo extends BaseEntity {
     private String week;
 
     /**
-     * 第节课
+     * 第节课
      */
     //@NotNull(message = "第一节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String oneClass;
+    private Long classNumber;
 
-    /**
-     * 第一节课老师
-     */
-    //@NotNull(message = "第一节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String oneTeacher;
-
-    /**
-     * 第二节课
-     */
-    //@NotNull(message = "第二节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String twoClass;
-
-    /**
-     * 第二节课老师
-     */
-    //@NotNull(message = "第二节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String twoTeacher;
-
-    /**
-     * 第三节课
-     */
-    //@NotNull(message = "第三节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String threeClass;
-
-    /**
-     * 第三节课老师
-     */
-    //@NotNull(message = "第三节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String threeTeacher;
-
-    /**
-     * 第四节课
-     */
-    //@NotNull(message = "第四节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fourClass;
-
-    /**
-     * 第四节课老师
-     */
-    //@NotNull(message = "第四节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fourTeacher;
-
-    /**
-     * 第五节课
-     */
-    //@NotNull(message = "第五节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fiveClass;
-
-    /**
-     * 第五节课老师
-     */
-    //@NotNull(message = "第五节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fiveTeacher;
-
-    /**
-     * 第六节课
-     */
-    //@NotNull(message = "第六节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sixClass;
 
     /**
-     * 第六节课老师
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    //@NotNull(message = "第六节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sixTeacher;
+    //@NotNull(message = "第一节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String timeFrame;
 
-    /**
-     * 第七节课
-     */
-    //@NotNull(message = "第七节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sevenClass;
 
     /**
-     * 第七节课老师
+     * 课程名称
      */
-    //@NotNull(message = "第七节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sevenTeacher;
+    //@NotNull(message = "第二节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String courseName;
 
     /**
-     * 第八节
+     * 课程老师
      */
-    //@NotNull(message = "第八节课不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String eightClass;
+    //@NotNull(message = "第二节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String courseTeacher;
 
-    /**
-     * 第八节课老师
-     */
-    //@NotNull(message = "第八节课老师不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String eightTeacher;
 
     /**
      * 备注
@@ -158,5 +90,9 @@ public class CourseTableBo extends BaseEntity {
     //@NotNull(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
+    @TableField(exist = false)
+    private String data;
+
+
 
 }

+ 14 - 84
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CourseTableTimeBo.java

@@ -39,100 +39,28 @@ public class CourseTableTimeBo extends BaseEntity {
     private String schoolName;
 
     /**
-     * 第一节课开始时间
+     * 第几节课
      */
-    //@NotNull(message = "第一节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String oneStartTime;
-
-    /**
-     * 第一节课结束时间
-     */
-    //@NotNull(message = "第一节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String oneEndTime;
-
-    /**
-     * 第二节课开始时间
-     */
-    //@NotNull(message = "第二节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String twoStartTime;
-
-    /**
-     * 第二节课结束时间
-     */
-    //@NotNull(message = "第二节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String twoEndTime;
-
-    /**
-     * 第三节课开始时间
-     */
-    //@NotNull(message = "第三节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String threeStartTime;
-
-    /**
-     * 第三节课结束时间
-     */
-    //@NotNull(message = "第三节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String threeEndTime;
-
-    /**
-     * 第四节课开始时间
-     */
-    //@NotNull(message = "第四节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fourStartTime;
-
-    /**
-     * 第四节课结束时间
-     */
-    //@NotNull(message = "第四节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fourEndTime;
-
-    /**
-     * 第五节课开始时间
-     */
-    //@NotNull(message = "第五节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fiveStartTime;
-
-    /**
-     * 第五节课结束时间
-     */
-    //@NotNull(message = "第五节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String fiveEndTime;
-
-    /**
-     * 第六节课开始时间
-     */
-    //@NotNull(message = "第六节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sixStartTime;
+    //@NotNull(message = "第一节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long classNumber;
 
     /**
-     * 第六节课结束时间
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    //@NotNull(message = "第六节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sixEndTime;
+    //@NotNull(message = "第一节课不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String timeFrame;
 
     /**
-     * 第七节课开始时间
+     * 课程开始时间
      */
-    //@NotNull(message = "第七节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sevenStartTime;
-
-    /**
-     * 第七节课结束时间
-     */
-    //@NotNull(message = "第七节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String sevenEndTime;
-
-    /**
-     * 第八节课开始时间
-     */
-    //@NotNull(message = "第八节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String eightStartTime;
+    //@NotNull(message = "第一节课开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String startTime;
 
     /**
-     * 第八节课结束时间
+     * 课程结束时间
      */
-    //@NotNull(message = "第节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String eightEndTime;
+    //@NotNull(message = "第一节课结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String endTime;
 
     /**
      * 备注
@@ -141,4 +69,6 @@ public class CourseTableTimeBo extends BaseEntity {
     private String remark;
 
 
+
+
 }

+ 38 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/list/CourseTableList.java

@@ -0,0 +1,38 @@
+package org.dromara.system.domain.list;
+
+import lombok.Data;
+import org.dromara.system.domain.bo.CourseTableBo;
+
+import java.util.List;
+
+@Data
+public class CourseTableList {
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    private String className;
+
+    /**
+     * 周几
+     */
+    private String week;
+
+
+    List<CourseTableBo> courseTableBoList;
+}

+ 22 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/list/CourseTableTimeListVo.java

@@ -0,0 +1,22 @@
+package org.dromara.system.domain.list;
+
+import lombok.Data;
+import org.dromara.system.domain.bo.CourseTableTimeBo;
+
+import java.util.List;
+
+@Data
+public class CourseTableTimeListVo {
+
+    /**
+     * 学校id
+     */
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    private String schoolName;
+
+    List<CourseTableTimeBo> courseTableTimeBoList;
+}

+ 80 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveCourseVo.java

@@ -0,0 +1,80 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.AskLeaveCourse;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 请假课程信息视图对象 ask_leave_course
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = AskLeaveCourse.class)
+public class AskLeaveCourseVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    @ExcelProperty(value = "请假主表id")
+    private Long leaveId;
+
+    /**
+     * 请假日期
+     */
+    @ExcelProperty(value = "请假日期")
+    private String courseDate;
+
+    /**
+     * 周几:1:周一,2:周二,3:周三,4:周四,5:周五
+     */
+    @ExcelProperty(value = "周几:1:周一,2:周二,3:周三,4:周四,5:周五")
+    private String week;
+
+    /**
+     * 第几节课
+     */
+    @ExcelProperty(value = "第几节课")
+    private Long classNumber;
+
+    /**
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
+     */
+    @ExcelProperty(value = "时段:AM:上午,PM:下午,NIGHT:晚上")
+    private String timeFrame;
+
+    /**
+     * 课程名称
+     */
+    @ExcelProperty(value = "课程名称")
+    private String courseName;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 68 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveFjVo.java

@@ -0,0 +1,68 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.AskLeaveFj;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 请假附件视图对象 ask_leave_fj
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = AskLeaveFj.class)
+public class AskLeaveFjVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 请假主表id
+     */
+    @ExcelProperty(value = "请假主表id")
+    private Long leaveId;
+
+    /**
+     * 附件名称
+     */
+    @ExcelProperty(value = "附件名称")
+    private String name;
+
+    /**
+     * 附件地址
+     */
+    @ExcelProperty(value = "附件地址")
+    private String url;
+
+    /**
+     * 上传日期
+     */
+    @ExcelProperty(value = "上传日期")
+    private String createDate;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 130 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AskLeaveVo.java

@@ -0,0 +1,130 @@
+package org.dromara.system.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import org.dromara.system.domain.AskLeave;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 请假视图对象 ask_leave
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = AskLeave.class)
+public class AskLeaveVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 学校id
+     */
+    @ExcelProperty(value = "学校id")
+    private String schoolId;
+
+    /**
+     * 学校名称
+     */
+    @ExcelProperty(value = "学校名称")
+    private String schoolName;
+
+    /**
+     * 班级id
+     */
+    @ExcelProperty(value = "班级id")
+    private String classId;
+
+    /**
+     * 班级名称
+     */
+    @ExcelProperty(value = "班级名称")
+    private String className;
+
+    /**
+     * 请假人
+     */
+    @ExcelProperty(value = "请假人")
+    private String leaveName;
+
+    /**
+     * 请假类型
+     */
+    @ExcelProperty(value = "请假类型")
+    private Long leaveType;
+
+    /**
+     * 请假事由
+     */
+    @ExcelProperty(value = "请假事由")
+    private String description;
+
+    /**
+     * 请假时长
+     */
+    @ExcelProperty(value = "请假时长")
+    private String leaveDuration;
+
+    /**
+     * 请假时段
+     */
+    @ExcelProperty(value = "请假时段")
+    private String leaveFrame;
+
+    /**
+     * 审核人id
+     */
+    @ExcelProperty(value = "审核人id")
+    private String examineId;
+
+    /**
+     * 审核人姓名
+     */
+    @ExcelProperty(value = "审核人姓名")
+    private String examineName;
+
+    /**
+     * 审核结果  0:未审核,1:审核通过,2:未通过
+     */
+    private String examineResult;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+    /**
+     * 请假课程信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveCourseVo> askLeaveCourseBoList;
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<AskLeaveFjVo> askLeaveFjBoList;
+
+}

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseChangeVo.java

@@ -72,6 +72,14 @@ public class CourseChangeVo implements Serializable {
     @ExcelProperty(value = "调课科目")
     private String subject;
 
+
+    /**
+     * 调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    @ExcelProperty(value = "调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上")
+    private String isFrame;
+
+
     /**
      * 调课科目是第几节课
      */
@@ -110,6 +118,12 @@ public class CourseChangeVo implements Serializable {
     @ExcelProperty(value = "被调科目")
     private String beSubject;
 
+    /**
+     * 被调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上
+     */
+    @ExcelProperty(value = "被调课科目是什么时候  AM:上午,PM:下午,NIGHT:晚上")
+    private String beIsFrame;
+
     /**
      * 被调课科目是第几节课
      */

+ 12 - 84
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableTimeVo.java

@@ -47,100 +47,28 @@ public class CourseTableTimeVo implements Serializable {
     private String schoolName;
 
     /**
-     * 第一节课开始时间
+     * 第几节课
      */
-    @ExcelProperty(value = "第一节课开始时间")
-    private String oneStartTime;
+    @ExcelProperty(value = "第几节课")
+    private Long classNumber;
 
     /**
-     * 第一节课结束时间
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    @ExcelProperty(value = "第一节课结束时间")
-    private String oneEndTime;
+    @ExcelProperty(value = "时段:AM:上午,PM:下午,NIGHT:晚上")
+    private String timeFrame;
 
     /**
-     * 第二节课开始时间
+     * 课开始时间
      */
-    @ExcelProperty(value = "第二节课开始时间")
-    private String twoStartTime;
+    @ExcelProperty(value = "课开始时间")
+    private String startTime;
 
     /**
-     * 第二节课结束时间
+     * 课结束时间
      */
-    @ExcelProperty(value = "第二节课结束时间")
-    private String twoEndTime;
-
-    /**
-     * 第三节课开始时间
-     */
-    @ExcelProperty(value = "第三节课开始时间")
-    private String threeStartTime;
-
-    /**
-     * 第三节课结束时间
-     */
-    @ExcelProperty(value = "第三节课结束时间")
-    private String threeEndTime;
-
-    /**
-     * 第四节课开始时间
-     */
-    @ExcelProperty(value = "第四节课开始时间")
-    private String fourStartTime;
-
-    /**
-     * 第四节课结束时间
-     */
-    @ExcelProperty(value = "第四节课结束时间")
-    private String fourEndTime;
-
-    /**
-     * 第五节课开始时间
-     */
-    @ExcelProperty(value = "第五节课开始时间")
-    private String fiveStartTime;
-
-    /**
-     * 第五节课结束时间
-     */
-    @ExcelProperty(value = "第五节课结束时间")
-    private String fiveEndTime;
-
-    /**
-     * 第六节课开始时间
-     */
-    @ExcelProperty(value = "第六节课开始时间")
-    private String sixStartTime;
-
-    /**
-     * 第六节课结束时间
-     */
-    @ExcelProperty(value = "第六节课结束时间")
-    private String sixEndTime;
-
-    /**
-     * 第七节课开始时间
-     */
-    @ExcelProperty(value = "第七节课开始时间")
-    private String sevenStartTime;
-
-    /**
-     * 第七节课结束时间
-     */
-    @ExcelProperty(value = "第七节课结束时间")
-    private String sevenEndTime;
-
-    /**
-     * 第八节课开始时间
-     */
-    @ExcelProperty(value = "第八节课开始时间")
-    private String eightStartTime;
-
-    /**
-     * 第八节课结束时间
-     */
-    @ExcelProperty(value = "第八节课结束时间")
-    private String eightEndTime;
+    @ExcelProperty(value = "课程结束时间")
+    private String endTime;
 
     /**
      * 备注

+ 24 - 82
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CourseTableVo.java

@@ -68,100 +68,30 @@ public class CourseTableVo implements Serializable {
     private String week;
 
     /**
-     * 第节课
+     * 第节课
      */
-    @ExcelProperty(value = "第节课")
-    private String oneClass;
+    @ExcelProperty(value = "第节课")
+    private Long classNumber;
 
-    /**
-     * 第一节课老师
-     */
-    @ExcelProperty(value = "第一节课老师")
-    private String oneTeacher;
-
-    /**
-     * 第二节课
-     */
-    @ExcelProperty(value = "第二节课")
-    private String twoClass;
-
-    /**
-     * 第二节课老师
-     */
-    @ExcelProperty(value = "第二节课老师")
-    private String twoTeacher;
-
-    /**
-     * 第三节课
-     */
-    @ExcelProperty(value = "第三节课")
-    private String threeClass;
-
-    /**
-     * 第三节课老师
-     */
-    @ExcelProperty(value = "第三节课老师")
-    private String threeTeacher;
-
-    /**
-     * 第四节课
-     */
-    @ExcelProperty(value = "第四节课")
-    private String fourClass;
-
-    /**
-     * 第四节课老师
-     */
-    @ExcelProperty(value = "第四节课老师")
-    private String fourTeacher;
-
-    /**
-     * 第五节课
-     */
-    @ExcelProperty(value = "第五节课")
-    private String fiveClass;
 
     /**
-     * 第五节课老师
+     * 时段:AM:上午,PM:下午,NIGHT:晚上
      */
-    @ExcelProperty(value = "第五节课老师")
-    private String fiveTeacher;
+    @ExcelProperty(value = "时段:AM:上午,PM:下午,NIGHT:晚上")
+    private String timeFrame;
 
-    /**
-     * 第六节课
-     */
-    @ExcelProperty(value = "第六节课")
-    private String sixClass;
 
     /**
-     * 第六节课老师
+     * 课程名称
      */
-    @ExcelProperty(value = "第六节课老师")
-    private String sixTeacher;
+    @ExcelProperty(value = "课程名称")
+    private String courseName;
 
     /**
-     * 第七节
+     * 课程老师
      */
-    @ExcelProperty(value = "第七节课")
-    private String sevenClass;
-
-    /**
-     * 第七节课老师
-     */
-    @ExcelProperty(value = "第七节课老师")
-    private String sevenTeacher;
-
-    /**
-     * 第八节课
-     */
-    @ExcelProperty(value = "第八节课")
-    private String eightClass;
-
-    /**
-     * 第八节课老师
-     */
-    @ExcelProperty(value = "第八节课老师")
-    private String eightTeacher;
+    @ExcelProperty(value = "课程老师")
+    private String courseTeacher;
 
     /**
      * 备注
@@ -209,4 +139,16 @@ public class CourseTableVo implements Serializable {
     @TableField(exist = false)
     List<String> teacherClassName;
 
+    /**
+     * 是否是老师自己的课
+     */
+    @TableField(exist = false)
+    Boolean teacherType= false;
+
+    /**
+     * 是否被换课程
+     */
+    @TableField(exist = false)
+    Boolean classType= false;
+
 }

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveCourseMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.AskLeaveCourse;
+import org.dromara.system.domain.vo.AskLeaveCourseVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 请假课程信息Mapper接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface AskLeaveCourseMapper extends BaseMapperPlus<AskLeaveCourse, AskLeaveCourseVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveFjMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.AskLeaveFj;
+import org.dromara.system.domain.vo.AskLeaveFjVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 请假附件Mapper接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface AskLeaveFjMapper extends BaseMapperPlus<AskLeaveFj, AskLeaveFjVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AskLeaveMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.AskLeave;
+import org.dromara.system.domain.vo.AskLeaveVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 请假Mapper接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface AskLeaveMapper extends BaseMapperPlus<AskLeave, AskLeaveVo> {
+
+}

+ 8 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableMapper.java

@@ -1,10 +1,15 @@
 package org.dromara.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Param;
 import org.dromara.system.domain.CourseTable;
 import org.dromara.system.domain.vo.CourseTableVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
+import java.util.List;
+
 /**
  * 课程Mapper接口
  *
@@ -13,6 +18,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface CourseTableMapper extends BaseMapperPlus<CourseTable, CourseTableVo> {
 
-    CourseTableVo selectCourseTableByClassIdAndWeek(@Param("classId") Long classId, @Param("week")int week);
+    List<CourseTableVo> selectCourseTableByClassIdAndWeek(@Param("classId") Long classId, @Param("week")int week);
 
+    @InterceptorIgnore(tenantLine = "1")
+    List<CourseTableVo> selectCourseVoList(@Param(Constants.WRAPPER)LambdaQueryWrapper<CourseTable> lqw);
 }

+ 3 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CourseTableTimeMapper.java

@@ -4,6 +4,8 @@ import org.dromara.system.domain.CourseTableTime;
 import org.dromara.system.domain.vo.CourseTableTimeVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
+import java.util.List;
+
 /**
  * 课程-时间Mapper接口
  *
@@ -12,6 +14,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface CourseTableTimeMapper extends BaseMapperPlus<CourseTableTime, CourseTableTimeVo> {
 
-    CourseTableTimeVo selectCourseTableTimeBySchoolId(Long schoolId);
+    List<CourseTableTimeVo> selectCourseTableTimeBySchoolId(Long schoolId);
 
 }

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/FormalTeacherClassMapper.java

@@ -69,4 +69,7 @@ public interface FormalTeacherClassMapper extends BaseMapperPlus<FormalTeacherCl
     void deleteFormalTeacherClassByTeacherId(Long userId);
 
     List<FormalTeacherClassVo> queryMapperList(FormalTeacherClassBo formalTeacherClass);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<FormalTeacherClassVo> getTeacherClassAll(Long classId);
 }

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/RegisterTeacherMapper.java

@@ -37,4 +37,7 @@ public interface RegisterTeacherMapper extends BaseMapperPlus<RegisterTeacher, R
 
     @InterceptorIgnore(tenantLine = "true")
     Boolean deleteRegisterTeacherByIds(Long[] ids);
+
+    @InterceptorIgnore(tenantLine = "true")
+    RegisterTeacherVo selectVoByIdMapper(Long id);
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java

@@ -143,6 +143,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
         @DataColumn(key = "deptName", value = "dept_id"),
         @DataColumn(key = "userName", value = "user_id")
     })
+    @InterceptorIgnore(tenantLine = "true")
     int updateById(@Param(Constants.ENTITY) SysUser user);
 
     @InterceptorIgnore(tenantLine = "1")
@@ -153,6 +154,5 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
 
 
     @InterceptorIgnore(tenantLine = "true")
-
     int resetUserPwdByUserName(@Param("userName") String userName, @Param("password") String password);
 }

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveCourseService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+
+import org.dromara.system.domain.vo.AskLeaveCourseVo;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 请假课程信息Service接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface IAskLeaveCourseService {
+
+    /**
+     * 查询请假课程信息
+     */
+    AskLeaveCourseVo queryById(Long id);
+
+    /**
+     * 查询请假课程信息列表
+     */
+    TableDataInfo<AskLeaveCourseVo> queryPageList(AskLeaveCourseBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询请假课程信息列表
+     */
+    List<AskLeaveCourseVo> queryList(AskLeaveCourseBo bo);
+
+    /**
+     * 新增请假课程信息
+     */
+    Boolean insertByBo(AskLeaveCourseBo bo);
+
+    /**
+     * 修改请假课程信息
+     */
+    Boolean updateByBo(AskLeaveCourseBo bo);
+
+    /**
+     * 校验并批量删除请假课程信息信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveFjService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.AskLeaveFj;
+import org.dromara.system.domain.vo.AskLeaveFjVo;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 请假附件Service接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface IAskLeaveFjService {
+
+    /**
+     * 查询请假附件
+     */
+    AskLeaveFjVo queryById(Long id);
+
+    /**
+     * 查询请假附件列表
+     */
+    TableDataInfo<AskLeaveFjVo> queryPageList(AskLeaveFjBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询请假附件列表
+     */
+    List<AskLeaveFjVo> queryList(AskLeaveFjBo bo);
+
+    /**
+     * 新增请假附件
+     */
+    Boolean insertByBo(AskLeaveFjBo bo);
+
+    /**
+     * 修改请假附件
+     */
+    Boolean updateByBo(AskLeaveFjBo bo);
+
+    /**
+     * 校验并批量删除请假附件信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 53 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAskLeaveService.java

@@ -0,0 +1,53 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.AskLeave;
+import org.dromara.system.domain.vo.AskLeaveVo;
+import org.dromara.system.domain.bo.AskLeaveBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 请假Service接口
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+public interface IAskLeaveService {
+
+    /**
+     * 查询请假
+     */
+    AskLeaveVo queryById(Long id);
+
+    /**
+     * 查询请假列表
+     */
+    TableDataInfo<AskLeaveVo> queryPageList(AskLeaveBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询请假列表
+     */
+    List<AskLeaveVo> queryList(AskLeaveBo bo);
+
+    /**
+     * 新增请假
+     */
+    Boolean insertByBo(AskLeaveBo bo);
+
+    /**
+     * 修改请假
+     */
+    Boolean updateByBo(AskLeaveBo bo);
+
+    /**
+     * 校验并批量删除请假信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    int deleteWithValidById(Long id, Boolean b);
+
+    int sh(AskLeaveBo bo);
+}

+ 9 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableService.java

@@ -2,6 +2,7 @@ package org.dromara.system.service;
 
 import org.dromara.common.core.domain.R;
 import org.dromara.system.domain.CourseTable;
+import org.dromara.system.domain.list.CourseTableList;
 import org.dromara.system.domain.vo.CourseTableVo;
 import org.dromara.system.domain.bo.CourseTableBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -27,7 +28,7 @@ public interface ICourseTableService {
     /**
      * 查询课程列表
      */
-    TableDataInfo<CourseTableVo> queryPageList(CourseTableBo bo, PageQuery pageQuery);
+    TableDataInfo<List<CourseTableVo>> queryPageList(CourseTableBo bo, PageQuery pageQuery);
 
     /**
      * 查询课程列表
@@ -37,12 +38,12 @@ public interface ICourseTableService {
     /**
      * 新增课程
      */
-    R<Void> insertByBo(CourseTableBo bo);
+    R<Void> insertByBo(CourseTableList boList);
 
     /**
      * 修改课程
      */
-    Boolean updateByBo(CourseTableBo bo);
+    Boolean updateByBo(CourseTableList boList);
 
     /**
      * 校验并批量删除课程信息
@@ -51,5 +52,9 @@ public interface ICourseTableService {
 
     R<Map<String, Object>> now(Long schoolId, Long classId);
 
-    TableDataInfo<CourseTableVo> queryPagePcList(CourseTableBo bo, PageQuery pageQuery);
+    TableDataInfo<List<CourseTableVo>> queryPagePcList(CourseTableBo bo, PageQuery pageQuery);
+
+    R<List<CourseTableVo>> dataCourse(CourseTableBo bo);
+
+    int deleteWithValidBySchoolId(String schoolId, String classId,String week);
 }

+ 5 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICourseTableTimeService.java

@@ -1,6 +1,7 @@
 package org.dromara.system.service;
 
 import org.dromara.system.domain.CourseTableTime;
+import org.dromara.system.domain.list.CourseTableTimeListVo;
 import org.dromara.system.domain.vo.CourseTableTimeVo;
 import org.dromara.system.domain.bo.CourseTableTimeBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -35,15 +36,17 @@ public interface ICourseTableTimeService {
     /**
      * 新增课程-时间
      */
-    Boolean insertByBo(CourseTableTimeBo bo);
+    Boolean insertByBo(CourseTableTimeListVo boList);
 
     /**
      * 修改课程-时间
      */
-    Boolean updateByBo(CourseTableTimeBo bo);
+    Boolean updateByBo(CourseTableTimeListVo boList);
 
     /**
      * 校验并批量删除课程-时间信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    int deleteWithValidBySchoolId(String schoolId);
 }

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalParentsStudentService.java

@@ -48,4 +48,6 @@ public interface IFormalParentsStudentService {
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     TableDataInfo<FormalParentsStudentVo> selectFormalParentsStudentListNoPage(FormalParentsStudentBo bo);
+
+    List<FormalParentsStudentVo> getParentsStudentAll();
 }

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IFormalTeacherClassService.java

@@ -54,4 +54,6 @@ public interface IFormalTeacherClassService {
     TableDataInfo<FormalTeacherClassVo> selectFormalTeacherClassListNoPage(FormalTeacherClassBo bo);
 
     List<FormalTeacherClassVo> getTeacherClass(String teacherId);
+
+    List<FormalTeacherClassVo> getTeacherClassAll(Long classId);
 }

+ 114 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveCourseServiceImpl.java

@@ -0,0 +1,114 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.system.domain.vo.AskLeaveCourseVo;
+import org.dromara.system.domain.AskLeaveCourse;
+import org.dromara.system.mapper.AskLeaveCourseMapper;
+import org.dromara.system.service.IAskLeaveCourseService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 请假课程信息Service业务层处理
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@RequiredArgsConstructor
+@Service
+public class AskLeaveCourseServiceImpl implements IAskLeaveCourseService {
+
+    private final AskLeaveCourseMapper baseMapper;
+
+    /**
+     * 查询请假课程信息
+     */
+    @Override
+    public AskLeaveCourseVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询请假课程信息列表
+     */
+    @Override
+    public TableDataInfo<AskLeaveCourseVo> queryPageList(AskLeaveCourseBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<AskLeaveCourse> lqw = buildQueryWrapper(bo);
+        Page<AskLeaveCourseVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询请假课程信息列表
+     */
+    @Override
+    public List<AskLeaveCourseVo> queryList(AskLeaveCourseBo bo) {
+        LambdaQueryWrapper<AskLeaveCourse> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<AskLeaveCourse> buildQueryWrapper(AskLeaveCourseBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<AskLeaveCourse> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getLeaveId() != null, AskLeaveCourse::getLeaveId, bo.getLeaveId());
+        lqw.eq(StringUtils.isNotBlank(bo.getCourseDate()), AskLeaveCourse::getCourseDate, bo.getCourseDate());
+        lqw.eq(StringUtils.isNotBlank(bo.getWeek()), AskLeaveCourse::getWeek, bo.getWeek());
+        lqw.eq(bo.getClassNumber() != null, AskLeaveCourse::getClassNumber, bo.getClassNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getTimeFrame()), AskLeaveCourse::getTimeFrame, bo.getTimeFrame());
+        lqw.like(StringUtils.isNotBlank(bo.getCourseName()), AskLeaveCourse::getCourseName, bo.getCourseName());
+        return lqw;
+    }
+
+    /**
+     * 新增请假课程信息
+     */
+    @Override
+    public Boolean insertByBo(AskLeaveCourseBo bo) {
+        AskLeaveCourse add = MapstructUtils.convert(bo, AskLeaveCourse.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改请假课程信息
+     */
+    @Override
+    public Boolean updateByBo(AskLeaveCourseBo bo) {
+        AskLeaveCourse update = MapstructUtils.convert(bo, AskLeaveCourse.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(AskLeaveCourse entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除请假课程信息
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 112 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveFjServiceImpl.java

@@ -0,0 +1,112 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+import org.dromara.system.domain.vo.AskLeaveFjVo;
+import org.dromara.system.domain.AskLeaveFj;
+import org.dromara.system.mapper.AskLeaveFjMapper;
+import org.dromara.system.service.IAskLeaveFjService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 请假附件Service业务层处理
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@RequiredArgsConstructor
+@Service
+public class AskLeaveFjServiceImpl implements IAskLeaveFjService {
+
+    private final AskLeaveFjMapper baseMapper;
+
+    /**
+     * 查询请假附件
+     */
+    @Override
+    public AskLeaveFjVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询请假附件列表
+     */
+    @Override
+    public TableDataInfo<AskLeaveFjVo> queryPageList(AskLeaveFjBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<AskLeaveFj> lqw = buildQueryWrapper(bo);
+        Page<AskLeaveFjVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询请假附件列表
+     */
+    @Override
+    public List<AskLeaveFjVo> queryList(AskLeaveFjBo bo) {
+        LambdaQueryWrapper<AskLeaveFj> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<AskLeaveFj> buildQueryWrapper(AskLeaveFjBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<AskLeaveFj> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getLeaveId() != null, AskLeaveFj::getLeaveId, bo.getLeaveId());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), AskLeaveFj::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getUrl()), AskLeaveFj::getUrl, bo.getUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getCreateDate()), AskLeaveFj::getCreateDate, bo.getCreateDate());
+        return lqw;
+    }
+
+    /**
+     * 新增请假附件
+     */
+    @Override
+    public Boolean insertByBo(AskLeaveFjBo bo) {
+        AskLeaveFj add = MapstructUtils.convert(bo, AskLeaveFj.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改请假附件
+     */
+    @Override
+    public Boolean updateByBo(AskLeaveFjBo bo) {
+        AskLeaveFj update = MapstructUtils.convert(bo, AskLeaveFj.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(AskLeaveFj entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除请假附件
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 238 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AskLeaveServiceImpl.java

@@ -0,0 +1,238 @@
+package org.dromara.system.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.AskLeaveCourse;
+import org.dromara.system.domain.AskLeaveFj;
+import org.dromara.system.domain.SysUser;
+import org.dromara.system.domain.bo.AskLeaveCourseBo;
+import org.dromara.system.domain.bo.AskLeaveFjBo;
+import org.dromara.system.domain.vo.AskLeaveCourseVo;
+import org.dromara.system.domain.vo.AskLeaveFjVo;
+import org.dromara.system.domain.vo.CourseTableVo;
+import org.dromara.system.mapper.AskLeaveCourseMapper;
+import org.dromara.system.mapper.AskLeaveFjMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.AskLeaveBo;
+import org.dromara.system.domain.vo.AskLeaveVo;
+import org.dromara.system.domain.AskLeave;
+import org.dromara.system.mapper.AskLeaveMapper;
+import org.dromara.system.service.IAskLeaveService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 请假Service业务层处理
+ *
+ * @author boman
+ * @date 2024-11-04
+ */
+@RequiredArgsConstructor
+@Service
+public class AskLeaveServiceImpl implements IAskLeaveService {
+
+    private final AskLeaveMapper baseMapper;
+
+    private final AskLeaveCourseMapper askLeaveCourseMapper;
+
+    private final AskLeaveFjMapper askLeaveFjMapper;
+
+    /**
+     * 查询请假
+     */
+    @Override
+    public AskLeaveVo queryById(Long id){
+        AskLeaveVo askLeaveVo = baseMapper.selectVoById(id);
+        //查询请假课程信息
+        List<AskLeaveCourseVo> askLeaveCourseList = askLeaveCourseMapper.selectVoList(new LambdaQueryWrapper<AskLeaveCourse>()
+            .eq(AskLeaveCourse::getLeaveId,askLeaveVo.getId()));
+        askLeaveVo.setAskLeaveCourseBoList(askLeaveCourseList);
+        //查询请假课附件信息
+        List<AskLeaveFjVo> askLeaveFjVoList = askLeaveFjMapper.selectVoList(new LambdaQueryWrapper<AskLeaveFj>()
+            .eq(AskLeaveFj::getLeaveId,askLeaveVo.getId()));
+
+        askLeaveVo.setAskLeaveFjBoList(askLeaveFjVoList);
+        return askLeaveVo;
+    }
+
+    /**
+     * 查询请假列表
+     */
+    @Override
+    public TableDataInfo<AskLeaveVo> queryPageList(AskLeaveBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<AskLeave> lqw = buildQueryWrapper(bo);
+        Page<AskLeaveVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+
+        List<AskLeaveVo> askLeaveVoList = result.getRecords();
+        for (AskLeaveVo askLeaveVo : askLeaveVoList) {
+            List<AskLeaveFjVo> askLeaveFjVoList = askLeaveFjMapper.selectVoList(new LambdaQueryWrapper<AskLeaveFj>()
+                .eq(AskLeaveFj::getLeaveId,askLeaveVo.getId()));
+
+            askLeaveVo.setAskLeaveFjBoList(askLeaveFjVoList);
+        }
+
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询请假列表
+     */
+    @Override
+    public List<AskLeaveVo> queryList(AskLeaveBo bo) {
+        LambdaQueryWrapper<AskLeave> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<AskLeave> buildQueryWrapper(AskLeaveBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<AskLeave> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), AskLeave::getSchoolId, bo.getSchoolId());
+        lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), AskLeave::getSchoolName, bo.getSchoolName());
+        lqw.eq(StringUtils.isNotBlank(bo.getClassId()), AskLeave::getClassId, bo.getClassId());
+        lqw.like(StringUtils.isNotBlank(bo.getClassName()), AskLeave::getClassName, bo.getClassName());
+        lqw.like(StringUtils.isNotBlank(bo.getLeaveName()), AskLeave::getLeaveName, bo.getLeaveName());
+        lqw.eq(bo.getLeaveType() != null, AskLeave::getLeaveType, bo.getLeaveType());
+        lqw.eq(StringUtils.isNotBlank(bo.getDescription()), AskLeave::getDescription, bo.getDescription());
+        lqw.eq(StringUtils.isNotBlank(bo.getLeaveDuration()), AskLeave::getLeaveDuration, bo.getLeaveDuration());
+        lqw.eq(StringUtils.isNotBlank(bo.getLeaveFrame()), AskLeave::getLeaveFrame, bo.getLeaveFrame());
+        lqw.eq(StringUtils.isNotBlank(bo.getExamineId()), AskLeave::getExamineId, bo.getExamineId());
+        lqw.eq(StringUtils.isNotBlank(bo.getExamineResult()), AskLeave::getExamineResult, bo.getExamineResult());
+        lqw.like(StringUtils.isNotBlank(bo.getExamineName()), AskLeave::getExamineName, bo.getExamineName());
+        return lqw;
+    }
+
+    /**
+     * 新增请假
+     */
+    @Override
+    @Transactional
+    public Boolean insertByBo(AskLeaveBo bo) {
+        bo.setCreateTime(DateUtils.getNowDate());
+        bo.setUpdateTime(DateUtils.getNowDate());
+        AskLeave add = MapstructUtils.convert(bo, AskLeave.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        //请假课程信息
+        List<AskLeaveCourseBo> askLeaveCourseBoList = bo.getAskLeaveCourseBoList();
+        for (AskLeaveCourseBo askLeaveCourseBo : askLeaveCourseBoList) {
+            askLeaveCourseBo.setLeaveId(bo.getId());
+            askLeaveCourseBo.setCreateTime(DateUtils.getNowDate());
+            askLeaveCourseBo.setUpdateTime(DateUtils.getNowDate());
+            AskLeaveCourse askLeaveCourse = MapstructUtils.convert(askLeaveCourseBo, AskLeaveCourse.class);
+            askLeaveCourseMapper.insert(askLeaveCourse);
+        }
+        //附件信息
+        List<AskLeaveFjBo> askLeaveFjBoList = bo.getAskLeaveFjBoList();
+        if(askLeaveFjBoList!=null && askLeaveFjBoList.size()>0){
+            for (AskLeaveFjBo askLeaveFjBo : askLeaveFjBoList) {
+                askLeaveFjBo.setLeaveId(bo.getId());
+                askLeaveFjBo.setCreateTime(DateUtils.getNowDate());
+                askLeaveFjBo.setUpdateTime(DateUtils.getNowDate());
+                AskLeaveFj askLeaveFj = MapstructUtils.convert(askLeaveFjBo, AskLeaveFj.class);
+                askLeaveFjMapper.insert(askLeaveFj);
+            }
+
+        }
+
+        return flag;
+    }
+
+    /**
+     * 修改请假
+     */
+    @Override
+    @Transactional
+    public Boolean updateByBo(AskLeaveBo bo) {
+
+
+        int index = 0;
+        AskLeave update = MapstructUtils.convert(bo, AskLeave.class);
+        validEntityBeforeSave(update);
+        index = baseMapper.updateById(update);
+        //删除原来的请假课程信息
+        askLeaveCourseMapper.delete(new LambdaQueryWrapper<AskLeaveCourse>()
+          .eq(AskLeaveCourse::getLeaveId,bo.getId()));
+        //请假课程信息
+        List<AskLeaveCourseBo> askLeaveCourseBoList = bo.getAskLeaveCourseBoList();
+        for (AskLeaveCourseBo askLeaveCourseBo : askLeaveCourseBoList) {
+            askLeaveCourseBo.setLeaveId(bo.getId());
+            askLeaveCourseBo.setCreateTime(DateUtils.getNowDate());
+            askLeaveCourseBo.setUpdateTime(DateUtils.getNowDate());
+            AskLeaveCourse askLeaveCourse = MapstructUtils.convert(askLeaveCourseBo, AskLeaveCourse.class);
+            askLeaveCourseMapper.insert(askLeaveCourse);
+        }
+        //删除附件
+        askLeaveFjMapper.delete(new LambdaQueryWrapper<AskLeaveFj>()
+            .eq(AskLeaveFj::getLeaveId,bo.getId()));
+        //附件信息
+        List<AskLeaveFjBo> askLeaveFjBoList = bo.getAskLeaveFjBoList();
+        if(askLeaveFjBoList!=null && askLeaveFjBoList.size()>0){
+            for (AskLeaveFjBo askLeaveFjBo : askLeaveFjBoList) {
+                askLeaveFjBo.setLeaveId(bo.getId());
+                askLeaveFjBo.setCreateTime(DateUtils.getNowDate());
+                askLeaveFjBo.setUpdateTime(DateUtils.getNowDate());
+                AskLeaveFj askLeaveFj = MapstructUtils.convert(askLeaveFjBo, AskLeaveFj.class);
+                askLeaveFjMapper.insert(askLeaveFj);
+            }
+        }
+        return  index> 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(AskLeave entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除请假
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public int deleteWithValidById(Long id, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        //查询信息
+        AskLeaveVo askLeaveFjVo = baseMapper.selectVoById(id);
+        //删除请假课程信息
+        askLeaveCourseMapper.delete(new LambdaQueryWrapper<AskLeaveCourse>()
+            .eq(AskLeaveCourse::getLeaveId,askLeaveFjVo.getId()));
+        //删除附件
+        askLeaveFjMapper.delete(new LambdaQueryWrapper<AskLeaveFj>()
+            .eq(AskLeaveFj::getLeaveId,askLeaveFjVo.getId()));
+
+        baseMapper.deleteById(id);
+        return 0;
+    }
+
+    @Override
+    public int sh(AskLeaveBo bo) {
+        AskLeave update = MapstructUtils.convert(bo, AskLeave.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update);
+    }
+}

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseChangeServiceImpl.java

@@ -121,11 +121,13 @@ public class CourseChangeServiceImpl implements ICourseChangeService {
         lqw.eq(bo.getSubjectClassId()!= null, CourseChange::getSubjectClassId, bo.getSubjectClassId());
         lqw.eq(StringUtils.isNotBlank(bo.getSubjectClass()), CourseChange::getSubjectClass, bo.getSubjectClass());
         lqw.eq(StringUtils.isNotBlank(bo.getSubject()), CourseChange::getSubject, bo.getSubject());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsFrame()), CourseChange::getIsFrame, bo.getIsFrame());
         lqw.eq(StringUtils.isNotBlank(bo.getIsNum()), CourseChange::getIsNum, bo.getIsNum());
         lqw.eq(bo.getSubjectTime() != null, CourseChange::getSubjectTime, bo.getSubjectTime());
         lqw.eq(StringUtils.isNotBlank(bo.getSubjectWeek()), CourseChange::getSubjectWeek, bo.getSubjectWeek());
         lqw.eq(StringUtils.isNotBlank(bo.getBePersonnel()), CourseChange::getBePersonnel, bo.getBePersonnel());
         lqw.eq(StringUtils.isNotBlank(bo.getBeSubject()), CourseChange::getBeSubject, bo.getBeSubject());
+        lqw.eq(StringUtils.isNotBlank(bo.getBeIsFrame()), CourseChange::getBeIsFrame, bo.getBeIsFrame());
         lqw.eq(StringUtils.isNotBlank(bo.getBeIsNum()), CourseChange::getBeIsNum, bo.getBeIsNum());
         lqw.eq(bo.getBeSubjectTime() != null, CourseChange::getBeSubjectTime, bo.getBeSubjectTime());
         lqw.eq(StringUtils.isNotBlank(bo.getWeek()), CourseChange::getWeek, bo.getWeek());

+ 167 - 184
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableServiceImpl.java

@@ -1,6 +1,8 @@
 package org.dromara.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.SneakyThrows;
+import org.apache.poi.util.StringUtil;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.dto.RoleDTO;
 import org.dromara.common.core.domain.model.LoginUser;
@@ -16,6 +18,7 @@ import lombok.RequiredArgsConstructor;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.bo.FormalTeacherClassBo;
+import org.dromara.system.domain.list.CourseTableList;
 import org.dromara.system.domain.vo.CourseChangeVo;
 import org.dromara.system.domain.vo.CourseTableTimeVo;
 import org.dromara.system.domain.vo.FormalTeacherClassVo;
@@ -29,6 +32,7 @@ import org.dromara.system.domain.vo.CourseTableVo;
 import org.dromara.system.domain.CourseTable;
 import org.dromara.system.mapper.CourseTableMapper;
 import org.dromara.system.service.ICourseTableService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -55,7 +59,7 @@ public class CourseTableServiceImpl implements ICourseTableService {
      * 查询课程
      */
     @Override
-    public CourseTableVo queryById(Long id){
+    public CourseTableVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -64,23 +68,26 @@ public class CourseTableServiceImpl implements ICourseTableService {
      */
     @SneakyThrows
     @Override
-    public TableDataInfo<CourseTableVo> queryPageList(CourseTableBo bo, PageQuery pageQuery) {
-        if(StringUtils.isEmpty(bo.getClassId()) || StringUtils.isEmpty(bo.getSchoolId())){
+    public TableDataInfo<List<CourseTableVo>> queryPageList(CourseTableBo bo, PageQuery pageQuery) {
+        if (StringUtils.isEmpty(bo.getClassId()) || StringUtils.isEmpty(bo.getSchoolId())) {
             return TableDataInfo.build(new ArrayList<>());
         }
         LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
         Page<CourseTableVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         List<CourseTableVo> courseTableList = result.getRecords();
 
+        Map<String, List<CourseTableVo>> groupedByType = courseTableList.stream().collect(Collectors.groupingBy(CourseTableVo::getWeek));
+
+        List<List<CourseTableVo>> groupedList = new ArrayList<>(groupedByType.values());
 
         //获取本周一和本周五的时间
         String fist = DateUtils.getTimeIntervalOne(new Date());
         String five = DateUtils.getTimeIntervalFive(fist);
         List<CourseChangeVo> courseChangeList = courseChangeMapper.selectCourseChangeListByEdit(bo.getClassId(), fist, five);
-        if (courseChangeList != null && courseChangeList.size() >0){
-            for (CourseTableVo table : courseTableList) {
+        if (courseChangeList != null && courseChangeList.size() > 0) {
+            for (List<CourseTableVo> courseTableVos : groupedList) {
                 //将修改后的课程放入当前周课表
-                changeCourseTable(table,courseChangeList,fist,five);
+                changeCourseTable(courseTableVos, courseChangeList, fist, five);
             }
 
             //如果当前角色是老师,获取老师的课程
@@ -90,7 +97,7 @@ public class CourseTableServiceImpl implements ICourseTableService {
             if (params != null && params.size() > 0) {
                 ro = (String) params.get("role");
             }
-            if(StringUtils.isNotEmpty(ro) && "teacher".equals(ro)){
+            if (StringUtils.isNotEmpty(ro) && "teacher".equals(ro)) {
                 //查询老师当前班级所带的课
                 FormalTeacherClassBo ftbo = new FormalTeacherClassBo();
                 ftbo.setClassId(Long.valueOf(bo.getClassId()));
@@ -101,27 +108,32 @@ public class CourseTableServiceImpl implements ICourseTableService {
             }
         }
 
-        return TableDataInfo.build(result);
+        return TableDataInfo.build(groupedList);
     }
 
     @SneakyThrows
     @Override
-    public TableDataInfo<CourseTableVo> queryPagePcList(CourseTableBo bo, PageQuery pageQuery) {
-        if(StringUtils.isEmpty(bo.getClassId()) || StringUtils.isEmpty(bo.getSchoolId())){
+    public TableDataInfo<List<CourseTableVo>> queryPagePcList(CourseTableBo bo, PageQuery pageQuery) {
+        if (StringUtils.isEmpty(bo.getClassId()) || StringUtils.isEmpty(bo.getSchoolId())) {
             return TableDataInfo.build(new ArrayList<>());
         }
         LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
         Page<CourseTableVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         List<CourseTableVo> courseTableList = result.getRecords();
 
+
+        Map<String, List<CourseTableVo>> groupedByType = courseTableList.stream().collect(Collectors.groupingBy(CourseTableVo::getWeek));
+
+        List<List<CourseTableVo>> groupedList = new ArrayList<>(groupedByType.values());
+
         //获取本周一和本周五的时间
         String fist = DateUtils.getTimeIntervalOne(new Date());
         String five = DateUtils.getTimeIntervalFive(fist);
         List<CourseChangeVo> courseChangeList = courseChangeMapper.selectCourseChangeListByEdit(bo.getClassId(), fist, five);
-        if (courseChangeList != null && courseChangeList.size() >0){
-            for (CourseTableVo table : courseTableList) {
+        if (courseChangeList != null && courseChangeList.size() > 0) {
+            for (List<CourseTableVo> courseTableVos : groupedList) {
                 //将修改后的课程放入当前周课表
-                changeCourseTable(table,courseChangeList,fist,five);
+                changeCourseTable(courseTableVos, courseChangeList, fist, five);
             }
 
             //如果当前角色是老师,获取老师的课程
@@ -146,7 +158,33 @@ public class CourseTableServiceImpl implements ICourseTableService {
             }
         }
 
-        return TableDataInfo.build(result);
+        return TableDataInfo.build(groupedList);
+    }
+
+    /**
+     * 根据时间查询课表
+     *
+     * @return
+     */
+    @SneakyThrows
+    @Override
+    public R<List<CourseTableVo>> dataCourse(CourseTableBo bo) {
+        //判断传入的时间是周几
+        int dayForWeek = DateUtils.dayForWeek(bo.getData());
+        bo.setWeek(Integer.toString(dayForWeek));
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        List<CourseTableVo> CourseTableVoList = baseMapper.selectCourseVoList(lqw);
+        return R.ok(CourseTableVoList);
+    }
+
+    @Override
+    public int deleteWithValidBySchoolId(String schoolId, String classId, String week) {
+        CourseTableBo bo = new CourseTableBo();
+        bo.setSchoolId(schoolId);
+        bo.setClassId(classId);
+        bo.setWeek(week);
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        return baseMapper.delete(lqw);
     }
 
 
@@ -155,109 +193,49 @@ public class CourseTableServiceImpl implements ICourseTableService {
         for (CourseTableVo table : courseTableList) {
             table.setTeacherClassName(disciplineName);
             Set<Long> teacherClassNum = new HashSet<>();
-            if(disciplineName.contains(table.getOneClass())){
-                teacherClassNum.add(1L);
-            }
-            if(disciplineName.contains(table.getTwoClass())){
-                teacherClassNum.add(2L);
-            }
-            if(disciplineName.contains(table.getThreeClass())){
-                teacherClassNum.add(3L);
-            }
-            if(disciplineName.contains(table.getFourClass())){
-                teacherClassNum.add(4L);
-            }
-            if(disciplineName.contains(table.getFiveClass())){
-                teacherClassNum.add(5L);
-            }
-            if(disciplineName.contains(table.getSixClass())){
-                teacherClassNum.add(6L);
-            }
-            if(disciplineName.contains(table.getSevenClass())){
-                teacherClassNum.add(7L);
+            if (disciplineName.contains(table.getCourseName())) {
+                table.setTeacherType(true);
             }
-            if(disciplineName.contains(table.getEightClass())){
-                teacherClassNum.add(8L);
-            }
-            table.setTeacherClassNum(teacherClassNum);
         }
     }
 
     @SneakyThrows
-    private void changeCourseTable(CourseTableVo table, List<CourseChangeVo> courseChangeList, String fist, String five) {
+    private void changeCourseTable(List<CourseTableVo> courseTableVos, List<CourseChangeVo> courseChangeList, String fist, String five) {
         String format = "yyyy-MM-dd";
         Set<Long> classNum = new HashSet<>();
         for (CourseChangeVo courseChange : courseChangeList) {
             //调课的时间是否在本周
-            if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getSubjectTime()),format)){
-                if(StringUtils.equals(courseChange.getSubjectWeek(),table.getWeek())){
-                    classNum.add(Long.valueOf(courseChange.getIsNum()));
-                    //第几节课
-                    if(StringUtils.equals("1",courseChange.getIsNum())){
-                        table.setOneClass(courseChange.getBeSubject());
-                        table.setOneTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("2",courseChange.getIsNum())){
-                        table.setTwoClass(courseChange.getBeSubject());
-                        table.setTwoTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("3",courseChange.getIsNum())){
-                        table.setThreeClass(courseChange.getBeSubject());
-                        table.setThreeTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("4",courseChange.getIsNum())){
-                        table.setFourClass(courseChange.getBeSubject());
-                        table.setFourTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("5",courseChange.getIsNum())){
-                        table.setFiveClass(courseChange.getBeSubject());
-                        table.setFiveTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("6",courseChange.getIsNum())){
-                        table.setSixClass(courseChange.getBeSubject());
-                        table.setSixTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("7",courseChange.getIsNum())){
-                        table.setSevenClass(courseChange.getBeSubject());
-                        table.setSevenTeacher(courseChange.getBePersonnel());
-                    }else if(StringUtils.equals("8",courseChange.getIsNum())){
-                        table.setEightClass(courseChange.getBeSubject());
-                        table.setEightTeacher(courseChange.getBePersonnel());
+            if (DateUtils.isClass(fist, five, DateUtils.dateTime(courseChange.getSubjectTime()), format)) {
+                for (CourseTableVo courseTableVo : courseTableVos) {
+                    if (StringUtils.equals(courseChange.getSubjectWeek(), courseTableVo.getWeek()) && StringUtils.equals(Long.toString(courseTableVo.getClassNumber()), courseChange.getIsNum()) && StringUtils.equals(courseTableVo.getTimeFrame(), courseChange.getIsFrame())) {
+                        classNum.add(Long.valueOf(courseChange.getIsNum()));
+                        courseTableVo.setCourseName(courseChange.getBeSubject());
+                        courseTableVo.setCourseTeacher(courseChange.getBePersonnel());
+                        courseTableVo.setClassType(true);
+                    }
+                    if (StringUtils.equals(courseChange.getSubjectWeek(), courseTableVo.getWeek()) && StringUtils.equals(Long.toString(courseTableVo.getClassNumber()), courseChange.getBeIsNum()) && StringUtils.equals(courseTableVo.getTimeFrame(), courseChange.getBeIsFrame())) {
+                        classNum.add(Long.valueOf(courseChange.getBeIsNum()));
+                        courseTableVo.setCourseName(courseChange.getSubject());
+                        courseTableVo.setCourseTeacher(courseChange.getApplyName());
+                        courseTableVo.setClassType(true);
                     }
                 }
             }
             //被调课是否在本周
-            if(DateUtils.isClass(fist,five,DateUtils.dateTime(courseChange.getBeSubjectTime()),format)) {
-                if(StringUtils.equals(courseChange.getWeek(),table.getWeek())){
-                    classNum.add(Long.valueOf(courseChange.getBeIsNum()));
-                    //第几节课
-                    if(StringUtils.equals("1",courseChange.getBeIsNum())){
-                        table.setOneClass(courseChange.getSubject());
-                        table.setOneTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("2",courseChange.getBeIsNum())){
-                        table.setTwoClass(courseChange.getSubject());
-                        table.setTwoTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("3",courseChange.getBeIsNum())){
-                        table.setThreeClass(courseChange.getSubject());
-                        table.setThreeTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("4",courseChange.getBeIsNum())){
-                        table.setFourClass(courseChange.getSubject());
-                        table.setFourTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("5",courseChange.getBeIsNum())){
-                        table.setFiveClass(courseChange.getSubject());
-                        table.setFiveTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("6",courseChange.getBeIsNum())){
-                        table.setSixClass(courseChange.getSubject());
-                        table.setSixTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("7",courseChange.getBeIsNum())){
-                        table.setSevenClass(courseChange.getSubject());
-                        table.setSevenTeacher(courseChange.getApplyName());
-                    }else if(StringUtils.equals("8",courseChange.getBeIsNum())){
-                        table.setEightClass(courseChange.getSubject());
-                        table.setEightTeacher(courseChange.getApplyName());
+            if (DateUtils.isClass(fist, five, DateUtils.dateTime(courseChange.getBeSubjectTime()), format)) {
+                for (CourseTableVo courseTableVo : courseTableVos) {
+                    if (StringUtils.equals(courseChange.getSubjectWeek(), courseTableVo.getWeek()) && StringUtils.equals(Long.toString(courseTableVo.getClassNumber()), courseChange.getBeIsNum()) && StringUtils.equals(courseTableVo.getTimeFrame(), courseChange.getBeIsFrame())) {
+                        classNum.add(Long.valueOf(courseChange.getBeIsNum()));
+                        courseTableVo.setCourseName(courseChange.getSubject());
+                        courseTableVo.setCourseTeacher(courseChange.getApplyName());
+                        courseTableVo.setClassType(true);
                     }
                 }
             }
         }
-        table.setClassNum(classNum);
     }
 
 
-
     /**
      * 查询课程列表
      */
@@ -268,6 +246,8 @@ public class CourseTableServiceImpl implements ICourseTableService {
     }
 
     private LambdaQueryWrapper<CourseTable> buildQueryWrapper(CourseTableBo bo) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("field(postName,'AM','PM','NIGHT')").toString();
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<CourseTable> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), CourseTable::getSchoolId, bo.getSchoolId());
@@ -275,22 +255,12 @@ public class CourseTableServiceImpl implements ICourseTableService {
         lqw.eq(StringUtils.isNotBlank(bo.getClassId()), CourseTable::getClassId, bo.getClassId());
         lqw.like(StringUtils.isNotBlank(bo.getClassName()), CourseTable::getClassName, bo.getClassName());
         lqw.eq(StringUtils.isNotBlank(bo.getWeek()), CourseTable::getWeek, bo.getWeek());
-        lqw.eq(StringUtils.isNotBlank(bo.getOneClass()), CourseTable::getOneClass, bo.getOneClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getOneTeacher()), CourseTable::getOneTeacher, bo.getOneTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getTwoClass()), CourseTable::getTwoClass, bo.getTwoClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getTwoTeacher()), CourseTable::getTwoTeacher, bo.getTwoTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getThreeClass()), CourseTable::getThreeClass, bo.getThreeClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getThreeTeacher()), CourseTable::getThreeTeacher, bo.getThreeTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getFourClass()), CourseTable::getFourClass, bo.getFourClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getFourTeacher()), CourseTable::getFourTeacher, bo.getFourTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getFiveClass()), CourseTable::getFiveClass, bo.getFiveClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getFiveTeacher()), CourseTable::getFiveTeacher, bo.getFiveTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getSixClass()), CourseTable::getSixClass, bo.getSixClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getSixTeacher()), CourseTable::getSixTeacher, bo.getSixTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getSevenClass()), CourseTable::getSevenClass, bo.getSevenClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getSevenTeacher()), CourseTable::getSevenTeacher, bo.getSevenTeacher());
-        lqw.eq(StringUtils.isNotBlank(bo.getEightClass()), CourseTable::getEightClass, bo.getEightClass());
-        lqw.eq(StringUtils.isNotBlank(bo.getEightTeacher()), CourseTable::getEightTeacher, bo.getEightTeacher());
+        lqw.eq(bo.getClassNumber() != null, CourseTable::getClassNumber, bo.getClassNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getTimeFrame()), CourseTable::getTimeFrame, bo.getTimeFrame());
+        lqw.eq(StringUtils.isNotBlank(bo.getCourseName()), CourseTable::getCourseName, bo.getCourseName());
+        lqw.eq(StringUtils.isNotBlank(bo.getCourseTeacher()), CourseTable::getCourseTeacher, bo.getCourseTeacher());
+        lqw.orderByAsc(CourseTable::getTimeFrame);
+        lqw.orderByAsc(CourseTable::getClassNumber);
         return lqw;
     }
 
@@ -298,23 +268,35 @@ public class CourseTableServiceImpl implements ICourseTableService {
      * 新增课程
      */
     @Override
-    public R<Void> insertByBo(CourseTableBo bo) {
-
+    @Transactional
+    public R<Void> insertByBo(CourseTableList boList) {
+        int index = 0;
         CourseTableBo table = new CourseTableBo();
-        table.setSchoolId(bo.getSchoolId());
-        table.setClassId(bo.getClassId());
-        table.setWeek(bo.getWeek());
+        table.setSchoolId(boList.getSchoolId());
+        table.setClassId(boList.getClassId());
+        table.setWeek(boList.getWeek());
         LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(table);
         List<CourseTableVo> courseTableList = baseMapper.selectVoList(lqw);
-        if(courseTableList!=null && courseTableList.size()>0){
+        if (courseTableList != null && courseTableList.size() > 0) {
             return R.fail("当前课表已存在,请前去修改");
         }
-        bo.setCreateTime(DateUtils.getNowDate());
-        CourseTable add = MapstructUtils.convert(bo, CourseTable.class);
-        validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
-        if (flag) {
-            bo.setId(add.getId());
+        List<CourseTableBo> courseTableBoList = boList.getCourseTableBoList();
+        for (CourseTableBo courseTableBo : courseTableBoList) {
+            courseTableBo.setSchoolId(boList.getSchoolId());
+            courseTableBo.setSchoolName(boList.getSchoolName());
+            courseTableBo.setClassId(boList.getClassId());
+            courseTableBo.setClassName(boList.getClassName());
+            courseTableBo.setWeek(boList.getWeek());
+            courseTableBo.setCreateTime(DateUtils.getNowDate());
+            CourseTable add = MapstructUtils.convert(courseTableBo, CourseTable.class);
+            validEntityBeforeSave(add);
+            int i = baseMapper.insert(add);
+            if (i > 0) {
+                courseTableBo.setId(add.getId());
+                index++;
+            }
+        }
+        if (index > 0) {
             return R.ok();
         }
         return R.fail();
@@ -324,17 +306,39 @@ public class CourseTableServiceImpl implements ICourseTableService {
      * 修改课程
      */
     @Override
-    public Boolean updateByBo(CourseTableBo bo) {
-        bo.setUpdateTime(DateUtils.getNowDate());
-        CourseTable update = MapstructUtils.convert(bo, CourseTable.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
+    @Transactional
+    public Boolean updateByBo(CourseTableList boList) {
+        CourseTableBo bo = new CourseTableBo();
+        bo.setSchoolId(boList.getSchoolId());
+        bo.setClassId(boList.getClassId());
+        bo.setWeek(boList.getWeek());
+        LambdaQueryWrapper<CourseTable> lqw = buildQueryWrapper(bo);
+        baseMapper.delete(lqw);
+        int index = 0;
+        List<CourseTableBo> courseTableBoList = boList.getCourseTableBoList();
+        for (CourseTableBo courseTableBo : courseTableBoList) {
+            courseTableBo.setSchoolId(boList.getSchoolId());
+            courseTableBo.setSchoolName(boList.getSchoolName());
+            courseTableBo.setClassId(boList.getClassId());
+            courseTableBo.setClassName(boList.getClassName());
+            courseTableBo.setWeek(boList.getWeek());
+            //id不存咋新增
+            courseTableBo.setCreateTime(DateUtils.getNowDate());
+            CourseTable add = MapstructUtils.convert(courseTableBo, CourseTable.class);
+            validEntityBeforeSave(add);
+            boolean flag = baseMapper.insert(add) > 0;
+            if (flag) {
+                courseTableBo.setId(add.getId());
+                index++;
+            }
+        }
+        return index > 0;
     }
 
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(CourseTable entity){
+    private void validEntityBeforeSave(CourseTable entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -343,7 +347,7 @@ public class CourseTableServiceImpl implements ICourseTableService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
@@ -357,7 +361,7 @@ public class CourseTableServiceImpl implements ICourseTableService {
         map.put("teacher", "");
         map.put("subject", "");
         //家长端查询下课时间
-        String key =DateUtils.getDate() + ":" + schoolId + ":" + classId;
+        String key = DateUtils.getDate() + ":" + schoolId + ":" + classId;
         //key = 学校id:班级id
         //Redis根据key键,查询对应的值
         String xiakeTime = "";
@@ -365,7 +369,7 @@ public class CourseTableServiceImpl implements ICourseTableService {
         if (StringUtils.isNotEmpty(value)) {
             //延迟放学
             String[] split = value.split(":");
-            if(!"time".equals(split[1])){
+            if (!"time".equals(split[1])) {
                 //下课时间
                 xiakeTime = split[1] + ":" + split[2] + ":" + split[3];
             }
@@ -380,72 +384,51 @@ public class CourseTableServiceImpl implements ICourseTableService {
             return R.ok(map);
         }
         //获取当前账号所属学校时间表
-        CourseTableTimeVo courseTableTime = courseTableTimeMapper.selectCourseTableTimeBySchoolId(schoolId);
-        if (courseTableTime == null) {
+        List<CourseTableTimeVo> courseTableTimeList = courseTableTimeMapper.selectCourseTableTimeBySchoolId(schoolId);
+        if (courseTableTimeList == null && courseTableTimeList.size() <= 0) {
             return R.ok(map);
         }
-        //判断当前时间是第几节课
-        int index = isClass(courseTableTime);
-        if (index == 0) {
+        //返回当前时间所在的课表时间信息
+        CourseTableTimeVo courseTableTime = isClass(courseTableTimeList);
+        if (ObjectUtils.isEmpty(courseTableTime)) {
             return R.ok(map);
         }
         //获取当前班级课程
-        CourseTableVo courseTable = baseMapper.selectCourseTableByClassIdAndWeek(classId, dayForWeek);
-        if (courseTable == null) {
+        List<CourseTableVo> courseTableList = baseMapper.selectCourseTableByClassIdAndWeek(classId, dayForWeek);
+        if (courseTableList == null && courseTableList.size() <= 0) {
             return R.ok(map);
         }
-        if (index == 1) {
-            map.put("teacher", courseTable.getOneTeacher());
-            map.put("subject", courseTable.getOneClass());
-        } else if (index == 2) {
-            map.put("teacher", courseTable.getTwoTeacher());
-            map.put("subject", courseTable.getTwoClass());
-        } else if (index == 3) {
-            map.put("teacher", courseTable.getThreeTeacher());
-            map.put("subject", courseTable.getThreeClass());
-        } else if (index == 4) {
-            map.put("teacher", courseTable.getFourTeacher());
-            map.put("subject", courseTable.getFourClass());
-        } else if (index == 5) {
-            map.put("teacher", courseTable.getFiveTeacher());
-            map.put("subject", courseTable.getFiveClass());
-        } else if (index == 6) {
-            map.put("teacher", courseTable.getSixTeacher());
-            map.put("subject", courseTable.getSixClass());
-        } else if (index == 7) {
-            map.put("teacher", courseTable.getSevenTeacher());
-            map.put("subject", courseTable.getSevenClass());
-        } else if (index == 8) {
-            map.put("teacher", courseTable.getEightTeacher());
-            map.put("subject", courseTable.getEightClass());
+        //获取本周一和本周五的时间
+        String fist = DateUtils.getTimeIntervalOne(new Date());
+        String five = DateUtils.getTimeIntervalFive(fist);
+        List<CourseChangeVo> courseChangeList = courseChangeMapper.selectCourseChangeListByEdit(String.valueOf(classId), fist, five);
+        if (courseChangeList != null && courseChangeList.size() > 0) {
+            //将修改后的课程放入当前周课表
+            changeCourseTable(courseTableList, courseChangeList, fist, five);
         }
 
+        for (CourseTableVo courseTableVo : courseTableList) {
+            if (courseTableTime.getClassNumber() == courseTableVo.getClassNumber() && courseTableTime.getTimeFrame().equals(courseTableVo.getTimeFrame())) {
+                map.put("teacher", courseTableVo.getCourseTeacher());
+                map.put("subject", courseTableVo.getCourseName());
+            }
+
+        }
         return R.ok(map);
     }
 
 
     @SneakyThrows
-    private int isClass(CourseTableTimeVo courseTableTime) {
+    private CourseTableTimeVo isClass(List<CourseTableTimeVo> courseTableTimeList) {
         //获取当前时间
         String nowTime = DateUtils.getNowTime();
-        int index = 0;
-        if (StringUtils.isNotEmpty(courseTableTime.getOneStartTime()) && DateUtils.isClass(courseTableTime.getOneStartTime(), courseTableTime.getOneEndTime(), nowTime, "HH:mm")) {
-            index = 1;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getTwoStartTime()) && DateUtils.isClass(courseTableTime.getTwoStartTime(), courseTableTime.getTwoEndTime(), nowTime, "HH:mm")) {
-            index = 2;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getThreeStartTime()) && DateUtils.isClass(courseTableTime.getThreeStartTime(), courseTableTime.getThreeEndTime(), nowTime, "HH:mm")) {
-            index = 3;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getFourStartTime()) && DateUtils.isClass(courseTableTime.getFourStartTime(), courseTableTime.getFourEndTime(), nowTime, "HH:mm")) {
-            index = 4;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getFiveStartTime()) && DateUtils.isClass(courseTableTime.getFiveStartTime(), courseTableTime.getFiveEndTime(), nowTime, "HH:mm")) {
-            index = 5;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getSixStartTime()) && DateUtils.isClass(courseTableTime.getSixStartTime(), courseTableTime.getSixEndTime(), nowTime, "HH:mm")) {
-            index = 6;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getSevenStartTime()) && DateUtils.isClass(courseTableTime.getSevenStartTime(), courseTableTime.getSevenEndTime(), nowTime, "HH:mm")) {
-            index = 7;
-        } else if (StringUtils.isNotEmpty(courseTableTime.getEightStartTime()) && DateUtils.isClass(courseTableTime.getEightStartTime(), courseTableTime.getEightEndTime(), nowTime, "HH:mm")) {
-            index = 8;
+        for (CourseTableTimeVo courseTableTimeVo : courseTableTimeList) {
+            if (StringUtils.isNotEmpty(courseTableTimeVo.getStartTime()) && DateUtils.isClass(courseTableTimeVo.getStartTime(), courseTableTimeVo.getEndTime(), nowTime, "HH:mm")) {
+                return courseTableTimeVo;
+            }
         }
-        return index;
+        return new CourseTableTimeVo();
     }
+
+
 }

+ 53 - 29
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CourseTableTimeServiceImpl.java

@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.CourseTable;
+import org.dromara.system.domain.list.CourseTableTimeListVo;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.CourseTableTimeBo;
 import org.dromara.system.domain.vo.CourseTableTimeVo;
 import org.dromara.system.domain.CourseTableTime;
 import org.dromara.system.mapper.CourseTableTimeMapper;
 import org.dromara.system.service.ICourseTableTimeService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -35,7 +38,7 @@ public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
      * 查询课程-时间
      */
     @Override
-    public CourseTableTimeVo queryById(Long id){
+    public CourseTableTimeVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -63,22 +66,12 @@ public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
         LambdaQueryWrapper<CourseTableTime> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getSchoolId()), CourseTableTime::getSchoolId, bo.getSchoolId());
         lqw.like(StringUtils.isNotBlank(bo.getSchoolName()), CourseTableTime::getSchoolName, bo.getSchoolName());
-        lqw.eq(StringUtils.isNotBlank(bo.getOneStartTime()), CourseTableTime::getOneStartTime, bo.getOneStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getOneEndTime()), CourseTableTime::getOneEndTime, bo.getOneEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getTwoStartTime()), CourseTableTime::getTwoStartTime, bo.getTwoStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getTwoEndTime()), CourseTableTime::getTwoEndTime, bo.getTwoEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getThreeStartTime()), CourseTableTime::getThreeStartTime, bo.getThreeStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getThreeEndTime()), CourseTableTime::getThreeEndTime, bo.getThreeEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getFourStartTime()), CourseTableTime::getFourStartTime, bo.getFourStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getFourEndTime()), CourseTableTime::getFourEndTime, bo.getFourEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getFiveStartTime()), CourseTableTime::getFiveStartTime, bo.getFiveStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getFiveEndTime()), CourseTableTime::getFiveEndTime, bo.getFiveEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getSixStartTime()), CourseTableTime::getSixStartTime, bo.getSixStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getSixEndTime()), CourseTableTime::getSixEndTime, bo.getSixEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getSevenStartTime()), CourseTableTime::getSevenStartTime, bo.getSevenStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getSevenEndTime()), CourseTableTime::getSevenEndTime, bo.getSevenEndTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getEightStartTime()), CourseTableTime::getEightStartTime, bo.getEightStartTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getEightEndTime()), CourseTableTime::getEightEndTime, bo.getEightEndTime());
+        lqw.eq(bo.getClassNumber() != null, CourseTableTime::getClassNumber, bo.getClassNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getTimeFrame()), CourseTableTime::getTimeFrame, bo.getTimeFrame());
+        lqw.eq(StringUtils.isNotBlank(bo.getStartTime()), CourseTableTime::getStartTime, bo.getStartTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getEndTime()), CourseTableTime::getEndTime, bo.getEndTime());
+        lqw.orderByAsc(CourseTableTime::getTimeFrame);
+        lqw.orderByAsc(CourseTableTime::getClassNumber);
         return lqw;
     }
 
@@ -86,13 +79,21 @@ public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
      * 新增课程-时间
      */
     @Override
-    public Boolean insertByBo(CourseTableTimeBo bo) {
-        CourseTableTime add = MapstructUtils.convert(bo, CourseTableTime.class);
-        validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
-        if (flag) {
-            bo.setId(add.getId());
+    @Transactional
+    public Boolean insertByBo(CourseTableTimeListVo boList) {
+        List<CourseTableTimeBo> CourseTableTimeBoList = boList.getCourseTableTimeBoList();
+        boolean flag = true;
+        for (CourseTableTimeBo courseTableTimeBo : CourseTableTimeBoList) {
+            courseTableTimeBo.setSchoolId(boList.getSchoolId());
+            courseTableTimeBo.setSchoolName(boList.getSchoolName());
+            CourseTableTime add = MapstructUtils.convert(courseTableTimeBo, CourseTableTime.class);
+            validEntityBeforeSave(add);
+            flag = baseMapper.insert(add) > 0;
+            if (flag) {
+                courseTableTimeBo.setId(add.getId());
+            }
         }
+
         return flag;
     }
 
@@ -100,16 +101,30 @@ public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
      * 修改课程-时间
      */
     @Override
-    public Boolean updateByBo(CourseTableTimeBo bo) {
-        CourseTableTime update = MapstructUtils.convert(bo, CourseTableTime.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
+    @Transactional
+    public Boolean updateByBo(CourseTableTimeListVo boList) {
+        //删除
+        CourseTableTimeBo bo = new CourseTableTimeBo();
+        bo.setSchoolId(boList.getSchoolId());
+        LambdaQueryWrapper<CourseTableTime> lqw = buildQueryWrapper(bo);
+        baseMapper.delete(lqw);
+        List<CourseTableTimeBo> CourseTableTimeBoList = boList.getCourseTableTimeBoList();
+        int index = 0;
+        for (CourseTableTimeBo courseTableTimeBo : CourseTableTimeBoList) {
+            courseTableTimeBo.setSchoolId(boList.getSchoolId());
+            courseTableTimeBo.setSchoolName(boList.getSchoolName());
+            //新增
+            CourseTableTime add = MapstructUtils.convert(courseTableTimeBo, CourseTableTime.class);
+            validEntityBeforeSave(add);
+            index = index + baseMapper.insert(add);
+        }
+        return index > 0;
     }
 
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(CourseTableTime entity){
+    private void validEntityBeforeSave(CourseTableTime entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -118,9 +133,18 @@ public class CourseTableTimeServiceImpl implements ICourseTableTimeService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public int deleteWithValidBySchoolId(String schoolId) {
+        //删除
+        CourseTableTimeBo bo = new CourseTableTimeBo();
+        bo.setSchoolId(schoolId);
+        LambdaQueryWrapper<CourseTableTime> lqw = buildQueryWrapper(bo);
+        return baseMapper.delete(lqw);
+    }
 }

+ 6 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/FormalParentsStudentServiceImpl.java

@@ -147,4 +147,10 @@ public class FormalParentsStudentServiceImpl implements IFormalParentsStudentSer
         List<FormalParentsStudentVo> list = baseMapper.selectVoList(lqw);
         return TableDataInfo.build(list);
     }
+
+    @Override
+    public List<FormalParentsStudentVo> getParentsStudentAll() {
+        LoginUser loginUser = LoginHelper.getLoginUser();
+        return baseMapper.getStudentByParentId(String.valueOf(loginUser.getUserId()));
+    }
 }

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/FormalTeacherClassServiceImpl.java

@@ -158,4 +158,9 @@ public class FormalTeacherClassServiceImpl implements IFormalTeacherClassService
     public List<FormalTeacherClassVo> getTeacherClass(String teacherId) {
         return baseMapper.getTeacherClass(teacherId);
     }
+
+    @Override
+    public List<FormalTeacherClassVo> getTeacherClassAll(Long classId) {
+        return baseMapper.getTeacherClassAll(classId);
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/RegisterTeacherServiceImpl.java

@@ -55,7 +55,7 @@ public class RegisterTeacherServiceImpl implements IRegisterTeacherService {
     @Override
     public RegisterTeacherVo queryById(Long id) {
 
-        RegisterTeacherVo registerTeacher = baseMapper.selectVoById(id);
+        RegisterTeacherVo registerTeacher = baseMapper.selectVoByIdMapper(id);
         RegisterTeacherClassBo registerTeacherClass = new RegisterTeacherClassBo();
         registerTeacherClass.setTeacherId(id);
         List<RegisterTeacherClassVo> registerTeacherClassList = registerTeacherClassService.queryList(registerTeacherClass);

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ZhxyShyjServiceImpl.java

@@ -248,7 +248,7 @@ public class ZhxyShyjServiceImpl implements IZhxyShyjService {
                 registerTeacherMapper.updateById(teacher);
                 //生成账号
                 //判断是否存在账号
-                SysUserVo use = userMapper.selectUserByUserName(registerTeacher.getUserPhone());
+                SysUserVo use = userMapper.selectTenantUserByPhonenumber(registerTeacher.getUserPhone(), "000000");
                 //查询dept数据
                 SysDeptVo sysDept = sysDeptMapper.selectDeptByIdNoTenantId(registerTeacher.getSchoolId());
                 if(use==null){
@@ -316,7 +316,7 @@ public class ZhxyShyjServiceImpl implements IZhxyShyjService {
 
                 //通过  修改注册表审核结果,生成账号, 新增用户与角色管理,家长-学生(审核通过之后数据)
                 //查询是否存在账号
-                SysUserVo sysUser = userMapper.selectUserByUserName(registerParents.getUserPhone());
+                SysUserVo sysUser = userMapper.selectTenantUserByPhonenumber(registerParents.getUserPhone(), "000000");
 
                 //修改注册表审核结果
                 registerParentsStudent.setAuditId(loginUser.getUserId());

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveCourseMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.AskLeaveCourseMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveFjMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.AskLeaveFjMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AskLeaveMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.AskLeaveMapper">
+
+</mapper>

+ 3 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseChangeMapper.xml

@@ -13,12 +13,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="subjectClassId"    column="subject_class_id"    />
         <result property="subjectClass"    column="subject_class"    />
         <result property="subject"    column="subject"    />
+        <result property="isFrame"    column="is_frame"    />
         <result property="isNum"    column="is_num"    />
         <result property="subjectTime"    column="subject_time"    />
         <result property="subjectWeek"    column="subject_week"    />
         <result property="bePersonnel"    column="be_personnel"    />
         <result property="bePersonnelId"    column="be_personnel_id"    />
         <result property="beSubject"    column="be_subject"    />
+        <result property="beIsFrame"    column="be_is_frame"    />
         <result property="beIsNum"    column="be_is_num"    />
         <result property="beSubjectTime"    column="be_subject_time"    />
         <result property="week"    column="week"    />
@@ -37,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCourseChangeVo">
-        select id, apply_id, apply_name, apply_time, subject_class_id, subject_class, subject, is_num, subject_time, subject_week, be_personnel, be_personnel_id, be_subject, be_is_num, be_subject_time, week, is_pass, content, create_by, create_time, update_by, update_time, remark, audit_id, audit_user, opinion, school_id, school_name from course_change
+        select id, apply_id, apply_name, apply_time, subject_class_id, subject_class, subject,is_frame, is_num, subject_time, subject_week, be_personnel, be_personnel_id, be_subject,be_is_frame, be_is_num, be_subject_time, week, is_pass, content, create_by, create_time, update_by, update_time, remark, audit_id, audit_user, opinion, school_id, school_name from course_change
     </sql>
 
     <select id="selectCourseChangeListByEdit" resultMap="CourseChangeResult">

+ 10 - 17
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableMapper.xml

@@ -10,22 +10,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="classId"    column="class_id"    />
         <result property="className"    column="class_name"    />
         <result property="week"    column="week"    />
-        <result property="oneClass"    column="one_class"    />
-        <result property="oneTeacher"    column="one_teacher"    />
-        <result property="twoClass"    column="two_class"    />
-        <result property="twoTeacher"    column="two_teacher"    />
-        <result property="threeClass"    column="three_class"    />
-        <result property="threeTeacher"    column="three_teacher"    />
-        <result property="fourClass"    column="four_class"    />
-        <result property="fourTeacher"    column="four_teacher"    />
-        <result property="fiveClass"    column="five_class"    />
-        <result property="fiveTeacher"    column="five_teacher"    />
-        <result property="sixClass"    column="six_class"    />
-        <result property="sixTeacher"    column="six_teacher"    />
-        <result property="sevenClass"    column="seven_class"    />
-        <result property="sevenTeacher"    column="seven_teacher"    />
-        <result property="eightClass"    column="eight_class"    />
-        <result property="eightTeacher"    column="eight_teacher"    />
+        <result property="classNumber"    column="class_number"    />
+        <result property="timeFrame"    column="time_frame"    />
+        <result property="courseName"    column="course_name"    />
+        <result property="courseTeacher"    column="course_teacher"    />
+
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -34,12 +23,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCourseTableVo">
-        select id, school_id, school_name, class_id, class_name, week, one_class, one_teacher, two_class, two_teacher, three_class, three_teacher, four_class, four_teacher, five_class, five_teacher, six_class, six_teacher, seven_class, seven_teacher, eight_class, eight_teacher, create_by, create_time, update_by, update_time, remark from course_table
+        select id, school_id, school_name, class_id, class_name, week, class_number, time_frame, course_name, course_teacher, create_by, create_time, update_by, update_time, remark from course_table
     </sql>
 
     <select id="selectCourseTableByClassIdAndWeek" resultMap="CourseTableResult">
         <include refid="selectCourseTableVo"/>
         where class_id = #{classId} and week = #{week}
     </select>
+    <select id="selectCourseVoList" resultMap="CourseTableResult">
+        <include refid="selectCourseTableVo"/>
+        ${ew.getCustomSqlSegment}
+    </select>
 
 </mapper>

+ 5 - 17
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/CourseTableTimeMapper.xml

@@ -8,22 +8,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="id"    column="id"    />
         <result property="schoolId"    column="school_id"    />
         <result property="schoolName"    column="school_name"    />
-        <result property="oneStartTime"    column="one_start_time"    />
-        <result property="oneEndTime"    column="one_end_time"    />
-        <result property="twoStartTime"    column="two_start_time"    />
-        <result property="twoEndTime"    column="two_end_time"    />
-        <result property="threeStartTime"    column="three_start_time"    />
-        <result property="threeEndTime"    column="three_end_time"    />
-        <result property="fourStartTime"    column="four_start_time"    />
-        <result property="fourEndTime"    column="four_end_time"    />
-        <result property="fiveStartTime"    column="five_start_time"    />
-        <result property="fiveEndTime"    column="five_end_time"    />
-        <result property="sixStartTime"    column="six_start_time"    />
-        <result property="sixEndTime"    column="six_end_time"    />
-        <result property="sevenStartTime"    column="seven_start_time"    />
-        <result property="sevenEndTime"    column="seven_end_time"    />
-        <result property="eightStartTime"    column="eight_start_time"    />
-        <result property="eightEndTime"    column="eight_end_time"    />
+        <result property="classNumber"    column="class_number"    />
+        <result property="timeFrame"    column="time_frame"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="endTime"    column="end_time"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -32,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCourseTableTimeVo">
-        select id, school_id, school_name, one_start_time, one_end_time, two_start_time, two_end_time, three_start_time, three_end_time, four_start_time, four_end_time, five_start_time, five_end_time, six_start_time, six_end_time, seven_start_time, seven_end_time, eight_start_time, eight_end_time, create_by, create_time, update_by, update_time, remark from course_table_time
+        select id, school_id, school_name, class_number, time_frame, start_time, end_time, create_by, create_time, update_by, update_time, remark from course_table_time
     </sql>
 
     <select id="selectCourseTableTimeBySchoolId" resultMap="CourseTableTimeResult">

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/FormalParentsStudentMapper.xml

@@ -5,6 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="org.dromara.system.mapper.FormalParentsStudentMapper">
     <resultMap type="org.dromara.system.domain.FormalParentsStudent" id="FormalParentsStudentResult">
         <result property="id"    column="id"    />
+        <result property="tenantId"    column="tenant_id"    />
         <result property="parentsId"    column="parents_id"    />
         <result property="schoolId"    column="school_id"    />
         <result property="schoolName"    column="school_name"    />
@@ -17,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectFormalParentsStudentVo">
-        select id, parents_id, school_id, school_name, class_id, class_name, student_name, student_number,is_del, create_by, create_time, update_by, update_time, remark from formal_parents_student
+        select id,tenant_id, parents_id, school_id, school_name, class_id, class_name, student_name, student_number,is_del, create_by, create_time, update_by, update_time, remark from formal_parents_student
     </sql>
 
     <select id="selectFormalParentsStudentList" parameterType="org.dromara.system.domain.FormalParentsStudent" resultMap="FormalParentsStudentResult">

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/FormalTeacherClassMapper.xml

@@ -138,4 +138,8 @@
             <if test="discipline != null  and discipline != ''">and discipline = #{discipline}</if>
         </where>
     </select>
+    <select id="getTeacherClassAll" resultMap="FormalTeacherClassResult">
+        <include refid="selectFormalTeacherClassVo"/>
+        where class_id = #{classId}
+    </select>
 </mapper>

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/RegisterTeacherMapper.xml

@@ -72,6 +72,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectRegisterTeacherVo"/>
         ${ew.getCustomSqlSegment}
     </select>
+    <select id="selectVoByIdMapper" resultMap="RegisterTeacherResult">
+        <include refid="selectRegisterTeacherVo"/>
+        where id = #{id}
+    </select>
 
     <delete id="deleteRegisterTeacherByIds" parameterType="String">
         delete from register_teacher where id in