Quellcode durchsuchen

海康数据同步调整

dzx vor 7 Monaten
Ursprung
Commit
7f51114041

+ 1 - 1
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -394,7 +394,7 @@ public class DataUtil {
         }
 
         //插入记录表
-        //insertRecord(tableName, idMap);
+        insertRecord(tableName, idMap);
         return idMap;
     }
 

+ 1 - 1
src/main/java/com/xjrsoft/module/student/service/impl/StudentReportRecordServiceImpl.java

@@ -446,7 +446,7 @@ public class StudentReportRecordServiceImpl extends MPJBaseServiceImpl<StudentRe
                 schoolRoll.setMajorSetId(baseClass.getMajorSetId());
                 schoolRoll.setStduyStatus(student.getStduyStatus());
                 schoolRoll.setEnrollType(baseClass.getEnrollType());
-                schoolRoll.setStudentSource(student.getSource());
+                schoolRoll.setStudentType(student.getSource());
                 schoolRoll.setGradeId(baseClass.getGradeId());
                 schoolRoll.setArchivesStatus(ArchivesStatusEnum.FB2901.getCode());
                 schoolRoll.setCreateDate(now);

+ 49 - 0
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java

@@ -615,4 +615,53 @@ class HikvisionBaseDataTaskTest {
         System.out.println(result);
     }
 
+    /**
+     * 同步海康学生信息到hikvision_data表中
+     */
+    @Test
+    void syncStudentId(){
+        String sql = "SELECT t1.* FROM hikvision_data t1" +
+                " INNER JOIN base_class t2 ON t1.source_id LIKE CONCAT(t2.id, '%')" +
+                " WHERE t1.table_name = 'base_class'" +
+                " AND t2.grade_id = 1868532405673439232";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+        List<String> orgIndexCodes = new ArrayList<>();
+        for (int i = 0; i < list.size(); i ++){
+            Map<String, Object> dataMap = list.get(i);
+            orgIndexCodes.add(dataMap.get("hikvision_id").toString());
+        }
+
+        JsonParser jsonParser = new JsonParser();
+        ApiUtil apiUtil = new ApiUtil();
+        String apiPath = "/api/resource/v2/person/advance/personList";
+
+        Set<String> personIds = new HashSet<>();
+        for (String orgIndexCode : orgIndexCodes) {
+            JsonObject jsonObject = new JsonObject();
+            jsonObject.addProperty("pageNo", 1);
+            jsonObject.addProperty("pageSize", 500);
+            jsonObject.addProperty("orgIndexCodes", orgIndexCode);
+
+            String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            JsonArray array = resultJson.get("data").getAsJsonObject().get("list").getAsJsonArray();
+            for (JsonElement jsonElement : array) {
+                JsonObject element = jsonElement.getAsJsonObject();
+                String personId = element.get("personId").getAsString();
+                personIds.add(personId);
+            }
+        }
+
+        for (String personId : personIds) {
+            String insertsql = "INSERT INTO hikvision_data(create_date,TABLE_NAME,source_id,hikvision_id) " +
+                    " SELECT NOW(),'base_student','" + personId + "','" + personId + "'" +
+                    " where not EXISTS (" +
+                    " SELECT 1 FROM hikvision_data " +
+                    " WHERE source_id = '" + personId + "'" +
+                    " );";
+            SqlRunnerAdapter.db().insert(insertsql);
+        }
+    }
+
 }

+ 4 - 3
src/test/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNodeTest.java

@@ -40,9 +40,10 @@ class ImportStudentFaceNodeTest {
     private FaceImportMapper faceImportMapper;
     @Test
     void test(){
-        String sql = "SELECT t1.* FROM xjr_user t1" +
-                " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
-                " WHERE t2.archives_status = 'FB2901' and t1.id = 654321987655958";
+        String sql = "SELECT t3.* FROM base_new_student t1" +
+                " INNER JOIN student_report_record t2 ON t1.id = t2.user_id" +
+                " INNER JOIN xjr_user t3 ON t1.credential_number = t3.credential_number" +
+                " WHERE t2.report_time IS NOT NULL;";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
 
         ApiUtil apiUtil = new ApiUtil();