Ver Fonte

测试订阅

brealinxx há 1 ano atrás
pai
commit
7d25cdcac0

+ 19 - 8
src/main/java/com/xjrsoft/module/hikvision/util/EventController.java

@@ -1,19 +1,18 @@
 package com.xjrsoft.module.hikvision.util;
 
 import cn.hutool.db.Db;
-import com.google.gson.Gson;
+import cn.hutool.jwt.JWTUtil;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.module.system.controller.AuthorizeController;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -31,6 +30,7 @@ import java.text.ParseException;
 @Slf4j
 public class EventController {
     private final Out_In_RecordUtil outInRecordUtil = new Out_In_RecordUtil();
+    private final AuthorizeController authorizeController;
 
     DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
     private final Db use = Db.use(datasource);
@@ -40,11 +40,10 @@ public class EventController {
     @ApiOperation(value = "接收事件")
     public ResponseEntity<Void> receiveEvent(@RequestBody(required = false) String eventData) {
         log.info("Received event data: {}", eventData);
-
         new Thread(() -> {
             try {
                 outInRecordUtil.GetTeacherAndStudentRecordsTest(use, faceImportMapper, eventData);
-                outInRecordUtil.GetVehicleRecordTask(use, faceImportMapper, eventData);
+                outInRecordUtil.GetVehicleRecordTest(use, faceImportMapper, eventData);
             } catch (SQLException | ParseException e) {
                 log.error("Error processing event data", e);
             }
@@ -57,17 +56,29 @@ public class EventController {
     @PostMapping("/subscribe")
     @ApiOperation(value = "订阅事件")
     public RT<Boolean> subscribeEvent() {
+//        authorizeController.permissions().get().toString();
         ApiUtil apiUtil = new ApiUtil();
         JsonArray eventList = new JsonArray();
-        eventList.add(196893);
-        eventList.add(1157632001);
+        eventList.add(196893); //人脸匹配
+        eventList.add(1157632001); //正常过车
         String apiPath = "/api/eventService/v1/eventSubscriptionByEventTypes";
         JsonObject paramJson = new JsonObject();
         paramJson.add("eventTypes", eventList);
-        paramJson.addProperty("eventDest", "http://10.150.10.139:8001/event/receive");
+        paramJson.addProperty("eventDest", "http://10.150.10.139:8888/event/receive");
 
         String response = apiUtil.doPost(apiPath, paramJson.toString(), null);
         log.info("Subscribe response: {}", response);
         return RT.ok(true);
     }
+
+    @PostMapping("/query")
+    @ApiOperation(value = "查询已订阅事件")
+    public String queryEvent() {
+        ApiUtil apiUtil = new ApiUtil();
+        String apiPath = "/api/eventService/v1/eventSubscriptionView";
+        String response = apiUtil.doPost(apiPath, null, null);
+        System.out.println("output: " + response);
+
+        return response;
+    }
 }

+ 50 - 13
src/main/java/com/xjrsoft/module/hikvision/util/Out_In_RecordUtil.java

@@ -7,12 +7,13 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.sql.SQLException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.List;
@@ -21,7 +22,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 
 public class Out_In_RecordUtil {
-    private void teacherInsertRecord(Db db, Long userId, String recordTime, String facePhoto,int status, String eventId, String attendanceStatus) throws SQLException {
+    private static final Logger log = LoggerFactory.getLogger(Out_In_RecordUtil.class);
+
+    private void teacherInsertRecord(Db db, Long userId, String recordTime, String facePhoto, int status, String eventId, String attendanceStatus) throws SQLException {
 
         String sql = "INSERT INTO teacher_out_in_record(create_date, user_id, record_time, face_photo, eventId, status,delete_mark,enabled_mark, attendance_status) " +
                 "VALUES(now(), '"  + userId + "', '" + recordTime + "', '" +
@@ -392,29 +395,63 @@ public class Out_In_RecordUtil {
         return mysqlFormat.format(date);
     }
 
-    public void GetTeacherAndStudentRecordsTest(Db use, FaceImportMapper faceImportMapper,String data) throws SQLException, ParseException {
-        if (data != null){
-            JsonArray responseBuilder = new JsonArray();
+    public void GetTeacherAndStudentRecordsTest(Db use, FaceImportMapper faceImportMapper, String data) throws SQLException, ParseException {
+        if (data == null || data.trim().isEmpty()) {
+            log.warn("Empty data string, skipping processing");
+            return;
+        }
+
+        try {
             JsonElement responseElement = new Gson().fromJson(data, JsonElement.class);
-            JsonArray dataList = responseElement.getAsJsonObject().getAsJsonObject("data").getAsJsonArray("list");
+
+            if (!responseElement.isJsonObject()) {
+                log.error("Invalid JSON format, expected a JSON object");
+                return;
+            }
+
+            JsonObject responseObject = responseElement.getAsJsonObject();
+
+            if (!responseObject.has("data") || !responseObject.get("data").isJsonObject()) {
+                log.error("Missing or invalid 'data' field in JSON");
+                return;
+            }
+
+            JsonObject dataObject = responseObject.getAsJsonObject("data");
+
+            if (!dataObject.has("list") || !dataObject.get("list").isJsonArray()) {
+                log.error("Missing or invalid 'list' field in JSON");
+                return;
+            }
+
+            JsonArray dataList = dataObject.getAsJsonArray("list");
+            JsonArray responseBuilder = new JsonArray();
 
             for (JsonElement item : dataList) {
                 responseBuilder.add(item);
             }
 
             InsertTeacherStudentRecords(use, responseBuilder, faceImportMapper);
+
+        } catch (Exception e) {
+            log.error("Error processing JSON data", e);
         }
     }
 
-    public void GetVehicleRecordTask(Db use, FaceImportMapper faceImportMapper, String data) throws SQLException, ParseException {
+
+    public void GetVehicleRecordTest(Db use, FaceImportMapper faceImportMapper, String data) throws SQLException, ParseException {
         if (data != null){
-            JsonArray responseBuilder = new JsonArray();
-            JsonElement responseElement = new Gson().fromJson(data, JsonElement.class);
-            JsonArray dataList = responseElement.getAsJsonObject().getAsJsonObject("data").getAsJsonArray("list");
-            for (JsonElement item : dataList) {
-                responseBuilder.add(item);
+            try {
+                JsonArray responseBuilder = new JsonArray();
+                JsonElement responseElement = new Gson().fromJson(data, JsonElement.class);
+                JsonArray dataList = responseElement.getAsJsonObject().getAsJsonObject("data").getAsJsonArray("list");
+                for (JsonElement item : dataList) {
+                    responseBuilder.add(item);
+                }
+                InsertVehicleRecords(use, responseBuilder,faceImportMapper);
             }
-            InsertVehicleRecords(use, responseBuilder,faceImportMapper);
+          catch (Exception e){
+              log.info(String.valueOf(e));
+          }
         }
     }
 }

+ 4 - 2
src/main/java/com/xjrsoft/module/job/InsertOutInRecordTask.java

@@ -32,15 +32,17 @@ public class InsertOutInRecordTask {
             log.info("非正式环境,无法执行数据推送");
             return;
         }
-        log.info("开始推送海康威视基础数据");
+        log.info("开始拉取海康威视基础数据");
         DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
         try {
             Db use = Db.use(datasource);
 
             //教师&学生拉取数据
             out_in_recordUtil.GetTeacherAndStudentRecords(use, faceImportMapper);
+            //拉取车辆数据
+            out_in_recordUtil.GetVehicleRecord(use, faceImportMapper);
 
-            log.info("数据推送完成");
+            log.info("数据拉取完成");
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }