brealinxx 1 vuosi sitten
vanhempi
commit
1474552013

+ 1 - 0
src/main/java/com/xjrsoft/config/HikvisionConfig.java

@@ -23,4 +23,5 @@ public class HikvisionConfig {
 
     private String carUrl;
 
+    private String visitUrl;
 }

+ 3 - 3
src/main/java/com/xjrsoft/module/base/controller/BaseClassCourseController.java

@@ -101,7 +101,7 @@ public class BaseClassCourseController {
         return RT.ok(data);
     }
 
-    @GetMapping("/updateAddCoursesAndTextbooks")
+    @PostMapping("/updateAddCoursesAndTextbooks")
     @ApiOperation(value="更新增加课程教材")
     @SaCheckPermission("baseclasscourse:detail")
     public RT updateAddCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
@@ -113,7 +113,7 @@ public class BaseClassCourseController {
         return RT.ok();
     }
 
-    @GetMapping("/updateRemoveCoursesAndTextbooks")
+    @PostMapping("/updateRemoveCoursesAndTextbooks")
     @ApiOperation(value="更新减少课程教材")
     @SaCheckPermission("baseclasscourse:detail")
     public RT updateRemoveCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
@@ -125,7 +125,7 @@ public class BaseClassCourseController {
         return RT.ok();
     }
 
-    @GetMapping("/insertClassCourseTextbookCombinations")
+    @PostMapping("/insertClassCourseTextbookCombinations")
     @ApiOperation(value="复用课程教材")
     @SaCheckPermission("baseclasscourse:detail")
     public RT insertClassCourseTextbookCombinations(@RequestParam Long newClassId, @RequestParam Long[] sourceClassIds, @RequestParam Long semester) {

+ 21 - 3
src/main/java/com/xjrsoft/module/hikvision/controller/EventController.java

@@ -139,6 +139,22 @@ public class EventController {
         return ResponseEntity.ok().build();
     }
 
+    @PostMapping("/visit")
+    @ApiOperation(value = "接收访客事件")
+    public ResponseEntity<Void> receiveVisitEvent(@RequestBody(required = false) String eventData) {
+        log.info("Received event data: {}", eventData);
+        new Thread(() -> {
+            try {
+                outInRecordUtil.GetVisitRecordsTest(use, faceImportMapper, eventData);
+            } catch (SQLException | ParseException e) {
+                log.error("Error processing event data", e);
+            }
+        }).start();
+
+        // 立即返回HTTP 200 OK响应
+        return ResponseEntity.ok().build();
+    }
+
     @PostMapping("/subscribe")
     @ApiOperation(value = "订阅事件")
     public RT<Boolean> subscribeEvent() {
@@ -149,9 +165,11 @@ public class EventController {
 //*******手动更改****************************************************
 //        eventList.add(196893); //人脸匹配成功
 //        eventList.add(197151); //人脸匹配失败
-        eventList.add(771760130); //车辆入场压线事件
-        eventList.add(771760133); //车辆出场压线事件
-        paramJson.addProperty("eventDest", hikvisionConfig.getCarUrl()); //要修改第二个参数
+//        eventList.add(771760130); //车辆入场压线事件
+//        eventList.add(771760133); //车辆出场压线事件
+        eventList.add(1392513025); //访客登记
+        eventList.add(1392513026); //访客签离
+        paramJson.addProperty("eventDest", hikvisionConfig.getVisitUrl()); //要修改第二个参数
 //******************************************************************
         paramJson.add("eventTypes", eventList);
 

+ 31 - 2
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -40,7 +40,7 @@ public class OutInRecordUtil {
     }
 
 
-    public void visitInsertRecord(Db db, Long reservation_school_people_id, String recordTime,String facePhoto, int status, String eventId) throws SQLException {
+    public void visitInsertRecord(Db db, Long reservation_school_people_id, String recordTime,String facePhoto, String status, String eventId) throws SQLException {
         String sql = "INSERT INTO visitor_out_in_record(create_date, reservation_school_people_id, record_time, face_photo, event_id, status,delete_mark,enabled_mark) " +
                 "VALUES(now(), '"  + reservation_school_people_id + "', '" +
                  recordTime + "', '" + facePhoto + "', '" + eventId + "', '" + status +  "',0,1)";
@@ -305,6 +305,7 @@ public class OutInRecordUtil {
             String eventTime = item.get("eventTime").isJsonNull() ? null : ChangeTime(item.get("eventTime").getAsString());
             String reservationSchoolId = faceImportMapper.GetReservationSchoolId(orderId) == null ? "0" : String.valueOf(faceImportMapper.GetReservationSchoolId(orderId));
             String eventId = item.get("eventId").isJsonNull() ? null : item.get("eventId").getAsString();
+            String deviceDesc = item.get("deviceDesc").isJsonNull() ? null : item.get("deviceDesc").getAsString();
 
             int status = -1;
             for (JsonElement e : doorEventsResponse){
@@ -317,7 +318,7 @@ public class OutInRecordUtil {
 
             if (visit_id_list.contains(eventId)) continue;
 
-            visitInsertRecord(use, Long.parseLong(reservationSchoolId), eventTime, picUri, status, eventId);
+            visitInsertRecord(use, Long.parseLong(reservationSchoolId), eventTime, picUri, deviceDesc, eventId);
         }
 
     }
@@ -583,5 +584,33 @@ public class OutInRecordUtil {
         }
     }
 
+    public void GetVisitRecordsTest(Db use, FaceImportMapper faceImportMapper, String data) throws SQLException, ParseException {
+        if (data != null) {
+            List<String> visit_id_list = faceImportMapper.GetVisitIdList();
+
+            try {
+                JsonObject jsonObject = new Gson().fromJson(data, JsonObject.class);
+                JsonObject paramsObject = jsonObject.getAsJsonObject("params");
+                JsonArray eventsArray = paramsObject.getAsJsonArray("events");
+
+                for (JsonElement eventElement : eventsArray) {
+                    JsonObject eventObject = eventElement.getAsJsonObject();
+                    JsonObject dataObject = eventObject.getAsJsonObject("data");
+
+                    String orderId = dataObject.get("visitorId").getAsString().trim();
+                    String eventTime = ChangeTime(eventObject.get("happenTime").getAsString());
+                    String picUri = dataObject.get("photoUrl").getAsString().trim();
+                    String srcParentIndex = eventObject.get("srcParentIndex").getAsString().trim();
+                    String eventId = eventObject.get("eventId").getAsString().trim();
+                    String reservationSchoolId = faceImportMapper.GetReservationSchoolId(orderId) == null ? "0" : String.valueOf(faceImportMapper.GetReservationSchoolId(orderId));
+
+                    if (visit_id_list.contains(eventId)) continue;
 
+                    visitInsertRecord(use, Long.parseLong(reservationSchoolId), eventTime, ApiUtil.GetRedirectURL(picUri), srcParentIndex, eventId);
+                }
+            } catch (Exception e) {
+                log.info(String.valueOf(e));
+            }
+        }
+    }
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/FaceImportMapper.java

@@ -34,5 +34,7 @@ public interface FaceImportMapper {
 
     String GetPhoneNumberByPlanNumView(@Param("id") String id);
     String GetNameByPlanNumView(@Param("id") String id);
+
+    List<String> GetVisitIdList();
 }
 

+ 2 - 0
src/main/resources/application-dev.yml

@@ -113,6 +113,7 @@ xjrsoft:
       - /system/QR-code-login
       - /event/receivePeople
       - /event/receiveCar
+      - /event/visit
       - /system/findUserByCode
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
@@ -148,6 +149,7 @@ xjrsoft:
     appSecret: LXi9rE2fm8IfRoLnTA2G
     people-url: http://ff.cf.yingcaibx.com/event/receivePeople
     car-url: http://ff.cf.yingcaibx.com/event/receiveCar
+    visit-url: http://ff.cf.yingcaibx.com/event/visit
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 2 - 0
src/main/resources/application-pre.yml

@@ -97,6 +97,7 @@ xjrsoft:
       - /system/QR-code-login
       - /event/receivePeople
       - /event/receiveCar
+      - /event/visit
       - /system/findUserByCode
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
@@ -132,6 +133,7 @@ xjrsoft:
     appSecret: LXi9rE2fm8IfRoLnTA2G
     people-url: http://ff.cf.yingcaibx.com/event/receivePeople
     car-url: http://ff.cf.yingcaibx.com/event/receiveCar
+    visit-url: http://ff.cf.yingcaibx.com/event/visit
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 2 - 0
src/main/resources/application-prod.yml

@@ -93,6 +93,7 @@ xjrsoft:
       - /system/QR-code-login
       - /event/receivePeople
       - /event/receiveCar
+      - /event/visit
       - /system/findUserByCode
     approval-time: 300 # 审核超时时间 目前设为5分钟
   email:
@@ -128,6 +129,7 @@ xjrsoft:
     appSecret: LXi9rE2fm8IfRoLnTA2G
     people-url: https://zhxy.cqtlzjzx.com/api/event/receivePeople
     car-url: https://zhxy.cqtlzjzx.com/api/event/receiveCar
+    visit-url: https://zhxy.cqtlzjzx.com/api/event/visit
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 6 - 0
src/main/resources/mapper/teacher/TeacherFaceImportMapper.xml

@@ -159,4 +159,10 @@
             and plate_number = #{id}
         </if>
     </select>
+
+    <select id="GetVisitIdList" resultType="java.lang.String">
+        SELECT event_id
+        FROM visitor_out_in_record
+        where delete_mark = 0
+    </select>
 </mapper>