浏览代码

Merge branch 'dev' of https://git.yingcaibx.com/tl/api into dev

DESKTOP-USV654P\pc 4 月之前
父节点
当前提交
47f5aae475

+ 4 - 0
src/main/java/com/xjrsoft/module/courseTable/mapper/CourseTableMapper.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.courseTable.mapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.schedule.dto.ClassOptionDto;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.vo.ClassOptionVo;
 import com.xjrsoft.module.schedule.dto.CourseTableAdjustDto;
 import com.xjrsoft.module.schedule.dto.CourseTableDto;
@@ -28,4 +29,7 @@ public interface CourseTableMapper extends MPJBaseMapper<CourseTable> {
     List<CourseListVo> getAdjustList(@Param("dto") CourseTableAdjustDto dto);
 
     List<ClassOptionVo> getClassListByTeacherId(@Param("dto") ClassOptionDto dto);
+
+    //查询流程正在进行中或者已经完成的调课或者顶课申请
+    List<WfCourseAdjust> getExceptCourseList(@Param("userId") Long userId);
 }

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

@@ -70,6 +70,7 @@ import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 import org.apache.poi.xwpf.usermodel.XWPFTable;
 import org.apache.poi.xwpf.usermodel.XWPFTableCell;
 import org.apache.poi.xwpf.usermodel.XWPFTableRow;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -299,7 +300,16 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
             dto.setTeacherId(Long.parseLong(teacherId));
         }
         dto.setAdjustType(adjustType);
-
+        //查询正在进行中或者已经完成
+        List<WfCourseAdjust> exceptCourseList = courseTableMapper.getExceptCourseList(dto.getTeacherId());
+        List<Long> courseIds = new ArrayList<>();
+        for (WfCourseAdjust courseAdjust : exceptCourseList) {
+            String[] split = courseAdjust.getCourseId().split(",");
+            for (String s : split) {
+                courseIds.add(Long.parseLong(s));
+            }
+        }
+        dto.setExceptCourseList(courseIds);
         List<CourseListVo> list = courseTableMapper.getAdjustList(dto);
         for (CourseListVo courseListVo : list) {
             if (courseListVo.getTimePeriod() == 1) {
@@ -310,7 +320,6 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                 courseListVo.setTimePeriodCn("晚上");
             }
         }
-
         return list;
     }
 

+ 12 - 0
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -24,8 +24,11 @@ import com.xjrsoft.module.schedule.dto.CourseTableDto;
 import com.xjrsoft.module.schedule.dto.CourseTablePreCheckDto;
 import com.xjrsoft.module.schedule.dto.ScheduleWeekDto;
 import com.xjrsoft.module.schedule.dto.ScheduleWeekExportQueryDto;
+import com.xjrsoft.module.schedule.dto.WfCourseAdjustDto;
 import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
+import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import com.xjrsoft.module.schedule.util.ScheduleUtil;
 import com.xjrsoft.module.schedule.vo.ClassOptionVo;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
@@ -80,6 +83,7 @@ public class ScheduleController {
     private final IBaseTeacherService baseTeacherService;
     private final ITeacherbaseManagerService teacherService;
     private final IBaseSemesterService semesterService;
+    private final IWfCourseAdjustService courseAdjustService;
 
     @GetMapping(value = "/receive-msg")
     @ApiOperation(value="接收消息")
@@ -387,4 +391,12 @@ public class ScheduleController {
         List<ClassOptionVo> result = courseTableService.getClassListByTeacherId(dto);
         return RT.ok(result);
     }
+
+    @PostMapping(value = "/cancel")
+    @ApiOperation(value="调课顶课的作废")
+    @SaCheckPermission("room:detail")
+    public RT<Boolean> cancel(@Valid WfCourseAdjustDto dto){
+
+        return RT.ok(courseAdjustService.cancel(dto));
+    }
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/schedule/dto/CourseTableAdjustDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 
 /**
@@ -30,4 +31,7 @@ public class CourseTableAdjustDto implements Serializable {
     @ApiModelProperty("调课类型")
     private String adjustType;
 
+    @ApiModelProperty("除外的id")
+    private List<Long> exceptCourseList;
+
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/schedule/dto/WfCourseAdjustDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.schedule.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+/**
+* @title: 调课顶课申请
+* @Author dzx
+* @Date: 20241014
+* @Version 1.0
+*/
+@Data
+public class WfCourseAdjustDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/schedule/entity/CourseTableBak.java

@@ -36,7 +36,7 @@ public class CourseTableBak implements Serializable {
     private Long baseSemesterId;
 
     @ApiModelProperty("教师编号(用户表)")
-    private Long teacherId;
+    private String teacherId;
 
     @ApiModelProperty("教师名称")
     private String teacherName;

+ 2 - 1
src/main/java/com/xjrsoft/module/schedule/service/IWfCourseAdjustService.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.schedule.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.schedule.dto.WfCourseAdjustDto;
 import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 
 /**
@@ -12,6 +13,6 @@ import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 
 public interface IWfCourseAdjustService extends MPJBaseService<WfCourseAdjust> {
 
-
+    Boolean cancel(WfCourseAdjustDto dto);
 
 }

+ 66 - 0
src/main/java/com/xjrsoft/module/schedule/service/impl/WfCourseAdjustServiceImpl.java

@@ -1,11 +1,26 @@
 package com.xjrsoft.module.schedule.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.courseTable.service.ICourseTableService;
+import com.xjrsoft.module.schedule.dto.WfCourseAdjustDto;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
 import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.mapper.WfCourseAdjustMapper;
+import com.xjrsoft.module.schedule.service.ICourseTableBakService;
 import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
 * @Author dzx
@@ -15,4 +30,55 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class WfCourseAdjustServiceImpl extends MPJBaseServiceImpl<WfCourseAdjustMapper, WfCourseAdjust> implements IWfCourseAdjustService {
+    
+    private final ICourseTableBakService courseTableBakService;
+    private final ICourseTableService courseTableService;
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean cancel(WfCourseAdjustDto dto) {
+        WfCourseAdjust courseAdjust = this.getById(dto.getId());
+        
+        //查询出备份数据
+        List<CourseTableBak> bakList = courseTableBakService.list(
+                new QueryWrapper<CourseTableBak>().lambda()
+                        .eq(CourseTableBak::getWfCourseAdjustId, dto.getId())
+        );
+        Map<Long, CourseTableBak> bakMap = new HashMap<>();
+        for (CourseTableBak courseTableBak : bakList) {
+            bakMap.put(courseTableBak.getId(), courseTableBak);
+        }
+        List<Long> courseIds = bakList.stream().map(CourseTableBak::getId).collect(Collectors.toList());
+        List<CourseTable> list = courseTableService.listByIds(courseIds);
+        if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){//顶课
+            for (CourseTable courseTable : list) {
+                CourseTableBak tableBak = bakMap.get(courseTable.getId());
+                if(tableBak == null){
+                    continue;
+                }
+                courseTable.setTeacherId(tableBak.getTeacherId());
+                courseTable.setTeacherName(tableBak.getTeacherName());
+                courseTableService.updateById(courseTable);
+            }
+        }else if(CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())){
+            for (CourseTable courseTable : list) {
+                CourseTableBak tableBak = bakMap.get(courseTable.getId());
+                if(tableBak == null){
+                    continue;
+                }
+                courseTable.setTeacherId(tableBak.getTeacherId());
+                courseTable.setTeacherName(tableBak.getTeacherName());
+                courseTable.setScheduleDate(tableBak.getScheduleDate());
+                courseTable.setTimePeriod(tableBak.getTimePeriod());
+                courseTable.setTimeNumber(tableBak.getTimeNumber());
+                courseTable.setWeek(tableBak.getWeek());
+                courseTable.setWeeks(tableBak.getWeeks());
+                courseTable.setWeeksCn(tableBak.getWeeksCn());
+                courseTableService.updateById(courseTable);
+            }
+        }
+        courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());
+        courseAdjust.setModifyDate(new Date());
+        this.updateById(courseAdjust);
+        return true;
+    }
 }

+ 13 - 0
src/main/resources/mapper/courseTable/CourseTable.xml

@@ -44,6 +44,12 @@
         <if test="dto.classId != null">
             and t5.id = #{dto.classId}
         </if>
+        <if test="exceptCourseList != null">
+            AND t1.id in
+            <foreach item="courseId" collection="exceptCourseList" open="(" separator="," close=")">
+                #{courseId}
+            </foreach>
+        </if>
     </select>
     <select id="getAdjustList" parameterType="com.xjrsoft.module.schedule.dto.CourseTableAdjustDto" resultType="com.xjrsoft.module.schedule.vo.CourseListVo">
         SELECT t1.time_period,t4.short_name as time_number,t1.course_name,t2.name AS class_name,t3.name AS classroom_name,t1.id,t2.id as class_id FROM course_table t1
@@ -62,6 +68,13 @@
             and t1.class_id = #{dto.classId}
         </if>
     </select>
+    <select id="getExceptCourseList" parameterType="java.lang.Long" resultType="com.xjrsoft.module.schedule.entity.WfCourseAdjust">
+        SELECT a1.* FROM wf_course_adjust a1
+        INNER JOIN xjr_workflow_form_relation a2 ON a1.id = a2.form_key_value
+        WHERE a1.delete_mark = 0 AND a2.current_state IN ('COMPLETED','ACTIVE')
+        and a1.user_id = #{userId}
+    </select>
+
     <select id="getClassListByTeacherId" parameterType="com.xjrsoft.module.schedule.dto.ClassOptionDto" resultType="com.xjrsoft.module.schedule.vo.ClassOptionVo">
         SELECT id,name FROM base_class WHERE delete_mark = 0 AND id IN (
             SELECT DISTINCT class_id FROM course_table WHERE teacher_id like concat('%', #{dto.userId},'%')