Browse Source

排课数据同步bug修复

dzx 6 months ago
parent
commit
fcdbbd6ce2

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

@@ -81,7 +81,7 @@ public class DataUtil {
     public Map<String, String> insertClass(String tableName, Map<String, String> gradeMap,
     public Map<String, String> insertClass(String tableName, Map<String, String> gradeMap,
     Map<String, String> teacherMap, String semesterSerialNo, Map<String, String> ids, Map<String, String> classroomMap) throws Exception {
     Map<String, String> teacherMap, String semesterSerialNo, Map<String, String> ids, Map<String, String> classroomMap) throws Exception {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
-        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
+        List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql);
 
 
         Map<String, String> idMap = new HashMap<>();
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
         JsonParser jsonParser = new JsonParser();
@@ -119,7 +119,9 @@ public class DataUtil {
                 continue;
                 continue;
             }
             }
             JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
             JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
-            idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
+            if(!"".equals(resultJson.get("data").getAsString())){
+                idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
+            }
         }
         }
         //插入记录表
         //插入记录表
         insertRecord(tableName, idMap);
         insertRecord(tableName, idMap);

+ 160 - 29
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -1,7 +1,9 @@
 package com.xjrsoft.module.job;
 package com.xjrsoft.module.job;
 
 
 import cn.hutool.db.Db;
 import cn.hutool.db.Db;
+import cn.hutool.db.Entity;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.JsonParser;
 import com.xjrsoft.XjrSoftApplication;
 import com.xjrsoft.XjrSoftApplication;
@@ -20,6 +22,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
 import javax.sql.DataSource;
 import javax.sql.DataSource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.List;
 import java.util.List;
@@ -95,7 +98,7 @@ class JianyuekbBaseDataTaskTest {
             //推送年级
             //推送年级
             JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             tableName = "base_grade";
             tableName = "base_grade";
-            Map<String, String> grade = dataMap.get(tableName);
+            Map<String, String> gradeMap = dataMap.get(tableName);
             //推送教职工
             //推送教职工
             tableName = "base_teacher";
             tableName = "base_teacher";
             Map<String, String> teacherMap = dataMap.get(tableName);
             Map<String, String> teacherMap = dataMap.get(tableName);
@@ -105,8 +108,50 @@ class JianyuekbBaseDataTaskTest {
             //推送行政班,先查询当前学期id
             //推送行政班,先查询当前学期id
             String currenSemeter = dataUtil.getCurrenSemeter();
             String currenSemeter = dataUtil.getCurrenSemeter();
             tableName = "base_class";
             tableName = "base_class";
-            dataUtil.insertClass(tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
+            sql = "SELECT * FROM base_class WHERE delete_mark = 0" +
+                " and id not in (SELECT source_id FROM jianyue_data WHERE table_name = 'base_class' AND source_id IS NOT NULL)";
+
+            List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, BaseClass.class);
+            String semesterSerialNo = dataUtil.getCurrenSemeter();
+            Map<String, String> idMap = new HashMap<>();
+            JsonParser jsonParser = new JsonParser();
+            for (Map<String, Object> baseClassMap : dataList) {
+                BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
+                String url  = ScheduleUtil.apiUrl + "class/create";
+                JsonObject paramJson = new JsonObject();
+                if(baseClass.getTeacherId() != null && teacherMap.get(baseClass.getTeacherId().toString()) != null){
+                    paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId().toString()));
+                }
+                paramJson.addProperty("name", baseClass.getName());
+
+                paramJson.addProperty("semesterSerialNo", semesterSerialNo);
+                paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
+                paramJson.addProperty("extendId", baseClass.getId());
+                if(baseClass.getClassroomId() != null && classroomMap.get(baseClass.getClassroomId().toString()) != null){
+                    paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
+                }
+//                if(ids != null && ids.get(baseClass.getId().toString()) != null){
+//                    url  = ScheduleUtil.apiUrl + "class/update";
+//                    paramJson.addProperty("serialNo", ids.get(baseClass.getId().toString()));
+//                    long timestamp = System.currentTimeMillis();
+//                    //生成签名
+//                    String sign = ScheduleUtil.createSign(timestamp);
+//                    ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//                    continue;
+//                }
 
 
+                //获取时间戳
+                long timestamp = System.currentTimeMillis();
+                //生成签名
+                String sign = ScheduleUtil.createSign(timestamp);
+                String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+                if(result == null){
+                    continue;
+                }
+                JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+                idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
+            }
+            dataUtil.insertRecord("base_class", idMap);
         } catch (Exception e) {
         } catch (Exception e) {
         }
         }
     }
     }
@@ -124,41 +169,43 @@ class JianyuekbBaseDataTaskTest {
 
 
     @Test
     @Test
     void deleteData() throws Exception {
     void deleteData() throws Exception {
-        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-        Db use = Db.use(datasource);
-
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
         String url  = ScheduleUtil.apiUrl + "Class/page";
         String url  = ScheduleUtil.apiUrl + "Class/page";
 
 
         JsonObject pageJson = new JsonObject();
         JsonObject pageJson = new JsonObject();
         pageJson.addProperty("pageSize", 120);
         pageJson.addProperty("pageSize", 120);
         pageJson.addProperty("pageIndex", 1);
         pageJson.addProperty("pageIndex", 1);
         JsonParser parser = new JsonParser();
         JsonParser parser = new JsonParser();
+        String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
+        JsonArray dataList = parser.parse(doPost).getAsJsonObject().get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+        List<String> ids = new ArrayList<>();
+        Map<String, String> classIdNameMap = new HashMap<>();
+        for (JsonElement jsonElement : dataList) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            classIdNameMap.put(object.get("serialNo").getAsString(), object.get("name").getAsString());
+        }
 
 
+        String sql = "SELECT * FROM base_class WHERE delete_mark = 0";
+        List<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql);
+        Map<String, String> map = new HashMap<>();
+        for (Map<String, Object> objectMap : classList) {
+            map.put(objectMap.get("name").toString(), objectMap.get("id").toString());
+        }
 
 
-
-        JsonArray paramJson = new JsonArray();
-        paramJson.add("CLA000001255");paramJson.add("CLA000001253");paramJson.add("CLA000001238");
-        paramJson.add("CLA000001233");paramJson.add("CLA000001234");paramJson.add("CLA000001254");
-        paramJson.add("CLA000001239");paramJson.add("CLA000001235");paramJson.add("CLA000001240");
-        paramJson.add("CLA000001231");paramJson.add("CLA000001219");paramJson.add("CLA000001256");
-        paramJson.add("CLA000001258");paramJson.add("CLA000001245");paramJson.add("CLA000001242");
-        paramJson.add("CLA000001236");paramJson.add("CLA000001222");paramJson.add("CLA000001224");
-        paramJson.add("CLA000001250");paramJson.add("CLA000001257");paramJson.add("CLA000001259");
-        paramJson.add("CLA000001246");paramJson.add("CLA000001247");paramJson.add("CLA000001249");
-        paramJson.add("CLA000001237");paramJson.add("CLA000001223");paramJson.add("CLA000001225");
-        paramJson.add("CLA000001226");paramJson.add("CLA000001227");paramJson.add("CLA000001248");
-        paramJson.add("CLA000001228");paramJson.add("CLA000001229");paramJson.add("CLA000001230");
-        paramJson.add("CLA000001232");paramJson.add("CLA000001220");paramJson.add("CLA000001251");
-        paramJson.add("CLA000001252");paramJson.add("CLA000001241");paramJson.add("CLA000001243");
-        paramJson.add("CLA000001244");paramJson.add("CLA000001221");
-
-        System.out.println(paramJson.toString());
-        long timestamp = System.currentTimeMillis();
-        url  = ScheduleUtil.apiUrl + "class/Del";
-        String sign = ScheduleUtil.createSign(timestamp);
-
-        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-        System.out.println(doPost);
+        String tableName = "jianyue_data";
+        List<Entity> insertList = new ArrayList<>();
+        for (String jianyueId : classIdNameMap.keySet()) {
+            String className = classIdNameMap.get(jianyueId);
+            String classId = map.get(className);
+            Entity entity = Entity.create(tableName);
+            entity.set("create_date", "2024-08-17 16:59:18");
+            entity.set("table_name", "base_class");
+            entity.set("source_id", classId);
+            entity.set("jianyue_id", jianyueId);
+            insertList.add(entity);
+        }
+        SqlRunnerAdapter.db().dynamicInsertBatch(tableName, insertList);
     }
     }
 
 
     @Test
     @Test
@@ -445,5 +492,89 @@ class JianyuekbBaseDataTaskTest {
         dataUtil.insertRecord("base_class", idMap);
         dataUtil.insertRecord("base_class", idMap);
     }
     }
 
 
+    @Test
+    void updateClass3() throws Exception {
+
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+        String sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1" +
+                " and id in (SELECT source_id FROM jianyue_data WHERE table_name = 'base_class' AND jianyue_id = '')";
+        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
+        Map<String, String> gradeMap = new HashMap<>();
+        for (JianyueData jianyueData : gradeList) {
+            gradeMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        sql = "SELECT * FROM base_class WHERE delete_mark = 0 AND org_id = 1684107782861680016";
+        List<BaseClass> dataList = use.query(sql, BaseClass.class);
+        Map<String, BaseClass> classMap = new HashMap<>();
+        for (BaseClass baseClass : dataList) {
+            classMap.put(baseClass.getId().toString(), baseClass);
+        }
+
+        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_class'";
+        List<JianyueData> classList = use.query(sql, JianyueData.class);
+        Map<String, BaseClass> classMap2 = new HashMap<>();
+        Map<String, String> classMap3 = new HashMap<>();
+        for (JianyueData jianyueData : classList) {
+            classMap2.put(jianyueData.getJianyueId(), classMap.get(jianyueData.getSourceId()));
+            classMap3.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
 
 
+        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_classroom'";
+        List<JianyueData> classroomList = use.query(sql, JianyueData.class);
+        Map<String, String> classroomMap = new HashMap<>();
+        for (JianyueData jianyueData : classroomList) {
+            classroomMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_teacher'";
+        List<JianyueData> teacherList = use.query(sql, JianyueData.class);
+        Map<String, String> teacherMap = new HashMap<>();
+        for (JianyueData jianyueData : teacherList) {
+            teacherMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        String url  = ScheduleUtil.apiUrl + "class/create";
+        DataUtil dataUtil = new DataUtil();
+        String currenSemeter = dataUtil.getCurrenSemeter();
+        Map<String, String> idMap = new HashMap<>();
+        JsonParser jsonParser = new JsonParser();
+        for (BaseClass baseClass : classMap.values()) {
+            if(baseClass == null){
+                continue;
+            }
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("name", baseClass.getName());
+
+            paramJson.addProperty("semesterSerialNo", currenSemeter);
+            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
+            paramJson.addProperty("extendId", baseClass.getId());
+            if(baseClass.getClassroomId() != null && classroomMap.get(baseClass.getClassroomId().toString()) != null){
+                paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
+            }
+            if(baseClass.getTeacherId() != null && teacherMap.get(baseClass.getTeacherId().toString()) != null){
+                paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId().toString()));
+            }
+            paramJson.addProperty("serialNo", classMap3.get(baseClass.getId().toString()));
+
+            timestamp = System.currentTimeMillis();
+            //生成签名
+            sign = ScheduleUtil.createSign(timestamp);
+            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+            System.out.println(baseClass.getName() + " -> " + result);
+            if(result == null){
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
+        }
+        dataUtil.insertRecord("base_class", idMap);
+    }
 }
 }