Browse Source

Merge branch 'pre'

dzx 1 year ago
parent
commit
eaf70320c2
67 changed files with 3399 additions and 61 deletions
  1. 38 0
      src/main/java/com/xjrsoft/common/enums/CourseTimeTypeEnum.java
  2. 101 0
      src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeCalendarController.java
  3. 116 0
      src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeDeleteController.java
  4. 177 0
      src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsController.java
  5. 119 0
      src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsSetController.java
  6. 38 0
      src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeCalendarDto.java
  7. 51 0
      src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeDeleteDto.java
  8. 46 0
      src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsDto.java
  9. 128 0
      src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsRecordDto.java
  10. 32 0
      src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsSetDto.java
  11. 19 0
      src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeCalendarPageDto.java
  12. 19 0
      src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeDeletePageDto.java
  13. 25 0
      src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeStatisticsPageDto.java
  14. 19 0
      src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeStatisticsSetPageDto.java
  15. 22 0
      src/main/java/com/xjrsoft/module/classtime/dto/RefreshStatisticsDto.java
  16. 24 0
      src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeCalendarDto.java
  17. 24 0
      src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeDeleteDto.java
  18. 24 0
      src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeStatisticsDto.java
  19. 24 0
      src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeStatisticsSetDto.java
  20. 89 0
      src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeCalendar.java
  21. 100 0
      src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeDelete.java
  22. 131 0
      src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatistics.java
  23. 168 0
      src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatisticsRecord.java
  24. 84 0
      src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatisticsSet.java
  25. 16 0
      src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeCalendarMapper.java
  26. 16 0
      src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeDeleteMapper.java
  27. 42 0
      src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsMapper.java
  28. 16 0
      src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsRecordMapper.java
  29. 16 0
      src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsSetMapper.java
  30. 14 0
      src/main/java/com/xjrsoft/module/classtime/service/IClassTimeCalendarService.java
  31. 14 0
      src/main/java/com/xjrsoft/module/classtime/service/IClassTimeDeleteService.java
  32. 49 0
      src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsService.java
  33. 14 0
      src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsSetService.java
  34. 19 0
      src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeCalendarServiceImpl.java
  35. 19 0
      src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeDeleteServiceImpl.java
  36. 435 0
      src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java
  37. 19 0
      src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsSetServiceImpl.java
  38. 68 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarPageVo.java
  39. 40 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarVo.java
  40. 78 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeDeletePageVo.java
  41. 50 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeDeleteVo.java
  42. 98 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsPageVo.java
  43. 130 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsRecordVo.java
  44. 63 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsSetPageVo.java
  45. 33 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsSetVo.java
  46. 78 0
      src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsVo.java
  47. 36 0
      src/main/java/com/xjrsoft/module/classtime/vo/CourseListVo.java
  48. 27 0
      src/main/java/com/xjrsoft/module/classtime/vo/TeacherListVo.java
  49. 41 0
      src/main/java/com/xjrsoft/module/classtime/vo/WeekTimeRangeVo.java
  50. 3 1
      src/main/java/com/xjrsoft/module/concat/controller/ConcatController.java
  51. 55 0
      src/main/java/com/xjrsoft/module/ledger/controller/LedgerCustomController.java
  52. 23 0
      src/main/java/com/xjrsoft/module/ledger/dto/LedgerCustomDeleteDto.java
  53. 26 0
      src/main/java/com/xjrsoft/module/ledger/dto/LedgerCustomUpdateDto.java
  54. 3 0
      src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java
  55. 53 0
      src/main/java/com/xjrsoft/module/oa/entity/WfTeacherCourseTime.java
  56. 4 0
      src/main/java/com/xjrsoft/module/oa/mapper/NewsRelationMapper.java
  57. 7 3
      src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java
  58. 13 11
      src/main/java/com/xjrsoft/module/student/controller/BaseStudentAssessmentInspectionController.java
  59. 36 25
      src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentAssessmentInspectionDto.java
  60. 3 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentAssessmentInspectionPageDto.java
  61. 3 0
      src/main/java/com/xjrsoft/module/student/entity/BaseStudentAssessmentInspection.java
  62. 6 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentAssessmentInspectionPageVo.java
  63. 6 0
      src/main/java/com/xjrsoft/module/student/vo/BaseStudentAssessmentInspectionVo.java
  64. 36 0
      src/main/resources/mapper/classtime/ClassTimeStatisticsMapper.xml
  65. 5 15
      src/main/resources/mapper/oa/NewsMapper.xml
  66. 7 6
      src/main/resources/mapper/student/BaseStudentAssessmentInspectionMapper.xml
  67. 61 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 38 - 0
src/main/java/com/xjrsoft/common/enums/CourseTimeTypeEnum.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 教师课时补充类型 course_time_type
+ * @author: dzx
+ * @create: 2024年9月27日
+ * @Version 1.0
+ */
+public enum CourseTimeTypeEnum {
+
+    CTT001("CTT001", "教研会"),
+
+    CTT002("CTT002", "督导听课"),
+
+    CTT003("CTT003", "临近三年退休政策"),
+
+    CTT004("CTT004", "出题"),
+
+    CTT005("CTT005", "阅卷"),
+
+    CTT006("CTT006", "周末培优");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    CourseTimeTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 101 - 0
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeCalendarController.java

@@ -0,0 +1,101 @@
+package com.xjrsoft.module.classtime.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
+import com.xjrsoft.module.classtime.dto.ClassTimeCalendarPageDto;
+import com.xjrsoft.module.classtime.dto.UpdateClassTimeCalendarDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
+import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
+import com.xjrsoft.module.classtime.vo.ClassTimeCalendarPageVo;
+import com.xjrsoft.module.classtime.vo.ClassTimeCalendarVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/classtime" + "/classTimeCalendar")
+@Api(value = "/classtime"  + "/classTimeCalendar",tags = "节假日调课设置代码")
+@AllArgsConstructor
+public class ClassTimeCalendarController {
+
+
+    private final IClassTimeCalendarService classTimeCalendarService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="节假日调课设置列表(分页)")
+    @SaCheckPermission("classtimecalendar:detail")
+    public RT<PageOutput<ClassTimeCalendarPageVo>> page(@Valid ClassTimeCalendarPageDto dto){
+
+        LambdaQueryWrapper<ClassTimeCalendar> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(ClassTimeCalendar::getId)
+                .select(ClassTimeCalendar.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeCalendarPageVo.class).contains(x.getProperty()));
+        IPage<ClassTimeCalendar> page = classTimeCalendarService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<ClassTimeCalendarPageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeCalendarPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询节假日调课设置信息")
+    @SaCheckPermission("classtimecalendar:detail")
+    public RT<ClassTimeCalendarVo> info(@RequestParam Long id){
+        ClassTimeCalendar classTimeCalendar = classTimeCalendarService.getById(id);
+        if (classTimeCalendar == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(classTimeCalendar, ClassTimeCalendarVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增节假日调课设置")
+    @SaCheckPermission("classtimecalendar:add")
+    public RT<Boolean> add(@Valid @RequestBody AddClassTimeCalendarDto dto){
+        ClassTimeCalendar classTimeCalendar = BeanUtil.toBean(dto, ClassTimeCalendar.class);
+        boolean isSuccess = classTimeCalendarService.save(classTimeCalendar);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改节假日调课设置")
+    @SaCheckPermission("classtimecalendar:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateClassTimeCalendarDto dto){
+
+        ClassTimeCalendar classTimeCalendar = BeanUtil.toBean(dto, ClassTimeCalendar.class);
+        return RT.ok(classTimeCalendarService.updateById(classTimeCalendar));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除节假日调课设置")
+    @SaCheckPermission("classtimecalendar:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(classTimeCalendarService.removeBatchByIds(ids));
+
+    }
+
+}

+ 116 - 0
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeDeleteController.java

@@ -0,0 +1,116 @@
+package com.xjrsoft.module.classtime.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.activity.dto.ChangeStatusDto;
+import com.xjrsoft.module.classtime.dto.AddClassTimeDeleteDto;
+import com.xjrsoft.module.classtime.dto.ClassTimeDeletePageDto;
+import com.xjrsoft.module.classtime.dto.UpdateClassTimeDeleteDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import com.xjrsoft.module.classtime.service.IClassTimeDeleteService;
+import com.xjrsoft.module.classtime.vo.ClassTimeDeletePageVo;
+import com.xjrsoft.module.classtime.vo.ClassTimeDeleteVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/classtime" + "/classTimeDelete")
+@Api(value = "/classtime"  + "/classTimeDelete",tags = "课时删除代码")
+@AllArgsConstructor
+public class ClassTimeDeleteController {
+
+
+    private final IClassTimeDeleteService classTimeDeleteService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="课时删除列表(分页)")
+    @SaCheckPermission("classtimedelete:detail")
+    public RT<PageOutput<ClassTimeDeletePageVo>> page(@Valid ClassTimeDeletePageDto dto){
+
+        LambdaQueryWrapper<ClassTimeDelete> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(ClassTimeDelete::getId)
+                .select(ClassTimeDelete.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeDeletePageVo.class).contains(x.getProperty()));
+        IPage<ClassTimeDelete> page = classTimeDeleteService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<ClassTimeDeletePageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeDeletePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询课时删除信息")
+    @SaCheckPermission("classtimedelete:detail")
+    public RT<ClassTimeDeleteVo> info(@RequestParam Long id){
+        ClassTimeDelete classTimeDelete = classTimeDeleteService.getById(id);
+        if (classTimeDelete == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(classTimeDelete, ClassTimeDeleteVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增课时删除")
+    @SaCheckPermission("classtimedelete:add")
+    public RT<Boolean> add(@Valid @RequestBody AddClassTimeDeleteDto dto){
+        ClassTimeDelete classTimeDelete = BeanUtil.toBean(dto, ClassTimeDelete.class);
+        boolean isSuccess = classTimeDeleteService.save(classTimeDelete);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改课时删除")
+    @SaCheckPermission("classtimedelete:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateClassTimeDeleteDto dto){
+
+        ClassTimeDelete classTimeDelete = BeanUtil.toBean(dto, ClassTimeDelete.class);
+        return RT.ok(classTimeDeleteService.updateById(classTimeDelete));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除课时删除")
+    @SaCheckPermission("classtimedelete:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(classTimeDeleteService.removeBatchByIds(ids));
+
+    }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
+        ClassTimeDelete classTimeDelete = classTimeDeleteService.getById(dto.getId());
+        if(classTimeDelete == null){
+            throw new MyException("未能查到数据");
+        }
+        classTimeDelete.setEnabledMark(dto.getStatus());
+        classTimeDeleteService.updateById(classTimeDelete);
+        return RT.ok(true);
+    }
+
+}

+ 177 - 0
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsController.java

@@ -0,0 +1,177 @@
+package com.xjrsoft.module.classtime.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.activity.dto.ChangeStatusDto;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.dto.ClassTimeStatisticsPageDto;
+import com.xjrsoft.module.classtime.dto.RefreshStatisticsDto;
+import com.xjrsoft.module.classtime.dto.UpdateClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsPageVo;
+import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/classtime" + "/classTimeStatistics")
+@Api(value = "/classtime"  + "/classTimeStatistics",tags = "课时统计代码")
+@AllArgsConstructor
+public class ClassTimeStatisticsController {
+
+    private final IClassTimeStatisticsSetService statisticsSetService;
+    private final IClassTimeStatisticsService classTimeStatisticsService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="课时统计列表(分页)")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<PageOutput<ClassTimeStatisticsPageVo>> page(@Valid ClassTimeStatisticsPageDto dto){
+
+        LambdaQueryWrapper<ClassTimeStatistics> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .orderByDesc(ClassTimeStatistics::getId)
+                .eq(dto.getYear() != null, ClassTimeStatistics::getYear, dto.getYear())
+                .eq(dto.getMonth() != null, ClassTimeStatistics::getMonth, dto.getMonth())
+                .select(ClassTimeStatistics.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeStatisticsPageVo.class).contains(x.getProperty()));
+        IPage<ClassTimeStatistics> page = classTimeStatisticsService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<ClassTimeStatisticsPageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeStatisticsPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询课时统计信息")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<ClassTimeStatisticsVo> info(@RequestParam Long id){
+        ClassTimeStatistics classTimeStatistics = classTimeStatisticsService.getByIdDeep(id);
+        if (classTimeStatistics == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(classTimeStatistics, ClassTimeStatisticsVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增课时统计")
+    @SaCheckPermission("classtimestatistics:add")
+    public RT<Boolean> add(@Valid @RequestBody AddClassTimeStatisticsDto dto){
+        boolean isSuccess = classTimeStatisticsService.add(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改课时统计")
+    @SaCheckPermission("classtimestatistics:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateClassTimeStatisticsDto dto){
+
+        ClassTimeStatistics classTimeStatistics = BeanUtil.toBean(dto, ClassTimeStatistics.class);
+        return RT.ok(classTimeStatisticsService.update(classTimeStatistics));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除课时统计")
+    @SaCheckPermission("classtimestatistics:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(classTimeStatisticsService.delete(ids));
+
+    }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
+        ClassTimeStatistics statistics = classTimeStatisticsService.getById(dto.getId());
+        if(statistics == null){
+            throw new MyException("未能查到数据");
+        }
+        statistics.setStatus(dto.getStatus());
+        classTimeStatisticsService.updateById(statistics);
+        return RT.ok(true);
+    }
+
+    @GetMapping(value = "/last-date")
+    @ApiOperation(value="查询最新统计的结束日期")
+    @SaCheckPermission("classtimestatisticsset:detail")
+    public RT<LocalDate> lastInfo(){
+        List<ClassTimeStatistics> list = classTimeStatisticsService.list(
+                new QueryWrapper<ClassTimeStatistics>().lambda().orderByDesc(ClassTimeStatistics::getEndDate)
+        );
+        if (list.isEmpty()) {
+            return RT.error("未查询到数据");
+        }
+        ClassTimeStatistics result = list.get(0);
+        return RT.ok(result.getEndDate());
+    }
+
+    @PostMapping("/refresh-statistics")
+    @ApiOperation(value = "刷新课时统计")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> refreshStatistics(@Valid @RequestBody RefreshStatisticsDto dto){
+
+        ClassTimeStatistics classTimeStatistics = classTimeStatisticsService.getById(dto.getId());
+        classTimeStatistics.setStatus(0);
+        classTimeStatistics.setModifyDate(new Date());
+
+        //查询最新权重并保存到统计中
+        Integer category = 1;
+        List<ClassTimeStatisticsSet> list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setWeightSetJson(list.get(0).getJsonContent());
+        }
+
+        //查询最新费用并保存到统计中
+        category = 2;
+        list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setCostSetJson(list.get(0).getJsonContent());
+        }
+        Boolean aBoolean = classTimeStatisticsService.updateById(classTimeStatistics);
+
+//        CompletableFuture.runAsync(() -> {
+//            classTimeStatisticsService.refreshRecord(classTimeStatistics);
+//        });
+        classTimeStatisticsService.refreshRecord(classTimeStatistics);
+
+        return RT.ok(aBoolean);
+    }
+
+}

+ 119 - 0
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsSetController.java

@@ -0,0 +1,119 @@
+package com.xjrsoft.module.classtime.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsSetDto;
+import com.xjrsoft.module.classtime.dto.ClassTimeStatisticsSetPageDto;
+import com.xjrsoft.module.classtime.dto.UpdateClassTimeStatisticsSetDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsSetPageVo;
+import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsSetVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/classtime" + "/classTimeStatisticsSet")
+@Api(value = "/classtime"  + "/classTimeStatisticsSet",tags = "课时统计-设置代码")
+@AllArgsConstructor
+public class ClassTimeStatisticsSetController {
+
+
+    private final IClassTimeStatisticsSetService classTimeStatisticsSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="课时统计-设置列表(分页)")
+    @SaCheckPermission("classtimestatisticsset:detail")
+    public RT<PageOutput<ClassTimeStatisticsSetPageVo>> page(@Valid ClassTimeStatisticsSetPageDto dto){
+
+        LambdaQueryWrapper<ClassTimeStatisticsSet> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(ClassTimeStatisticsSet::getId)
+                .select(ClassTimeStatisticsSet.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeStatisticsSetPageVo.class).contains(x.getProperty()));
+        IPage<ClassTimeStatisticsSet> page = classTimeStatisticsSetService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<ClassTimeStatisticsSetPageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeStatisticsSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询课时统计-设置信息")
+    @SaCheckPermission("classtimestatisticsset:detail")
+    public RT<ClassTimeStatisticsSetVo> info(@RequestParam Long id){
+        ClassTimeStatisticsSet classTimeStatisticsSet = classTimeStatisticsSetService.getById(id);
+        if (classTimeStatisticsSet == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(classTimeStatisticsSet, ClassTimeStatisticsSetVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增课时统计-设置")
+    @SaCheckPermission("classtimestatisticsset:add")
+    public RT<Boolean> add(@Valid @RequestBody AddClassTimeStatisticsSetDto dto){
+        ClassTimeStatisticsSet classTimeStatisticsSet = BeanUtil.toBean(dto, ClassTimeStatisticsSet.class);
+        classTimeStatisticsSet.setCreateDate(new Date());
+        boolean isSuccess = classTimeStatisticsSetService.save(classTimeStatisticsSet);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改课时统计-设置")
+    @SaCheckPermission("classtimestatisticsset:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateClassTimeStatisticsSetDto dto){
+        ClassTimeStatisticsSet classTimeStatisticsSet = BeanUtil.toBean(dto, ClassTimeStatisticsSet.class);
+        classTimeStatisticsSet.setModifyDate(new Date());
+        return RT.ok(classTimeStatisticsSetService.updateById(classTimeStatisticsSet));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除课时统计-设置")
+    @SaCheckPermission("classtimestatisticsset:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(classTimeStatisticsSetService.removeBatchByIds(ids));
+    }
+
+    @GetMapping(value = "/last-info")
+    @ApiOperation(value="查询最新设置信息")
+    @SaCheckPermission("classtimestatisticsset:detail")
+    public RT<ClassTimeStatisticsSetVo> lastInfo(@RequestParam Integer category){
+        List<ClassTimeStatisticsSet> list = classTimeStatisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if (list.isEmpty()) {
+            return RT.ok();
+        }
+        ClassTimeStatisticsSet classTimeStatisticsSet = list.get(0);
+        return RT.ok(BeanUtil.toBean(classTimeStatisticsSet, ClassTimeStatisticsSetVo.class));
+    }
+
+}

+ 38 - 0
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeCalendarDto.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class AddClassTimeCalendarDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 补班日期
+    */
+    @ApiModelProperty("补班日期")
+    private Integer supplementDate;
+    /**
+    * 补课日期
+    */
+    @ApiModelProperty("补课日期")
+    private Date replaceDate;
+
+}

+ 51 - 0
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeDeleteDto.java

@@ -0,0 +1,51 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class AddClassTimeDeleteDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 删除类型(xjr_dictionary_item[class_time_delete])
+    */
+    @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
+    private String type;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer classId;
+    /**
+    * 删除说明
+    */
+    @ApiModelProperty("删除说明")
+    private String remark;
+    /**
+    * 开始日期
+    */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("开始日期")
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("结束日期")
+    private LocalDate endDate;
+
+}

+ 46 - 0
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsDto.java

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class AddClassTimeStatisticsDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 统计年份
+    */
+    @ApiModelProperty("统计年份")
+    private Integer year;
+    /**
+    * 统计月份
+    */
+    @ApiModelProperty("统计月份")
+    private Integer month;
+    /**
+    * 开始日期
+    */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("开始日期")
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("结束日期")
+    private LocalDate endDate;
+
+}

+ 128 - 0
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsRecordDto.java

@@ -0,0 +1,128 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+* @title: 课时统计-教师详情
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class AddClassTimeStatisticsRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 教师id(xjr_user)
+    */
+    @ApiModelProperty("教师id(xjr_user)")
+    private Long userId;
+    /**
+    * 聘用类型
+    */
+    @ApiModelProperty("聘用类型")
+    private Date employType;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 课时费用
+    */
+    @ApiModelProperty("课时费用")
+    private Double classTimeAmount;
+    /**
+    * 外聘教师超课时费
+    */
+    @ApiModelProperty("外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 每周数据
+    */
+    @ApiModelProperty("每周数据")
+    private String weekData;
+    /**
+    * 教研会
+    */
+    @ApiModelProperty("教研会")
+    private Double classTime1;
+    /**
+    * 督导听课
+    */
+    @ApiModelProperty("督导听课")
+    private Double classTime2;
+    /**
+    * 临近三年退休政策
+    */
+    @ApiModelProperty("临近三年退休政策")
+    private Double classTime3;
+    /**
+    * 出题
+    */
+    @ApiModelProperty("出题")
+    private Double classTime4;
+    /**
+    * 阅卷
+    */
+    @ApiModelProperty("阅卷")
+    private Double classTime5;
+    /**
+    * 周末培优
+    */
+    @ApiModelProperty("周末培优")
+    private Double classTime6;
+    /**
+    * 早自习
+    */
+    @ApiModelProperty("早自习")
+    private Double classTime7;
+    /**
+    * 正课(包含调顶课时)
+    */
+    @ApiModelProperty("正课(包含调顶课时)")
+    private Double classTime8;
+    /**
+    * 晚辅(包含调顶课时)
+    */
+    @ApiModelProperty("晚辅(包含调顶课时)")
+    private Double classTime9;
+    /**
+    * 顶课
+    */
+    @ApiModelProperty("顶课")
+    private Double classTime10;
+    /**
+    * 调课
+    */
+    @ApiModelProperty("调课")
+    private Double classTime11;
+    /**
+    * 权重json
+    */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+    * 权重json
+    */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/classtime/dto/AddClassTimeStatisticsSetDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class AddClassTimeStatisticsSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 权重内容
+    */
+    @ApiModelProperty("权重内容")
+    private String jsonContent;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer category;
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeCalendarPageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 节假日调课设置分页查询入参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ClassTimeCalendarPageDto extends PageInput {
+
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeDeletePageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 课时删除分页查询入参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ClassTimeDeletePageDto extends PageInput {
+
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeStatisticsPageDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.classtime.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 课时统计分页查询入参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ClassTimeStatisticsPageDto extends PageInput {
+
+    @ApiModelProperty("统计年份")
+    private Integer year;
+
+
+    @ApiModelProperty("统计月份")
+    private Integer month;
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/dto/ClassTimeStatisticsSetPageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 课时统计-设置分页查询入参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ClassTimeStatisticsSetPageDto extends PageInput {
+
+
+}

+ 22 - 0
src/main/java/com/xjrsoft/module/classtime/dto/RefreshStatisticsDto.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 刷新课时
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class RefreshStatisticsDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("id")
+    private Long id;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeCalendarDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class UpdateClassTimeCalendarDto extends AddClassTimeCalendarDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeDeleteDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class UpdateClassTimeDeleteDto extends AddClassTimeDeleteDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeStatisticsDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class UpdateClassTimeStatisticsDto extends AddClassTimeStatisticsDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/dto/UpdateClassTimeStatisticsSetDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class UpdateClassTimeStatisticsSetDto extends AddClassTimeStatisticsSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 89 - 0
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeCalendar.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.classtime.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@TableName("class_time_calendar")
+@ApiModel(value = "class_time_calendar", description = "节假日调课设置")
+public class ClassTimeCalendar implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 补班日期
+    */
+    @ApiModelProperty("补班日期")
+    private Integer supplementDate;
+    /**
+    * 补课日期
+    */
+    @ApiModelProperty("补课日期")
+    private Date replaceDate;
+
+
+}

+ 100 - 0
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeDelete.java

@@ -0,0 +1,100 @@
+package com.xjrsoft.module.classtime.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.Date;
+
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@TableName("class_time_delete")
+@ApiModel(value = "class_time_delete", description = "课时删除")
+public class ClassTimeDelete implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 删除类型(xjr_dictionary_item[class_time_delete])
+    */
+    @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
+    private String type;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+    * 删除说明
+    */
+    @ApiModelProperty("删除说明")
+    private String remark;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private LocalDate endDate;
+
+
+}

+ 131 - 0
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatistics.java

@@ -0,0 +1,131 @@
+package com.xjrsoft.module.classtime.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.Date;
+
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@TableName("class_time_statistics")
+@ApiModel(value = "class_time_statistics", description = "课时统计")
+public class ClassTimeStatistics implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 统计年份
+    */
+    @ApiModelProperty("统计年份")
+    private Integer year;
+    /**
+    * 统计月份
+    */
+    @ApiModelProperty("统计月份")
+    private Integer month;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private LocalDate startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private LocalDate endDate;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 总课时费用
+    */
+    @ApiModelProperty("总课时费用")
+    private Double classTimeAmount;
+    /**
+    * 总外聘教师超课时费
+    */
+    @ApiModelProperty("总外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 状态(0:数据统计中 1:统计完成 2:已解锁 3:已锁定)
+    */
+    @ApiModelProperty("状态(0:数据统计中 1:统计完成 2:已解锁 3:已锁定)")
+    private Integer status;
+
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
+
+
+}

+ 168 - 0
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatisticsRecord.java

@@ -0,0 +1,168 @@
+package com.xjrsoft.module.classtime.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 课时统计-教师详情
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@TableName("class_time_statistics_record")
+@ApiModel(value = "class_time_statistics_record", description = "课时统计-教师详情")
+public class ClassTimeStatisticsRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 教师id(xjr_user)
+    */
+    @ApiModelProperty("教师id(xjr_user)")
+    private Long userId;
+    /**
+    * 聘用类型
+    */
+    @ApiModelProperty("聘用类型")
+    private String employType;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 课时费用
+    */
+    @ApiModelProperty("课时费用")
+    private Double classTimeAmount;
+    /**
+    * 外聘教师超课时费
+    */
+    @ApiModelProperty("外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 每周数据
+    */
+    @ApiModelProperty("每周数据")
+    private String weekData;
+    /**
+    * 教研会
+    */
+    @ApiModelProperty("教研会")
+    private Double classTime1;
+    /**
+    * 督导听课
+    */
+    @ApiModelProperty("督导听课")
+    private Double classTime2;
+    /**
+    * 临近三年退休政策
+    */
+    @ApiModelProperty("临近三年退休政策")
+    private Double classTime3;
+    /**
+    * 出题
+    */
+    @ApiModelProperty("出题")
+    private Double classTime4;
+    /**
+    * 阅卷
+    */
+    @ApiModelProperty("阅卷")
+    private Double classTime5;
+    /**
+    * 周末培优
+    */
+    @ApiModelProperty("周末培优")
+    private Double classTime6;
+    /**
+    * 早自习
+    */
+    @ApiModelProperty("早自习")
+    private Double classTime7;
+    /**
+    * 正课(包含调顶课时)
+    */
+    @ApiModelProperty("正课(包含调顶课时)")
+    private Double classTime8;
+    /**
+    * 晚辅(包含调顶课时)
+    */
+    @ApiModelProperty("晚辅(包含调顶课时)")
+    private Double classTime9;
+    /**
+    * 顶课
+    */
+    @ApiModelProperty("顶课")
+    private Double classTime10;
+    /**
+    * 调课
+    */
+    @ApiModelProperty("调课")
+    private Double classTime11;
+
+}

+ 84 - 0
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeStatisticsSet.java

@@ -0,0 +1,84 @@
+package com.xjrsoft.module.classtime.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+@TableName("class_time_statistics_set")
+@ApiModel(value = "class_time_statistics_set", description = "课时统计-设置")
+public class ClassTimeStatisticsSet implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 权重内容
+    */
+    @ApiModelProperty("权重内容")
+    private String jsonContent;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer category;
+
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeCalendarMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.classtime.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Mapper
+public interface ClassTimeCalendarMapper extends MPJBaseMapper<ClassTimeCalendar> {
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeDeleteMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.classtime.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Mapper
+public interface ClassTimeDeleteMapper extends MPJBaseMapper<ClassTimeDelete> {
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsMapper.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.classtime.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
+import com.xjrsoft.module.classtime.vo.CourseListVo;
+import com.xjrsoft.module.classtime.vo.TeacherListVo;
+import com.xjrsoft.module.oa.entity.WfTeacherCourseTime;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Mapper
+public interface ClassTimeStatisticsMapper extends MPJBaseMapper<ClassTimeStatistics> {
+
+    /**
+     * 查询正式聘用和外聘教师的id、姓名、聘用方式
+     * @return 数据集合
+     */
+    List<TeacherListVo> getTeacherList();
+
+    /**
+     * 查询所有课时补充数据
+     * @return 数据集合
+     */
+    List<WfTeacherCourseTime> getWfTeacherCourseTimeList();
+
+    List<CourseListVo> getCourseList(@Param("dto") ClassTimeStatistics dto);
+
+    /**
+     * 查询被顶课老师的信息
+     * @param dto
+     * @return
+     */
+    List<CourseListVo> getSubstituteList(@Param("dto") ClassTimeStatistics dto);
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsRecordMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.classtime.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 课时统计-教师详情
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Mapper
+public interface ClassTimeStatisticsRecordMapper extends MPJBaseMapper<ClassTimeStatisticsRecord> {
+
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsSetMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.classtime.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Mapper
+public interface ClassTimeStatisticsSetMapper extends MPJBaseMapper<ClassTimeStatisticsSet> {
+
+}

+ 14 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeCalendarService.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.classtime.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+
+public interface IClassTimeCalendarService extends MPJBaseService<ClassTimeCalendar> {
+}

+ 14 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeDeleteService.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.classtime.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+
+public interface IClassTimeDeleteService extends MPJBaseService<ClassTimeDelete> {
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsService.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.classtime.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
+
+import java.util.List;
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+
+public interface IClassTimeStatisticsService extends MPJBaseService<ClassTimeStatistics> {
+    /**
+    * 新增
+    *
+    * @param classTimeStatistics
+    * @return
+    */
+    Boolean add(ClassTimeStatistics classTimeStatistics);
+
+    /**
+    * 更新
+    *
+    * @param classTimeStatistics
+    * @return
+    */
+    Boolean update(ClassTimeStatistics classTimeStatistics);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+
+    /**
+     * 新增课时统计
+     * @param dto
+     * @return
+     */
+    Boolean add(AddClassTimeStatisticsDto dto);
+
+    Boolean refreshRecord(ClassTimeStatistics statistics);
+}

+ 14 - 0
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsSetService.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.classtime.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+
+public interface IClassTimeStatisticsSetService extends MPJBaseService<ClassTimeStatisticsSet> {
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeCalendarServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
+import com.xjrsoft.module.classtime.mapper.ClassTimeCalendarMapper;
+import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 节假日调课设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCalendarMapper, ClassTimeCalendar> implements IClassTimeCalendarService {
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeDeleteServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import com.xjrsoft.module.classtime.mapper.ClassTimeDeleteMapper;
+import com.xjrsoft.module.classtime.service.IClassTimeDeleteService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 课时删除
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ClassTimeDeleteServiceImpl extends MPJBaseServiceImpl<ClassTimeDeleteMapper, ClassTimeDelete> implements IClassTimeDeleteService {
+}

+ 435 - 0
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java

@@ -0,0 +1,435 @@
+package com.xjrsoft.module.classtime.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
+import com.xjrsoft.common.enums.CourseTimeTypeEnum;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsRecord;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsMapper;
+import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsRecordMapper;
+import com.xjrsoft.module.classtime.service.IClassTimeDeleteService;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import com.xjrsoft.module.classtime.vo.CourseListVo;
+import com.xjrsoft.module.classtime.vo.TeacherListVo;
+import com.xjrsoft.module.classtime.vo.WeekTimeRangeVo;
+import com.xjrsoft.module.oa.entity.WfTeacherCourseTime;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+/**
+* @title: 课时统计
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTimeStatisticsMapper, ClassTimeStatistics> implements IClassTimeStatisticsService {
+    private final ClassTimeStatisticsMapper statisticsMapper;
+
+    private final ClassTimeStatisticsRecordMapper recordMapper;
+
+    private final IClassTimeStatisticsSetService statisticsSetService;
+
+    private final IClassTimeDeleteService deleteService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(ClassTimeStatistics classTimeStatistics) {
+        statisticsMapper.insert(classTimeStatistics);
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(ClassTimeStatistics classTimeStatistics) {
+        statisticsMapper.updateById(classTimeStatistics);
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        statisticsMapper.deleteBatchIds(ids);
+        recordMapper.delete(Wrappers.lambdaQuery(ClassTimeStatisticsRecord.class).in(ClassTimeStatisticsRecord::getClassTimeStatisticsId, ids));
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AddClassTimeStatisticsDto dto) {
+        ClassTimeStatistics classTimeStatistics = BeanUtil.toBean(dto, ClassTimeStatistics.class);
+        classTimeStatistics.setStatus(0);
+        classTimeStatistics.setCreateDate(new Date());
+
+        //查询最新权重并保存到统计中
+        Integer category = 1;
+        List<ClassTimeStatisticsSet> list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setWeightSetJson(list.get(0).getJsonContent());
+        }
+
+        //查询最新费用并保存到统计中
+        category = 2;
+        list = statisticsSetService.list(
+                new QueryWrapper<ClassTimeStatisticsSet>().lambda()
+                        .eq(ClassTimeStatisticsSet::getCategory, category)
+                        .orderByDesc(ClassTimeStatisticsSet::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            classTimeStatistics.setCostSetJson(list.get(0).getJsonContent());
+        }
+        this.save(classTimeStatistics);
+
+        CompletableFuture.runAsync(() -> {
+            refreshRecord(classTimeStatistics);
+        });
+
+        return true;
+    }
+
+    /**
+     * 1、通过xjr_user和base_teacher查询所有教师,查询聘用类型为:正式聘用和外聘的
+     * 2、根据统计的开始日期和结束日期查询课时补充(wf_teacher_course_time)中的教研会、督导听课、临近三年退休政策、出题、阅卷、周末培优
+     * 3、根绝统计的开始日期和结束日期查询课程表(course_table)中的所有课程数据
+     *
+     * @param statistics
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean refreshRecord(ClassTimeStatistics statistics) {
+        // 1、查询教师
+        List<TeacherListVo> teacherList = this.baseMapper.getTeacherList();
+        // 2、查询补课课时
+        List<WfTeacherCourseTime> courseTimeList = this.baseMapper.getWfTeacherCourseTimeList();
+        //按照课时补充类型分类统计
+        Map<String, List<WfTeacherCourseTime>> courseTimeMap = courseTimeList.stream().collect(Collectors.groupingBy(WfTeacherCourseTime::getCourseTimeType));
+        JsonParser parser = new JsonParser();
+
+        //费用设置jsonArray
+        JsonArray costSetArray = parser.parse(statistics.getCostSetJson()).getAsJsonArray();
+        Map<String, Double> costSetMap = new HashMap<>();
+        for (JsonElement jsonElement : costSetArray) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            costSetMap.put(object.get("field").getAsString(), object.get("value").getAsDouble());
+        }
+
+        //权重设置jsonArray
+        JsonArray weightSetArray = parser.parse(statistics.getWeightSetJson()).getAsJsonArray();
+        Map<String, Double> weightSetMap = new HashMap<>();
+        for (JsonElement jsonElement : weightSetArray) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            weightSetMap.put(object.get("label").getAsString(), object.get("value").getAsDouble());
+        }
+        //计算出这个时间段内一共多少周
+        List<WeekTimeRangeVo> weekTimeRangeVos = calculateNaturalWeeks(statistics.getStartDate(), statistics.getEndDate());
+
+        //查询课程数据
+        List<CourseListVo> allCourseList = this.baseMapper.getCourseList(statistics);
+
+        //查询删除课时的数据,将每个班删除的具体日期统计出来
+        List<ClassTimeDelete> deleteList = deleteService.list(
+                new QueryWrapper<ClassTimeDelete>().lambda()
+                        .ne(ClassTimeDelete::getEnabledMark, EnabledMark.DISABLED)
+        );
+        Map<Long, List<ClassTimeDelete>> deleteDataMap = deleteList.stream().collect(Collectors.groupingBy(ClassTimeDelete::getClassId));
+        Map<Long, Set<LocalDate>> deleteMap = new HashMap<>();//将每个班级计算出来所有被删除的日期存入map
+        for (Long classId : deleteDataMap.keySet()) {
+            List<LocalDate> dateList = new ArrayList<>();
+            for (ClassTimeDelete classTimeDelete : deleteDataMap.get(classId)) {
+                LocalDate currentDate = classTimeDelete.getStartDate();
+                while (!currentDate.isAfter(classTimeDelete.getEndDate())) {
+                    dateList.add(currentDate);
+                    currentDate = currentDate.plusDays(1); // 增加一天
+                }
+            }
+            //去重并存到map中
+            deleteMap.put(classId, new HashSet<>(dateList));
+        }
+
+        //查询所有老师发起顶课通过的数量(只查询事假、病假),也要分别计算早自习、晚自习、正课、如果日期出入课时删除中,也需要跳过
+        List<CourseListVo> allSubstituteList = this.baseMapper.getSubstituteList(statistics);
+        List<ClassTimeStatisticsRecord> insertList = new ArrayList<>();
+        //循环教师,准备开始计算
+        for (TeacherListVo teacher : teacherList) {
+            ClassTimeStatisticsRecord record = new ClassTimeStatisticsRecord();
+            record.setUserId(teacher.getId());
+            record.setEmployType(teacher.getEmployType());
+
+            Double allClassTime = 0D;
+            //计算补充课时,算作正课课时,但是计算超出课时时不计算这部分
+            for (String courseTimeType : courseTimeMap.keySet()) {
+                List<WfTeacherCourseTime> courseTimes = courseTimeMap.get(courseTimeType);
+                double sum = courseTimes.stream()
+                        .filter(x -> x.getTeacherIds().contains(teacher.getId().toString()))
+                        .mapToDouble(WfTeacherCourseTime::getCourseTime).sum();
+                allClassTime = allClassTime + sum;
+                if(CourseTimeTypeEnum.CTT001.getCode().equals(courseTimeType)){
+                    record.setClassTime1(sum);
+                }else if(CourseTimeTypeEnum.CTT002.getCode().equals(courseTimeType)){
+                    record.setClassTime2(sum);
+                }else if(CourseTimeTypeEnum.CTT003.getCode().equals(courseTimeType)){
+                    record.setClassTime3(sum);
+                }else if(CourseTimeTypeEnum.CTT004.getCode().equals(courseTimeType)){
+                    record.setClassTime4(sum);
+                }else if(CourseTimeTypeEnum.CTT005.getCode().equals(courseTimeType)){
+                    record.setClassTime5(sum);
+                }else if(CourseTimeTypeEnum.CTT006.getCode().equals(courseTimeType)){
+                    record.setClassTime6(sum);
+                }
+            }
+            //早自习、正课、晚辅、顶课、调课
+            Double classTime7 = 0D,classTime8 = 0D,classTime9 = 0D,classTime10 = 0D,classTime11 = 0D;
+
+            List<String> zkList = Arrays.asList("上1","上2","上3","上4","下1","下2","下3","下4");
+            List<String> wzxList = Arrays.asList("晚1","晚2","晚3");
+            //查询出老师的课程
+            List<CourseListVo> courseList = allCourseList.stream()
+                    .filter(x -> x.getTeacherId().contains(teacher.getId().toString()))
+                    .collect(Collectors.toList());
+
+            //循环,统计出各项数据
+            for (CourseListVo courseListVo : courseList) {
+                //如果这个课程数据包含在被删除的课时中,跳过不计算
+                Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
+                if(deleteDates != null && deleteDates.contains(courseListVo.getScheduleDate())){
+                    continue;
+                }
+                if("早自习".equals(courseListVo.getShortName())){
+                    classTime7 += weightSetMap.get(courseListVo.getShortName());
+                }else if(zkList.contains(courseListVo.getShortName())){
+                    classTime8 += weightSetMap.get(courseListVo.getShortName());
+                }else if(wzxList.contains(courseListVo.getShortName())){
+                    classTime9 += weightSetMap.get(courseListVo.getShortName());
+                }
+
+                if(courseListVo.getAdjustType() != null && !courseListVo.getAdjustType().isEmpty()){
+                    if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseListVo.getAdjustType())){
+                        classTime10 += weightSetMap.get(courseListVo.getShortName());
+                    }else if(CourseAdjustTypeEnum.courseExchange.getCode().equals(courseListVo.getAdjustType())){
+                        classTime11 += weightSetMap.get(courseListVo.getShortName());
+                    }
+                }
+            }
+            JsonObject weekDataJson = new JsonObject();
+            Double allTimes = 0d;
+            //存每周的数据
+            for (WeekTimeRangeVo timeRangeVo : weekTimeRangeVos) {
+                Double zkTimes = 0d;
+                Double wzxTimes = 0d;
+                Double dkTimes = 0d;
+                Double tkTimes = 0d;
+                for (CourseListVo courseListVo : courseList) {
+                    LocalDate scheduleDate = courseListVo.getScheduleDate();
+                    //如果这个课程数据包含在被删除的课时中,跳过不计算
+                    Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
+                    if(deleteDates != null && deleteDates.contains(scheduleDate)){
+                        continue;
+                    }
+
+                    if(!(scheduleDate.isAfter(timeRangeVo.getMondayDate()) && scheduleDate.isBefore(timeRangeVo.getSundayDate()))){
+                        continue;
+                    }
+
+                    if("早自习".equals(courseListVo.getShortName())){
+                        zkTimes += weightSetMap.get(courseListVo.getShortName());
+                    }else if(zkList.contains(courseListVo.getShortName())){
+                        zkTimes += weightSetMap.get(courseListVo.getShortName());
+                    }else if(wzxList.contains(courseListVo.getShortName())){
+                        wzxTimes += weightSetMap.get(courseListVo.getShortName());
+                    }
+
+                    if(courseListVo.getAdjustType() != null && !courseListVo.getAdjustType().isEmpty()){
+                        if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseListVo.getAdjustType())){
+                            dkTimes += weightSetMap.get(courseListVo.getShortName());
+                        }else if(CourseAdjustTypeEnum.courseExchange.getCode().equals(courseListVo.getAdjustType())){
+                            tkTimes += weightSetMap.get(courseListVo.getShortName());
+                        }
+                    }
+                }
+                timeRangeVo.setZkTimes(zkTimes);
+                timeRangeVo.setWzxTimes(wzxTimes);
+                timeRangeVo.setDkTimes(dkTimes);
+                timeRangeVo.setTkTimes(tkTimes);
+                allTimes += (zkTimes + wzxTimes);
+            }
+            weekDataJson.add("weekData", new Gson().toJsonTree(weekTimeRangeVos));
+            weekDataJson.addProperty("allTimes", allTimes);
+            record.setWeekData(weekDataJson.toString());
+
+            //计算总课时
+            allClassTime = allClassTime + classTime7 + classTime8 + classTime9;
+            record.setAllClassTime(allClassTime);
+
+            //计算该老师发起的事假、病假顶课数据
+            List<CourseListVo> substituteList = allSubstituteList.stream().filter(x -> x.getTeacherId().equals(teacher.getId().toString()))
+                    .collect(Collectors.toList());
+            Double reduceTime = 0d;
+            for (CourseListVo courseListVo : substituteList) {
+                Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
+                if(deleteDates.contains(courseListVo.getScheduleDate())){
+                    continue;
+                }
+                reduceTime += weightSetMap.get(courseListVo.getShortName());
+            }
+
+            //计算费用,根据聘用类型判断费用问题
+            Double classTimeAmount = 0d;
+            Double beyondClassTimeAmount = 0d;
+
+            BigDecimal zzxCost = BigDecimal.ZERO;//早自习费用
+            if("FB1601".equals(teacher.getEmployType())){
+                zzxCost = BigDecimal.valueOf(costSetMap.get("cost1"));
+            }else{//外聘FB1605、合作人员FB1609
+                zzxCost = BigDecimal.valueOf(costSetMap.get("cost2"));
+            }
+            classTimeAmount += BigDecimal.valueOf(classTime7).multiply(zzxCost).doubleValue();
+
+            BigDecimal zkCost = BigDecimal.ZERO;//正课费用
+            if("FB1601".equals(teacher.getEmployType())){
+                zkCost = BigDecimal.valueOf(costSetMap.get("cost3"));
+            }else{//外聘FB1605、合作人员FB1609
+                zkCost = BigDecimal.valueOf(costSetMap.get("cost4"));
+            }
+            classTimeAmount += BigDecimal.valueOf(classTime8).multiply(zkCost).doubleValue();
+
+            BigDecimal wzxCost = BigDecimal.ZERO;//晚自习费用
+            if("FB1601".equals(teacher.getEmployType())){
+                wzxCost = BigDecimal.valueOf(costSetMap.get("cost5"));
+            }else{//外聘FB1605、合作人员FB1609
+                wzxCost = BigDecimal.valueOf(costSetMap.get("cost6"));
+            }
+            classTimeAmount += BigDecimal.valueOf(classTime9).multiply(wzxCost).doubleValue();
+
+            BigDecimal dkCost = BigDecimal.ZERO;//顶课费用,顶课老师加钱
+            if("FB1601".equals(teacher.getEmployType())){
+                dkCost = BigDecimal.valueOf(costSetMap.get("cost11"));
+            }else{//外聘FB1605、合作人员FB1609
+                dkCost = BigDecimal.valueOf(costSetMap.get("cost12"));
+            }
+            classTimeAmount += BigDecimal.valueOf(classTime10).multiply(dkCost).doubleValue();
+
+            BigDecimal bdkCost = BigDecimal.ZERO;//顶课费用,被顶课老师扣钱
+            if("FB1601".equals(teacher.getEmployType())){
+                bdkCost = BigDecimal.valueOf(costSetMap.get("cost13"));
+            }else{//外聘FB1605、合作人员FB1609
+                bdkCost = BigDecimal.valueOf(costSetMap.get("cost14"));
+            }
+            //计算被扣除的费用
+            BigDecimal reduceTimeAmount = bdkCost.multiply(BigDecimal.valueOf(reduceTime));
+
+            //计算总课时费用
+            classTimeAmount = BigDecimal.valueOf(classTimeAmount).subtract(reduceTimeAmount).doubleValue();
+
+            //计算超出的课时,需要先计算出每个周的开始结束时间
+            BigDecimal ccksTime = BigDecimal.ZERO;//超出课时标准(每周)
+            if("FB1601".equals(teacher.getEmployType())){
+                ccksTime = BigDecimal.valueOf(costSetMap.get("cost7"));
+            }else{//外聘FB1605、合作人员FB1609
+                ccksTime = BigDecimal.valueOf(costSetMap.get("cost8"));
+            }
+            BigDecimal ccksCost = BigDecimal.ZERO;
+            if("FB1601".equals(teacher.getEmployType())){
+                ccksCost = BigDecimal.valueOf(costSetMap.get("cost9"));
+            }else{//外聘FB1605、合作人员FB1609
+                ccksCost = BigDecimal.valueOf(costSetMap.get("cost10"));
+            }
+            //计算出总的超出课时并计算超课时费
+            BigDecimal allCcksTime = BigDecimal.valueOf(allClassTime).subtract(ccksTime.multiply(BigDecimal.valueOf(weekTimeRangeVos.size())));
+            beyondClassTimeAmount = allCcksTime.multiply(ccksCost).doubleValue();
+            if(!"FB1601".equals(teacher.getEmployType())){
+                record.setBeyondClassTimeAmount(beyondClassTimeAmount);
+            }
+
+            //计算总金额,课时费+超课时费
+            Double totalAmount = classTimeAmount + beyondClassTimeAmount - reduceTimeAmount.doubleValue();
+            record.setTotalAmount(totalAmount);
+
+            insertList.add(record);
+        }
+
+        if(!insertList.isEmpty()){
+            //先删除
+            recordMapper.delete(
+                new QueryWrapper<ClassTimeStatisticsRecord>().lambda()
+                    .eq(ClassTimeStatisticsRecord::getClassTimeStatisticsId, statistics.getId())
+            );
+            for (ClassTimeStatisticsRecord record : insertList) {
+                recordMapper.insert(record);
+            }
+        }
+
+        return true;
+    }
+
+    //计算日期内一共几个周,并返回每周的周一日期和周日日期
+    private static List<WeekTimeRangeVo> calculateNaturalWeeks(LocalDate startDate, LocalDate endDate) {
+        List<WeekTimeRangeVo> result = new ArrayList<>();
+        // 获取第一个周一
+        LocalDate currentMonday = startDate.with(DayOfWeek.MONDAY);
+        // 如果 startDate 不是周一,则用下一个周一
+        if (!startDate.isEqual(currentMonday) && startDate.isAfter(currentMonday)) {
+            currentMonday = currentMonday.plusWeeks(1);
+        }
+
+        int weeks = 1;
+        // 遍历每个周
+        while (!currentMonday.isAfter(endDate)) {
+            // 计算当前周的周日
+            LocalDate currentSunday = currentMonday.plusDays(6);
+
+            // 限制周日的范围
+            if (currentSunday.isAfter(endDate)) {
+                currentSunday = endDate;
+            }
+
+            // 添加结果
+            WeekTimeRangeVo timeRangeVo = new WeekTimeRangeVo();
+            timeRangeVo.setMondayDate(currentMonday);
+            timeRangeVo.setSundayDate(currentSunday);
+            timeRangeVo .setWeeks(weeks);
+            result.add(timeRangeVo);
+
+            // 移动到下一个周的周一
+            currentMonday = currentMonday.plusWeeks(1);
+            weeks ++;
+        }
+
+        return result;
+    }
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsSetServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.classtime.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
+import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsSetMapper;
+import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 课时统计-设置
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class ClassTimeStatisticsSetServiceImpl extends MPJBaseServiceImpl<ClassTimeStatisticsSetMapper, ClassTimeStatisticsSet> implements IClassTimeStatisticsSetService {
+}

+ 68 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarPageVo.java

@@ -0,0 +1,68 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 节假日调课设置分页列表出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeCalendarPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 补班日期
+    */
+    @ApiModelProperty("补班日期")
+    private Integer supplementDate;
+    /**
+    * 补课日期
+    */
+    @ApiModelProperty("补课日期")
+    private Date replaceDate;
+
+}

+ 40 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarVo.java

@@ -0,0 +1,40 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 节假日调课设置表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeCalendarVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 补班日期
+    */
+    @ApiModelProperty("补班日期")
+    private Integer supplementDate;
+    /**
+    * 补课日期
+    */
+    @ApiModelProperty("补课日期")
+    private Date replaceDate;
+
+
+
+}

+ 78 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeDeletePageVo.java

@@ -0,0 +1,78 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时删除分页列表出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeDeletePageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志(0:作废 1:启用 2:锁定)")
+    private Integer enabledMark;
+    /**
+    * 删除类型(xjr_dictionary_item[class_time_delete])
+    */
+    @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
+    private String type;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer classId;
+    /**
+    * 删除说明
+    */
+    @ApiModelProperty("删除说明")
+    private String remark;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private Date startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private Date endDate;
+
+}

+ 50 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeDeleteVo.java

@@ -0,0 +1,50 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时删除表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeDeleteVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 删除类型(xjr_dictionary_item[class_time_delete])
+    */
+    @ApiModelProperty("删除类型(xjr_dictionary_item[class_time_delete])")
+    private String type;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer classId;
+    /**
+    * 删除说明
+    */
+    @ApiModelProperty("删除说明")
+    private String remark;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private Date startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private Date endDate;
+
+
+
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsPageVo.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时统计分页列表出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+    /**
+    * 统计年份
+    */
+    @ApiModelProperty("统计年份")
+    private Integer year;
+    /**
+    * 统计月份
+    */
+    @ApiModelProperty("统计月份")
+    private Integer month;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private Date startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private Date endDate;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 总课时费用
+    */
+    @ApiModelProperty("总课时费用")
+    private Double classTimeAmount;
+    /**
+    * 总外聘教师超课时费
+    */
+    @ApiModelProperty("总外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 状态(0:已解锁 1:已锁定)
+    */
+    @ApiModelProperty("状态(0:已解锁 1:已锁定)")
+    private Integer status;
+
+}

+ 130 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsRecordVo.java

@@ -0,0 +1,130 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时统计-教师详情表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsRecordVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 课时统计(class_time_statistics)
+    */
+    @ApiModelProperty("课时统计(class_time_statistics)")
+    private Long classTimeStatisticsId;
+    /**
+    * 教师id(xjr_user)
+    */
+    @ApiModelProperty("教师id(xjr_user)")
+    private Long userId;
+    /**
+    * 聘用类型
+    */
+    @ApiModelProperty("聘用类型")
+    private Date employType;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 课时费用
+    */
+    @ApiModelProperty("课时费用")
+    private Double classTimeAmount;
+    /**
+    * 外聘教师超课时费
+    */
+    @ApiModelProperty("外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 每周数据
+    */
+    @ApiModelProperty("每周数据")
+    private String weekData;
+    /**
+    * 教研会
+    */
+    @ApiModelProperty("教研会")
+    private Double classTime1;
+    /**
+    * 督导听课
+    */
+    @ApiModelProperty("督导听课")
+    private Double classTime2;
+    /**
+    * 临近三年退休政策
+    */
+    @ApiModelProperty("临近三年退休政策")
+    private Double classTime3;
+    /**
+    * 出题
+    */
+    @ApiModelProperty("出题")
+    private Double classTime4;
+    /**
+    * 阅卷
+    */
+    @ApiModelProperty("阅卷")
+    private Double classTime5;
+    /**
+    * 周末培优
+    */
+    @ApiModelProperty("周末培优")
+    private Double classTime6;
+    /**
+    * 早自习
+    */
+    @ApiModelProperty("早自习")
+    private Double classTime7;
+    /**
+    * 正课(包含调顶课时)
+    */
+    @ApiModelProperty("正课(包含调顶课时)")
+    private Double classTime8;
+    /**
+    * 晚辅(包含调顶课时)
+    */
+    @ApiModelProperty("晚辅(包含调顶课时)")
+    private Double classTime9;
+    /**
+    * 顶课
+    */
+    @ApiModelProperty("顶课")
+    private Double classTime10;
+    /**
+    * 调课
+    */
+    @ApiModelProperty("调课")
+    private Double classTime11;
+    /**
+    * 权重json
+    */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+    * 权重json
+    */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
+
+
+
+}

+ 63 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsSetPageVo.java

@@ -0,0 +1,63 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时统计-设置分页列表出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsSetPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+    /**
+    * 权重内容
+    */
+    @ApiModelProperty("权重内容")
+    private String jsonContent;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer category;
+
+}

+ 33 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsSetVo.java

@@ -0,0 +1,33 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 课时统计-设置表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsSetVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 权重内容
+    */
+    @ApiModelProperty("权重内容")
+    private String jsonContent;
+    /**
+    * 类别(1:权重 2:费用设置)
+    */
+    @ApiModelProperty("类别(1:权重 2:费用设置)")
+    private Integer category;
+
+
+
+}

+ 78 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsVo.java

@@ -0,0 +1,78 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 课时统计表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 统计年份
+    */
+    @ApiModelProperty("统计年份")
+    private Integer year;
+    /**
+    * 统计月份
+    */
+    @ApiModelProperty("统计月份")
+    private Integer month;
+    /**
+    * 开始日期
+    */
+    @ApiModelProperty("开始日期")
+    private Date startDate;
+    /**
+    * 结束日期
+    */
+    @ApiModelProperty("结束日期")
+    private Date endDate;
+    /**
+    * 总课时
+    */
+    @ApiModelProperty("总课时")
+    private Double allClassTime;
+    /**
+    * 总金额
+    */
+    @ApiModelProperty("总金额")
+    private Double totalAmount;
+    /**
+    * 总课时费用
+    */
+    @ApiModelProperty("总课时费用")
+    private Double classTimeAmount;
+    /**
+    * 总外聘教师超课时费
+    */
+    @ApiModelProperty("总外聘教师超课时费")
+    private Double beyondClassTimeAmount;
+    /**
+    * 状态(0:已解锁 1:已锁定)
+    */
+    @ApiModelProperty("状态(0:已解锁 1:已锁定)")
+    private Integer status;
+
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String weightSetJson;
+    /**
+     * 权重json
+     */
+    @ApiModelProperty("权重json")
+    private String costSetJson;
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/classtime/vo/CourseListVo.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+* @title: 教师课程信息
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class CourseListVo {
+
+
+    @ApiModelProperty("班级id")
+    private Long classId;
+
+    @ApiModelProperty("教师id")
+    private String teacherId;
+
+    @ApiModelProperty("所属节次")
+    private String shortName;
+
+    @ApiModelProperty("调顶课类型")
+    private String adjustType;
+
+    @ApiModelProperty("调顶课类型")
+    private String reason;
+
+    @ApiModelProperty("上课日期")
+    private LocalDate scheduleDate;
+
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/classtime/vo/TeacherListVo.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 教师信息
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class TeacherListVo {
+
+
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ApiModelProperty("聘用方式")
+    private String employType;
+
+}

+ 41 - 0
src/main/java/com/xjrsoft/module/classtime/vo/WeekTimeRangeVo.java

@@ -0,0 +1,41 @@
+package com.xjrsoft.module.classtime.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+* @title: 课时删除表单出参
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class WeekTimeRangeVo {
+
+    @ApiModelProperty("第几周")
+    private Integer weeks;
+
+    @ApiModelProperty("周一日期")
+    private LocalDate mondayDate;
+
+
+    @ApiModelProperty("周日日期")
+    private LocalDate sundayDate;
+
+
+    @ApiModelProperty("正课课时")
+    private Double zkTimes;
+
+    @ApiModelProperty("顶课课时")
+    private Double dkTimes;
+
+    @ApiModelProperty("调课课时")
+    private Double tkTimes;
+
+    @ApiModelProperty("晚自习课时")
+    private Double wzxTimes;
+
+}

+ 3 - 1
src/main/java/com/xjrsoft/module/concat/controller/ConcatController.java

@@ -56,10 +56,11 @@ public class ConcatController {
                 }}
                 }}
             );
             );
         }
         }
-        String sql = "SELECT t1.name, t1.mobile,t2.dept_id FROM xjr_user t1" +
+        String sql = "SELECT t1.name, t1.mobile,t2.dept_id,t6.name as gender_cn FROM xjr_user t1" +
                 " LEFT JOIN xjr_user_dept_relation t2 ON t1.id = t2.user_id" +
                 " LEFT JOIN xjr_user_dept_relation t2 ON t1.id = t2.user_id" +
                 " LEFT JOIN xjr_user_role_relation t3 ON t1.id = t3.user_id" +
                 " LEFT JOIN xjr_user_role_relation t3 ON t1.id = t3.user_id" +
                 " LEFT JOIN xjr_department t5 ON t2.dept_id = t5.id" +
                 " LEFT JOIN xjr_department t5 ON t2.dept_id = t5.id" +
+                " left join xjr_dictionary_detail t6 on t1.gender = t6.code" +
                 " WHERE t1.delete_mark = 0" +
                 " WHERE t1.delete_mark = 0" +
                 " AND t3.role_id = 2";
                 " AND t3.role_id = 2";
         if(dto.getDeptId() != null){
         if(dto.getDeptId() != null){
@@ -81,6 +82,7 @@ public class ConcatController {
                         setName(user.get("name").toString());
                         setName(user.get("name").toString());
                         setMobile(user.get("mobile").toString());
                         setMobile(user.get("mobile").toString());
                         setType(2);
                         setType(2);
+                        setGender(user.get("gender_cn").toString());
                     }}
                     }}
             );
             );
         }
         }

+ 55 - 0
src/main/java/com/xjrsoft/module/ledger/controller/LedgerCustomController.java

@@ -0,0 +1,55 @@
+package com.xjrsoft.module.ledger.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.db.Entity;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.module.ledger.dto.LedgerCustomDeleteDto;
+import com.xjrsoft.module.ledger.dto.LedgerCustomUpdateDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+* @title: 台账自定义接口
+* @Author dzx
+* @Date: 2024年9月26日
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/ledger" + "/ledgerCustom")
+@Api(value = "/ledger"  + "/ledgerCustom",tags = "台账自定义处理接口")
+@AllArgsConstructor
+public class LedgerCustomController {
+
+
+    @PutMapping
+    @ApiOperation(value = "修改状态(仅限于表中有enabled_mark)")
+    @SaCheckPermission("ledgerconfigrelease:edit")
+    public RT<Boolean> update(@Valid @RequestBody LedgerCustomUpdateDto dto){
+        Entity params = Entity.create(dto.getTableName());
+        params.set("enabled_mark", dto.getEnabledMark());
+
+        Entity where = Entity.create(dto.getTableName());
+        where.set("id", dto.getId());
+
+        return RT.ok(SqlRunnerAdapter.db().dynamicUpdate(dto.getTableName(), params, where));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除数据(仅限于表中有delete_mark)")
+    @SaCheckPermission("ledgerconfigrelease:delete")
+    public RT<Boolean> delete(@Valid @RequestBody LedgerCustomDeleteDto dto){
+        Entity where = Entity.create(dto.getTableName());
+        where.set("id", dto.getId());
+        return RT.ok(SqlRunnerAdapter.db().dynamicDelete(dto.getTableName(), where));
+    }
+
+}

+ 23 - 0
src/main/java/com/xjrsoft/module/ledger/dto/LedgerCustomDeleteDto.java

@@ -0,0 +1,23 @@
+package com.xjrsoft.module.ledger.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 台账自定义操作
+* @Author szs
+* @Date: 2024-03-20
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class LedgerCustomDeleteDto {
+
+    @ApiModelProperty("台账数据id")
+    private Long id;
+
+    @ApiModelProperty("表名称")
+    private String tableName;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/ledger/dto/LedgerCustomUpdateDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.ledger.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 台账自定义操作
+* @Author szs
+* @Date: 2024-03-20
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class LedgerCustomUpdateDto {
+
+    @ApiModelProperty("台账数据id")
+    private Long id;
+
+    @ApiModelProperty("表名称")
+    private String tableName;
+
+    @ApiModelProperty("表名称")
+    private Integer enabledMark;
+}

+ 3 - 0
src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java

@@ -42,4 +42,7 @@ public class NewsPageDto extends PageInput {
     @ApiModelProperty("是否已读(2:是 0:否)")
     @ApiModelProperty("是否已读(2:是 0:否)")
     private Integer readMark;
     private Integer readMark;
 
 
+    @ApiModelProperty(value = "当前角色id", hidden = true)
+    private Long loginRoleId;
+
 }
 }

+ 53 - 0
src/main/java/com/xjrsoft/module/oa/entity/WfTeacherCourseTime.java

@@ -0,0 +1,53 @@
+package com.xjrsoft.module.oa.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+
+/**
+* @title: 课时补充
+* @Author dzx
+* @Date: 2024年9月27日
+* @Version 1.0
+*/
+@Data
+@TableName("wf_teacher_course_time")
+@ApiModel(value = "wf_teacher_course_time", description = "课时补充")
+public class WfTeacherCourseTime implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+
+    @ApiModelProperty("教师(xjr_user)")
+    private Long applyUserId;
+
+    @ApiModelProperty("部门id(xjr_department)")
+    private Long deptId;
+
+    @ApiModelProperty("课时类型(xjr_dictionary_item[course_time_type])")
+    private String courseTimeType;
+
+    @ApiModelProperty("补充课时")
+    private Double courseTime;
+
+    @ApiModelProperty("上课日期")
+    private LocalDate scheduleDate;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("说明")
+    private String explains;
+
+    @ApiModelProperty("补课人员")
+    private String teacherIds;
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/oa/mapper/NewsRelationMapper.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.oa.mapper;
 
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.oa.entity.NewsRelation;
 import com.xjrsoft.module.oa.entity.NewsRelation;
+import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -36,4 +37,7 @@ public interface NewsRelationMapper extends MPJBaseMapper<NewsRelation> {
      * @return
      * @return
      */
      */
     Boolean insertPersonl(@Param("newsId") Long newsId, @Param("userIdList")List<Long> userIdList);
     Boolean insertPersonl(@Param("newsId") Long newsId, @Param("userIdList")List<Long> userIdList);
+
+    @Insert("insert into xjr_oa_news_relation (id, news_id, user_id, create_date, read_mark) (select UUID(), #{newsId}, t.id, NOW(), 0 from xjr_user t where t.delete_mark = 0)")
+    Boolean insertAllUser(@Param("newsId") Long newsId);
 }
 }

+ 7 - 3
src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java

@@ -509,11 +509,11 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                 newsRelationMapper.insertPersonl(xjrNews.getId(), userIdList);
                 newsRelationMapper.insertPersonl(xjrNews.getId(), userIdList);
             }
             }
 
 
-        }else if (xjrNews.getSendRange() == 2) {
+        }
+        else if (xjrNews.getSendRange() == 2) {
             newsRelationMapper.insertAllTeaStaff(xjrNews.getId());
             newsRelationMapper.insertAllTeaStaff(xjrNews.getId());
         }else if (xjrNews.getSendRange() == 1) {
         }else if (xjrNews.getSendRange() == 1) {
-            newsRelationMapper.insertClassUser(xjrNews.getId(), null);
-            newsRelationMapper.insertDeptUser(xjrNews.getId(), null);
+            newsRelationMapper.insertAllUser(xjrNews.getId());
         }
         }
         return true;
         return true;
     }
     }
@@ -556,6 +556,10 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
     @Override
     @Override
     public IPage<NewsPageVo> receiptBox(NewsPageDto dto) {
     public IPage<NewsPageVo> receiptBox(NewsPageDto dto) {
         dto.setLoginId(StpUtil.getLoginIdAsLong());
         dto.setLoginId(StpUtil.getLoginIdAsLong());
+        if(StpUtil.getRoleList().contains("4")){
+            dto.setLoginRoleId(4L);
+        }
+
         IPage<NewsPageVo> page = newsMapper.receiptBox(ConventPage.getPage(dto), dto);
         IPage<NewsPageVo> page = newsMapper.receiptBox(ConventPage.getPage(dto), dto);
         return page;
         return page;
     }
     }

+ 13 - 11
src/main/java/com/xjrsoft/module/student/controller/BaseStudentAssessmentInspectionController.java

@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.validation.Valid;
 import javax.validation.Valid;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -48,13 +49,13 @@ import java.util.List;
 @AllArgsConstructor
 @AllArgsConstructor
 public class BaseStudentAssessmentInspectionController {
 public class BaseStudentAssessmentInspectionController {
 
 
-    private final IBaseStudentAssessmentInspectionService baseStudentAssessmentInspectionService;
+    private final IBaseStudentAssessmentInspectionService inspectionService;
 
 
     @GetMapping(value = "/page")
     @GetMapping(value = "/page")
     @ApiOperation(value = "学生班级巡查考核列表(分页)")
     @ApiOperation(value = "学生班级巡查考核列表(分页)")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     public RT<PageOutput<BaseStudentAssessmentInspectionPageVo>> page(@Valid BaseStudentAssessmentInspectionPageDto dto) {
     public RT<PageOutput<BaseStudentAssessmentInspectionPageVo>> page(@Valid BaseStudentAssessmentInspectionPageDto dto) {
-        Page<BaseStudentAssessmentInspectionPageVo> page = baseStudentAssessmentInspectionService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        Page<BaseStudentAssessmentInspectionPageVo> page = inspectionService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         return RT.ok(ConventPage.getPageOutput(page, BaseStudentAssessmentInspectionPageVo.class));
         return RT.ok(ConventPage.getPageOutput(page, BaseStudentAssessmentInspectionPageVo.class));
     }
     }
 
 
@@ -62,7 +63,7 @@ public class BaseStudentAssessmentInspectionController {
     @ApiOperation(value = "根据id查询学生班级巡查考核信息")
     @ApiOperation(value = "根据id查询学生班级巡查考核信息")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     public RT<BaseStudentAssessmentInspectionVo> info(@RequestParam Long id) {
     public RT<BaseStudentAssessmentInspectionVo> info(@RequestParam Long id) {
-        BaseStudentAssessmentInspectionVo result = baseStudentAssessmentInspectionService.getInfo(id);
+        BaseStudentAssessmentInspectionVo result = inspectionService.getInfo(id);
         return RT.ok(result);
         return RT.ok(result);
     }
     }
 
 
@@ -70,7 +71,7 @@ public class BaseStudentAssessmentInspectionController {
     @ApiOperation(value = "学生操行分记录管理列表(移动端)")
     @ApiOperation(value = "学生操行分记录管理列表(移动端)")
     @SaCheckPermission("basestudentbehaviormanage:detail")
     @SaCheckPermission("basestudentbehaviormanage:detail")
     public RT<PageOutput<BaseStudentAssessmentInspectionMobilePageVo>> mobilePage(@Valid BaseStudentAssessmentInspectionMobilePageDto dto) {
     public RT<PageOutput<BaseStudentAssessmentInspectionMobilePageVo>> mobilePage(@Valid BaseStudentAssessmentInspectionMobilePageDto dto) {
-        Page<BaseStudentAssessmentInspectionMobilePageVo> page = baseStudentAssessmentInspectionService.getMobilePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        Page<BaseStudentAssessmentInspectionMobilePageVo> page = inspectionService.getMobilePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         if (page == null) {
         if (page == null) {
             return RT.ok(ConventPage.getPageOutputNull(BaseStudentAssessmentInspectionMobilePageVo.class));
             return RT.ok(ConventPage.getPageOutputNull(BaseStudentAssessmentInspectionMobilePageVo.class));
         }
         }
@@ -81,7 +82,7 @@ public class BaseStudentAssessmentInspectionController {
     @ApiOperation(value = "根据id查询学生班级巡查考核信息(移动端)")
     @ApiOperation(value = "根据id查询学生班级巡查考核信息(移动端)")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     public RT<BaseStudentAssessmentInspectionMobileVo> mobileInfo(@Valid Long id) {
     public RT<BaseStudentAssessmentInspectionMobileVo> mobileInfo(@Valid Long id) {
-        BaseStudentAssessmentInspectionMobileVo result = baseStudentAssessmentInspectionService.getMobileInfo(id);
+        BaseStudentAssessmentInspectionMobileVo result = inspectionService.getMobileInfo(id);
         return RT.ok(result);
         return RT.ok(result);
     }
     }
 
 
@@ -89,8 +90,9 @@ public class BaseStudentAssessmentInspectionController {
     @ApiOperation(value = "新增学生班级巡查考核")
     @ApiOperation(value = "新增学生班级巡查考核")
     @SaCheckPermission("basestudentassessmentinspection:add")
     @SaCheckPermission("basestudentassessmentinspection:add")
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentAssessmentInspectionDto dto) {
     public RT<Boolean> add(@Valid @RequestBody AddBaseStudentAssessmentInspectionDto dto) {
-        BaseStudentAssessmentInspection baseStudentAssessmentInspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class);
-        boolean isSuccess = baseStudentAssessmentInspectionService.save(baseStudentAssessmentInspection);
+        BaseStudentAssessmentInspection inspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class);
+        inspection.setCreateDate(new Date());
+        boolean isSuccess = inspectionService.save(inspection);
         return RT.ok(isSuccess);
         return RT.ok(isSuccess);
     }
     }
 
 
@@ -100,7 +102,7 @@ public class BaseStudentAssessmentInspectionController {
     public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentAssessmentInspectionDto dto) {
     public RT<Boolean> update(@Valid @RequestBody UpdateBaseStudentAssessmentInspectionDto dto) {
 
 
         BaseStudentAssessmentInspection baseStudentAssessmentInspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class);
         BaseStudentAssessmentInspection baseStudentAssessmentInspection = BeanUtil.toBean(dto, BaseStudentAssessmentInspection.class);
-        return RT.ok(baseStudentAssessmentInspectionService.updateById(baseStudentAssessmentInspection));
+        return RT.ok(inspectionService.updateById(baseStudentAssessmentInspection));
 
 
     }
     }
 
 
@@ -108,14 +110,14 @@ public class BaseStudentAssessmentInspectionController {
     @ApiOperation(value = "删除学生班级巡查考核")
     @ApiOperation(value = "删除学生班级巡查考核")
     @SaCheckPermission("basestudentassessmentinspection:delete")
     @SaCheckPermission("basestudentassessmentinspection:delete")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
-        return RT.ok(baseStudentAssessmentInspectionService.removeBatchByIds(ids));
+        return RT.ok(inspectionService.removeBatchByIds(ids));
     }
     }
 
 
     @GetMapping(value = "/calss-quantitative-assessment-page")
     @GetMapping(value = "/calss-quantitative-assessment-page")
     @ApiOperation(value = "班级量化考核列表(分页)")
     @ApiOperation(value = "班级量化考核列表(分页)")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     @SaCheckPermission("basestudentassessmentinspection:detail")
     public RT<PageOutput<CalssQuantitativeAssessmentPageVo>> calssQuantitativeAssessmentPage(@Valid CalssQuantitativeAssessmentPageDto dto) {
     public RT<PageOutput<CalssQuantitativeAssessmentPageVo>> calssQuantitativeAssessmentPage(@Valid CalssQuantitativeAssessmentPageDto dto) {
-        IPage<CalssQuantitativeAssessmentPageVo> page = baseStudentAssessmentInspectionService.getCalssQuantitativeAssessmentPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        IPage<CalssQuantitativeAssessmentPageVo> page = inspectionService.getCalssQuantitativeAssessmentPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         return RT.ok(ConventPage.getPageOutput(page, CalssQuantitativeAssessmentPageVo.class));
         return RT.ok(ConventPage.getPageOutput(page, CalssQuantitativeAssessmentPageVo.class));
     }
     }
 
 
@@ -125,6 +127,6 @@ public class BaseStudentAssessmentInspectionController {
     @GetMapping("/export")
     @GetMapping("/export")
     @ApiOperation(value = "导出")
     @ApiOperation(value = "导出")
     public ResponseEntity<byte[]>  exportDataQuery() {
     public ResponseEntity<byte[]>  exportDataQuery() {
-        return baseStudentAssessmentInspectionService.getQuantitativeAssessmentExcelByte(new QuantitativeAssessmentExcelDto());
+        return inspectionService.getQuantitativeAssessmentExcelByte(new QuantitativeAssessmentExcelDto());
     }
     }
 }
 }

+ 36 - 25
src/main/java/com/xjrsoft/module/student/dto/AddBaseStudentAssessmentInspectionDto.java

@@ -24,65 +24,76 @@ public class AddBaseStudentAssessmentInspectionDto implements Serializable {
     */
     */
     @ApiModelProperty("序号")
     @ApiModelProperty("序号")
     private Integer sortCode;
     private Integer sortCode;
-    /**
-    * 学生考核项目编号(base_student_assessment_category)
-    */
     @ApiModelProperty("学生考核项目编号(base_student_assessment_category)")
     @ApiModelProperty("学生考核项目编号(base_student_assessment_category)")
     private Long baseStudentAssessmentCategoryId;
     private Long baseStudentAssessmentCategoryId;
     /**
     /**
-    * 班级考核项目编号(base_student_assessment_project)
-    */
+     * 班级考核项目编号(base_student_assessment_project)
+     */
     @ApiModelProperty("班级考核项目编号(base_student_assessment_project)")
     @ApiModelProperty("班级考核项目编号(base_student_assessment_project)")
     private Long baseStudentAssessmentProjectId;
     private Long baseStudentAssessmentProjectId;
     /**
     /**
-    * 学期ID(base_semester)
-    */
+     * 学期ID(base_semester)
+     */
     @ApiModelProperty("学期ID(base_semester)")
     @ApiModelProperty("学期ID(base_semester)")
     private Long baseSemesterId;
     private Long baseSemesterId;
     /**
     /**
-    * 入学年级(base_grade)
-    */
+     * 入学年级(base_grade)
+     */
     @ApiModelProperty("入学年级(base_grade)")
     @ApiModelProperty("入学年级(base_grade)")
     private Long gradeId;
     private Long gradeId;
     /**
     /**
-    * 班级Ids(多选)
-    */
+     * 班级Ids(多选)
+     */
     @ApiModelProperty("班级Ids(多选)")
     @ApiModelProperty("班级Ids(多选)")
     private String classIds;
     private String classIds;
     /**
     /**
-    * 考核时间
-    */
+     * 学生Ids(多选)
+     */
+    @ApiModelProperty("学生Ids(多选)")
+    private String studentUserIds;
+    /**
+     * 考核时间
+     */
     @ApiModelProperty("考核时间")
     @ApiModelProperty("考核时间")
     private Date assessmentDate;
     private Date assessmentDate;
     /**
     /**
-    * 分数
-    */
+     * 分数
+     */
     @ApiModelProperty("分数")
     @ApiModelProperty("分数")
     private Double score;
     private Double score;
     /**
     /**
-    * 分数类型(xjr_dictionary_item[score_type])
-    */
+     * 分数类型(xjr_dictionary_item[score_type])
+     */
     @ApiModelProperty("分数类型(xjr_dictionary_item[score_type])")
     @ApiModelProperty("分数类型(xjr_dictionary_item[score_type])")
     private String scoreType;
     private String scoreType;
     /**
     /**
-    * 考核用户ID(xjr_user)
-    */
+     * 考核用户ID(xjr_user)
+     */
     @ApiModelProperty("考核用户ID(xjr_user)")
     @ApiModelProperty("考核用户ID(xjr_user)")
     private Long assessmentUserId;
     private Long assessmentUserId;
     /**
     /**
-    * 原因
-    */
+     * 原因
+     */
     @ApiModelProperty("原因")
     @ApiModelProperty("原因")
     private String reason;
     private String reason;
     /**
     /**
-    * 文件ID(xjr_file)
-    */
+     * 文件ID(xjr_file)
+     */
     @ApiModelProperty("文件ID(xjr_file)")
     @ApiModelProperty("文件ID(xjr_file)")
     private Long fileId;
     private Long fileId;
     /**
     /**
-    * 状态(1:结束 0:未结束)
-    */
+     * 状态(1:结束 0:未结束)
+     */
     @ApiModelProperty("状态(1:结束 0:未结束)")
     @ApiModelProperty("状态(1:结束 0:未结束)")
     private Integer status;
     private Integer status;
 
 
+    /**
+     * 考核对象
+     */
+    @ApiModelProperty("考核对象")
+    private String assessmentType;
+
+    @ApiModelProperty("学生考核项目编号(base_student_assessment_item主键)")
+    private Long baseStudentAssessmentItemId;
+
 }
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentAssessmentInspectionPageDto.java

@@ -38,4 +38,7 @@ public class BaseStudentAssessmentInspectionPageDto extends PageInput {
 
 
     @ApiModelProperty("考核人")
     @ApiModelProperty("考核人")
     private String assessmentUserName;
     private String assessmentUserName;
+
+    @ApiModelProperty("考核对象")
+    private String assessmentType;
 }
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/student/entity/BaseStudentAssessmentInspection.java

@@ -145,4 +145,7 @@ public class BaseStudentAssessmentInspection implements Serializable {
      */
      */
     @ApiModelProperty("考核对象")
     @ApiModelProperty("考核对象")
     private String assessmentType;
     private String assessmentType;
+
+    @ApiModelProperty("学生考核项目编号(base_student_assessment_item主键)")
+    private Long baseStudentAssessmentItemId;
 }
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentAssessmentInspectionPageVo.java

@@ -51,4 +51,10 @@ public class BaseStudentAssessmentInspectionPageVo {
 
 
     @ApiModelProperty("影响班级考核的学生人数")
     @ApiModelProperty("影响班级考核的学生人数")
     private Integer studentCount;
     private Integer studentCount;
+
+    @ApiModelProperty("状态(1:启用 0:作废)")
+    private Integer enabledMark;
+
+    @ApiModelProperty("考核对象")
+    private String assessmentType;
 }
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseStudentAssessmentInspectionVo.java

@@ -63,4 +63,10 @@ public class BaseStudentAssessmentInspectionVo {
 
 
     @ApiModelProperty("班级信息")
     @ApiModelProperty("班级信息")
     private List<BaseStudentAssessmentClassListVo> classList;
     private List<BaseStudentAssessmentClassListVo> classList;
+
+    @ApiModelProperty("状态(1:启用 0:作废)")
+    private Integer enabledMark;
+
+    @ApiModelProperty("考核对象")
+    private String assessmentType;
 }
 }

+ 36 - 0
src/main/resources/mapper/classtime/ClassTimeStatisticsMapper.xml

@@ -0,0 +1,36 @@
+<?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="com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsMapper">
+    <select id="getTeacherList" resultType="com.xjrsoft.module.classtime.vo.TeacherListVo">
+        SELECT t1.id,t1.name,t2.employ_type FROM xjr_user t1
+        INNER JOIN base_teacher t2 ON t1.id = t2.user_id
+        WHERE t1.delete_mark = 0 AND t2.employ_type IN ('FB1601','FB1605','FB1609')
+    </select>
+
+    <select id="getWfTeacherCourseTimeList" resultType="com.xjrsoft.module.oa.entity.WfTeacherCourseTime">
+        SELECT t1.* FROM wf_teacher_course_time t1
+        INNER JOIN xjr_workflow_form_relation t2 ON t1.id = t2.form_key_value
+        WHERE t2.current_state = 'COMPLETED'
+    </select>
+
+    <select id="getCourseList" parameterType="com.xjrsoft.module.classtime.entity.ClassTimeStatistics" resultType="com.xjrsoft.module.classtime.vo.CourseListVo">
+        SELECT t1.class_id, t1.teacher_id, t2.short_name,t1.adjust_type,t4.reason,t1.schedule_date FROM course_table t1
+        LEFT JOIN class_time t2 ON t1.time_period = t2.time_period AND t1.time_number = t2.number
+        LEFT JOIN course_table_bak t3 ON t1.id = t3.id
+        LEFT JOIN wf_course_adjust t4 ON t4.id = t3.wf_course_adjust_id
+        WHERE t1.schedule_date BETWEEN #{dto.startDate} and #{dto.endDate}
+    </select>
+
+    <select id="getSubstituteList" parameterType="com.xjrsoft.module.classtime.entity.ClassTimeStatistics" resultType="com.xjrsoft.module.classtime.vo.CourseListVo">
+        SELECT t4.short_name,t3.schedule_date,t3.class_id,t1.user_id as teacher_id FROM wf_course_adjust t1
+        INNER JOIN xjr_workflow_form_relation t2 ON t1.id = t2.form_key_value
+        INNER JOIN course_table_bak t3 ON t1.id = t3.wf_course_adjust_id
+        LEFT JOIN class_time t4 ON t3.time_period = t4.time_period AND t3.time_number = t4.number
+        WHERE t1.delete_mark = 0 AND t2.current_state = 'COMPLETED'
+        AND t1.reason IN ('sick _leave','leave_absence') and t1.adjust_type = 'course_substitute'
+        AND t3.schedule_date BETWEEN #{dto.startDate} and #{dto.endDate}
+    </select>
+
+</mapper>

+ 5 - 15
src/main/resources/mapper/oa/NewsMapper.xml

@@ -31,22 +31,12 @@
 
 
     <select id="receiptBox" parameterType="com.xjrsoft.module.oa.dto.NewsPageDto"
     <select id="receiptBox" parameterType="com.xjrsoft.module.oa.dto.NewsPageDto"
             resultType="com.xjrsoft.module.oa.vo.NewsPageVo">
             resultType="com.xjrsoft.module.oa.vo.NewsPageVo">
-        select
-        t.*,t2.name as create_user_name
-        <if test="dto.loginId != null">
-            ,t3.read_mark
-        </if>
-        from xjr_oa_news t
+        select t.*,t2.name as create_user_name from xjr_oa_news t
         left join xjr_user t2 on t.create_user_id = t2.id
         left join xjr_user t2 on t.create_user_id = t2.id
-        <if test="dto.loginId != null">
-            left join xjr_oa_news_relation t3 on t.id = t3.news_id and t3.user_id = #{dto.loginId}
-        </if>
-        where t.delete_mark = 0 and
-        (t.send_end_date > now() or t.send_end_date is null)
-          and t.status = 2
-        <if test="dto.type != null and dto.type == 2 and dto.loginId != null">
-            and (t.send_range = 1 or t.id in (select news_id from xjr_oa_news_relation t1 where user_id = #{dto.loginId}))
-        </if>
+        left join xjr_oa_news_relation t3 on t.id = t3.news_id
+        where t.delete_mark = 0
+        and (t.send_end_date > now() or t.send_end_date is null)
+        and t.status = 2 and t3.user_id = #{dto.loginId}
         <if test="dto.type != null and dto.type == 1">
         <if test="dto.type != null and dto.type == 1">
             and t.wf_status = 1
             and t.wf_status = 1
         </if>
         </if>

+ 7 - 6
src/main/resources/mapper/student/BaseStudentAssessmentInspectionMapper.xml

@@ -11,17 +11,15 @@
         ) AS assessment_class_names,
         ) AS assessment_class_names,
         (
         (
         (LENGTH(class_student_user_ids) - LENGTH(REPLACE(class_student_user_ids, ',', '')))
         (LENGTH(class_student_user_ids) - LENGTH(REPLACE(class_student_user_ids, ',', '')))
-        ) + 1 AS student_count
+        ) + 1 AS student_count,t.enabled_mark,t.assessment_type
         FROM base_student_assessment_inspection t
         FROM base_student_assessment_inspection t
-        INNER JOIN xjr_workflow_form_relation t7 ON t.id = t7.form_key_value
         LEFT JOIN base_student_assessment_category t1 ON (t1.id = t.base_student_assessment_category_id)
         LEFT JOIN base_student_assessment_category t1 ON (t1.id = t.base_student_assessment_category_id)
         LEFT JOIN base_student_assessment_project t2 ON (t2.id = t.base_student_assessment_project_id)
         LEFT JOIN base_student_assessment_project t2 ON (t2.id = t.base_student_assessment_project_id)
         LEFT JOIN base_semester t3 ON t.base_semester_id=t3.id
         LEFT JOIN base_semester t3 ON t.base_semester_id=t3.id
-        LEFT JOIN base_grade t4 ON t.grade_id=t4.id
-        LEFT JOIN xjr_user t5 ON t.create_user_id=t5.id
-        LEFT JOIN xjr_dictionary_detail t6 ON t6.code=t.score_type
+        LEFT JOIN base_grade t4 ON t.grade_id = t4.id
+        LEFT JOIN xjr_user t5 ON t.create_user_id = t5.id
+        LEFT JOIN xjr_dictionary_detail t6 ON t6.code= t.score_type
         WHERE  t.delete_mark = 0 AND t1.delete_mark = 0  AND t2.delete_mark = 0  AND t3.delete_mark = 0
         WHERE  t.delete_mark = 0 AND t1.delete_mark = 0  AND t2.delete_mark = 0  AND t3.delete_mark = 0
-        AND t7.current_state = 'COMPLETED'
         <if test="dto.projectIds != null and dto.projectIds.size() > 0">
         <if test="dto.projectIds != null and dto.projectIds.size() > 0">
             and t.base_student_assessment_project_id in
             and t.base_student_assessment_project_id in
             <foreach item="projectId" index="index" collection="dto.projectIds" open="(" close=")" separator=",">
             <foreach item="projectId" index="index" collection="dto.projectIds" open="(" close=")" separator=",">
@@ -43,6 +41,9 @@
         <if test="dto.assessmentUserName != null and dto.assessmentUserName != ''">
         <if test="dto.assessmentUserName != null and dto.assessmentUserName != ''">
             and t5.name like concat('%',#{dto.assessmentUserName},'%')
             and t5.name like concat('%',#{dto.assessmentUserName},'%')
         </if>
         </if>
+        <if test="dto.assessmentType != null and dto.assessmentType != ''">
+            and t.assessment_type like concat('%',#{dto.assessmentType},'%')
+        </if>
     </select>
     </select>
 
 
     <select id="getInfo" resultType="com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionVo">
     <select id="getInfo" resultType="com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionVo">

+ 61 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3767,4 +3767,65 @@ public class FreeMarkerGeneratorTest {
 
 
         apiGeneratorService.generateCodes(params);
         apiGeneratorService.generateCodes(params);
     }
     }
+
+    @Test
+    public void gcClassTimeStatistics() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("class_time_statistics");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        mainTable = new TableConfig();
+        mainTable.setTableName("class_time_statistics_record");//init_sql中的表名
+        mainTable.setIsMain(false);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        mainTable.setRelationField("class_time_statistics_id");//设置外键
+        mainTable.setRelationTableField(GlobalConstant.DEFAULT_PK);//设置外键
+        tableConfigs.add(mainTable);
+
+
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("classtime");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
+
+    @Test
+    public void gcClassTimeStatisticsSet() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("class_time_calendar");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("classtime");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }
 }