Ver Fonte

解决海康数据同步报错问题

dzx há 1 ano atrás
pai
commit
416ca50f96

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

@@ -8,6 +8,7 @@ import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
@@ -464,7 +465,7 @@ public class DataUtil {
     }
 
     /*同步车辆数据*/
-    public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, FaceImportMapper faceImportMapper) {
+    public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, HikvisionDataMapper hikvisionDataMapper) {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
         List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
         String apiPath = "/api/resource/v1/vehicle/batch/add";
@@ -483,19 +484,18 @@ public class DataUtil {
         JsonArray dataArray = new JsonArray();
         String result = null;
         int clientId = 1;
-        for (Map<String, Object> carMessageApplyMap : dataList) {
-            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
-            if(existingPlates.contains(carMessageApply.getId() + "")){
+        for (Map<String, Object> carMap : dataList) {
+            if(existingPlates.contains(carMap.get("id") + "")){
                 continue;
             }
 
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("clientId", clientId);
-            paramJson.addProperty("plateNo", carMessageApply.getCarNumber().trim());
-            paramJson.addProperty("personId", faceImportMapper.GetHikvisonPersonId(carMessageApply.getId().toString()));
+            paramJson.addProperty("plateNo", carMap.get("car_number").toString());
+            paramJson.addProperty("personId", hikvisionDataMapper.getTeacherHikvisionId(Long.parseLong(carMap.get("user_id").toString())));
 
             int vehicleTypeNum;
-            switch (carMessageApply.getVehicleType()) {
+            switch (carMap.get("vehicle_type").toString()) {
                 case "小型车":
                     vehicleTypeNum = 1;
                     break;
@@ -510,19 +510,18 @@ public class DataUtil {
                     break;
             }
             paramJson.addProperty("vehicleType", vehicleTypeNum);
-            clientMap.put(clientId, carMessageApply.getId());
+            clientMap.put(clientId, Long.parseLong(carMap.get("id").toString()));
             dataArray.add(paramJson);
             clientId++;
         }
         result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null);
 
-        for (Map<String, Object> carMessageApplyMap : dataList) {
-            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
+        for (Map<String, Object> carMap : dataList) {
             JsonObject paramJsonTime = new JsonObject();
             paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09");
-            paramJsonTime.addProperty("plateNo", carMessageApply.getCarNumber().trim());
-            paramJsonTime.addProperty("startTime", String.valueOf(carMessageApply.getStartTime()));
-            paramJsonTime.addProperty("endTime", String.valueOf(carMessageApply.getEndTime()));
+            paramJsonTime.addProperty("plateNo", carMap.get("car_number").toString());
+            paramJsonTime.addProperty("startTime", carMap.get("start_time").toString());
+            paramJsonTime.addProperty("endTime", carMap.get("end_time").toString());
             apiUtil.doPost(apiPathTime, String.valueOf(paramJsonTime), tagMap, null);
         }
 

+ 28 - 8
src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java

@@ -4,6 +4,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -27,11 +28,11 @@ public class HikvisionBaseDataTask {
     @Autowired
     private FaceImportMapper faceImportMapper;
 
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
     @Scheduled(cron = "0 */15 * * * ?")
     public void RefreshConnectionPool() {
-        if(1 == 1){
-            return;
-        }
         String active = SpringUtil.getActiveProfile();
         if(!"prod".equals(active)){
             log.info("非正式环境,无法执行数据推送");
@@ -65,28 +66,47 @@ public class HikvisionBaseDataTask {
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             String tableName = "xjr_department";
-            Map<String, String> department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
+            Map<String, String> department = new HashMap<>();
+            try {
+                department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
+            }catch (Exception e){
+                log.info("推送组织机构报错", e);
+            }
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
             }
 
+
             //推送教职工
             tableName = "base_teacher";
-            dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
+            try {
+                dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
+            }catch (Exception e){
+                log.info("推送教职工报错", e);
+            }
 
             //推送车辆
             String carTableName = "car_message_apply";
             Map<String, String> baseCar = dataMap.get(carTableName);
-            dataUtil.insertCar(carTableName, baseCar, faceImportMapper);
+            try {
+                dataUtil.insertCar(carTableName, baseCar, hikvisionDataMapper);
+            }catch (Exception e){
+                log.info("同步车辆数据报错", e);
+            }
+
 
             tableName = "base_class";
             Map<String, String> baseClass = dataMap.get(tableName);
-            Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
+            try {
+                dataUtil.insertClass(tableName, baseClass);
+            }catch (Exception e){
+                log.info("同步车辆数据报错", e);
+            }
 
 
             tableName = "base_student";
             Map<String, String> baseStudent = dataMap.get(tableName);
-            Map<String, String> student = dataUtil.insertStudentOne(tableName, baseStudent);
+            dataUtil.insertStudentOne(tableName, baseStudent);
 
             log.info("数据推送完成");
         } catch (Exception e) {

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

@@ -108,7 +108,7 @@ class HikvisionBaseDataTaskTest {
 //
 //        //推送教职工
         tableName = "base_teacher";
-        insertTeacher(tableName, dataMap.get(tableName), department);
+//        insertTeacher(tableName, dataMap.get(tableName), department);
 //
         //推送车辆
 
@@ -124,7 +124,7 @@ class HikvisionBaseDataTaskTest {
 
         tableName = "base_student";
         Map<String, String> baseStudent = dataMap.get(tableName);
-       // Map<String, String> student = insertStudentOne(tableName, baseStudent);
+        Map<String, String> student = insertStudentOne(tableName, baseStudent);
 
 //        selectOrg(use, "base_class");
 
@@ -173,7 +173,7 @@ class HikvisionBaseDataTaskTest {
                 " 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 t1.name IN ('陆晓峰','李星兴')";
+                " AND t1.name IN ('罗一钦','刘嘉靖')";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
 
@@ -382,12 +382,12 @@ class HikvisionBaseDataTaskTest {
 
 
     public Map<String, String> insertTeacher(String tableName, Map<String, String> tableData, Map<String, String> deptMap){
-        String sql = "SELECT distinct t1.id,t1.name,t1.gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
+        String sql = "SELECT distinct t1.id,t1.name,ifnull(t1.gender,'SB10001') as gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
                 " INNER JOIN " + tableName + " t2 ON t1.id = t2.user_id" +
                 " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
                 " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id " +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0" +
-                " AND t1.name = '李江涛'";
+                " AND t1.name = '徐海洋'";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         JsonArray paramArray = new JsonArray();
         Map<Integer, String> clientMap = new HashMap<>();
@@ -406,7 +406,7 @@ class HikvisionBaseDataTaskTest {
             paramJson.addProperty("birthday", objectMap.get("birth_date")==null?"":objectMap.get("birth_date").toString());
             paramJson.addProperty("personType", 1);
 
-            int gender;
+            int gender = 1;
             switch (objectMap.get("gender").toString()) {
                 case "SB10001":
                     gender = 1;