Prechádzať zdrojové kódy

1、课时删除台账报错解决
2、节假日课程调整模块完善

dzx 1 rok pred
rodič
commit
6c5292e434

+ 3 - 1
src/main/java/com/xjrsoft/common/enums/CourseAdjustTypeEnum.java

@@ -12,7 +12,9 @@ public enum CourseAdjustTypeEnum {
     /**
      * 调课
      * */
-    courseExchange("course_exchange", "调课");
+    courseExchange("course_exchange", "调课"),
+
+    courseReplace("course_replace", "补班");
 
     final String code;
     final String value;

+ 2 - 3
src/main/java/com/xjrsoft/module/activity/dto/ChangeStatusDto.java

@@ -22,9 +22,8 @@ public class ChangeStatusDto implements Serializable {
     */
     @ApiModelProperty("主键编号")
     private Long id;
-    /**
-    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
-    */
+
+
     @ApiModelProperty("状态")
     private Integer status;
 }

+ 10 - 3
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeCalendarController.java

@@ -75,9 +75,8 @@ public class ClassTimeCalendarController {
     @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);
+        boolean isSuccess = classTimeCalendarService.add(dto);
+        return RT.ok(isSuccess);
     }
 
     @PutMapping
@@ -98,4 +97,12 @@ public class ClassTimeCalendarController {
 
     }
 
+    @PostMapping(value = "/cancel")
+    @ApiOperation(value="作废")
+    @SaCheckPermission("classtimecalendar:detail")
+    public RT<Boolean> cancel(@Valid @RequestBody Long id) throws Exception {
+        Boolean cancel = classTimeCalendarService.cancel(id);
+        return RT.ok(cancel);
+    }
+
 }

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

@@ -37,7 +37,6 @@ import javax.validation.Valid;
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
-import java.util.concurrent.CompletableFuture;
 
 /**
 * @title: 课时统计

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

@@ -5,7 +5,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
-import java.util.Date;
+import java.time.LocalDate;
 
 
 
@@ -25,12 +25,12 @@ public class AddClassTimeCalendarDto implements Serializable {
     */
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("补班日期")
-    private Date supplementDate;
+    private LocalDate supplementDate;
     /**
     * 补课日期
     */
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("补课日期")
-    private Date replaceDate;
+    private LocalDate replaceDate;
 
 }

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

@@ -28,8 +28,8 @@ public class AddClassTimeDeleteDto implements Serializable {
     /**
     * 类别(1:权重 2:费用设置)
     */
-    @ApiModelProperty("类别(1:权重 2:费用设置)")
-    private Integer classId;
+    @ApiModelProperty("班级id")
+    private Long classId;
     /**
     * 删除说明
     */

+ 5 - 3
src/main/java/com/xjrsoft/module/classtime/entity/ClassTimeCalendar.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.util.Date;
 
 
@@ -73,12 +74,13 @@ public class ClassTimeCalendar implements Serializable {
     * 补班日期
     */
     @ApiModelProperty("补班日期")
-    private Date supplementDate;
+    private LocalDate supplementDate;
     /**
     * 补课日期
     */
     @ApiModelProperty("补课日期")
-    private Date replaceDate;
-
+    private LocalDate replaceDate;
 
+    @ApiModelProperty("状态(0:生效 1:锁定 2:作废)")
+    private Integer status;
 }

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

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.classtime.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
 
 /**
@@ -11,4 +12,17 @@ import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
 */
 
 public interface IClassTimeCalendarService extends MPJBaseService<ClassTimeCalendar> {
+    /**
+     * 添加,添加成功后,调整课程数据
+     * @param dto
+     * @return
+     */
+    Boolean add(AddClassTimeCalendarDto dto);
+
+    /**
+     * 作废,恢复数据并删除补班的数据
+     * @param id
+     * @return
+     */
+    Boolean cancel(Long id);
 }

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

@@ -1,12 +1,25 @@
 package com.xjrsoft.module.classtime.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.module.classtime.dto.AddClassTimeCalendarDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeCalendar;
 import com.xjrsoft.module.classtime.mapper.ClassTimeCalendarMapper;
 import com.xjrsoft.module.classtime.service.IClassTimeCalendarService;
+import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.courseTable.service.ICourseTableService;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import com.xjrsoft.module.schedule.service.ICourseTableBakService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 /**
 * @title: 节假日调课设置
 * @Author dzx
@@ -16,4 +29,84 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCalendarMapper, ClassTimeCalendar> implements IClassTimeCalendarService {
+    private final ICourseTableService courseTableService;
+    private final ICourseTableBakService courseTableBakService;
+
+    @Override
+    public Boolean add(AddClassTimeCalendarDto dto) {
+        try {
+            ClassTimeCalendar classTimeCalendar = BeanUtil.toBean(dto, ClassTimeCalendar.class);
+            //1、查询补课日期的数据,将日期设置为补班日期然后新增
+            List<CourseTable> list = courseTableService.list(
+                    new QueryWrapper<CourseTable>().lambda()
+                            .eq(CourseTable::getScheduleDate, dto.getReplaceDate())
+            );
+            if(list.isEmpty()){
+                throw new MyException("未能查询到补课日期那天的课表信息,请联系管理员");
+            }
+
+            //2、删除补班日期的课表数据,包括调课和顶课,并肩删除的数据进行备份
+            List<CourseTable> deleteList = courseTableService.list(
+                    new QueryWrapper<CourseTable>().lambda()
+                            .eq(CourseTable::getScheduleDate, dto.getSupplementDate())
+            );
+            List<CourseTableBak> bakList = new ArrayList<>();
+            for (CourseTable courseTable : deleteList) {
+                CourseTableBak tableBak = BeanUtil.toBean(courseTable, CourseTableBak.class);
+                tableBak.setWfCourseAdjustId(classTimeCalendar.getId());
+                bakList.add(tableBak);
+            }
+            courseTableBakService.saveBatch(bakList);
+
+            //3、将补课日期的数据查询出来,将日期改为补班日期进行新增
+            List<CourseTable> insertList = new ArrayList<>();
+            for (CourseTable courseTable : list) {
+                courseTable.setId(null);
+                courseTable.setScheduleDate(dto.getSupplementDate());
+                courseTable.setAdjustType(CourseAdjustTypeEnum.courseReplace.getCode());
+                insertList.add(courseTable);
+            }
+
+            courseTableService.saveBatch(insertList);
+
+            classTimeCalendar.setCreateDate(new Date());
+            boolean isSuccess = this.save(classTimeCalendar);
+            return isSuccess;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new MyException("添加出错,请联系管理员");
+        }
+    }
+
+    @Override
+    public Boolean cancel(Long id) {
+        try{
+            ClassTimeCalendar calendar = this.getById(id);
+            //1、作废后,删除新增的补班课表数据
+            courseTableService.remove(
+                    new QueryWrapper<CourseTable>().lambda()
+                            .eq(CourseTable::getScheduleDate, calendar.getSupplementDate())
+                            .eq(CourseTable::getAdjustType, CourseAdjustTypeEnum.courseReplace.getCode())
+            );
+            //查询出来备份的数据,并恢复到课表中
+            List<CourseTableBak> list = courseTableBakService.list(
+                    new QueryWrapper<CourseTableBak>().lambda()
+                            .eq(CourseTableBak::getWfCourseAdjustId, calendar.getId())
+            );
+            List<CourseTable> insertList = new ArrayList<>();
+            for (CourseTableBak courseTable : list) {
+                CourseTable table = BeanUtil.toBean(courseTable, CourseTable.class);
+                insertList.add(table);
+            }
+
+            courseTableService.saveBatch(insertList);
+
+            calendar.setStatus(2);
+            calendar.setModifyDate(new Date());
+            return this.updateById(calendar);
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new MyException("作废出错,请联系管理员");
+        }
+    }
 }

+ 6 - 2
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarPageVo.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.classtime.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.Date;
 
 /**
@@ -53,11 +54,14 @@ public class ClassTimeCalendarPageVo {
     * 补班日期
     */
     @ApiModelProperty("补班日期")
-    private Date supplementDate;
+    private LocalDate supplementDate;
     /**
     * 补课日期
     */
     @ApiModelProperty("补课日期")
-    private Date replaceDate;
+    private LocalDate replaceDate;
+
+    @ApiModelProperty("状态(0:生效 1:锁定 2:作废)")
+    private Integer status;
 
 }

+ 5 - 4
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeCalendarVo.java

@@ -3,7 +3,7 @@ package com.xjrsoft.module.classtime.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
+import java.time.LocalDate;
 
 /**
 * @title: 节假日调课设置表单出参
@@ -23,13 +23,14 @@ public class ClassTimeCalendarVo {
     * 补班日期
     */
     @ApiModelProperty("补班日期")
-    private Date supplementDate;
+    private LocalDate supplementDate;
     /**
     * 补课日期
     */
     @ApiModelProperty("补课日期")
-    private Date replaceDate;
-
+    private LocalDate replaceDate;
 
+    @ApiModelProperty("状态(0:生效 1:锁定 2:作废)")
+    private Integer status;
 
 }

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

@@ -3,8 +3,6 @@ package com.xjrsoft.module.classtime.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
 * @title: 教师信息
 * @Author dzx

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

@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.time.LocalDate;
-import java.util.Date;
 
 /**
 * @title: 课时删除表单出参

+ 1 - 3
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -92,12 +92,10 @@ public class JianyuekbScheduleTask {
             }
             //删除课表信息
             String delSql = "delete from course_table where schedule_date between '" + startDateStr + "'" +
-                    " and '" + endDateStr + "'" +
+                    " and '" + endDateStr + "' and adjust_type is null" +
                     " and class_id in (" + gradeClassMaps.get(eduYearSerialNo).toString().replace("[","").replace("]","")+ ")";
             SqlRunnerAdapter.db().delete(delSql);
 
-
-
             long between = ChronoUnit.DAYS.between(startDateObj, endDateObj);
             int times = Integer.parseInt(((between / 7) + 1) + "");
 

+ 17 - 0
src/main/java/com/xjrsoft/module/schedule/service/ICourseTableBakService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.schedule.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+
+/**
+* @title: 课表数据备份表
+* @Author dzx
+* @Date: 2024年10月8日
+* @Version 1.0
+*/
+
+public interface ICourseTableBakService extends MPJBaseService<CourseTableBak> {
+
+
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/schedule/service/impl/CourseTableBakServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.schedule.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import com.xjrsoft.module.schedule.mapper.CourseTableBakMapper;
+import com.xjrsoft.module.schedule.service.ICourseTableBakService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @title: 课表数据备份表
+ * @Author dzx
+ * @Date: 2024年10月8日
+ * @Version 1.0
+ */
+@Service
+@AllArgsConstructor
+public class CourseTableBakServiceImpl extends MPJBaseServiceImpl<CourseTableBakMapper, CourseTableBak> implements ICourseTableBakService {
+}