Kaynağa Gözat

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

dzx 1 yıl önce
ebeveyn
işleme
3d5284ed18

+ 39 - 7
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -285,6 +285,44 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         if(CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())){
             CourseTable courseTable = courseTableMapper.selectById(courseAdjust.getCourseId());
             CourseTable swapCourseTable = courseTableMapper.selectById(courseAdjust.getExchangeCourseId());
+            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.setWfCourseAdjustId(courseAdjust.getId());
+            courseTableBak.setCourseTableId(courseTable.getCourseId());
+            courseTableBak.setId(null);
+            courseTableBakMapper.insert(courseTableBak);
+
+            CourseTableBak swapCourseTableBak = BeanUtil.toBean(swapCourseTable, CourseTableBak.class);
+            swapCourseTableBak.setWfCourseAdjustId(courseAdjust.getId());
+            swapCourseTableBak.setCourseTableId(swapCourseTable.getCourseId());
+            swapCourseTableBak.setId(null);
+            courseTableBakMapper.insert(swapCourseTableBak);
+            //先判断是否本周
+            if(current_week == adjust_week){//是本周,修改后提交代码
+                courseTable.setTeacherId(courseAdjust.getExchangeTeacherId());
+                courseTableMapper.updateById(courseTable);
+            }
 
         }else if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
             CourseTable courseTable = courseTableMapper.selectById(courseAdjust.getCourseId());
@@ -321,15 +359,9 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
                 courseTableMapper.updateById(courseTable);
             }
         }
-        return null;
+        return Boolean.TRUE;
     }
 
-    /**
-     *
-     */
-    void sendSubsitute(){
-        String url = ScheduleUtil.apiUrl  + "RescheduleApply/Extend/Substitute/Submit";
-    }
 
     /**
      *  顶课预检查

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

@@ -96,7 +96,7 @@ public class JianyuekbScheduleTask {
             //获取课表并存到数据库
             JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(classMap, baseSemester.getStartDate(), baseSemester.getEndDate());
             dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
-            dataUtil.insertClassTime(use, scheduleInfo, baseSemester);
+            dataUtil.insertClassTime(use, scheduleInfo);
             log.info("课表数据获取完成");
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 29 - 0
src/main/java/com/xjrsoft/module/job/ScheduleAdjustTask.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.job;
+
+import cn.hutool.extra.spring.SpringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author dzx
+ * @date 2024/1/25
+ */
+@Component
+@Slf4j
+public class ScheduleAdjustTask {
+
+    @Scheduled(cron = "0 0 22 * * ?")
+    public void RefreshConnectionPool() {
+        String active = SpringUtil.getActiveProfile();
+        if("prod".equals(active)){
+            log.info("非正式环境,无法执行获取课表数据");
+            return;
+        }
+        //doExecute();
+    }
+
+    void doExecute(){
+    }
+
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/job/ScheduleHistoryTask.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.job;
+
+import cn.hutool.extra.spring.SpringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 将本周数据进行备份
+ * @author dzx
+ * @date 2024/1/25
+ */
+@Component
+@Slf4j
+public class ScheduleHistoryTask {
+
+    @Scheduled(cron = "0 0 21 * * ?")
+    public void RefreshConnectionPool() {
+        String active = SpringUtil.getActiveProfile();
+        if("prod".equals(active)){
+            log.info("非正式环境,无法执行获取课表数据");
+            return;
+        }
+        //doExecute();
+    }
+
+    void doExecute(){
+    }
+
+}

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

@@ -29,6 +29,7 @@ public class WfCourseAdjustNode extends NodeComponent {
         if (formId != null) {
             // 数据处理
             WfCourseAdjust courseAdjust = wfCourseAdjustService.getById(formId);
+            courseTableService.adjustCourse(courseAdjust);
         }
     }
 }

+ 3 - 15
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -14,7 +14,6 @@ import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.DatasourceUtil;
-import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.schedule.dto.CourseTableAdjustDto;
@@ -52,10 +51,10 @@ import java.util.Map;
 import java.util.Set;
 
 /**
-* @title: 寝室
+* @title: 课表
 * @Author dzx
 * @Date: 2023-12-27
-* @Version 1.0i see you monster歌曲
+* @Version 1.0
 */
 @RestController
 @RequestMapping("/schedule" + "/schedule")
@@ -125,18 +124,7 @@ public class ScheduleController {
         Map<String, Long> classroomMap = dataMap.get(tableName);
         dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
 
-        //查询当前学期id
-        String currenSemeter = dataUtil.getCurrenSemeter();
-        if(StrUtil.isEmpty(currenSemeter)){
-            return RT.ok(courseReceiveMsg);
-        }
-        sql = "SELECT * FROM base_semester WHERE id = (select source_id from jianyue_data where jianyue_id = '" + currenSemeter + "')";
-        List<BaseSemester> semesters = use.query(sql, BaseSemester.class);
-        if(semesters.isEmpty()){
-            return RT.ok(courseReceiveMsg);
-        }
-        BaseSemester baseSemester = semesters.get(0);
-        dataUtil.insertClassTime(use, scheduleInfo, baseSemester);
+        dataUtil.insertClassTime(use, scheduleInfo);
         return RT.ok(courseReceiveMsg);
     }
 

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

@@ -473,7 +473,8 @@ public class DataUtil {
                     + " and time_period = " + tmePeriod.get(asJsonObject.get("timeOption").getAsInt())
                     + " and time_number = " + timeNumber
                     + " and weeks = " + asJsonObject.get("dayOfWeek").getAsInt()
-                    + " and course_id = " + coureseMap.get(asJsonObject.get("courseClassId").getAsString());
+                    + " and course_id = " + coureseMap.get(asJsonObject.get("courseClassId").getAsString())
+                    + " and create_date = '" + asJsonObject.get("scheduleDate").getAsString() + "'";
 
             String sql = "INSERT INTO course_table(id,base_semester_id,teacher_id,teacher_name,course_id,course_name," +
                     "class_id, class_name,weeks,weeks_cn,time_period,time_number,site_id,site_name,status," +
@@ -496,7 +497,8 @@ public class DataUtil {
                 + tmePeriod.get(asJsonObject.get("timeOption").getAsInt()) + ","
                 + timeNumber + ","
                 + (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? 0 : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString())) + ","
-                + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,now(),"
+                + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,"
+                + "'" + asJsonObject.get("scheduleDate").getAsString() + "',"
                 + "'" + asJsonObject.get("id").getAsString() + "' FROM DUAL"
                 + " WHERE NOT EXISTS(SELECT * FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() +"' and status = 1)";
             sqls.add(updateSql);
@@ -512,7 +514,7 @@ public class DataUtil {
      * @param data 数据
      *
      */
-    public void insertClassTime(Db db, JsonArray data, BaseSemester baseSemester) throws SQLException {
+    public void insertClassTime(Db db, JsonArray data) throws SQLException {
 
         Map<String, JsonObject> infoMap = new HashMap<>();
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();