瀏覽代碼

课表同步效率优化

dzx 9 月之前
父節點
當前提交
304e1abfdb

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

@@ -249,7 +249,7 @@ public class JianyuekbScheduleTask {
 
                 ongoing.remove(eduYearSerialNo);
                 redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId);
+                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId, startDateStr, endDateStr);
                 //恢复挂起的流程
                 restoreCourseAdjust(processIds);
                 //处理该日期内已经审批通过的调课和顶课申请
@@ -263,7 +263,7 @@ public class JianyuekbScheduleTask {
         }
     }
 
-    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId){
+    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId, String startDate, String endDate){
         //获取年级
         String tableName = "base_grade";
 //            Map<String, Long> gradeMap = dataMap.get(tableName);
@@ -283,7 +283,8 @@ public class JianyuekbScheduleTask {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
+        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap,
+                teacherMap, classMap, courseReceiveMsgId, startDate, endDate);
         sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }

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

@@ -581,6 +581,22 @@ public class DataUtil {
         return asJsonObject.get("data").getAsJsonArray();
     }
 
+    public JsonArray getScheduleInfoByClass(String classSerialNo, String startDate, String endDate) throws Exception {
+        JsonParser jsonParser = new JsonParser();
+        String url  = ScheduleUtil.apiUrl + "TimeTable/List";
+        //获取时间戳
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("classSerialNo", classSerialNo);
+        jsonObject.addProperty("startDate", startDate);
+        jsonObject.addProperty("endDate", endDate);
+        String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
+        JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
+        return asJsonObject.get("data").getAsJsonArray();
+    }
+
     /**
      *
      * @param data 接口数据
@@ -649,26 +665,18 @@ public class DataUtil {
 
     public Set<String> insertCourseTableEntiy(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
                                   Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap
-            , Long courseReceiveMsgId) {
-
-        String sql = "SELECT CONCAT(schedule_date,class_id,time_number) AS only_key,id FROM course_table";
+            , Long courseReceiveMsgId, String startDate, String endDate) {
+        String sql = "SELECT jianyue_id FROM course_table" +
+                " where schedule_date between '" + startDate + "' and '" + endDate + "'";
         List<Map<String, Object>> oldDataList = SqlRunnerAdapter.db().selectList(sql);
-        Map<String, String> oldDataMap = new HashMap<>();
+        Set<String> serialNos = new HashSet<>();
         for (Map<String, Object> objectMap : oldDataList) {
-            oldDataMap.put(objectMap.get("only_key").toString(), objectMap.get("id").toString());
+            serialNos.add(objectMap.get("jianyue_id").toString());
         }
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
         String tableName = "course_table";
         List<Entity> entityList = new ArrayList();
         SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
-        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList("select * from course_table");
-        Set<String> serialNos = new HashSet<>();
-        for (Map<String, Object> objectMap : list) {
-            if(objectMap.get("jianyue_id") == null){
-                continue;
-            }
-            serialNos.add(objectMap.get("jianyue_id").toString());
-        }
         Set<String> teacherIdList = new HashSet<>();
         for (JsonElement jsonElement : data) {
             JsonObject asJsonObject = jsonElement.getAsJsonObject();

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

@@ -113,7 +113,7 @@ class JianyuekbScheduleTaskTest {
 
                 String endDate = endTime.format(formatter);
                 //获取课表并存到数据库
-                JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
+                JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(eduYearSerialNo, startDate, endDate);
                 allScheduleInfo.addAll(scheduleInfo);
             }
 
@@ -167,7 +167,7 @@ class JianyuekbScheduleTaskTest {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null, null, null);
         dataUtil.insertClassTime(scheduleInfo);
     }
 

+ 1 - 1
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

@@ -282,7 +282,7 @@ class JianyuekbScheduleTaskTest2 {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
+        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId, null, null);
         sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }

+ 107 - 0
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest3.java

@@ -0,0 +1,107 @@
+package com.xjrsoft.module.job;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.module.schedule.util.DataUtil;
+import com.xjrsoft.module.schedule.util.ScheduleUtil;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * @author dzx
+ * @date 2025/2/20
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
+class JianyuekbScheduleTaskTest3 {
+
+
+    @Test
+    void test() throws Exception {
+        String startDate = "2025-02-24";
+        String endDate = "2025-03-02";
+        String classSerialNo = "CLA000001422";
+        String url  = ScheduleUtil.apiUrl + "TimeTable/List";
+        JsonObject pageJson = new JsonObject();
+        pageJson.addProperty("classSerialNo", classSerialNo);
+        pageJson.addProperty("startDate", startDate);
+        pageJson.addProperty("endDate", endDate);
+        JsonParser parser = new JsonParser();
+
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+
+
+        String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
+        System.out.println(doPost);
+    }
+
+    @Test
+    void test1() throws Exception {
+        DataUtil dataUtil = new DataUtil();
+        String startDate = "2025-02-24";
+        String endDate = "2025-03-02";
+        String classSerialNo = "CLA000001422";
+        JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(classSerialNo, startDate, endDate);
+        doExecute(scheduleInfo, startDate, endDate);
+    }
+
+
+    void doExecute(JsonArray scheduleInfo, String startDate, String endDate){
+        String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+        List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql);
+        Set<String> tables = new HashSet<>();
+        for (Map<String, Object> jianyueData : query) {
+            tables.add(jianyueData.get("table_name").toString());
+        }
+        sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+        Map<String, Map<String, String>> dataMap = new HashMap<>();
+        for (String table : tables) {
+            Map<String, String> tableData = new HashMap<>();
+            for (Map<String, Object> jianyueData : list) {
+                if(!table.equals(jianyueData.get("table_name").toString())){
+                    continue;
+                }
+                tableData.put(jianyueData.get("jianyue_id").toString(), jianyueData.get("source_id").toString());
+            }
+            dataMap.put(table, tableData);
+        }
+        DataUtil dataUtil = new DataUtil();
+        //获取年级
+        String tableName = "base_grade";
+//            Map<String, Long> gradeMap = dataMap.get(tableName);
+        //获取学期
+        tableName = "base_semester";
+        Map<String, String> semesterMap = dataMap.get(tableName);
+        //获取课程
+        tableName = "base_course_subject";
+        Map<String, String> courseMap = dataMap.get(tableName);
+        //获取教职工
+        tableName = "base_teacher";
+        Map<String, String> teacherMap = dataMap.get(tableName);
+        //获取行政班
+        tableName = "base_class";
+        Map<String, String> classMap = dataMap.get(tableName);
+
+        tableName = "base_classroom";
+        Map<String, String> classroomMap = dataMap.get(tableName);
+
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null, startDate, endDate);
+        dataUtil.insertClassTime(scheduleInfo);
+    }
+
+}