From 165b038153aa55f465a225d421616d32e472c889 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 20 八月 2024 18:16:58 +0800
Subject: [PATCH] 最新版本

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                                                   |   11 
 admin/src/components/business/OperaPlatformWindow.vue                                                                                      |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmRequest.java             |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/IccmAppointmentListRequest.java                    |   21 +
 server/README.md                                                                                                                           |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInfoRequest.java         |   17 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInvoiceParamRequest.java |   45 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmTargetParamRequest.java  |   23 +
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDetailParamRequest.java  |   29 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java                                             |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                                                 |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentListResponse.java                   |   31 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java                             |  172 ++++++++++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/service/impl/HkSyncEventServiceImpl.java                                              |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmValuesParamRequest.java  |   41 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                                                 |   18 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java                                                |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java                             |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentVisitorResponse.java                |   28 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                                                     |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmParamRequest.java        |   17 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java                            |  116 ++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDataRequest.java         |   29 ++
 server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java                                                         |    2 
 24 files changed, 648 insertions(+), 23 deletions(-)

diff --git a/admin/src/components/business/OperaPlatformWindow.vue b/admin/src/components/business/OperaPlatformWindow.vue
index 512982d..c0157fb 100644
--- a/admin/src/components/business/OperaPlatformWindow.vue
+++ b/admin/src/components/business/OperaPlatformWindow.vue
@@ -54,7 +54,7 @@
         <el-input type="number"  v-model="form.workTimeoutAlarmTime" placeholder="璇疯緭鍏ヤ綔涓氳秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim/>
       </el-form-item>
       <el-form-item label="鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓锛夛細" prop="stayTmeoutAlarmTime">
-        <el-input type="number"  v-model="form.stayTmeoutAlarmTime" placeholder="璇疯緭鍏ヨ杈撳叆鍋滅暀瓒呮椂鎶ヨ鏃堕棿(鍒嗛挓)" v-trim/>
+        <el-input type="number"  v-model="form.stayTmeoutAlarmTime" placeholder="璇疯緭鍏ュ仠鐣欒秴鏃舵姤璀︽椂闂�(鍒嗛挓)" v-trim/>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -110,6 +110,9 @@
     open (title, target) {
       this.title = title
       this.visible = true
+      this.loadGroupList()
+      this.loadLedList()
+      this.loadBroadcastList()
       // 鏂板缓
       if (target == null) {
         this.$nextTick(() => {
@@ -126,9 +129,6 @@
         }
         this.form.workingNum = this.form.workingNum || 1
       })
-      this.loadGroupList()
-      this.loadLedList()
-      this.loadBroadcastList()
     },
     loadGroupList () {
       allList({})
diff --git a/server/README.md b/server/README.md
index 15ddd87..7616c54 100644
--- a/server/README.md
+++ b/server/README.md
@@ -2,5 +2,12 @@
 瀹樼綉锛歨ttp://eva.adjustrd.com/
 鎶�鏈敮鎸丵Q缇わ細877957236
 
+1銆佸畨瑁卬acos鏈嶅姟
+2銆佹寜鐓ysql5.x
+3銆乯dk1.8瀹夎
+4銆乺edis瀹夎
+5銆乫tp瀹夎
+
+
 
 nohup java -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=10018 -jar /usr/local/jars/dmvisit/openapi.jar >/usr/local/jars/dmvisit/web.log 2>/usr/local/jars/dmvisit/err.log &
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 90cea78..fde9d51 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -160,7 +160,16 @@
 
         return sb.toString();
     }
-
+    public interface VisitIccmStatus{
+        //璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�)
+        int waitSign = 0;
+        int signin= 1;
+        int signout = 2;
+        int noleave =3;
+        int novisit =4;
+        int autoOut =5;
+        int noSignout =6;
+    }
     public interface DATAPERMISSION_TYPE{
         public static final  int all = 0;
         public static final  int departAndChild = 1;
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
index b6e4cac..4f7e4c8 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/HkVisitTimerController.java
@@ -37,7 +37,7 @@
     @ApiOperation("寮�鍚畾鏃舵煡璇㈣瀹㈤绾︾姸鎬�")
     @GetMapping("/getOutTimeVisitRecord")
     public ApiResponse getOutTimeVisitRecord() {
-        hkSyncVisitService.getOutTimeVisitRecord();
+        hkSyncVisitService.getOutTimeVisitRecordIccm();
         return ApiResponse.success("寮�鍚畾鏃舵煡璇㈣瀹㈤绾︾姸鎬佹垚鍔�");
     }
     @ApiOperation("寮�鍚畾鏃朵粖鏃ョ殑璁垮棰勭害鏁版嵁")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
index 48c67b6..254b0ef 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -6,6 +6,7 @@
 import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitIccmRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
@@ -111,6 +112,12 @@
         String result = hkSyncPushService.dealVisitEvent(param,response);
         return ApiResponse.success(result);
     }
+    @ApiOperation("銆愭捣搴枫�戣瀹CCM浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
+    @PostMapping("/push/visitIccm")
+    public ApiResponse pushVisitIccm(@RequestBody EventVisitIccmRequest param, HttpServletResponse response) {
+        String result = hkSyncPushService.dealVisitEventIccm(param,response);
+        return ApiResponse.success(result);
+    }
 //    @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝仠杞﹀満浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/parks")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/service/impl/HkSyncEventServiceImpl.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/service/impl/HkSyncEventServiceImpl.java
index b7deb0a..cb10fb7 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/service/impl/HkSyncEventServiceImpl.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/service/impl/HkSyncEventServiceImpl.java
@@ -106,6 +106,13 @@
         HKService.cancelEventSub(param);//鍏堝彇娑�
         HKService.eventSub(param);//闂ㄧ浜嬩欢
 
+        param.setEventDest(path+"/visitIccm");
+        param.setEventTypes(new Integer[]{HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()
+                ,HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey()
+                ,HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey()});
+        HKService.cancelEventSub(param);//鍏堝彇娑�
+        HKService.eventSub(param);//璁垮浜嬩欢
+
         param.setEventDest(path+"/platform/workstatus");
         param.setEventTypes(new Integer[]{HKConstants.EventTypes.PLATFORM_WORKSTATUS.getKey()});
         HKService.cancelEventSub(param);//鍏堝彇娑�
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index 5b38a01..787c633 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -104,7 +104,7 @@
         String iccmAppointmentMDJ= "/api/iccm/v1/appointment/free/registration";//iccm璁垮棰勭害鍏嶇櫥璁�
 
         String privilegIccmeGroup= "/api/iccm/v1/privilege/groups";//鏌ヨ璁垮鏉冮檺缁�
-        String iccmAppointmentInfo= "/api/iccm/v1/appointment/registration";//iccm鏌ヨ宸查绾︾櫥璁�
+        String iccmAppointmentRecords= "/api/iccm/v2/appointment/records";//iccm鏌ヨ宸查绾︾櫥璁�
     }
 
     /**
@@ -241,10 +241,15 @@
         PARK_PASS_OUT(771760134, "鍑哄満鏀捐浜嬩欢"  ),
         VISIT_SIGN_IN(1392513025, "璁垮鐧昏"  ),
         VISIT_SIGN_OUT(1392513026, "璁垮绛剧"  ),
+
+        VISIT_SIGN_ICCM_IN(541200006, "璁垮鐧昏"  ),
+        VISIT_SIGN_ICCM_OUT(541200007, "璁垮绛剧"  ),
+        VISIT_SIGN_ICCM_PASS(541200060, "璁垮閫氳"  ),
         DOOR_FACE_AUTH_FAIL(197163, "浜鸿劯璁よ瘉澶辫触"  ),
         DOOR_FACE_AUTH_SUCCESS(196893, "浜鸿劯璁よ瘉閫氳繃"  ),
         PLATFORM_WORKSTATUS(483329, "鏈堝彴宸ヤ綔鐘舵�佷簨浠�"  ),
         PLATFORM_CAR_STATUS(487425, "鏈堝彴杞﹁締鐘舵�佷簨浠�"  )
+
         ;
         // 鎴愬憳鍙橀噺
         private String name;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index 51ed3d1..f13409d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -527,6 +527,15 @@
 	public static String appointmentRecords(String body) {
 		return startDoPostStringArtemis(HKConstants.InterfacePath.appointmentRecords,body);
 	}
+
+	/**
+	 *	鑾峰彇璁垮棰勭害璁板綍鍒楄〃 iccm
+	 * @param body
+	 * @return
+	 */
+	public static String iccmAppointmentRecords(String body) {
+		return startDoPostStringArtemis(HKConstants.InterfacePath.iccmAppointmentRecords,body);
+	}
 	/**
 	 *	鑾峰彇鍏ㄩ噺缁勭粐鍒楄〃
 	 * @param body
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/IccmAppointmentListRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/IccmAppointmentListRequest.java
new file mode 100644
index 0000000..c38df38
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/IccmAppointmentListRequest.java
@@ -0,0 +1,21 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class IccmAppointmentListRequest {
+    private String orderId;//	String	false	璁垮鍗曞彿
+private int pageSize	;//Number	true	鍒嗛〉澶у皬
+private String phoneNo;//	String	false	璁垮鑱旂郴鐢佃瘽锛屼粎鏀寔1-20浣嶇函鏁板瓧
+private String QRCode	;//String	false	浜岀淮鐮佸唴瀹�
+private String visitorName;//	String	false	琚浜哄鍚�
+private int pageNo;//	Number	true	椤电爜
+private String receptionistId;//	String	false	琚浜篿d
+private List<Integer> visitorStatusList;//	Array	false	璁垮鐘舵�侀泦鍚�(0:寰呭鎵�,1:寰呰闂�,2:宸查┏鍥�,3:宸蹭綔搴�,4:宸插彇娑�,5:宸插畬鎴�)
+            private String visitStartTimeBegin;//	String	false	璁″垝鏉ヨ鏃堕棿璧峰鏃堕棿
+private String visitStartTimeEnd;//	String	false	璁″垝鏉ヨ鏃堕棿缁撴潫鏃堕棿
+private String visitEndTimeBegin	;//String	false	璁″垝绂诲紑鏃堕棿璧峰鏃堕棿
+private String visitEndTimeEnd;//	String	false	璁″垝绂诲紑鏃堕棿缁撴潫鏃堕棿
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDataRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDataRequest.java
new file mode 100644
index 0000000..e8517db
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDataRequest.java
@@ -0,0 +1,29 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EventVisitIccmDataRequest {
+
+        /**
+         * 棰勭害璁板綍淇℃伅
+         */
+        private EventVisitIccmInvoiceParamRequest visitorInvoices;
+        /**
+         * 琚浜轰俊鎭�
+         */
+        private EventVisitIccmTargetParamRequest targetPerson;
+        /**
+         * 琚浜轰俊鎭�
+         */
+        private EventVisitIccmValuesParamRequest paramValues;
+
+        /**
+         * 鎷滆浜轰俊鎭�
+         */
+        private List<EventVisitIccmDetailParamRequest> visitorInformationList;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDetailParamRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDetailParamRequest.java
new file mode 100644
index 0000000..46d0c2d
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmDetailParamRequest.java
@@ -0,0 +1,29 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmDetailParamRequest {
+
+        private String     visitorId;// eda8994f399544aaaee6eca64ed79827, #璁垮id
+        private String      visitorName;// 灏忓垬, #璁垮鍚嶇О
+        private Integer      sex;// 1,  #璁垮鎬у埆
+        private String      phone;// 18229602833, #璁垮鎵嬫満鍙�
+        private String      unit;// , #璁垮鍗曚綅
+        private Integer      certType;// 111,  #璁垮璇佷欢绫诲瀷
+        private String      certNo;// , #璁垮璇佷欢鍙风爜
+        private String      certPicUrl;// , #璁垮璇佷欢鐓ase64
+        private String      faceUrl;// , #浜鸿劯base64
+        private String      plateNo;// , #璁垮涓汉淇℃伅閲岀殑杞︾墝
+        private String      createTime;// 2023-02-16T20;//19;//46.382+08;//00,
+        private String     updateTime;// 2023-02-16T20;//19;//46.382+08;//00,
+        private String      visitNum;// 0,
+        private String      isBlocked;// 0, #鏄惁鎷夐粦
+        private String      tempCardNo;// 123456, #缁戝畾鐨勪复鏃跺崱鍙�
+        private String      companionPerson;// 0, #鏄惁涓洪�氳浜猴細0涓嶆槸1鏄�
+        private String      cardNo;// 1676549986273, #璁垮鍗″彿
+        private String      appointmentCode;// 5998, #璁垮鐮�
+        private String      facePic;// /pic?ad00=3001led-do671a*o0d1=4686*2l4767184156*8tp===119***sb9=defce2d7736fc--*49e3=pi17fo=0-510090, #璁垮浜鸿劯鍥剧墖
+        private String      faceDeviceId;// 894c1bfa-e8a7-419a-84d1-1a1fb5f3896a #鍥剧墖璁惧id
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInfoRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInfoRequest.java
new file mode 100644
index 0000000..de7773e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInfoRequest.java
@@ -0,0 +1,17 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmInfoRequest {
+    private String  eventId;//	String	浜嬩欢鍞竴鏍囪瘑	鏄�	64
+    private String  srcIndex;//	String	浜嬩欢婧愮紪鍙凤紝鐗╃悊璁惧鏄祫婧愮紪鍙�	鏄�	64
+    private String  srcType;//	String	浜嬩欢婧愮被鍨�	鏄�	16
+    private Integer  eventType	;//Number	浜嬩欢绫诲瀷	鏄�
+    private String  srcName;//	String	浜嬩欢婧愬悕绉�	鍚�	64
+    private Integer   status	;//Number	浜嬩欢鐘舵��	鏄�		0-鐬椂1-寮�濮�2-鍋滄3-浜嬩欢鑴夊啿4-浜嬩欢鑱斿姩缁撴灉鏇存柊5-寮傛鍥剧墖涓婁紶
+    private Integer  timeout	;//Number	鑴夊啿瓒呮椂鏃堕棿	鏄�		鍗曚綅锛氱
+    private String  happenTime	;//String	浜嬩欢鍙戠敓鏃堕棿锛堣澶囨椂闂达級	鏄�	64
+    private String   srcParentIndex	;//String	浜嬩欢鍙戠敓鐨勪簨浠舵簮鐖惰澶囩紪鍙�	鍚�	64
+    private EventVisitIccmDataRequest data;
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInvoiceParamRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInvoiceParamRequest.java
new file mode 100644
index 0000000..3b1a92e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmInvoiceParamRequest.java
@@ -0,0 +1,45 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmInvoiceParamRequest {
+
+        private String   invoicesId;// 5bc15cabf24141c6ab3da357e29e5d53,  #璁垮鍗昳d
+        private String  invoicesNo;// FK20230220090002, #璁垮鍗曞彿
+        private String  visitorId;// eda8994f399544aaaee6eca64ed79827,  #璁垮id
+        private String  visitorTypeId;// , #璁垮绫诲瀷id
+        private String  deptId;// fe3d4470fa824449b8dcdf34e833890e, #璁块棶閮ㄩ棬id
+        private String  campusId;// 39ce5586087c4d78873ff187396acf5b, #鍥尯id
+        private String  visitReason;// 7744d9691f1e45b7b4a06394280e45a3,  #璁块棶浜嬬敱id
+        private String  visitReasonRemark;// ,  #璁块棶浜嬬敱澶囨敞
+        private String  visitTargetId;// 2cb0bd1b312941569c43f64d781b7cf7,  #琚浜篿d
+        private String  companionIds;// ,  #鍚岃浜篿d,閫楀彿鍒嗗壊
+        private String  type;// 0,  #绫诲瀷锛�0锛岄绾︼紱1锛岄個绾�
+        private String  appointmentType;// 0,  #棰勭害绫诲瀷锛�0锛氭櫘閫氶绾︼紱1锛氬揩閫熼绾︼紱2;//鍏嶇櫥璁伴绾�; 3;// 绗笁鏂归绾� ; 4;//璁垮鏈洪绾�; 5;// 浼氱璁垮棰勭害; 6;// 蹇�熼個绾�; 7;//鏅�氶個绾�; 8;//绾ц仈閭�绾�; 9;//绾ц仈蹇�熼绾�; 10;//绾ц仈棰勭害
+        private String  workflowInstanceId;// f1b53b54414641d58cd7cd332105d723, #娴佺▼id
+        private String  approveRemark;// , #娴佺▼瀹℃壒澶囨敞
+        private String  ifInfoAbnormal;// 0,
+        private String  beginTime;// 2023-02-20T10;//00;//00.000+08;//00,  #璁块棶寮�濮嬫椂闂�
+        private String  finishTime;// 2023-02-20T23;//30;//00.000+08;//00, #璁块棶缁撴潫鏃堕棿
+        private String  invoicesStatus;// 3, #璁垮鍗曠姸鎬�(0;//寰呭鎵�,1;//寰呰闂�,2;//宸查┏鍥�,3;//宸蹭綔搴�,4;//宸插彇娑�,5;//宸插畬鎴�)
+        private String  workflowInitiatorId;// eda8994f399544aaaee6eca64ed79827, #娴佺▼鍙戣捣浜篿d
+        private String  workflowInitiatorType;// 0, #娴佺▼鍙戣捣浜虹被鍨�(0;//璁垮,1;//鍛樺伐)
+        private String  operator;// eda8994f399544aaaee6eca64ed79827, #鎿嶄綔浜�
+        private String  operatorType;// 0, #鎿嶄綔浜虹被鍨�(0;//璁垮,1;//鍛樺伐)
+        private String  extendJson;// , #鎵╁睍瀛楁
+        private String  authIssueStatus;// 0, #鏉冮檺涓嬪彂鐘舵��(0;//鏈笅鍙�,1;//涓嬪彂鎴愬姛,2;//涓嬪彂澶辫触,3;//鏉冮檺娓呴櫎,4;//鏉冮檺鍥炴敹)
+        private String  createTime;// 2023-02-20T09;//43;//39.479+08;//00, #鍒涘缓鏃堕棿
+        private String  updateTime;// 2023-02-20T19;//42;//32.640+08;//00,
+        private String          campusName;// 鍗曠嫭鍋滆溅鍦烘祴璇�, #鍥尯鍚嶇О
+        private String  deptName;// 榛樿閮ㄩ棬, #閮ㄩ棬鍚嶇О
+        private String  visitorTypeName;// 鏅�氳瀹�,  #璁垮绫诲瀷
+        private String  sceneNames;// 娴嬭瘯7,  #鏉冮檺鍦烘櫙鍚嶇О锛屽涓�楀彿鍒嗛殧
+        private String  visitReasonName;// 鍟嗗姟娲借皥, #璁块棶浜嬬敱鍚嶇О
+        private String regionId;//eda8994f399544aaaee6eca64ed79827,#鍖哄煙id锛�2.2鏀寔锛�2.3搴熷純璇ュ瓧娈�
+        private String regionName;//婊ㄦ睙,#鍖哄煙鍚嶇О锛�2.2鏀寔锛�2.3搴熷純璇ュ瓧娈�
+        private String campusRegionIds;//pda8994f399544aaaee6eca64ed79828,#鍖哄煙id锛�2.3鏀寔
+        private String campusRegionNames;//娴峰悍涓夋湡, #鍖哄煙鍚嶇О锛�2.3鏀寔
+        private String isRepast;//1 #璁垮灏遍,0;//鍚�,1;//鏄�
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmParamRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmParamRequest.java
new file mode 100644
index 0000000..64c7a96
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmParamRequest.java
@@ -0,0 +1,17 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EventVisitIccmParamRequest {
+
+
+    private String   sendTime;//	P	String	浜嬩欢浠庢帴鏀惰�咃紙绋嬪簭澶勭悊鍚庯級鍙戝嚭鐨勬椂闂�	鏄�	32	浜嬩欢鍙戦�佹椂闂�
+    private String    ability;//	P	String	浜嬩欢绫诲埆	鏄�	64	鏍囪瘑鍋滆溅鍦轰簨浠�
+    private String[] uids;//	String[]	鐢ㄦ埛id	鍚�	涓嶉檺
+    private String[] clients	;//String[]	缁勪欢鏍囪瘑	鍚�	涓嶉檺
+    private List<EventVisitIccmInfoRequest> events;//	P	Events[]	浜嬩欢淇℃伅	鏄�	涓嶉檺
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmRequest.java
new file mode 100644
index 0000000..cfa1802
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmRequest.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmRequest {
+
+//    private String  parkIndexCodes	;//	string	False	鍋滆溅搴撳敮涓�鏍囪瘑闆嗗悎  澶氫釜鍊间娇鐢ㄨ嫳鏂囬�楀彿鍒嗛殧锛屼笉瓒呰繃1000涓�
+
+    private String   method	;//	String	鏂规硶鍚嶏紝鐢ㄤ簬鏍囪瘑鎶ユ枃鐢ㄩ��	鏄�	16	浜嬩欢鍥哄畾OnEventNotify
+    private EventVisitIccmParamRequest params	;//	Params	浜嬩欢鍙傛暟淇℃伅	鏄�	涓嶉檺	鍏蜂綋鍙傛暟淇℃伅
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmTargetParamRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmTargetParamRequest.java
new file mode 100644
index 0000000..733adcb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmTargetParamRequest.java
@@ -0,0 +1,23 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmTargetParamRequest {
+
+        private String   personId;// 2cb0bd1b312941569c43f64d781b7cf7, #琚浜篿d
+        private String  personNumber;// 10001, #琚浜哄伐鍙�
+        private String  name;// Lhk绠$悊鍛�, #琚浜虹紪鍙�
+        private String  sex;// 1, #琚浜烘�у埆
+        private String  jobNo;// 10001, #琚浜哄伐鍙�
+        private String  pinyin;// lhkguanliyuan, #琚浜烘嫾闊�
+        private String  mobile;// 17700001111, #琚浜烘墜鏈哄彿
+        private String  orgId;// root000000, #琚浜虹粍缁噄d
+        private String  certType;// 111, #琚浜鸿瘉浠剁被鍨�
+        private String  certificateNo;// 330282202302160001, #琚浜鸿瘉浠跺彿鐮�
+        private String  orgPathName;// 榛樿缁勭粐, #琚浜虹粍缁�
+        private String  userName;// Lhk绠$悊鍛�, #琚浜虹敤鎴峰悕
+        private String  createTime;// 2023-02-16T10;//10;//51.683+08;//00,
+        private String  updateTime;// 2023-02-20T19;//40;//54.138+08;//00
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmValuesParamRequest.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmValuesParamRequest.java
new file mode 100644
index 0000000..9535b0b
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitIccmValuesParamRequest.java
@@ -0,0 +1,41 @@
+package com.doumee.core.haikang.model.param.request.event.visit;
+
+import lombok.Data;
+
+@Data
+public class EventVisitIccmValuesParamRequest {
+
+        private String      type;// 1, #浜嬩欢婧愮被鍨嬶細1璁垮鏈�2淇濆畨浜哄伐3闂ㄧ4鍋滆溅鍦哄嚭鍏ュ彛5api6琚浜�
+        private String   eventType;// 541200007, #541200006[绛惧埌娑堟伅閫氱煡],541200007[绛剧娑堟伅閫氱煡],541200009[璁垮婊炵暀]锛�541200060[閫氳浜嬩欢]
+        private String   sourceName;// 1鍙烽棬绂�, #闂ㄧ鍚嶇О
+        private String   eventId;// demoData, #浜嬩欢id
+        private String     eventTypeName;// demoData, #浜嬩欢绫诲瀷鍚嶇О
+        private String                     happenTime;// 23/6/2 0002 11;//36, #鍙戠敓鏃堕棿
+        private String   srcParentIndex;// demoData, #鐖剁被璧勬簮 indexcode
+        private String   srcIndex;// demoData, #瀛愮被indexcode
+        private String   srcName;// demoData, #璁惧鍚嶇О
+        private String   srcType;// demoData, #璧勬簮绫诲瀷
+        private String   extEventCardNo;// demoData, #鍗″彿
+        private String   extEventInOut;// demoData, #闂ㄧ鐐瑰敮涓�鎺ュ叆缂栫爜
+        private String   extEventPictureURL;// demoData, #鍥剧墖鐨剈rl
+        private String    svrIndexCode;// demoData, #鍥剧墖鏈嶅姟鍣ㄥ敮涓�缂栫爜
+        private String   extEventReaderKind;// demoData,  #璇诲崱鍣ㄧ被鍒�
+        private String   extEventReaderID;// demoData, #璇诲崱鍣╥d
+        private String   userType;// demoData, #浜哄憳绫诲瀷锛�0鏈煡锛�1鏅�氾紝2鏉ュ锛�3榛戝悕鍗曪紝4绠$悊鍛�
+        private String   visitorNames;// demoData, #璁垮濮撳悕,澶氫釜閫楀彿鎷兼帴
+        private String   phones;// demoData, #鎵嬫満鍙�,澶氫釜閫楀彿鎷兼帴
+        private String   certificateNos;// demoData, #韬唤璇�,澶氫釜閫楀彿鎷兼帴
+        private String   certTypes;// 333, #璇佷欢绫诲瀷,澶氫釜閫楀彿鎷兼帴
+        private String   invoicesIds;// 5a9e731d6b9043feb665282786dd8914, #璁垮鍗昳d,澶氫釜閫楀彿鎷兼帴
+        private String   defineEventType;// 9, #浜嬩欢绫诲瀷
+        private String   plateNos;// demoData, #杞︾墝鍙风爜,澶氫釜閫楀彿鎷兼帴
+        private String   parkName;// demoData,  #鍋滆溅搴撳悕绉�
+        private String   parkIndex;// demoData, #鍋滆溅搴撶紪鍙�
+        private String   gateName;// demoData,#鍑哄叆鍙e悕绉�
+        private String   gateIndex;// demoData,  #鍑哄叆鍙g紪鍙�
+        private String   inOrOut;// 1,#杩涘嚭绫诲瀷锛�1杩涘叆2鍑哄幓
+        private String   accessType;// 1,  #浜嬩欢绫诲瀷锛�1闂ㄧ浜嬩欢2杞﹁締浜嬩欢
+        private String   regionName;// demoData#鍖哄煙鍚嶇О,
+        private String    typeId;//1 #鍓嶇璺宠浆url鐨則ypeId
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentListResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentListResponse.java
new file mode 100644
index 0000000..4fb4fb6
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentListResponse.java
@@ -0,0 +1,31 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class IccmAppointmentListResponse {
+
+
+   private String campusId	;//String	false	鍥尯id
+private String campusName	;//String	false	鍥尯鍚嶇О
+private String deptId	;//String	false	閮ㄩ棬id
+private String deptName	;//String	false	閮ㄩ棬鍚嶇О
+private String visitorTypeId;//	String	false	璁垮绫诲瀷id
+private String visitorTypeName;//	String	false	璁垮绫诲瀷
+private String appointRecordId;//	String	false	璁垮棰勭害璁板綍id
+private String orderId;//	String	false	璁垮鍗曞彿
+private String visitPurpose	;//String	false	鏉ヨ浜嬬敱id
+private String visitPurposeName;//	String	false	鏉ヨ浜嬬敱
+private String visitEndTime;//	String	false	璁块棶缁撴潫鏃堕棿
+private String receptionistId	;//String	false	琚浜篿d
+private String receptionistName;//	String	false	琚浜哄鍚�
+    private List<AppointmentResInfoResponse> designatedResources;//	object	False	鏉冮檺涓嬪彂鎸囧畾鐨勮祫婧愮偣闆嗗悎
+    private String[] privilegeGroupNames;//	string[]	False	鏉冮檺缁勫悕绉伴泦鍚�
+    private String  visitStartTime;//	String	false	璁块棶寮�濮嬫椂闂� 
+    
+    private String oneOrPeople	;//String	false	閫氳鐮佺瓥鐣� 0锛氫竴浜轰竴鐮� 1锛氬浜轰竴鐮�
+private String extensions	;//String	false	鎵╁睍瀛楁
+    private List<IccmAppointmentVisitorResponse> visitorList;//Array	false	璁垮鍒楄〃
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentVisitorResponse.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentVisitorResponse.java
new file mode 100644
index 0000000..880242c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/IccmAppointmentVisitorResponse.java
@@ -0,0 +1,28 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class IccmAppointmentVisitorResponse {
+
+
+private String companion		;//Boolean	false	鏄惁鍚岃浜�
+private String visitorId		;//String	false	璁垮id
+private String phoneNo		;//String	false	璁垮鎵嬫満鍙�
+private String visitorName		;//String	false	璁垮濮撳悕
+private Integer gender	;//	Number	false	鎬у埆(1:鐢�,2:濂�)
+private String svrIndexCode		;//String	false	鍥剧墖瀛樺偍鏈嶅姟鐨勫敮涓�鏍囪瘑
+private String picUri	;//	String	false	璁垮澶村儚,鍥剧墖鐨勭浉瀵筓RL
+private String identityUri		;//String	false	璇佷欢鐓�,鍥剧墖鐨勭浉瀵筓RL
+private String identitySvrCode	;//	String	false	璇佷欢鐓у搴斿浘鐗囨湇鍔″櫒serviceNodes
+private String plateNo	;//	String	false	璁垮杞︾墝鍙�
+private String certificateNo		;//String	false	璇佷欢鍙�
+private String visitorWorkUnit		;//String	false	鏉ヨ鍗曚綅
+private Integer visitorStatus		;//Number	false	璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�)
+private Integer certificateType		;//Number	false	璇佷欢绫诲瀷
+private String isCompanion		;//Boolean	false	鏄惁鍚岃浜�
+private String appointmentCode		;//String	false	璁垮鐮�
+private String QRCode	;//	String	false	鍔ㄦ�佷簩缁寸爜鍐呭
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index 5b158f4..9889344 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -860,6 +860,24 @@
         return  null;
     }
     /**
+     *鏌ヨ璁垮棰勭害璁板綍锛堝垎椤碉級
+     * @return
+     */
+    public  static  BaseResponse<BaseListPageResponse<IccmAppointmentListResponse>>   iccmAppointmentRecords(IccmAppointmentListRequest param){
+        log.info("銆愭捣搴疯瀹㈤绾﹁褰曟煡璇€��================寮�濮�===="+JSONObject.toJSONString(param));
+        try {
+            String res = HKTools.iccmAppointmentRecords(JSONObject.toJSONString(param));
+            TypeReference typeReference =
+                    new TypeReference<BaseResponse<BaseListPageResponse<IccmAppointmentListResponse>>>(){};
+            BaseResponse<BaseListPageResponse<IccmAppointmentListResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍璁垮棰勭害璁板綍鏌ヨ");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯瀹㈤绾﹁褰曟煡璇€��================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
      *鏌ヨ璁垮鏉ヨ璁板綍锛堝凡鐧昏锛夛紙鍒嗛〉锛�
      * @return
      */
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
index 46ac584..9d6623e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -5,6 +5,7 @@
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatCarstatusRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatWorkstatusRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitIccmRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
 import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
 import com.doumee.dao.business.model.Device;
@@ -59,6 +60,7 @@
     void cancelEventSub();
 
     void syncOrgData();
+    void getOutTimeVisitRecordIccm();
 
     void syncUserData();
     void syncVistAppointData(Date date);
@@ -94,4 +96,6 @@
     String syncHkLed(Device param);
 
     String syncHkBroadcast(Device param);
+    String dealVisitEventIccm(EventVisitIccmRequest param, HttpServletResponse response);
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index 78e7198..9f8ca7d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -9,6 +9,7 @@
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatCarstatusRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventPlatWorkstatusRequest;
+import com.doumee.core.haikang.model.param.request.event.visit.EventVisitIccmRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
 import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
 import com.doumee.core.haikang.model.param.respose.TaskAdditionResponse;
@@ -89,7 +90,10 @@
 
         return null;
     }
-
+    @Override
+    public String dealVisitEventIccm(EventVisitIccmRequest param, HttpServletResponse response){
+        return  null;
+    }
     @Override
     public String   dealAcsEvent(EventAcsRequest param, HttpServletResponse response){
         return  null;
@@ -144,6 +148,9 @@
     public void getOutTimeVisitRecord(){
     }
     @Override
+    public void getOutTimeVisitRecordIccm(){
+    }
+    @Override
     public  Integer syncEmpowerData(Integer startPage) {
         return  null;
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index e34a2ef..b190e72 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -11,9 +11,7 @@
 import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest;
 import com.doumee.core.haikang.model.param.request.event.parks.EventParkInfoRequest;
 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.core.haikang.model.param.request.event.visit.*;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
@@ -310,7 +308,175 @@
         return  null;
 
     }
+    /**
+     * 娴峰悍璁垮浜嬩欢鎺ㄩ��
+     * @param param
+     * @param response
+     * @return
+     */
+    @Override
+    public String    dealVisitEventIccm(EventVisitIccmRequest param, HttpServletResponse response){
+        log.info("銆愭捣搴疯瀹簨浠舵帹閫併��==========寮�濮�=======锛歕n"+JSONObject.toJSONString(param));
+        String result = null;
+        try {
+            if(param == null || param.getParams() == null || param.getParams().getEvents()==null){
+                return null;
+            }
+            //闂ㄧ浜嬩欢闆嗗悎
+            List<EventVisitIccmInfoRequest> events  = param.getParams().getEvents();
+            List<VisitEvent> list = new ArrayList<>();
+            List<Integer> delRetentionLis = new ArrayList<>();
+            List<Retention> retentionList = new ArrayList<>();
+            for(EventVisitIccmInfoRequest request : events){
+                if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){
+                    continue;
+                }
+                if(request.getData().getVisitorInformationList() == null || request.getData().getVisitorInformationList().size() ==0){
+                    continue;
+                }
+                //娴峰悍璁垮璁板綍缂栫爜
+                dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,list);
+            }
+            if(list.size()>0){
+                //鎻掑叆闂ㄧ璁板綍
+                visitEventMapper.insert(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.insert(retentionList);
+            }
+            log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========鎴愬姛=======");
+        }catch (Exception e){
+            log.error("銆愭捣搴疯瀹簨浠舵帹閫併��========澶辫触=======锛歕n"+e.getMessage());
+        }
+        saveInterfaceLog(param,"/business/hksync/push/visitIccm",result,true);
+        return  null;
 
+    }
+
+    /**
+     *  鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
+     */
+    private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,List<VisitEvent> list) {
+
+        EventVisitIccmDataRequest model = request.getData();
+        EventVisitIccmInvoiceParamRequest data =  request.getData().getVisitorInvoices();
+        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Visits.class);
+        queryWrapper.selectAs(Member::getType,Visits::getMemberType);
+        queryWrapper.eq(Visits::getHkId,model.getVisitorInvoices().getInvoicesId() );//璁垮鍗曞彿
+        queryWrapper.leftJoin(Member.class,Member::getId,Visits::getMemberId );
+        queryWrapper.last("limit 1");
+        Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper);
+        if(visits !=null){
+            //濡傛灉浜哄憳淇℃伅瀛樺湪锛屽垯鍒犻櫎涔嬪墠鐨勬墍鏈夎繘鍦烘暟鎹紙鏃犺姝ゆ鎺ㄩ�佹槸杩涘巶杩樻槸鍑哄満鎺ㄩ�佷簨浠讹級
+            delRetentionLis.add(visits.getMemberId());
+            if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){
+                //濡傛灉鏄紛鍒╁ぇ灞忛」鐩紝涓嶅仛澶勭悊
+                return;
+            }
+            Visits updateVistis = new Visits();
+            updateVistis.setId(visits.getId());
+            if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) {
+                //濡傛灉鏄瀹㈢櫥璁帮紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
+                retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType()));
+                //鏉ヨ鏃堕棿
+                updateVistis.setStatus(Constants.VisitStatus.signin);
+                updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime()));
+                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime()));
+                //鏇存柊鏈�鏂版潵璁挎椂闂�
+                Member member = new Member();
+                member.setLastVisitDate(updateVistis.getInDate());
+                member.setId(visits.getMemberId());
+                memberMapper.updateById(member);
+            }else  if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey())  {
+                //濡傛灉鏄瀹㈢绂讳簨浠�
+                updateVistis.setStatus(Constants.VisitStatus.signout);
+                updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime()));
+                updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime()));
+                updateVistis.setOutType(Constants.ZERO);
+                updateVistis.setOutInfo("璁垮姝e父绛剧");
+            }else{
+                //濡傛灉鏄瀹㈤�氳
+            }
+            updateVistis.setEditDate(new Date());
+            //鏇存柊璁垮鏉ヨ鎴栬�呯绂绘椂闂翠俊鎭�
+            visitsMapper.updateById(updateVistis) ;
+        }
+    }
+    private Retention getRetentionModelByVisitRequest(Visits visits, String happentTime,String srcType) {
+        Retention retention = new Retention();
+        retention.setIsdeleted(Constants.ZERO);
+        retention.setCreateDate(DateUtil.getISO8601DateByStr(happentTime));
+        retention.setClasses(visits.getClasses());
+        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(srcType);
+        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;
+    }
+    private VisitEvent getVisitEventModelByRequest(EventVisitIccmInfoRequest request,EventVisitIccmDetailParamRequest detail) {
+        if(request.getData().getTargetPerson() ==null){
+            request.getData().setTargetPerson(new EventVisitIccmTargetParamRequest());
+        }
+        VisitEvent event = new VisitEvent();
+        event.setIsdeleted(Constants.ZERO);
+        event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
+        event.setVisitorWorkUint(detail.getUnit());
+        event.setVisitorId(detail.getVisitorId());
+        event.setVisitorCode(detail.getAppointmentCode());
+        event.setTimeout(request.getTimeout());
+        event.setSvrIndexCode(request.getSrcIndex());
+        event.setHappenTime(request.getHappenTime());
+        event.setStatus(request.getStatus());
+        event.setEndTime(request.getData().getVisitorInvoices().getFinishTime());
+        event.setStartTime(request.getData().getVisitorInvoices().getBeginTime());
+        event.setSrcType(request.getSrcType());
+        event.setSrcParentIndex(request.getSrcParentIndex());
+        event.setSrcName(request.getSrcName());
+        event.setSrcIndex(request.getSrcIndex());
+        event.setSex(detail.getSex());
+        event.setPurpose(request.getData().getVisitorInvoices().getVisitReason());
+        event.setPhone(detail.getPhone());
+        event.setBeVisitedPersonId(request.getData().getVisitorInvoices().getVisitTargetId());
+        event.setBeVisitedPersonName(request.getData().getTargetPerson().getName());
+        event.setBeVisitedPersonOrg(request.getData().getTargetPerson().getOrgPathName());
+        event.setBeVisitedPersonOrgId(request.getData().getTargetPerson().getName());
+        event.setPhotoUrl(getHkImgUrl(detail.getFacePic()));
+        event.setPersonName(detail.getVisitorName());
+        event.setCarNo(detail.getPlateNo());
+
+        event.setIdType(detail.getCertType());
+        String idnum = detail.getCertNo();
+        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());
+        return event;
+    }
     /**
      *  鏍规嵁璁垮鎺ㄩ�佽瀹㈣褰曠紪鐮侊紝澶勭悊璁垮璁板綍銆佸湪鍦轰汉鍛樼瓑淇℃伅
      */
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index 09e6a3f..143183d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -73,14 +73,6 @@
                 AppointmentInfoResponse model =  getVisitRecord(c.getHkId());
                 if(model == null){
                     continue;
-                   /* Visits update = new Visits();
-                    //宸插け鏁�
-                    update.setStatus(Constants.VisitStatus.invalid);
-                    update.setEditDate(date);
-                    update.setId(c.getId());
-                    update.setRemark("棰勭害宸茶娓呴櫎");
-                    visitsMapper.updateById(update);
-                    continue;*/
                 }
                 /**
                  *      * 0锛氬緟瀹℃牳锛堥绾﹀緟瀹℃壒锛夈��
@@ -155,6 +147,92 @@
         }
     }
 
+    /**
+     * 鏌ヨICCM璁垮鏁版嵁鐘舵��
+     */
+    @Override
+    public void getOutTimeVisitRecordIccm(){
+        if(Constants.DEALING_HK_VISIT_EXPIRE){
+            return   ;
+        }
+        Constants.DEALING_HK_VISIT_EXPIRE =true;
+        try {
+            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+            List<Visits> list = getExpireVisitList();
+            //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+            if(list ==null || list.size()==0){
+                return;
+            }
+            Date date = new Date();
+            for(Visits c : list) {
+                //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
+                IccmAppointmentListResponse data =  getVisitRecordIccm(c.getHkId());
+                if(data == null || data.getVisitorList() ==null || data.getVisitorList().size()==0){
+                    continue;
+                }
+                /**
+                 * 璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�)
+                 */
+                IccmAppointmentVisitorResponse model = data.getVisitorList().get(0);
+                if (model.getVisitorStatus()!=null && ",4,".contains( ","  +model.getVisitorStatus()+"," )){
+                    //瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡澶辨晥銆戝鐞�
+                    Visits update = new Visits();
+                    //宸插け鏁�
+                    update.setStatus(Constants.VisitStatus.invalid);
+                    update.setEditDate(date);
+                    update.setId(c.getId());
+                    update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                    update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                    update.setRemark("瓒呮椂鏈櫥璁�");
+                    visitsMapper.updateById(update);
+                }
+                if (model.getVisitorStatus()!=null && ",2,5,".contains( ","  +model.getVisitorStatus()+"," )){
+                    // 瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡绛剧銆戝鐞�
+                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
+                        Visits update = new Visits();
+                        //宸插け鏁�
+                        update.setStatus(Constants.VisitStatus.signout);
+                        update.setEditDate(date);
+                        update.setId(c.getId());
+                        update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                        update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                        update.setRemark("宸茬绂�");
+                        visitsMapper.updateById(update);
+
+                        //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                                .eq(Retention::getType,Constants.memberType.visitor)
+                                .eq(Retention::getMemberId,c.getMemberId()));
+                    }
+                }
+                if (model.getVisitorStatus()!=null&& ",1,3,6,".contains( ","  +model.getVisitorStatus()+"," )){
+                    //濡傛灉宸茬櫥璁�
+                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signin)){
+                        Visits update = new Visits();
+                        //宸插け鏁�
+                        update.setStatus(Constants.VisitStatus.signin);
+                        update.setEditDate(date);
+                        update.setId(c.getId());
+                        update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                        update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                        update.setRemark("宸茬鍒�");
+                        visitsMapper.updateById(update);
+                        //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                                .eq(Retention::getType,Constants.memberType.visitor)
+                                .eq(Retention::getMemberId,c.getMemberId()));
+                        //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
+                        retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            Constants.DEALING_HK_VISIT_EXPIRE =false;
+        }
+    }
+
     private Retention getRetentionModelByVisitRequest(Visits visits,Date date) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
@@ -195,6 +273,24 @@
         }
         return response.getData().getList().get(0);
     }
+    public IccmAppointmentListResponse getVisitRecordIccm(String orderId){
+        //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+        if(StringUtils.isBlank(orderId)){
+            return  null;
+        }
+        IccmAppointmentListRequest param =  new IccmAppointmentListRequest();
+        param.setPageNo(1);
+        param.setPageSize(1);
+        param.setOrderId(orderId);
+        BaseResponse<BaseListPageResponse<IccmAppointmentListResponse>> response = HKService.iccmAppointmentRecords(param);
+        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)  ){
+           return null;
+        }
+        if(response.getData() == null || response.getData().getList() == null|| response.getData().getList().size() ==0){
+           return  null;
+        }
+        return response.getData().getList().get(0);
+    }
     @Override
     public  void syncVisitData(){
         if(Constants.DEALING_HK_VISIT){
@@ -206,13 +302,9 @@
         List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                 .eq(DeviceRole::getType, Constants.ONE));
         //鏍囪鏄惁璧板厤鐧昏棰勭害
-//        String applyType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode();
-//        String applyLwType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_LW_REQUIRED).getCode();
         try {
             //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
             List<Visits> list = getVisitList();
-            //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
-//            List<Visits> list = getParentList(alllist);
             if(list ==null || list.size()==0){
                 return;
             }

--
Gitblit v1.9.3