Selaa lähdekoodia

调课顶课申请,流程通过后修改数据

dzx 1 vuosi sitten
vanhempi
commit
35e2b6e470

+ 32 - 0
src/main/java/com/xjrsoft/common/enums/CourseAdjustTypeEnum.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @author dzx
+ * @date 2024/2/3
+ */
+public enum CourseAdjustTypeEnum {
+    /**
+     * 顶课
+     * */
+    courseSubstitute("course_substitute", "顶课"),
+    /**
+     * 调课
+     * */
+    courseExchange("course_exchange", "调课");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    CourseAdjustTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 9 - 1
src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java

@@ -6,6 +6,7 @@ import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.vo.ClassListVo;
 import com.xjrsoft.module.schedule.dto.CourseTableAdjustDto;
 import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
 import com.xjrsoft.module.schedule.vo.CourseTableVo;
 
@@ -32,5 +33,12 @@ public interface ICourseTableService extends IService<CourseTable> {
 
     List<CourseListVo> getAdjustList(Long teacherId, Date adjustDate);
 
-    String getPreCheck(Integer preCheckType, Long courseId, Long swapCourseId, Date swapDate, Long subTeacherId);
+    String getPreCheck(String preCheckType, Long courseId, Long swapCourseId, Date swapDate, Long subTeacherId);
+
+    /**
+     * 流程审批通过后,根据日期
+     * @param courseAdjust
+     * @return
+     */
+    Boolean adjustCourse(WfCourseAdjust courseAdjust);
 }

+ 61 - 4
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -14,6 +14,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+import com.xjrsoft.common.enums.CourseAdjustTypeEnum;
 import com.xjrsoft.common.enums.TimeNumberEnum;
 import com.xjrsoft.common.enums.TimePeriodEnum;
 import com.xjrsoft.common.enums.WeekEnum;
@@ -34,6 +35,9 @@ import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.courseTable.vo.ClassListVo;
 import com.xjrsoft.module.schedule.dto.CourseTableAdjustDto;
 import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import com.xjrsoft.module.schedule.mapper.CourseTableBakMapper;
 import com.xjrsoft.module.schedule.util.ScheduleUtil;
 import com.xjrsoft.module.schedule.vo.CourseDetailVo;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
@@ -89,6 +93,8 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
     private final ClassTimeMapper classTimeMapper;
     private final BaseSemesterMapper baseSemesterMapper;
 
+    private final CourseTableBakMapper courseTableBakMapper;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean wordImport(InputStream inputStream) throws IOException {
@@ -245,9 +251,9 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
     }
 
     @Override
-    public String getPreCheck(Integer preCheckType, Long courseId, Long swapCourseId, Date swapDate, Long subTeacherId) {
-        if(preCheckType != null){
-            if(preCheckType == 1){
+    public String getPreCheck(String preCheckType, Long courseId, Long swapCourseId, Date swapDate, Long subTeacherId) {
+        if(preCheckType != null && !"".equals(preCheckType)){
+            if(CourseAdjustTypeEnum.courseExchange.getCode().equals(preCheckType)){
                 CourseTable courseTable = courseTableMapper.selectById(courseId);
                 CourseTable swapCourseTable = courseTableMapper.selectById(swapCourseId);
                 try {
@@ -259,7 +265,7 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                     throw new RuntimeException(e);
                 }
 
-            }else if(preCheckType == 2){
+            }else if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(preCheckType)){
                 CourseTable courseTable = courseTableMapper.selectById(courseId);
                 try {
                     JsonObject jsonObject = substitutePreTestin(subTeacherId, courseTable);
@@ -274,6 +280,57 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         return null;
     }
 
+    @Override
+    public Boolean adjustCourse(WfCourseAdjust courseAdjust) {
+        if(CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())){
+            CourseTable courseTable = courseTableMapper.selectById(courseAdjust.getCourseId());
+            CourseTable swapCourseTable = courseTableMapper.selectById(courseAdjust.getExchangeCourseId());
+
+        }else if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
+            CourseTable courseTable = courseTableMapper.selectById(courseAdjust.getCourseId());
+            LocalDateTime adjustDate = courseAdjust.getAdjustDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+            //获取当前学期的时间段
+            Integer current_week = null, adjust_week = null;
+            LocalDateTime now = LocalDateTime.now();
+            BaseSemester baseSemester = baseSemesterMapper.selectById(courseTable.getBaseSemesterId());
+            LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getStartDate().toInstant(), ZoneId.systemDefault());
+            LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getEndDate().toInstant(), ZoneId.systemDefault());
+            Duration between = Duration.between(startDateTime, endDateTime);
+            long days = between.toDays();
+            int weeks = (int) Math.ceil((double) days / 7);
+            for (int i = 0; i < weeks; i ++){
+                LocalDateTime startDate = startDateTime.plusDays(i * 7).withHour(0).withMinute(0).withSecond(0).withNano(0);
+                LocalDateTime endDate = startDateTime.plusDays((i + 1) * 7).withHour(23).withMinute(59).withSecond(59).withNano(9999);
+                if(now.isAfter(startDate) && now.isBefore(endDate)){
+                    current_week = i + 1;
+                }
+                if(adjustDate.isAfter(startDate) && adjustDate.isBefore(endDate)){
+                    adjust_week = i + 1;
+                }
+            }
+
+            CourseTableBak courseTableBak = BeanUtil.toBean(courseTable, CourseTableBak.class);
+            courseTableBak.setCourseTableId(courseTable.getId());
+            courseTableBak.setId(null);
+            courseTableBak.setWfCourseAdjustId(courseAdjust.getId());
+            courseTableBak.setWeek(adjust_week);
+            courseTableBakMapper.insert(courseTableBak);
+            //先判断是否本周
+            if(current_week == adjust_week){//是本周,修改后提交代码
+                courseTable.setTeacherId(courseAdjust.getExchangeTeacherId());
+                courseTableMapper.updateById(courseTable);
+            }
+        }
+        return null;
+    }
+
+    /**
+     *
+     */
+    void sendSubsitute(){
+        String url = ScheduleUtil.apiUrl  + "RescheduleApply/Extend/Substitute/Submit";
+    }
+
     /**
      *  顶课预检查
      * @param courseTable

+ 34 - 0
src/main/java/com/xjrsoft/module/liteflow/node/WfCourseAdjustNode.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.courseTable.service.ICourseTableService;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 退书申请
+ */
+@Component("wf_course_adjust_node")
+public class WfCourseAdjustNode extends NodeComponent {
+    @Autowired
+    private ICourseTableService courseTableService;
+
+    @Autowired
+    private IWfCourseAdjustService wfCourseAdjustService;
+
+    @Override
+    public void process() throws Exception {
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            WfCourseAdjust courseAdjust = wfCourseAdjustService.getById(formId);
+        }
+    }
+}

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

@@ -0,0 +1,96 @@
+package com.xjrsoft.module.schedule.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+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.LocalDateTime;
+
+/**
+ * <p>
+ * 课表备份
+ * </p>
+ *
+ * @author dzx
+ * @date 2024-02-03
+ */
+@Data
+@TableName("course_table_bak")
+@ApiModel(value = "CourseTableBak对象", description = "课表备份")
+public class CourseTableBak implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键编号")
+    private Long id;
+
+    @ApiModelProperty("course_table主键编号")
+    private Long courseTableId;
+
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+
+    @ApiModelProperty("教师编号(用户表)")
+    private Long teacherId;
+
+    @ApiModelProperty("教师名称")
+    private String teacherName;
+
+    @ApiModelProperty("课程编号(course)")
+    private Long courseId;
+
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    @ApiModelProperty("班级编号(class)")
+    private Long classId;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("周")
+    private Integer week;
+
+    @ApiModelProperty("星期几(1-7)")
+    private Integer weeks;
+
+    @ApiModelProperty("星期中文")
+    private String weeksCn;
+
+    @ApiModelProperty("时段(1=上午 2=下午 3=晚上)")
+    private Integer timePeriod;
+
+    @ApiModelProperty("节次")
+    private Integer timeNumber;
+
+    @ApiModelProperty("场地编号(site)")
+    private Long siteId;
+
+    @ApiModelProperty("场地名称")
+    private String siteName;
+
+    @ApiModelProperty("状态 1=正常 2=错误")
+    private Integer status;
+
+    @ApiModelProperty("错误信息描述")
+    private String errMsg;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createDate;
+
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime modifyDate;
+
+    @ApiModelProperty("源数据")
+    private String sourceData;
+
+    @ApiModelProperty("简约课表的id")
+    private String jianyueId;
+
+    @ApiModelProperty("调顶课申请的id")
+    private Long wfCourseAdjustId;
+}

+ 84 - 0
src/main/java/com/xjrsoft/module/schedule/entity/WfCourseAdjust.java

@@ -0,0 +1,84 @@
+package com.xjrsoft.module.schedule.entity;
+
+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;
+
+/**
+ * <p>
+ * 调课顶课申请
+ * </p>
+ *
+ * @author dzx
+ * @date 2024-02-03
+ */
+@Data
+@TableName("wf_course_adjust")
+@ApiModel(value = "WfCourseAdjust对象", description = "调课顶课申请")
+public class WfCourseAdjust implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键编号")
+    private Long 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 sortCode;
+
+    @ApiModelProperty("申请人id")
+    private Long userId;
+
+    @ApiModelProperty("专业部id")
+    private Long deptId;
+
+    @ApiModelProperty("调课类型")
+    private String adjustType;
+
+    @ApiModelProperty("原因")
+    private String reason;
+
+    @ApiModelProperty("调整日期")
+    private Date adjustDate;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("课程id(base_course_subject)")
+    private Long courseId;
+
+    @ApiModelProperty("对调日期")
+    private String exchangeDate;
+
+    @ApiModelProperty("替班教师id(xjr_user)")
+    private Long exchangeTeacherId;
+
+    @ApiModelProperty("对调课程id(base_course_subject)")
+    private Long exchangeCourseId;
+
+    @ApiModelProperty("状态(0:未通过 1:已通过)")
+    private Integer status;
+
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/schedule/mapper/CourseTableBakMapper.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.schedule.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 课表备份 Mapper 接口
+ * </p>
+ *
+ * @author dzx
+ * @since 2024-02-02
+ */
+@Mapper
+public interface CourseTableBakMapper extends MPJBaseMapper<CourseTableBak> {
+
+
+}

+ 0 - 1
src/main/java/com/xjrsoft/module/schedule/mapper/JianyueDataMapper.java

@@ -5,7 +5,6 @@ import com.xjrsoft.module.schedule.entity.JianyueData;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
-* @title: 寝室
 * @Author dzx
 * @Date: 2023-12-27
 * @Version 1.0

+ 14 - 0
src/main/java/com/xjrsoft/module/schedule/mapper/WfCourseAdjustMapper.java

@@ -0,0 +1,14 @@
+package com.xjrsoft.module.schedule.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.schedule.entity.JianyueData;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @Author dzx
+* @Date: 2023-12-27
+*/
+@Mapper
+public interface WfCourseAdjustMapper extends MPJBaseMapper<WfCourseAdjust> {
+}

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

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.schedule.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+
+/**
+* @title: 班级荣誉
+* @Author szs
+* @Date: 2023-12-06
+* @Version 1.0
+*/
+
+public interface IWfCourseAdjustService extends MPJBaseService<WfCourseAdjust> {
+
+
+
+}

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

@@ -0,0 +1,18 @@
+package com.xjrsoft.module.schedule.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import com.xjrsoft.module.schedule.mapper.WfCourseAdjustMapper;
+import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @Author dzx
+* @Date: 2024-02-03
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class WfCourseAdjustServiceImpl extends MPJBaseServiceImpl<WfCourseAdjustMapper, WfCourseAdjust> implements IWfCourseAdjustService {
+}

+ 2 - 2
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -536,7 +536,7 @@ public class DataUtil {
             String sql = "INSERT INTO class_time(id,time_period,number,full_name,short_name,create_date,summer_start_time"
                     + ",summer_end_time,winter_start_time,winter_end_time) select " + id + String.format("%04d", count) + ","
                     + jsonObject.get("tmePeriod").getAsInt() + ","
-                    + substring1 + ","
+                    + jsonObject.get("numberOfDay").getAsInt() + ","
                     + "'" + fullName + "',"
                     + "'" + fullName + "',now(),"
                     + "'" + jsonObject.get("startTime").getAsString() + "',"
@@ -545,7 +545,7 @@ public class DataUtil {
                     + "'" + jsonObject.get("endTime").getAsString() + "' FROM DUAL"
                     + " WHERE NOT EXISTS(SELECT * FROM class_time WHERE time_period = "
                     + jsonObject.get("tmePeriod").getAsInt()
-                    + " and number = " + jsonObject.get("tmePeriod").getAsInt() + ")";
+                    + " and number = " + jsonObject.get("numberOfDay").getAsInt() + ")";
             sqls.add(sql);
             count ++;
         }

+ 30 - 0
src/main/resources/sqlScript/20240125_sql.sql

@@ -84,6 +84,36 @@ CREATE TABLE course_receive_msg
     `is_callback` INT NULL DEFAULT NULL COMMENT '是否已回调',
     PRIMARY KEY (`id`)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '课表发布消息接收';
+
+DROP TABLE IF EXISTS course_table_bak;
+CREATE TABLE `course_table_bak` (
+`id` BIGINT NOT NULL COMMENT '主键编号',
+course_table_id BIGINT NOT NULL COMMENT 'course_table的主键编号',
+`base_semester_id` BIGINT DEFAULT NULL COMMENT '学期ID(base_semester)',
+`teacher_id` BIGINT NOT NULL DEFAULT '0' COMMENT '教师编号(用户表)',
+`teacher_name` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '教师名称',
+`course_id` BIGINT NOT NULL DEFAULT '0' COMMENT '课程编号(course)',
+`course_name` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '课程名称',
+`class_id` BIGINT NOT NULL DEFAULT '0' COMMENT '班级编号(class)',
+`class_name` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '班级名称',
+`week` INT DEFAULT NULL COMMENT '周',
+`weeks` INT DEFAULT NULL COMMENT '星期几(1-7)',
+`weeks_cn` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '星期中文',
+`time_period` INT NOT NULL DEFAULT '0' COMMENT '时段(1=上午 2=下午 3=晚上)',
+`time_number` INT DEFAULT NULL COMMENT '节次',
+`site_id` BIGINT NOT NULL DEFAULT '0' COMMENT '场地编号(site)',
+`site_name` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '场地名称',
+`status` INT NOT NULL DEFAULT '1' COMMENT '状态 1=正常 2=错误',
+`err_msg` VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '错误信息描述',
+`create_date` DATE DEFAULT NULL COMMENT '创建时间',
+`modify_date` DATE DEFAULT NULL COMMENT '修改时间',
+`jianyue_id` VARCHAR(40) DEFAULT NULL COMMENT '简约课表的id',
+`source_data` TEXT COMMENT '源数据',
+`wf_course_adjust_id` BIGINT NOT NULL COMMENT '调顶课申请的id',
+PRIMARY KEY (`id`) USING BTREE
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='课程备份表';
+
+
 -- ------------------
 -- 课表,字段长度调整
 -- ---------------------