From 8d590f68b15baac8eecd2625b548a3fefece4f71 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 14 十二月 2023 11:54:06 +0800
Subject: [PATCH] 海康接口对接开发

---
 server/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java                                       |    3 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java                                      |    5 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java   |   82 +++++--
 server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java                                             |    1 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                                      |    1 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java                                        |   16 -
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java                                       |    6 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java                                        |    3 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java                  |  330 ++++++++++++++++++++++++++++++++
 server/dmvisit_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java                                      |    2 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/join/VisitsJoinMapper.java                                  |   12 +
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java                                      |    2 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java                                           |   22 ++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java |   31 ++-
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java                          |    6 
 server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java                                         |   19 +
 server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java                                    |    5 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java  |   13 
 18 files changed, 487 insertions(+), 72 deletions(-)

diff --git a/server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java b/server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
index 8470923..6dfa1e4 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -19,7 +19,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
 
 /**
  * @author 姹熻箘韫�
@@ -66,7 +70,20 @@
     @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戦棬绂佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/acs")
-    public ApiResponse pushAcs(@RequestBody EventAcsRequest param, HttpServletResponse response) {
+    public ApiResponse pushAcs(  HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response) {
+        try {
+            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
+            String line = null;
+            StringBuffer sb = new StringBuffer();
+            while (true) {
+                if (!((line = br.readLine()) != null)) break;
+
+                sb.append(line);
+            }
+            System.out.println(sb.toString());
+        } catch (IOException e) {
+                throw new RuntimeException(e);
+        }
         String result = hkSyncPushService.dealAcsEvent(param,response);
         return ApiResponse.success(result);
     }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java b/server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
index 7abd7c7..39f139d 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -63,6 +63,7 @@
                     } else {
                         throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
                     }
+//                    request.setAttribute("token", token);
                 }
                 return true;
             }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java b/server/dmvisit_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java
index 409fe88..1e97d85 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java
@@ -10,8 +10,6 @@
 import java.util.List;
 
 public class EasySqlInjector extends MPJSqlInjector {
-
-
     @Override
     public List<AbstractMethod> getMethodList(Class<?> mapperClass ) {
         // 娉ㄦ剰锛氭SQL娉ㄥ叆鍣ㄧ户鎵夸簡DefaultSqlInjector(榛樿娉ㄥ叆鍣�)锛岃皟鐢ㄤ簡DefaultSqlInjector鐨刧etMethodList鏂规硶锛屼繚鐣欎簡mybatis-plus鐨勮嚜甯︽柟娉�
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index d472dd8..fd9fc11 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -7,6 +7,7 @@
 
 @Data
 public class HKConstants {
+    public static final String IMG_INDEX ="HKIMG=" ;
     private Logger logger = LoggerFactory.getLogger(HKConstants.class);
     //娴峰悍骞冲彴鏍规嵁鐜板満鐜閰嶇疆http杩樻槸https
     public static final String RESPONSE_SUCCEE = "0";
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java
index 4a84b98..95ab60b 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java
@@ -1,37 +1,65 @@
 package com.doumee.core.haikang.model.param.request.event.acs;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 @Data
 public class EventDeviceDataRequest {
 
-    private  ExtEventIdentityCardInfo ExtEventIdentityCardInfo;//	浜哄憳韬唤璇佷俊鎭�	鍚�	涓嶉檺
-    private ExtEventIdentityCardInfo  ExtEventCustomerNumInfo;//		閫氶亾浜嬩欢淇℃伅	鍚�	涓嶉檺
-    private Integer  ExtAccessChannel	;//Number	浜哄憳閫氶亾鍙�	鍚�	32
-    private Integer  ExtEventAlarmInID;//	Number	鎶ヨ杈撳叆/闃插尯閫氶亾	鍚�	32
-    private Integer   ExtEventAlarmOutID	;//Number	鎶ヨ杈撳嚭閫氶亾	鍚�	32
-    private String   ExtEventCardNo;//String	鍗″彿	鍚�	32
-    private Integer   ExtEventCaseID	;//Number	浜嬩欢杈撳叆閫氶亾	鍚�	32
-    private Integer ExtEventCode;//	Number	浜嬩欢绫诲瀷浠g爜	鍚�	32	鍙傝闄勫綍D.2.1.1 闂ㄧ浜嬩欢绫诲瀷
-    private Integer   ExtEventDoorID;//	Number	闂ㄧ紪鍙�	鍚�	32
-    private String   ExtEventIDCardPictureURL;//	String	韬唤璇佸浘鐗嘦RL	鍚�	200
-    private Integer   ExtEventInOut;//	Number	杩涘嚭鏂瑰悜	鍚�	32	杩涘嚭绫诲瀷1锛氳繘0锛氬嚭-1:鏈煡    瑕佹眰锛氳繘闂ㄨ鍗″櫒鎷ㄧ爜璁剧疆涓�1锛屽嚭闂ㄨ鍗″櫒鎷ㄧ爜璁剧疆涓�2
-    private Integer  ExtEventLocalControllerID;//	Number	灏卞湴鎺у埗鍣╥d	鍚�	32	灏卞湴鎺у埗鍣ㄧ紪鍙�,0-闂ㄧ涓绘満,1-255浠h〃灏卞湴鎺у埗鍣�
-    private Integer   ExtEventMainDevID;//	Number	涓昏澶囨嫧鐮�	鍚�	32
-    private String    ExtEventPersonNo;//	String	浜哄憳缂栧彿	鍚�	32	浠ヤ汉涓轰腑蹇冭澶囦細涓婃姤
-    private String    ExtEventPictureURL;//	String	鍥剧墖鐨剈rl	鍚�	32
-    private Integer   ExtEventReaderID;//	Number	璇诲崱鍣╥d	鍚�	32
-    private Integer     ExtEventReaderKind;//	Number	璇诲崱鍣ㄧ被鍒�	鍚�	32	0-鏃犳晥1-IC璇诲崱鍣�2-韬唤璇佽鍗″櫒3-浜岀淮鐮佽鍗″櫒4-鎸囩汗澶�
-    private Integer ExtEventReportChannel;//	Number	鎶ュ憡涓婁紶閫氶亾	鍚�	32	1-甯冮槻涓婁紶2-涓績缁�1涓婁紶3-涓績缁�2涓婁紶0-鏃犳晥
-    private Integer ExtEventRoleID;//	Number	缇ょ粍缂栧彿	鍚�	32
-    private Integer  ExtEventSubDevID;//	Number	鍒嗘帶鍒跺櫒纭欢ID	鍚�	32
-    private Integer    ExtEventSwipNum;//	Number	鍒峰崱娆℃暟	鍚�	32
-    private Integer ExtEventType;//	Number	浜嬩欢绫诲瀷	鍚�	32	浜嬩欢绫诲瀷锛屽鏅�氶棬绂佷簨浠朵负0,韬唤璇佷俊鎭簨浠朵负1锛屽娴侀噺缁熻涓�2
-    private Integer   ExtEventVerifyID;//	Number	澶氶噸璁よ瘉搴忓彿	鍚�	32
-    private Integer   ExtEventWhiteListNo;//	Number	鐧藉悕鍗曞崟鍙�	鍚�	32	1-8锛屼负0鏃犳晥
-    private String   ExtReceiveTime;//	String	浜嬩欢涓婃姤椹卞姩鐨勬椂闂�	鏄�	32	鐢ㄤ簬缁熻浜嬩欢涓婃姤寤舵椂锛孶nix鏃堕棿鎴筹紝绮剧‘鍒板井绉掞紝渚嬶細 "1558576265810000"浠h〃 2019/5/23 9:51:5.000
-    private Integer    Seq;//	Number	浜嬩欢娴佹按鍙�	鏄�	32	浜嬩欢娴佹按鍙凤紝涓�0鏃犳晥
-    private String     UserType;//	Number 鐢ㄦ埛绫诲瀷	鍚�	32	浜哄憳绫诲瀷锛�0 鏈煡锛�1 鏅�氾紝2 鏉ュ锛�3 榛戝悕鍗曪紝4 绠$悊鍛�
+    @JsonProperty(value = "ExtEventIdentityCardInfo")
+    private  ExtEventIdentityCardInfo extEventIdentityCardInfo;//	浜哄憳韬唤璇佷俊鎭�	鍚�	涓嶉檺
+    @JsonProperty(value = "ExtEventCustomerNumInfo")
+    private ExtEventCustomerNumInfo  extEventCustomerNumInfo;//		閫氶亾浜嬩欢淇℃伅	鍚�	涓嶉檺
+    @JsonProperty(value = "ExtAccessChannel")
+    private Integer  extAccessChannel	;//Number	浜哄憳閫氶亾鍙�	鍚�	32
+    @JsonProperty(value = "ExtEventAlarmInID")
+    private Integer extEventAlarmInID;//	Number	鎶ヨ杈撳叆/闃插尯閫氶亾	鍚�	32
+    @JsonProperty(value = "ExtEventAlarmOutID")
+    private Integer  extEventAlarmOutID	;//Number	鎶ヨ杈撳嚭閫氶亾	鍚�	32
+    @JsonProperty(value = "ExtEventCardNo")
+    private String   extEventCardNo;//String	鍗″彿	鍚�	32
+    @JsonProperty(value = "ExtEventCaseID")
+    private Integer  extEventCaseID	;//Number	浜嬩欢杈撳叆閫氶亾	鍚�	32
+    @JsonProperty(value = "ExtEventCode")
+    private Integer extEventCode;//	Number	浜嬩欢绫诲瀷浠g爜	鍚�	32	鍙傝闄勫綍D.2.1.1 闂ㄧ浜嬩欢绫诲瀷
+    @JsonProperty(value = "ExtEventDoorID")
+    private Integer   extEventDoorID;//	Number	闂ㄧ紪鍙�	鍚�	32
+    @JsonProperty(value = "ExtEventIDCardPictureURL")
+    private String   extEventIDCardPictureURL;//	String	韬唤璇佸浘鐗嘦RL	鍚�	200
+    @JsonProperty(value = "ExtEventInOut")
+    private Integer   extEventInOut;//	Number	杩涘嚭鏂瑰悜	鍚�	32	杩涘嚭绫诲瀷1锛氳繘0锛氬嚭-1:鏈煡    瑕佹眰锛氳繘闂ㄨ鍗″櫒鎷ㄧ爜璁剧疆涓�1锛屽嚭闂ㄨ鍗″櫒鎷ㄧ爜璁剧疆涓�2
+    @JsonProperty(value = "ExtEventLocalControllerID")
+    private Integer  extEventLocalControllerID;//	Number	灏卞湴鎺у埗鍣╥d	鍚�	32	灏卞湴鎺у埗鍣ㄧ紪鍙�,0-闂ㄧ涓绘満,1-255浠h〃灏卞湴鎺у埗鍣�
+    @JsonProperty(value = "ExtEventMainDevID")
+    private Integer   extEventMainDevID;//	Number	涓昏澶囨嫧鐮�	鍚�	32
+    @JsonProperty(value = "ExtEventPersonNo")
+    private String   extEventPersonNo;//	String	浜哄憳缂栧彿	鍚�	32	浠ヤ汉涓轰腑蹇冭澶囦細涓婃姤
+    @JsonProperty(value = "ExtEventPictureURL")
+    private String  extEventPictureURL;//	String	鍥剧墖鐨剈rl	鍚�	32
+    @JsonProperty(value = "ExtEventReaderID")
+    private Integer extEventReaderID;//	Number	璇诲崱鍣╥d	鍚�	32
+    @JsonProperty(value = "ExtEventReaderKind")
+    private Integer  extEventReaderKind;//	Number	璇诲崱鍣ㄧ被鍒�	鍚�	32	0-鏃犳晥1-IC璇诲崱鍣�2-韬唤璇佽鍗″櫒3-浜岀淮鐮佽鍗″櫒4-鎸囩汗澶�
+    @JsonProperty(value = "ExtEventReportChannel")
+    private Integer extEventReportChannel;//	Number	鎶ュ憡涓婁紶閫氶亾	鍚�	32	1-甯冮槻涓婁紶2-涓績缁�1涓婁紶3-涓績缁�2涓婁紶0-鏃犳晥
+    @JsonProperty(value = "ExtEventRoleID")
+    private Integer extEventRoleID;//	Number	缇ょ粍缂栧彿	鍚�	32
+    @JsonProperty(value = "ExtEventSubDevID")
+    private Integer extEventSubDevID;//	Number	鍒嗘帶鍒跺櫒纭欢ID	鍚�	32
+    @JsonProperty(value = "ExtEventSwipNum")
+    private Integer  extEventSwipNum;//	Number	鍒峰崱娆℃暟	鍚�	32
+    @JsonProperty(value = "ExtEventType")
+    private Integer extEventType;//	Number	浜嬩欢绫诲瀷	鍚�	32	浜嬩欢绫诲瀷锛屽鏅�氶棬绂佷簨浠朵负0,韬唤璇佷俊鎭簨浠朵负1锛屽娴侀噺缁熻涓�2
+    @JsonProperty(value = "ExtEventVerifyID")
+    private Long   extEventVerifyID;//	Number	澶氶噸璁よ瘉搴忓彿	鍚�	32
+    @JsonProperty(value = "ExtEventWhiteListNo")
+    private Integer   extEventWhiteListNo;//	Number	鐧藉悕鍗曞崟鍙�	鍚�	32	1-8锛屼负0鏃犳晥
+    @JsonProperty(value = "ExtReceiveTime")
+    private String   extReceiveTime;//	String	浜嬩欢涓婃姤椹卞姩鐨勬椂闂�	鏄�	32	鐢ㄤ簬缁熻浜嬩欢涓婃姤寤舵椂锛孶nix鏃堕棿鎴筹紝绮剧‘鍒板井绉掞紝渚嬶細 "1558576265810000"浠h〃 2019/5/23 9:51:5.000
+    @JsonProperty(value = "Seq")
+    private Integer    seq;//	Number	浜嬩欢娴佹按鍙�	鏄�	32	浜嬩欢娴佹按鍙凤紝涓�0鏃犳晥
+    @JsonProperty(value = "UserType")
+    private Integer     userType;//	Number 鐢ㄦ埛绫诲瀷	鍚�	32	浜哄憳绫诲瀷锛�0 鏈煡锛�1 鏅�氾紝2 鏉ュ锛�3 榛戝悕鍗曪紝4 绠$悊鍛�
     private String    svrIndexCode	;//String	鍥剧墖鏈嶅姟鍣ㄥ敮涓�缂栫爜	鍚�	32
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java
index e97e6eb..3f5378a 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java
@@ -1,13 +1,18 @@
 package com.doumee.core.haikang.model.param.request.event.acs;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 @Data
 public class ExtEventCustomerNumInfo<T> {
 
-    private Integer  AccessChannel;//	Number	閫氶亾鍙�	鍚�	32
-    private Integer  EntryTimes	;//Number	杩涗汉鏁�	鍚�	32
-    private Integer  ExitTimes	;//Number	鍑轰汉鏁�	鍚�	32
-    private Integer  TotalTimes	;//Number	鎬婚�氳浜烘暟	鍚�	32
+    @JsonProperty(value = "AccessChannel")
+    private Integer  accessChannel;//	Number	閫氶亾鍙�	鍚�	32
+    @JsonProperty(value = "EntryTimes")
+    private Integer  entryTimes	;//Number	杩涗汉鏁�	鍚�	32
+    @JsonProperty(value = "ExitTimes")
+    private Integer  exitTimes	;//Number	鍑轰汉鏁�	鍚�	32
+    @JsonProperty(value = "TotalTimes")
+    private Integer  totalTimes	;//Number	鎬婚�氳浜烘暟	鍚�	32
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java
index 6c8cf98..43f63ef 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java
@@ -1,18 +1,29 @@
 package com.doumee.core.haikang.model.param.request.event.acs;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 @Data
 public class ExtEventIdentityCardInfo {
-    private  String Address;//	String	浣忓潃	鍚�	512
-    private  String  Birth;//	String	鍑虹敓鏃ユ湡	鍚�	32	渚嬶細 鈥�1999-6-30鈥�
-    private  String  EndDate;//	String	鏈夋晥鏃ユ湡缁撴潫鏃堕棿	鍚�	32	渚嬶細 鈥�2028-10-12鈥�
-    private  String   IdNum	;//String	韬唤璇乮d	鍚�	32
-    private  String   IssuingAuthority;//	String	绛惧彂鏈哄叧	鍚�	32
-    private  String   Name;//	String	濮撳悕	鍚�	32
-    private Integer Nation	;//Number		鍚�	32	0-鏈煡
-    private Integer   Sex;//	Number	鎬у埆	鍚�	32	鎬у埆0-鏈煡1-鐢�2-濂�
-    private  String  StartDate;//	String	鏈夋晥鏃ユ湡寮�濮嬫椂闂�	鍚�	32	渚嬶細 鈥�2018-10-12鈥�
-    private Integer TermOfValidity;//	Number	鏄惁闀挎湡鏈夋晥	鍚�	32	0-鍚︼紙鏈夋晥鎴鏃ユ湡鏈夋晥锛�            1-鏄紙鏈夋晥鎴鏃ユ湡鏃犳晥锛�
+    @JsonProperty(value = "Address")
+    private  String address;//	String	浣忓潃	鍚�	512
+    @JsonProperty(value = "Birth")
+    private  String  birth;//	String	鍑虹敓鏃ユ湡	鍚�	32	渚嬶細 鈥�1999-6-30鈥�
+    @JsonProperty(value = "EndDate")
+    private  String  endDate;//	String	鏈夋晥鏃ユ湡缁撴潫鏃堕棿	鍚�	32	渚嬶細 鈥�2028-10-12鈥�
+    @JsonProperty(value = "IdNum")
+    private  String   idNum	;//String	韬唤璇乮d	鍚�	32
+    @JsonProperty(value = "IssuingAuthority")
+    private  String   issuingAuthority;//	String	绛惧彂鏈哄叧	鍚�	32
+    @JsonProperty(value = "Name")
+    private  String   name;//	String	濮撳悕	鍚�	32
+    @JsonProperty(value = "Nation")
+    private Integer nation	;//Number		鍚�	32	0-鏈煡
+    @JsonProperty(value = "Sex")
+    private Integer   sex;//	Number	鎬у埆	鍚�	32	鎬у埆0-鏈煡1-鐢�2-濂�
+    @JsonProperty(value = "StartDate")
+    private  String  startDate;//	String	鏈夋晥鏃ユ湡寮�濮嬫椂闂�	鍚�	32	渚嬶細 鈥�2018-10-12鈥�
+    @JsonProperty(value = "TermOfValidity")
+    private Integer termOfValidity;//	Number	鏄惁闀挎湡鏈夋晥	鍚�	32	0-鍚︼紙鏈夋晥鎴鏃ユ湡鏈夋晥锛�            1-鏄紙鏈夋晥鎴鏃ユ湡鏃犳晥锛�
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java
index 6aa798f..24d4212 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.admin.request;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -23,8 +24,8 @@
     private String type;
 
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
-    private String startTime;
+    private Date startTime;
 
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
-    private String endTime;
+    private Date endTime;
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java
index 4eb9aa4..c1f1f90 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.DeviceEvent;
+import com.doumee.dao.business.model.Parks;
+
+import java.util.List;
 
 /**
  * @author 姹熻箘韫�
  * @date 2023/11/30 15:33
  */
 public interface DeviceEventMapper extends BaseMapper<DeviceEvent> {
-
+    void insertBatchSomeColumn(List<DeviceEvent> addList);
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java
index 016e22a..ff7693c 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java
@@ -3,10 +3,13 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.Retention;
 
+import java.util.List;
+
 /**
  * @author 姹熻箘韫�
  * @date 2023/11/30 15:33
  */
 public interface RetentionMapper extends BaseMapper<Retention> {
 
+    void insertBatchSomeColumn(List<Retention> retentionList);
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java
index 02d252d..b802f66 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java
@@ -3,10 +3,13 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.VisitEvent;
 
+import java.util.List;
+
 /**
  * @author 姹熻箘韫�
  * @date 2023/11/30 15:33
  */
 public interface VisitEventMapper extends BaseMapper<VisitEvent> {
 
+    void insertBatchSomeColumn(List<VisitEvent> list);
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/VisitsJoinMapper.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/VisitsJoinMapper.java
new file mode 100644
index 0000000..21acf16
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/VisitsJoinMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business.join;
+
+import com.doumee.dao.business.model.MemberCard;
+import com.doumee.dao.business.model.Visits;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
+
+/**
+ * @author T14
+ */
+//@Repository
+public interface VisitsJoinMapper extends MPJJoinMapper<Visits> {
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
index 0a97010..9937cff 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
@@ -188,7 +188,7 @@
     @ApiModelProperty(value = "鐧藉悕鍗曞崟鍙�")
     @ExcelColumn(name="鐧藉悕鍗曞崟鍙�")
     @TableField("ext_event_white_list_no")
-    private String extEventWhiteListNo;
+    private Integer  extEventWhiteListNo;
 
     @ApiModelProperty(value = "浜嬩欢涓婃姤椹卞姩鐨勬椂闂�")
     @ExcelColumn(name="浜嬩欢涓婃姤椹卞姩鐨勬椂闂�")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
index 00540e4..37ec7ac 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
@@ -96,7 +96,12 @@
     @ApiModelProperty(value = "鐝")
     @ExcelColumn(name="鐝")
     private String classes;
-
+    @ApiModelProperty(value = "娴峰悍闂ㄧ鍚嶇О")
+    @ExcelColumn(name="娴峰悍闂ㄧ鍚嶇О")
+    private String deviceName;
+    @ApiModelProperty(value = "娴峰悍闂ㄧ缂栫爜")
+    @ExcelColumn(name="娴峰悍闂ㄧ缂栫爜")
+    private String deviceIndex;
     @ApiModelProperty(value = "鍏ュ巶鏃堕棿")
     @ExcelColumn(name="鍏ュ巶鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
@@ -115,13 +120,4 @@
     @TableField(exist = false)
     public String companyName;
 
-    @ApiModelProperty(value = "璁垮鐢ㄦ埛绫诲瀷")
-    @ExcelColumn(name="璁垮鐢ㄦ埛绫诲瀷")
-    @TableField(exist = false)
-    private Integer memberType;
-
-    @ApiModelProperty(value = "闂ㄧ鍚嶇О")
-    @ExcelColumn(name="闂ㄧ鍚嶇О")
-    @TableField(exist = false)
-    private String srcName;
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
index 468374a..22950ef 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
@@ -69,7 +69,7 @@
 
     @ApiModelProperty(value = "浜嬩欢绫诲瀷")
     @ExcelColumn(name="浜嬩欢绫诲瀷")
-    private String eventType;
+    private Integer eventType;
 
     @ApiModelProperty(value = "浜嬩欢鐘舵��,0-鐬椂1-寮�濮�2-鍋滄4-浜嬩欢鑱斿姩缁撴灉鏇存柊5-浜嬩欢鍥剧墖寮傛涓婁紶", example = "1")
     @ExcelColumn(name="浜嬩欢鐘舵��,0-鐬椂1-寮�濮�2-鍋滄4-浜嬩欢鑱斿姩缁撴灉鏇存柊5-浜嬩欢鍥剧墖寮傛涓婁紶")
@@ -77,7 +77,7 @@
 
     @ApiModelProperty(value = "鑴夊啿瓒呮椂鏃堕棿")
     @ExcelColumn(name="鑴夊啿瓒呮椂鏃堕棿")
-    private String timeout;
+    private Integer timeout;
 
     @ApiModelProperty(value = "浜嬩欢鍙戠敓鏃堕棿锛堣澶囨椂闂�")
     @ExcelColumn(name="浜嬩欢鍙戠敓鏃堕棿锛堣澶囨椂闂�")
@@ -101,7 +101,7 @@
 
     @ApiModelProperty(value = "璇佷欢绫诲瀷 111韬唤璇�")
     @ExcelColumn(name="璇佷欢绫诲瀷 111韬唤璇�")
-    private String idType;
+    private Integer idType;
 
     @ApiModelProperty(value = "璇佷欢鍙� ")
     @ExcelColumn(name="璇佷欢鍙� ")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
index e498b41..607c84d 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -113,6 +113,22 @@
     @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熸埅姝�")
     @ExcelColumn(name="闂ㄧ鏈夋晥鏈熸埅姝�")
     private Date endtime;
+    @ApiModelProperty(value = "杩涘巶鏃堕棿")
+    @ExcelColumn(name="杩涘巶鏃堕棿")
+    private Date inDate;
+
+    @ApiModelProperty(value = "绂诲満鏃堕棿")
+    @ExcelColumn(name="绂诲満鏃堕棿")
+    private Date outDate;
+    @ApiModelProperty(value = "绂诲満鏂瑰紡 0姝e父绛剧 1绠$悊鍛樻墜鍔ㄧ绂�")
+    @ExcelColumn(name="绂诲満鏂瑰紡 0姝e父绛剧 1绠$悊鍛樻墜鍔ㄧ绂�")
+    private Integer outType;
+    @ApiModelProperty(value = "寮哄埗绛剧绠$悊鍛樼紪鐮�")
+    @ExcelColumn(name="寮哄埗绛剧绠$悊鍛樼紪鐮�")
+    private Integer outUserId;
+    @ApiModelProperty(value = "绛剧澶囨敞")
+    @ExcelColumn(name="绛剧澶囨敞")
+    private String outInfo;
 
     @ApiModelProperty(value = "鏉ヨ浜嬬敱")
     @ExcelColumn(name="鏉ヨ浜嬬敱")
@@ -202,6 +218,12 @@
     @ApiModelProperty(value = "鏅�氳瀹㈢敵璇烽殢璁夸汉鍛�")
     @TableField(exist = false)
     private List<Visits> withUserList;
+    @ApiModelProperty(value = "鐝")
+    private String memberClasses;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳", example = "1")
+    @TableField(exist = false)
+    private Integer memberType;
     @ApiModelProperty(value = "鍔冲姟璁垮鐢宠闅忚浜哄憳")
     @TableField(exist = false)
     private List<Integer> lwWithUserList;
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
index 1f1714e..f2006a3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
@@ -209,11 +209,9 @@
                             Company::getName,
                             pageWrap.getModel().getCompanyName())
                     .ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
-                            Retention::getEventDate,
-                            pageWrap.getModel().getStartTime() == null?null:pageWrap.getModel().getStartTime()+" 00:00:00")
+                            Retention::getEventDate, pageWrap.getModel().getStartTime())
                     .le(Objects.nonNull(pageWrap.getModel().getEndTime()),
-                            Retention::getEventDate,
-                            pageWrap.getModel().getStartTime() == null?null:pageWrap.getModel().getEndTime()+" 23:59:59");
+                            Retention::getEventDate, pageWrap.getModel().getEndTime());
         queryWrapper.orderByDesc(Retention::getCreateDate);
         IPage<Retention> retentionIPage = retentionJoinMapper.selectJoinPage(page, Retention.class, queryWrapper);
         return PageData.from(retentionIPage);
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index aecac74..2ca62e8 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -1,20 +1,40 @@
 package com.doumee.service.business.impl.hksync;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.config.SpringContextUtil;
 import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
+import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitDataRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
-import com.doumee.dao.business.model.InterfaceLog;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.join.VisitsJoinMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.DeviceEventService;
 import com.doumee.service.business.InterfaceLogService;
+import com.doumee.service.business.MemberService;
+import com.github.yulichang.interfaces.MPJBaseJoin;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 璁垮鏉冮檺缁勪俊鎭〃Service瀹炵幇
@@ -26,7 +46,19 @@
 public class HkSyncPushServiceImpl extends HkSyncBaseServiceImpl {
 
     @Autowired
-    private InterfaceLogService interfaceLogService;
+    private InterfaceLogMapper interfaceLogMapper;
+    @Autowired
+    private DeviceEventMapper deviceEventMapper;
+    @Autowired
+    private MemberMapper memberMapper;
+    @Autowired
+    private CarEventMapper carEventMapper;
+    @Autowired
+    private VisitEventMapper visitEventMapper;
+    @Autowired
+    private VisitsJoinMapper visitsMapper;
+    @Autowired
+    private RetentionMapper retentionMapper;
     /**
      * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ��
      * @param param
@@ -38,10 +70,40 @@
         log.info("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param));
         String result = null;
         try {
-
+            if(param == null || param.getParams() == null || param.getParams().getEvents()==null){
+                return null;
+            }
+            //闂ㄧ浜嬩欢闆嗗悎
+            List<EventAcsInfoRequest> events  = param.getParams().getEvents();
+            List<DeviceEvent> list = new ArrayList<>();
+            List<Integer> delRetentionLis = new ArrayList<>();
+            List<Retention> retentionList = new ArrayList<>();
+            for(EventAcsInfoRequest request : events){
+                EventDeviceDataRequest model = request.getData();
+                if(model ==null){
+                    continue;
+                }
+                //鏍规嵁鎺ㄩ�佷汉鍛樼紪鐮侊紝澶勭悊鍦ㄥ満銆佺鍦轰汉鍛樻暟鎹褰�
+                dealMemberDataByRequest(request,delRetentionLis,retentionList);
+                //灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞�
+                list.add(getDeviceEventModelByRequest(request));
+            }
+            if(list.size()>0){
+                //鎻掑叆闂ㄧ璁板綍
+                deviceEventMapper.insertBatchSomeColumn(list);
+            }
+            if(delRetentionLis.size()>0){
+                //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鍐呴儴浜哄憳锛�
+                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                        .eq(Retention::getType,Constants.memberType.internal)
+                        .in(Retention::getMemberId,delRetentionLis));
+            }
+            if(retentionList.size()>0){
+                //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
+                retentionMapper.insertBatchSomeColumn(retentionList);
+            }
             log.error("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========鎴愬姛=======");
         }catch (Exception e) {
-
             log.error("銆愭捣搴烽棬绂佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage());
         }finally {
             saveInterfaceLog(param,"/business/hksync/push/acs",result);
@@ -49,6 +111,136 @@
         return  null;
 
     }
+
+    /**
+     * 鏍规嵁鎺ㄩ�佷汉鍛樼紪鐮侊紝澶勭悊鍦ㄥ満銆佺鍦轰汉鍛樻暟鎹褰�
+     * @param request
+     * @param delRetentionLis
+     * @param retentionList
+     */
+    private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) {
+        //娴峰悍浜哄憳缂栫爜
+        String userNo = request.getData().getExtEventPersonNo();
+        if(StringUtils.isNotBlank(userNo)){
+            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1"));
+            if(member !=null){
+                //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級
+                delRetentionLis.add(member.getId());
+                if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){
+                    //濡傛灉鏄繘闂紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
+                    retentionList.add(getRetentionModelByRequest(member,request));
+                }
+            }
+        }
+    }
+
+    public static String getHkImgUrl(String url){
+        if(StringUtils.isBlank(url)){
+            return null;
+        }
+        return HKConstants.IMG_INDEX+url;
+    }
+    /**
+     *灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞�
+     */
+    private DeviceEvent getDeviceEventModelByRequest(EventAcsInfoRequest request) {
+        DeviceEvent event = new DeviceEvent();
+        event.setIsdeleted(Constants.ZERO);
+        event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
+        event.setEventId(request.getEventId());
+        event.setEventType( request.getData().getExtEventType()!=null?request.getData().getExtEventType()+"":null);
+        event.setAccessChannel(request.getData().getExtAccessChannel());
+        event.setUserType(request.getData().getUserType());
+        event.setSvrIndexCode(request.getData().getSvrIndexCode());
+        event.setStatus(request.getStatus());
+        event.setSrcType(request.getSrcType());
+        event.setSrcName(request.getSrcName());
+        event.setSrcIndex(request.getSrcIndex());
+        event.setSeq(request.getData().getSeq());
+        event.setTimeout(request.getTimeout());
+        event.setExtEventType(request.getData().getExtEventType());
+        event.setHappenTime(request.getHappenTime());
+        event.setExtReceiveTime(request.getData().getExtReceiveTime());
+        event.setExtEventWhiteListNo(request.getData().getExtEventWhiteListNo());
+        event.setExtEventWhiteListNo(request.getData().getExtEventWhiteListNo());
+        event.setExtEventVerifyID(request.getData().getExtEventVerifyID());
+        event.setExtEventRoleID(request.getData().getExtEventRoleID());
+        event.setExtEventReportChannel(request.getData().getExtEventReportChannel());
+        event.setExtEventReaderKind(request.getData().getExtEventReaderKind());
+        event.setExtEventReaderID(request.getData().getExtEventReaderID());
+        event.setExtEventPictureURL(getHkImgUrl(request.getData().getExtEventPictureURL()));
+        event.setExtEventPersonNo(request.getData().getExtEventPersonNo());
+        event.setExtEventMainDevID(request.getData().getExtEventMainDevID());
+        event.setExtEventLocalControllerID(request.getData().getExtEventLocalControllerID());
+        event.setExtEventInOut(request.getData().getExtEventInOut());
+        event.setExtEventIDCardPictureURL(getHkImgUrl(request.getData().getExtEventIDCardPictureURL()));
+        event.setExtEventEwipNum(request.getData().getExtEventSwipNum());
+        event.setExtEventEubDevID(request.getData().getExtEventMainDevID());
+        event.setExtEventDoorID(request.getData().getExtEventDoorID());
+        event.setExtEventCode(request.getData().getExtEventCode());
+        event.setExtEventCaseID(request.getData().getExtEventCaseID());
+        event.setExtEventCardNo(request.getData().getExtEventCardNo());
+        event.setExtEventAlarmOutID(request.getData().getExtEventAlarmOutID());
+        event.setExtEventAlarmInID(request.getData().getExtEventAlarmInID());
+        event.setExtAccessChannel(request.getData().getExtAccessChannel());
+        //閫氶亾浜嬩欢淇℃伅
+        if(request.getData().getExtEventCustomerNumInfo() !=null){
+            event.setTotalTimes(request.getData().getExtEventCustomerNumInfo().getTotalTimes());
+            event.setEntryTimes(request.getData().getExtEventCustomerNumInfo().getEntryTimes());
+            event.setExitTimes(request.getData().getExtEventCustomerNumInfo().getExitTimes());
+            event.setAccessChannel(request.getData().getExtEventCustomerNumInfo().getAccessChannel());
+        }
+        if(request.getData().getExtEventIdentityCardInfo() !=null){
+            //浜哄憳韬唤璇佷欢淇℃伅
+            event.setBirth(request.getData().getExtEventIdentityCardInfo().getBirth());
+            String idnum = request.getData().getExtEventIdentityCardInfo().getIdNum();
+            if(StringUtils.isNotBlank(idnum)){
+                //韬唤璇佸彿瀛樺偍瀵嗘枃
+                event.setIdNum(DESUtil.encrypt(Constants.EDS_PWD,idnum));//韬唤璇佸彿鍔犲瘑
+                //鑴辨晱鎵嬫満鍙锋樉绀簄
+                event.setIdcardDecode(Constants.getTuominStr(idnum));
+            }
+            event.setAddress(request.getData().getExtEventIdentityCardInfo().getAddress());
+            event.setSex(request.getData().getExtEventIdentityCardInfo().getSex());
+            event.setName(request.getData().getExtEventIdentityCardInfo().getName());
+            event.setEndDate(request.getData().getExtEventIdentityCardInfo().getEndDate());
+            event.setStartDate(request.getData().getExtEventIdentityCardInfo().getStartDate());
+            event.setTermOfValidity(request.getData().getExtEventIdentityCardInfo().getTermOfValidity());
+        }
+        return event;
+    }
+
+    /**
+     * 杩涘巶瀵硅薄灏佽鎴愬湪鍦轰汉鍛�
+     * @param member
+     * @param request
+     * @return
+     */
+    private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) {
+        Retention retention = new Retention();
+        retention.setIsdeleted(Constants.ZERO);
+        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
+        retention.setClasses(member.getClasses());
+        retention.setCode(member.getCode());
+        retention.setIdcardNo(member.getIdcardNo());
+        retention.setIdcardDecode(member.getIdcardDecode());
+        retention.setName(member.getName());
+        retention.setBirthday(member.getBirthday());
+        retention.setType(member.getType());
+        retention.setCompanyId(member.getCompanyId());
+        retention.setCompanyName(member.getCompanyName());
+        retention.setEventCode(request.getData().getExtEventCode()+"");
+        retention.setEventDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime()));
+        retention.setFaceImg(member.getFaceImg());
+        retention.setImgurl(member.getImgurl());
+        retention.setPhone(member.getPhone());
+        retention.setMemberId(member.getId());
+        retention.setDeviceName(request.getSrcName());
+        retention.setDeviceIndex(request.getSrcIndex());
+
+        return retention;
+    }
+
     /**
      * 娴峰悍璁垮浜嬩欢鎺ㄩ��
      * @param param
@@ -60,7 +252,40 @@
         log.info("銆愭捣搴疯瀹簨浠舵帹閫併��==========寮�濮�=======锛歕n"+JSONObject.toJSONString(param));
         String result = null;
         try {
-
+            if(param == null || param.getParams() == null || param.getParams().getEvents()==null){
+                return null;
+            }
+            //闂ㄧ浜嬩欢闆嗗悎
+            List<EventVisitInfoRequest> events  = param.getParams().getEvents();
+            List<VisitEvent> list = new ArrayList<>();
+            List<Integer> delRetentionLis = new ArrayList<>();
+            List<Retention> retentionList = new ArrayList<>();
+            for(EventVisitInfoRequest request : events){
+                if(request.getData() ==null ||StringUtils.isBlank(request.getData().getVisitorId())){
+                    continue;
+                }
+                //娴峰悍璁垮璁板綍缂栫爜
+                if(StringUtils.isNotBlank(request.getData().getVisitorId())){
+                    //鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
+                    dealVisitDataByRequst(request,delRetentionLis,retentionList);
+                }
+                //灏佽闂ㄧ浜嬩欢淇℃伅琛ㄥ璞�
+                list.add(getVisitEventModelByRequest(request));
+            }
+            if(list.size()>0){
+                //鎻掑叆闂ㄧ璁板綍
+                visitEventMapper.insertBatchSomeColumn(list);
+            }
+            if(delRetentionLis.size()>0){
+                //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+                retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                        .eq(Retention::getType,Constants.memberType.visitor)
+                        .in(Retention::getMemberId,delRetentionLis));
+            }
+            if(retentionList.size()>0){
+                //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
+                retentionMapper.insertBatchSomeColumn(retentionList);
+            }
             log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========鎴愬姛=======");
         }catch (Exception e){
 
@@ -69,6 +294,98 @@
         saveInterfaceLog(param,"/business/hksync/push/visit",result);
         return  null;
 
+    }
+
+    /**
+     *  鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
+     */
+    private void dealVisitDataByRequst(EventVisitInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) {
+        EventVisitDataRequest model = request.getData();
+        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Visits.class);
+        queryWrapper.eq(Visits::getHkId,model.getVisitorId() );
+        queryWrapper.last("limit 1");
+        Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
+        if(visits !=null){
+            //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級
+            delRetentionLis.add(visits.getMemberId());
+            Visits updateVistis = new Visits();
+            updateVistis.setId(visits.getId());
+            if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_IN.getKey()){
+                //濡傛灉鏄瀹㈢櫥璁帮紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
+                retentionList.add(getRetentionModelByVisitRequest(visits,request));
+                //鏉ヨ鏃堕棿
+                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getStartTime()));
+            }else {
+                //濡傛灉鏄瀹㈢绂讳簨浠�
+                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime()));
+                updateVistis.setOutType(Constants.ZERO);
+                updateVistis.setOutInfo("璁垮姝e父绛剧");
+            }
+            updateVistis.setEditDate(new Date());
+            //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭�
+            visitsMapper.updateById(updateVistis) ;
+        }
+    }
+
+    private VisitEvent getVisitEventModelByRequest(EventVisitInfoRequest request) {
+        VisitEvent event = new VisitEvent();
+        event.setIsdeleted(Constants.ZERO);
+        event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
+        event.setVisitorWorkUint(request.getData().getVisitorWorkUint());
+        event.setVisitorId(request.getData().getVisitorId());
+        event.setVisitorCode(request.getData().getVisitorCode());
+        event.setTimeout(request.getTimeout());
+        event.setSvrIndexCode(request.getData().getSvrIndexCode());
+        event.setStatus(request.getStatus());
+        event.setStartTime(request.getData().getStartTime());
+        event.setSrcType(request.getSrcType());
+        event.setSrcParentIndex(request.getSrcParentIndex());
+        event.setSrcName(request.getSrcName());
+        event.setSrcIndex(request.getSrcIndex());
+        event.setSignOrg(request.getData().getSignOrg());
+        event.setSex(request.getData().getSex());
+        event.setPurpose(request.getData().getPurpose());
+        event.setPhotoUrl(getHkImgUrl(request.getData().getPhotoUrl()));
+        event.setPersonName(request.getData().getPersonName());
+        event.setIdType(request.getData().getIdType());
+        String idnum =request.getData().getIdNo();
+        if(StringUtils.isNotBlank(idnum)){
+            //韬唤璇佸彿瀛樺偍瀵嗘枃
+            event.setIdNo(DESUtil.encrypt(Constants.EDS_PWD,idnum));//韬唤璇佸彿鍔犲瘑
+            //鑴辨晱鎵嬫満鍙锋樉绀簄
+            event.setIdcardDecode(Constants.getTuominStr(idnum));
+        }
+        event.setEventType(request.getEventType());
+        event.setEventId(request.getEventId());
+        event.setHappenTime(event.getHappenTime());
+
+        return event;
+    }
+
+    private Retention getRetentionModelByVisitRequest(Visits visits, EventVisitInfoRequest request) {
+        Retention retention = new Retention();
+        retention.setIsdeleted(Constants.ZERO);
+        retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
+        retention.setClasses(visits.getMemberClasses());
+        retention.setCode(visits.getCode());
+        retention.setIdcardNo(visits.getIdcardNo());
+        retention.setIdcardDecode(visits.getIdcardDecode());
+        retention.setName(visits.getName());
+        retention.setBirthday(visits.getBirthday());
+        retention.setType(visits.getMemberType());
+        retention.setCompanyId(visits.getCompanyId());
+        retention.setCompanyName(visits.getCompanyName());
+        retention.setEventCode(request.getEventType()+"");
+        retention.setEventDate(retention.getCreateDate());
+        retention.setFaceImg(visits.getFaceImg());
+        retention.setImgurl(visits.getImgurl());
+        retention.setPhone(visits.getPhone());
+        retention.setMemberId(visits.getMemberId());
+        retention.setDeviceName(request.getSrcName());
+        retention.setDeviceIndex(request.getSrcIndex());
+
+        return retention;
     }
 
     /**
@@ -92,7 +409,6 @@
         return  null;
     }
 
-
     private void saveInterfaceLog(Object param, String path,String result) {
         InterfaceLog hkMonitoryLogDO=new InterfaceLog();
         hkMonitoryLogDO.setType(1);
@@ -104,7 +420,7 @@
         hkMonitoryLogDO.setRepose(result);
         hkMonitoryLogDO.setName(path);
         hkMonitoryLogDO.setUrl(path);
-        interfaceLogService.create(hkMonitoryLogDO);
+        interfaceLogMapper.insert(hkMonitoryLogDO);
     }
 
 

--
Gitblit v1.9.3