瀏覽代碼

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

snihwxf 2 月之前
父節點
當前提交
289f91b3e2

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

@@ -17,6 +17,7 @@ import com.xjrsoft.module.schedule.entity.CourseTableBak;
 import com.xjrsoft.module.schedule.service.ICourseTableBakService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.DayOfWeek;
 import java.util.ArrayList;
@@ -38,6 +39,7 @@ public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCa
     private final ICourseTableBakService courseTableBakService;
     private final IClassTimeService classTimeService;
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean add(AddClassTimeCalendarDto dto) {
         try {
@@ -147,6 +149,7 @@ public class ClassTimeCalendarServiceImpl extends MPJBaseServiceImpl<ClassTimeCa
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean cancel(Long id) {
         try {

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

@@ -126,7 +126,7 @@ public class JianyuekbScheduleTask {
 
     public void doExecute() {
         String active = SpringUtil.getActiveProfile();
-        if(!"prod".equals(active)){
+        if (!"prod".equals(active)) {
             log.info("非正式环境,无法执行获取课表数据");
             return;
         }
@@ -135,13 +135,17 @@ public class JianyuekbScheduleTask {
         if (receiveMsgs.isEmpty()) {
             return;
         }
+        syncCourseTable(receiveMsgs);
 
+    }
+
+    public void syncCourseTable(List<Map<String, Object>> receiveMsgs) {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //查询出传入排课系统的年级和班级
         List<String> eduYearSerialNo1 = receiveMsgs.stream().map(x -> "'" + x.get("edu_year_serial_no").toString() + "'").collect(Collectors.toList());
 
         //查询出传入排课系统的年级和班级
-        sql = "SELECT * FROM jianyue_data WHERE source_id IS NOT NULL AND jianyue_id != ''" +
+        String sql = "SELECT * FROM jianyue_data WHERE source_id IS NOT NULL AND jianyue_id != ''" +
                 " and table_name = 'base_grade'" +
                 " and jianyue_id in (" + eduYearSerialNo1.toString().replace("[", "").replace("]", "") + ")";
         List<Map<String, Object>> jianyueData = SqlRunnerAdapter.db().selectList(sql);
@@ -285,9 +289,9 @@ public class JianyuekbScheduleTask {
         String sql = "SELECT * FROM xjr_user WHERE id IN (" + techerIds.toString().replace("[", "").replace("]", "") + ")";
         List<Map<String, Object>> userList = SqlRunnerAdapter.db().selectList(sql);
         sql = "SELECT t1.* FROM xjr_user t1" +
-            " INNER JOIN xjr_user_role_relation t2 ON t1.id = t2.user_id" +
-            " INNER JOIN xjr_role t3 ON t2.role_id = t3.id" +
-            " WHERE t1.delete_mark = 0 AND t3.delete_mark = 0 AND t3.code = 'KEBIAOGX'";
+                " INNER JOIN xjr_user_role_relation t2 ON t1.id = t2.user_id" +
+                " INNER JOIN xjr_role t3 ON t2.role_id = t3.id" +
+                " WHERE t1.delete_mark = 0 AND t3.delete_mark = 0 AND t3.code = 'KEBIAOGX'";
         List<Map<String, Object>> userList1 = SqlRunnerAdapter.db().selectList(sql);
         userList.addAll(userList1);
 
@@ -413,7 +417,7 @@ public class JianyuekbScheduleTask {
                 }
                 //查询顶课老师在本条申请的课程中的节次是否包含课
                 Integer substituteTeacherCourseCount = 0;
-                if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
+                if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
                     substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
                         setWfCourseAdjustId(courseAdjust.getId());
                         setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
@@ -480,7 +484,7 @@ public class JianyuekbScheduleTask {
                     continue;
                 }
                 courseTableService.adjustCourse(courseAdjust);
-            }catch (Exception e){
+            } catch (Exception e) {
                 log.error(e.getMessage());
             }
         }
@@ -645,7 +649,7 @@ public class JianyuekbScheduleTask {
                         setEndTime(item.getEndTime());
                     }});
                 });
-            }catch (Exception e){
+            } catch (Exception e) {
                 log.error(e.getMessage());
             }
         }

+ 5 - 98
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest.java

@@ -145,10 +145,14 @@ class JianyuekbScheduleTaskTest {
     @Autowired
     private ICourseReceiveMsgService receiveMsgService;
 
+    @Autowired
+    private JianyuekbScheduleTask jianyuekbScheduleTask;
+
     @Test
     public void execute(){
         doExecute();
     }
+
     public void doExecute() {
         String active = SpringUtil.getActiveProfile();
 //        if(!"prod".equals(active)){
@@ -160,104 +164,7 @@ class JianyuekbScheduleTaskTest {
             return;
         }
 
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        //查询出传入排课系统的年级和班级
-        List<String> eduYearSerialNo1 = receiveMsgs.stream().map(x -> "'" + x.get("edu_year_serial_no").toString() + "'").collect(Collectors.toList());
-
-        //查询出传入排课系统的年级和班级
-        sql = "SELECT * FROM jianyue_data WHERE source_id IS NOT NULL AND jianyue_id != ''" +
-                " and table_name = 'base_grade'" +
-                " and jianyue_id in (" + eduYearSerialNo1.toString().replace("[","").replace("]","") + ")";
-        List<Map<String, Object>> jianyueData = SqlRunnerAdapter.db().selectList(sql);
-        Map<String, List<Long>> gradeClassMaps = new HashMap<>();//存入对应年级的所有班级id
-        for (Map<String, Object> el : jianyueData) {
-
-            String clasSql = "select source_id from jianyue_data where extend_data = '" + el.get("jianyue_id").toString() + "'";
-            List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(clasSql);
-
-            List<Long> classList = new ArrayList<>();
-            for (Map<String, Object> objectMap : list) {
-                classList.add(Long.parseLong(objectMap.get("source_id").toString()));
-            }
-
-            gradeClassMaps.put(el.get("jianyue_id").toString(), classList);
-        }
-        LocalDate today = LocalDate.now();
-
-        DataUtil dataUtil = new DataUtil();
-        Set<String> ongoing = redisUtil.get(taskKey, new TypeReference<Set<String>>() {});//正在进行中的
-        if(ongoing == null){
-            ongoing = new HashSet<>();
-        }
-
-        Map<String, Map<String, String>> dataMap = initDataMap();
-        for (Map<String, Object> receiveMsg : receiveMsgs) {
-            String eduYearSerialNo = receiveMsg.get("edu_year_serial_no").toString();
-            Long courseReceiveMsgId = Long.parseLong(receiveMsg.get("id").toString());
-            if(ongoing.contains(eduYearSerialNo)){
-                continue;
-            }
-            ongoing.add(eduYearSerialNo);
-            redisUtil.set(taskKey, ongoing);
-
-            try {
-                String updSql = "update course_receive_msg set is_callback = 0 where id = " + receiveMsg.get("id").toString();
-                SqlRunnerAdapter.db().update(updSql);
-
-                JsonArray allScheduleInfo = new JsonArray();
-                String startDateStr = receiveMsg.get("start_date").toString();
-                LocalDate startDateObj = LocalDate.parse(startDateStr);
-                String endDateStr = receiveMsg.get("end_date").toString();
-                LocalDate endDateObj = LocalDate.parse(endDateStr);
-//                if(today.isAfter(startDateObj)){
-//                    startDateStr = today.format(formatter);
-//                }
-
-                //删除课表信息;
-                List<Long> classIdList = gradeClassMaps.get(eduYearSerialNo);
-                String classIds = classIdList.toString().replace("[", "").replace("]", "");
-                String delSql = "delete from course_table where schedule_date between '" + startDateStr + "'" +
-                        " and '" + endDateStr +
-                        "' and class_id in (" + classIds + ")";
-                SqlRunnerAdapter.db().delete(delSql);
-
-                startDateStr = receiveMsg.get("start_date").toString();
-                List<String> processIds = suspendedCourseAdjust(classIdList, startDateStr, endDateStr);
-
-                long between = ChronoUnit.DAYS.between(startDateObj, endDateObj);
-                int times = Integer.parseInt(((between / 7) + 1) + "");
-
-                for (int index = 0; index < times; index ++) {
-                    LocalDate statrTime = startDateObj.plusDays(index * 7L);
-                    String startDate = statrTime.format(formatter);
-                    LocalDate endTime = statrTime.plusDays(6L);
-                    if(endTime.isAfter(endDateObj)){
-                        endTime = endDateObj;
-                    }
-
-                    String endDate = endTime.format(formatter);
-                    //获取课表并存到数据库
-                    JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
-                    allScheduleInfo.addAll(scheduleInfo);
-                }
-
-                updSql = "update course_receive_msg set is_callback = 1 where id = " + receiveMsg.get("id").toString();
-                SqlRunnerAdapter.db().update(updSql);
-
-                ongoing.remove(eduYearSerialNo);
-                redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId, startDateStr, endDateStr);
-                //恢复挂起的流程
-                restoreCourseAdjust(processIds);
-                //处理该日期内已经审批通过的调课和顶课申请
-                handleCourseAdjust(classIdList, startDateStr, endDateStr);
-            }catch (Exception e){
-                Log.error(e.getMessage(), e);
-            }finally {
-                ongoing.remove(eduYearSerialNo);
-                redisUtil.set(taskKey, ongoing);
-            }
-        }
+        jianyuekbScheduleTask.syncCourseTable(receiveMsgs);
     }
 
     void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId, String startDate, String endDate){