Quellcode durchsuchen

海康数据推送调整

dzx vor 6 Monaten
Ursprung
Commit
0f555301dd

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

@@ -91,14 +91,28 @@ public class DataUtil {
      * 推送学生班级信息
      */
     public Map<String, String> insertClass(String tableName, Map<String, String> tableData) {
+        ApiUtil apiUtil = new ApiUtil();
+        JsonParser jsonParser = new JsonParser();
+        //先查询海康中存在的组织id
+//        Set<Integer> orgCodeList = new HashSet<>();
+//        String listApiPath = "/api/resource/v1/org/orgList";
+//        JsonObject paramsJson = new JsonObject();
+//        paramsJson.addProperty("pageNo", 1);
+//        paramsJson.addProperty("pageSize", 1000);
+//        String orgData = apiUtil.doPost(listApiPath, paramsJson.toString(), null, null);
+//        JsonArray orgDataArray = jsonParser.parse(orgData).getAsJsonObject().get("data").getAsJsonObject().get("list").getAsJsonArray();
+//        for (JsonElement jsonElement : orgDataArray) {
+//            JsonObject orgJson = jsonElement.getAsJsonObject();
+//            orgCodeList.add(orgJson.get("orgNo").getAsInt());
+//        }
+
         Map<String, String> idMap = new HashMap<>();
         //1、查询字典,将走读住读、班级类型先推送过去
         String sql = "SELECT * FROM xjr_dictionary_detail WHERE delete_mark = 0 AND item_id = 2023000000000000030";
         List<Map<String, Object>> detailList = SqlRunnerAdapter.db().selectList(sql);
 
         String apiPath = "/api/resource/v1/org/batch/add";
-        JsonParser jsonParser = new JsonParser();
-        ApiUtil apiUtil = new ApiUtil();
+        
         int clientId = 1;
         Map<Integer, String> idCodeMap = new HashMap<>();
         JsonArray dataArray = new JsonArray();
@@ -188,7 +202,7 @@ public class DataUtil {
                 paramJson.addProperty("orgIndexCode", baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType);
                 paramJson.addProperty("orgName", baseGrade.get("name").toString());
                 paramJson.addProperty("parentIndexCode", classType);
-                paramJson.addProperty("orgCode", clientId);
+//                paramJson.addProperty("orgCode", clientId);
                 dataArray.add(paramJson);
                 idCodeMap.put(clientId, baseGrade.get("name").toString().replaceAll("级", "") + "-" + classType);
                 clientId++;

+ 6 - 1
src/main/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNode.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.StrUtil;
 import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
 import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
@@ -38,7 +39,11 @@ public class ImportStudentFaceNode extends NodeComponent {
             StundentFaceProcess dataObj = stundentFaceProcessService.getById(formId);
             dataObj.setStatus(1);
             dataObj.setExamStatus(1);
-            String result = FaceImportUtil.ImportStudentFace(hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId()), fileUrl);
+            String studentHikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
+            if(StrUtil.isEmpty(studentHikvisionId)){
+                studentHikvisionId = dataObj.getUserId().toString();
+            }
+            String result = FaceImportUtil.ImportStudentFace(studentHikvisionId, fileUrl);
             dataObj.setHikvisionResult(result);
             stundentFaceProcessService.updateById(dataObj);
             stundentFaceProcessService.clearHistory(dataObj);

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

@@ -445,6 +445,7 @@ public class StudentReportRecordServiceImpl extends MPJBaseServiceImpl<StudentRe
                 schoolRoll.setClassId(baseClass.getId());
                 schoolRoll.setMajorSetId(baseClass.getMajorSetId());
                 schoolRoll.setStduyStatus(student.getStduyStatus());
+                schoolRoll.setDeleteMark(DeleteMark.DELETED.getCode());
                 schoolRoll.setEnrollType(baseClass.getEnrollType());
                 schoolRoll.setStudentType(student.getSource());
                 schoolRoll.setGradeId(baseClass.getGradeId());

+ 34 - 12
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java

@@ -165,17 +165,17 @@ class HikvisionBaseDataTaskTest {
 //        dataUtil.insertCar(use, carTableName,baseClass, faceImportMapper);
 
 
-//        tableName = "base_class";
-//        Map<String, String> baseClass = dataMap.get(tableName);
-//        Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
+        tableName = "base_class";
+        Map<String, String> baseClass = dataMap.get(tableName);
+        Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
 
 
-        tableName = "base_student";
-        List<HikvisionData> studentList = hikvisionDataMapper.selectList(
-                new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
-        );
-        Map<String, String> baseStudent = dataMap.get(tableName);
-        insertStudentOne(tableName, baseStudent, studentList);
+//        tableName = "base_student";
+//        List<HikvisionData> studentList = hikvisionDataMapper.selectList(
+//                new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
+//        );
+//        Map<String, String> baseStudent = dataMap.get(tableName);
+//        insertStudentOne(tableName, baseStudent, studentList);
 //        sql = "SELECT * FROM wf_room_applicant WHERE delete_mark = 0 AND STATUS = 1";
 //        List<Map<String, Object>> wfRoomApplicantList = SqlRunnerAdapter.db().selectList(sql);
 //
@@ -245,7 +245,30 @@ class HikvisionBaseDataTaskTest {
                 " INNER JOIN base_class t3 ON t2.class_id = t3.id" +
                 " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
-                " AND t3.class_type IS NOT NULL AND t3.is_graduate = 1";
+                " AND t3.class_type IS NOT NULL AND t3.is_graduate = 1" +
+                " and t1.credential_number IN (" +
+                " SELECT t3.credential_number\n" +
+                "        FROM student_report_record t1\n" +
+                "        INNER JOIN base_new_student t3 ON t3.id = t1.user_id\n" +
+                "        LEFT JOIN banding_task_class_student t2 ON t1.user_id = t2.new_student_id AND t2.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task_class t5 ON t2.banding_task_class_id = t5.id\n" +
+                "        LEFT JOIN xjr_user t6 ON t5.teacher_id = t6.id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t7 ON t3.gender = t7.code AND t7.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t8 ON t3.source = t8.code AND t8.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_dictionary_detail t9 ON t3.stduy_status = t9.code AND t9.delete_mark = 0\n" +
+                "        LEFT JOIN banding_task t10 ON t5.banding_task_id = t10.id\n" +
+                "        LEFT JOIN enrollment_plan t11 ON t11.id = t3.enrollment_plan_id\n" +
+                "        LEFT JOIN base_grade t4 ON t11.grade_id = t4.id\n" +
+                "        LEFT JOIN student_report_plan t12 ON t12.id = t1.student_report_plan_id\n" +
+                "        LEFT JOIN base_major_set t13 ON t13.id = t5.major_set_id\n" +
+                "        LEFT JOIN xjr_dictionary_detail t14 ON t5.class_type = t14.code AND t14.delete_mark = 0\n" +
+                "        LEFT JOIN xjr_department t15 ON t15.id = t13.department_id\n" +
+                "        WHERE t1.delete_mark = 0 AND t1.enabled_mark = 1\n" +
+                "        AND t12.status IN(1,2)\n" +
+                "        AND t3.enrollment_plan_id = 1897950348853186562\n" +
+                "        AND t12.category = 2\n" +
+                "        AND t1.report_time IS NOT NULL" +
+                " )";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
         List<Entity> insertList = new ArrayList<>();
@@ -361,8 +384,7 @@ class HikvisionBaseDataTaskTest {
         ApiUtil apiUtil = new ApiUtil();
 
         JsonArray dataArray = new JsonArray();
-        dataArray.add("1828723343029219330-2024-job_class-FB3001");
-        dataArray.add("1828723343029219330-2024-job_class-FB3002");
+        dataArray.add("2025-job_class-FB3002");
         JsonObject paramJson = new JsonObject();
         paramJson.add("indexCodes", dataArray);
         Map<String, String> headerMap = new HashMap<>();

+ 38 - 19
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -178,24 +178,43 @@ class JianyuekbBaseDataTaskTest {
             ids.add(object.get("serialNo").getAsString());
         }
 
-//        url  = ScheduleUtil.apiUrl + "Class/del";
-//        timestamp = System.currentTimeMillis();
-//        sign = ScheduleUtil.createSign(timestamp);
-//        int maxNum = 100;
-//        int cishu = ids.size() / maxNum + 1;
-//        if(ids.size() < maxNum){
-//            maxNum = ids.size();
-//        }
-//        for (int i = 0; i < cishu; i++){
-//            JsonArray delArray = new JsonArray();
-//            for (int j = 0 + (i * maxNum);  j < maxNum; j ++){
-//                delArray.add(ids.get(j));
-//            }
-//
-//            String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
-//
-//            System.out.println(delResult);
-//        }
+        url  = ScheduleUtil.apiUrl + "Class/del";
+        timestamp = System.currentTimeMillis();
+        sign = ScheduleUtil.createSign(timestamp);
+        int maxNum = 100;
+        int cishu = ids.size() / maxNum + 1;
+        if(ids.size() < maxNum){
+            maxNum = ids.size();
+        }
+        for (int i = 0; i < cishu; i++){
+            JsonArray delArray = new JsonArray();
+            for (int j = 0 + (i * maxNum);  j < maxNum; j ++){
+                delArray.add(ids.get(j));
+            }
+
+            String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
+
+            System.out.println(delResult);
+        }
+
+    }
+
+    @Test
+    void deleteClassByJianyueId() throws Exception {
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+        String url  = ScheduleUtil.apiUrl + "Class/page";
+
+
+        url  = ScheduleUtil.apiUrl + "Class/del";
+        timestamp = System.currentTimeMillis();
+        sign = ScheduleUtil.createSign(timestamp);
+
+        JsonArray delArray = new JsonArray();
+        delArray.add("CLA000001731");
+        String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
+
+        System.out.println(delResult);
 
     }
 
@@ -340,7 +359,7 @@ class JianyuekbBaseDataTaskTest {
 
         doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
 
-        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
+        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1 and id = 1917059281647636481";
         List<BaseClass> dataList = use.query(sql, BaseClass.class);
         Map<String, BaseClass> classMap = new HashMap<>();
         for (BaseClass baseClass : dataList) {

+ 12 - 5
src/test/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNodeTest.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.liteflow.node;
 
+import cn.hutool.core.util.StrUtil;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
@@ -40,10 +41,12 @@ class ImportStudentFaceNodeTest {
     private FaceImportMapper faceImportMapper;
     @Test
     void test(){
-        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;";
+        String sql = "SELECT t3.* FROM stundent_face_process t1\n" +
+                "INNER JOIN xjr_workflow_form_relation t2 ON t1.id = t2.form_key_value\n" +
+                "INNER JOIN xjr_user t3 ON t1.user_id = t3.id\n" +
+                "WHERE t2.current_state = 'COMPLETED'\n" +
+                "AND t1.create_date > '2025-05-05 0:00:00'\n" +
+                "AND t1.hikvision_result LIKE '%The required parameter personId is null.\",%'\n";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
 
         ApiUtil apiUtil = new ApiUtil();
@@ -88,7 +91,11 @@ class ImportStudentFaceNodeTest {
                     if(personPhoto.size() == 0){
                         dataObj.setStatus(1);
                         dataObj.setExamStatus(1);
-                        String result = FaceImportUtil.ImportStudentFace(hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId()), fileUrl);
+                        String studentHikvisionId = hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId());
+                        if(StrUtil.isEmpty(studentHikvisionId)){
+                            studentHikvisionId = dataObj.getUserId().toString();
+                        }
+                        String result = FaceImportUtil.ImportStudentFace(studentHikvisionId, fileUrl);
                         dataObj.setHikvisionResult(result);
                         dataObj.setModifyDate(new Date());
                         dataObj.setEnabledMark(1);