From 4b139bcb2b3c6bf1082aca29913caf5166ec8167 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 20 十二月 2023 09:18:39 +0800
Subject: [PATCH] 海康接口对接开发

---
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListPersonRequest.java       |   12 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                                   |   48 +
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListRequest.java             |   22 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java             |  132 +++-
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                                   |   80 +++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListTemplResponse.java       |   10 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java                     |   12 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressDetailResponse.java      |   11 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java                                      |    4 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressNumResponse.java         |   19 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java              |  108 ++-
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java            |  385 ++++++++++++++-
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java                                       |   16 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListDetailResponse.java      |   23 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java               |    9 
 server/dmvisit_service/src/main/java/com/doumee/core/utils/TestUtil.java                                              |  128 +++++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionResourceRequest.java |    2 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListTimeRequest.java         |   11 
 server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java                                                  |   64 ++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                                       |   24 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListSortRequest.java         |   11 
 server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java                                   |    3 
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java                                             |   16 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java              |    1 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListResponse.java            |   13 
 server/pom.xml                                                                                                        |    2 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionPersonRequest.java   |    2 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java               |  163 +++++-
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressResponse.java            |   15 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java          |  114 ++-
 30 files changed, 1,223 insertions(+), 237 deletions(-)

diff --git a/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java b/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
index c94d5b0..18d255d 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -1,6 +1,7 @@
 package com.doumee.task;
 
 
+import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
 import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl;
 import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
 import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
@@ -22,6 +23,8 @@
 
     @Autowired
     private HkSyncImgServiceImpl hkSyncImgService;
+    @Autowired
+    private HkSyncEmpowerServiceImpl hkSyncEmpowerService;
     @Autowired
     private HkSyncOrgUserServiceImpl hkSyncOrgUserService;
     @Autowired
@@ -45,25 +48,58 @@
      * 瀹氭椂鍚屾缁勭粐淇℃伅鍒版捣搴风郴缁�
      * @throws Exception
      */
-//    @Scheduled(fixedDelay= 60*1000)
-//    public void syncOrgData() {
-//        hkSyncOrgUserService.syncOrgData();
-//    }
-    /**
-     * 瀹氭椂鍚屾缁勭粐淇℃伅鍒版捣搴风郴缁�
-     * @throws Exception
-     */
     @Scheduled(fixedDelay= 60*1000)
-    public void syncVisitData() {
-        hkSyncVisitService.syncVisitData();
+    public void syncOrgData() {
+        hkSyncOrgUserService.syncOrgData();
     }
     /**
      * 瀹氭椂鍚屾鐢ㄦ埛淇℃伅鍒版捣搴风郴缁�
      * @throws Exception
      */
-//    @Scheduled(fixedDelay= 60*1000)
-//    public void syncUserData()  {
-//        hkSyncImgService.syncUserData();
-//    }
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncUserData()  {
+        hkSyncOrgUserService.syncUserData();
+    }
+    /**
+     * 瀹氭椂鍚屾鐢宠閫氳繃鐨勮瀹㈡暟鎹埌娴峰悍绯荤粺
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncVisitData()  {
+        hkSyncVisitService.syncVisitData();
+    }
+    /**
+     * 瀹氭椂鍚屾鍐呴儴浜哄憳鎺堟潈鍒版捣搴风郴缁�
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncEmpowerData()  {
+        hkSyncEmpowerService.syncEmpowerData();
+    }
+    /**
+     * 瀹氭椂鏌ヨ浜哄憳涓嬪彂娴峰悍缁撴灉锛堜换鍔℃槸鍚﹀凡涓嬭浇缁撴潫锛�
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncEmpowerResultData()  {
+        hkSyncEmpowerService.syncEmpowerResultData();
+    }
+    /**
+     * 瀹氭椂鏌ヨ浜哄憳瀹為檯涓嬪彂鏉冮檺缁撴灉锛屾槸鍚﹀凡缁忎笅杞芥垚鍔�
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncEmpowerDetailData()  {
+        hkSyncEmpowerService.syncEmpowerDetailData();
+    }
+    /**
+     * 瀹氭椂鍚屾杞﹁締鍖呮湡鍒版捣搴风郴缁�
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay= 60*1000)
+    public void syncParkBookData()  {
+        hkSyncImgService.syncParkBookData();
+    }
+
 
 }
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 bc3991c..9be7741 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
@@ -1,6 +1,7 @@
 package com.doumee.core.haikang.model;
 
 import com.doumee.core.utils.Constants;
+import javafx.scene.effect.BlendMode;
 import lombok.Data;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,10 +62,87 @@
         String taskAddition= "/api/acps/v1/authDownload/task/addition";//鍒涘缓涓嬭浇浠诲姟_鏍规嵁浜哄憳涓庤澶囬�氶亾鎸囧畾涓嬭浇
         String taskDataAddition= "/api/acps/v1/authDownload/data/addition";//涓嬭浇浠诲姟涓坊鍔犳暟鎹甠鏍规嵁浜哄憳涓庤澶囬�氶亾鎸囧畾涓嬭浇
         String taskStart= "/api/acps/v1/authDownload/task/start";//寮�濮嬩笅杞戒换鍔�
-        String taskProgress= "/api/acps/v1/authDownload/task/progress";//鏌ヨ涓嬭浇浠诲姟杩涘害
+        String taskProgressNum= "/api/acps/v1/authDownload/task/progress";//鏌ヨ涓嬭浇浠诲姟杩涘害
+        String taskProgress= "/api/acps/v2/download_record/person/detail/search";//鏌ヨ璁惧閫氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟v2
+        String authItemList= "/api/acps/v1/auth_item/list/search";//鏌ヨ鏉冮檺鏉$洰鍒楄〃
     }
 
     /**
+     * 浠诲嫏椤炲瀷
+     */
+    public  enum TASK_TYPE {
+
+        CARD(1, "鍗$墖"  ),
+        FACE(2, "浜鸿劯"  )
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+
+        // 鏋勯�犳柟娉�
+        TASK_TYPE(int key, String name ) {
+            this.name = name;
+            this.key = key;
+        }
+
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
+    /**
+     * 鎿嶄綔绫诲瀷锛�0鏂板锛�1淇敼锛�2鍒犻櫎
+     */
+    public  enum OPERA_TYPE {
+
+        ADD(0, "鏂板"  ),
+        UDPATE(1, "淇敼"  ),
+        DEL(2, "鍒犻櫎"  )
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+
+        // 鏋勯�犳柟娉�
+        OPERA_TYPE(int key, String name ) {
+            this.name = name;
+            this.key = key;
+        }
+
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
+    /**
      * 椤旇壊鏋氫妇
      */
     public  enum EventTypes {
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index fbe3a4a..11507ce 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -467,12 +467,23 @@
 		return  result;
 	}
 	/**
-	 *	鏌ヨ涓�鍗¢�氭潈闄愪笅杞戒换鍔¤繘搴�
+	 *	鏌ヨ涓�鍗¢�氭潈闄愭煡璇㈣澶囬�氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟v2
 	 * @param body
 	 * @return
 	 */
 	public static String taskProgress(String body) {
 		Map<String, String> path = getPath(HKConstants.InterfacePath.taskProgress);
+		String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post璇锋眰application/json绫诲瀷鍙傛暟
+		saveInterfaceLog(body,result,path);
+		return  result;
+	}
+	/**
+	 *	鏌ヨ涓�鍗¢�氭潈闄愪笅杞戒换鍔¤繘搴�
+	 * @param body
+	 * @return
+	 */
+	public static String taskProgressNum(String body) {
+		Map<String, String> path = getPath(HKConstants.InterfacePath.taskProgressNum);
 		String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post璇锋眰application/json绫诲瀷鍙傛暟
 		saveInterfaceLog(body,result,path);
 		return  result;
@@ -499,6 +510,17 @@
 		saveInterfaceLog(body,result,path);
 		return  result;
 	}
+	/**
+	 * 鏌ヨ鏉冮檺鏉$洰鍒楄〃
+	 * @param body
+	 * @return
+	 */
+	public static String authItemList(String body) {
+		Map<String, String> path = getPath(HKConstants.InterfacePath.authItemList);
+		String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post璇锋眰application/json绫诲瀷鍙傛暟
+		saveInterfaceLog(body,result,path);
+		return  result;
+	}
 
 
 
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListPersonRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListPersonRequest.java
new file mode 100644
index 0000000..eeb1d58
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListPersonRequest.java
@@ -0,0 +1,12 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AuthItemListPersonRequest {
+
+   private String personIds;//string	True	涓嬭浇浠诲姟鍞竴鏍囪瘑
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListRequest.java
new file mode 100644
index 0000000..c6bfa3d
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListRequest.java
@@ -0,0 +1,22 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AuthItemListRequest {
+
+   private List<AuthItemListPersonRequest> personIds;//string	True
+   private TaskDataAdditionResourceRequest resourceInfos;//	object[]	False	璧勬簮璁惧瀵硅薄淇℃伅
+   private String queryType	;//string	True	鏌ヨ璧勬簮绫诲瀷锛屽弬鑰冮檮褰旳.50 璁惧閫氶亾绫诲瀷
+   private Integer[]   personStatus;//	number[]	False	浜哄憳鐘舵��0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+   private Integer[]   cardStatus;//	number[]	False	鍗$墖鐘舵��0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+   private Integer[]   faceStatus	;//number[]	False	浜鸿劯鐘舵��0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+   private AuthItemListTimeRequest  configTime;//;	object	False	閰嶇疆鏃堕棿鏌ヨ瀵硅薄
+   private AuthItemListSortRequest sortObjects	;//object[]	False	鐩墠鍙敮鎸侀厤缃椂闂�
+
+   private Integer pageNo	;//number	True	椤电爜,pageNo>0
+   private Integer pageSize	;//number	True	椤靛ぇ灏�,0<pageSize<=1000
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListSortRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListSortRequest.java
new file mode 100644
index 0000000..33239ec
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListSortRequest.java
@@ -0,0 +1,11 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+@Data
+public class AuthItemListSortRequest {
+
+    private String startTime;//	string	False	寮�濮嬫棩鏈�,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+    private String endTime	;//string	False	缁撴潫鏃ユ湡,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListTimeRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListTimeRequest.java
new file mode 100644
index 0000000..697ca25
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AuthItemListTimeRequest.java
@@ -0,0 +1,11 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+@Data
+public class AuthItemListTimeRequest {
+
+    private String startTime;//	string	False	寮�濮嬫棩鏈�,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+    private String endTime	;//string	False	缁撴潫鏃ユ湡,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionPersonRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionPersonRequest.java
index 1087e9f..df28bba 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionPersonRequest.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionPersonRequest.java
@@ -6,7 +6,7 @@
 public class TaskDataAdditionPersonRequest {
 
    private String  personId	;//string	True	浜哄憳Id锛岀郴缁熷唴浜哄憳浠庤幏鍙栦汉鍛樺垪琛╲2 鎺ュ彛鑾峰彇杩斿洖鍙傛暟涓璸ersonId锛岀郴缁熷浜哄憳锛屼汉鍛業d鐢辫皟鐢ㄦ柟鎸囧畾锛屼綔涓轰汉鍛樺敮涓�鏍囧織锛屾渶澶ч暱搴︿负64锛屽寘鍚暟瀛椼�佸瓧姣嶏紙灏忓啓锛夊拰涓垝绾匡紙-锛�
-   private String operatorType	;//number	True	鎿嶄綔绫诲瀷锛�0鏂板锛�1淇敼锛�2鍒犻櫎
+   private Integer operatorType	;//number	True	鎿嶄綔绫诲瀷锛�0鏂板锛�1淇敼锛�2鍒犻櫎
    private String  startTime	;//string	False	寮�濮嬫棩鏈燂紝閰嶇疆浜哄憳鏉冮檺鐨勬湁鏁堟湡锛屼负绌烘椂榛樿闀挎湡鏈夋晥銆傞噰鐢↖SO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
    private String endTime;//	string	False	缁撴潫鏃ユ湡锛岄厤缃汉鍛樻潈闄愮殑鏈夋晥鏈燂紝涓虹┖鏃堕粯璁ら暱鏈熸湁鏁堛�傞噰鐢↖SO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
    private String personType;//	number	False	浜哄憳绫诲瀷锛岄粯璁や负11. 绯荤粺鍐呬汉鍛�2. 绯荤粺澶栦汉鍛�           涓嬭浇绯荤粺澶栦汉鍛樻椂蹇呭~
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionResourceRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionResourceRequest.java
index 6335305..8ae3c56 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionResourceRequest.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TaskDataAdditionResourceRequest.java
@@ -7,5 +7,5 @@
 
    private String resourceIndexCode;//	string	True	璧勬簮鐨勫敮涓�鏍囪瘑锛�32浣嶆暟瀛�+瀛楁瘝锛堝皬鍐欙級瀛楃涓诧紝璧勬簮涓鸿澶囷紝鏍规嵁鑾峰彇璧勬簮鍒楄〃v2鎺ュ彛鑾峰彇杩斿洖鍙傛暟indexCode
    private String  resourceType;//	string	True	璧勬簮绫诲瀷,鍙傝�冮檮褰旳.50 璁惧閫氶亾绫诲瀷
-   private Integer[] channelNos	;//number[]	True	璧勬簮閫氶亾鍙�
+   private String[] channelNos	;//number[]	True	璧勬簮閫氶亾鍙�
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListDetailResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListDetailResponse.java
new file mode 100644
index 0000000..3d9818a
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListDetailResponse.java
@@ -0,0 +1,23 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import com.doumee.core.haikang.model.param.request.AuthItemListTimeRequest;
+import lombok.Data;
+
+@Data
+public class AuthItemListDetailResponse {
+
+   private String  personId	;//string	False	浜哄憳ID
+  private String resourceIndexCode;//	string	False	璧勬簮鐨勫敮涓�鏍囪瘑
+  private Integer channelNo;//	number	False	閫氶亾鍙�
+  private String channelIndexCode	;//string	False	璧勬簮閫氶亾鍞竴鏍囪瘑锛堝湪鏉冮檺涓嬭浇鍜岄厤缃帴鍙e叆鍙傛椂瀵瑰簲鏌ヨ鎺ュ彛浼氳繑鍥烇紝涓嶄綔涓烘煡璇㈡帴鍙g殑鏌ヨ鏉′欢锛�
+             private AuthItemListTimeRequest templateConfigInfos;//	Object[]	False	璁″垝妯℃澘淇℃伅
+  private Integer personStatus;//	number	False	浜哄憳鐘舵��,0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+  private Integer cardStatus	;//number	False	鍗$墖鐘舵��,0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+  private Integer faceStatus	;//number	False	浜鸿劯鐘舵��,0锛氬凡閰嶇疆鏈笅杞�1锛氭洿鏂板緟涓嬭浇2锛氭洿鏂板緟鍒犻櫎3锛氬凡涓嬭浇4锛氭湭閰嶇疆
+  private String cardJson	;//string	False	璁板綍宸蹭笅杞藉埌璁惧鐨勫崱鍙凤紙Map鏍煎紡锛堝崱鍙凤細鐘舵�侊級锛屽叾涓姸鎬�(0鏀瑰彉琛ㄧず涓嬭浇鍚庡崱鐗囩殑淇℃伅鍙堝彉鍖栦簡锛�1宸蹭笅杞�)锛�
+             private String configTime	;//string	False	閰嶇疆鏃堕棿,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+             private String startTime;//	string	False	浜哄憳鏉冮檺鏈夋晥鏈燂紙浠ヤ汉涓轰腑蹇冭澶囨椂浣跨敤锛�,寮�濮嬫椂闂�,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+             private String endTime	;//string	False	浜哄憳鏉冮檺鏈夋晥鏈燂紙浠ヤ汉涓轰腑蹇冭澶囨椂浣跨敤锛�,寮�濮嬫棩鏈�,閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+             private String personExtendJson;//	body	string	鍚�
+           
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListResponse.java
new file mode 100644
index 0000000..5783820
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListResponse.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AuthItemListResponse {
+
+   private Integer  total;//	number	False	鎬绘潯鏁�
+   private List<AuthItemListDetailResponse> list;//object[]	False	璁惧閫氶亾鐨勪笅杞借褰�
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListTemplResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListTemplResponse.java
new file mode 100644
index 0000000..8938f28
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AuthItemListTemplResponse.java
@@ -0,0 +1,10 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class AuthItemListTemplResponse {
+
+    private Integer dimension	;//number	False	缁村害,鑼冨洿锛�1-4锛屾敮鎸�4缁村害璁″垝妯℃澘閰嶇疆
+    private String templateId;//	string	False	璁″垝妯℃澘Id锛屽叏澶╁�欒鍒掓ā鏉夸负1
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressDetailResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressDetailResponse.java
new file mode 100644
index 0000000..035a441
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressDetailResponse.java
@@ -0,0 +1,11 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class TaskProgressDetailResponse {
+   private String downloadResultId;//	string	False	涓嬭浇璁板綍鍞竴ID
+   private String  personId;//	string	False	浜哄憳缂栫爜
+   private String  persondownloadResult;//	string	False	涓嬭浇璁板綍鐘舵�侊紙鍙湁鎴愬姛/澶辫触鐘舵�侊紝0:鎴愬姛,1:澶辫触锛�
+   private String  downloadTime	;//string	False	涓嬭浇鏃堕棿锛岄噰鐢↖SO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressNumResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressNumResponse.java
new file mode 100644
index 0000000..3ecc14c
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressNumResponse.java
@@ -0,0 +1,19 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class TaskProgressNumResponse {
+
+   private String taskId	;//string	False	涓嬭浇浠诲姟鍞竴鏍囪瘑锛�32浣嶆暟瀛�+瀛楁瘝瀛楃涓�
+
+   private String tagId;//	string	False	鏍囩,鐢ㄤ簬鍖哄垎涓嶅悓涓氬姟缁勪欢锛屽缓璁娇鐢ㄧ粍浠舵爣璇嗐�傚彧鏀寔1-32涓暟瀛楀拰灏忓啓瀛楁瘝銆�
+   private Integer  taskType;//	number	False	涓嬭浇浠诲姟绫诲瀷 ,鍙傝�冮檮褰旳.53 浠诲姟涓嬭浇绫诲瀷璇存槑
+   private Integer taskOptType;//number	False	浠诲姟鎿嶄綔绫诲瀷0:鍒濆鍖栦笅杞�,銆�1:寮傚姩涓嬭浇,  2:鎸囧畾涓嬭浇-鏅�氫换鍔�, 3:鎸囧畾涓嬭浇-蹇�熶换鍔�,4鑷姩涓嬭浇, 5:鍚屾涓嬭浇
+   private String startTime	;//string	False	涓嬭浇寮�濮嬫椂闂� 閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
+   private Integer totalPercent	;//number	False	涓嬭浇鎬昏繘搴�
+   private Integer leftTime;//	number	False	涓嬭浇鍓╀綑鏃堕棿
+   private Integer consumeTime	;//number	False	涓嬭浇鎬荤敤鏃�
+   private Boolean isDownloadFinished;//	boolean	False	涓嬭浇鏄惁缁撴潫
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressResponse.java
index 167e7b2..9c919da 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/TaskProgressResponse.java
@@ -2,19 +2,12 @@
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class TaskProgressResponse {
 
-   private String taskId	;//string	False	涓嬭浇浠诲姟鍞竴鏍囪瘑锛�32浣嶆暟瀛�+瀛楁瘝瀛楃涓�
-
-   private String tagId;//	string	False	鏍囩,鐢ㄤ簬鍖哄垎涓嶅悓涓氬姟缁勪欢锛屽缓璁娇鐢ㄧ粍浠舵爣璇嗐�傚彧鏀寔1-32涓暟瀛楀拰灏忓啓瀛楁瘝銆�
-   private Integer  taskType;//	number	False	涓嬭浇浠诲姟绫诲瀷 ,鍙傝�冮檮褰旳.53 浠诲姟涓嬭浇绫诲瀷璇存槑
-   private Integer taskOptType;//number	False	浠诲姟鎿嶄綔绫诲瀷0:鍒濆鍖栦笅杞�,銆�1:寮傚姩涓嬭浇,  2:鎸囧畾涓嬭浇-鏅�氫换鍔�, 3:鎸囧畾涓嬭浇-蹇�熶换鍔�,4鑷姩涓嬭浇, 5:鍚屾涓嬭浇
-   private String startTime	;//string	False	涓嬭浇寮�濮嬫椂闂� 閲囩敤ISO8601鏃堕棿鏍煎紡锛屾渶澶ч暱搴�32涓瓧绗︼紝濡�2018-09-03T17:30:08.000+08:00
-   private Integer totalPercent	;//number	False	涓嬭浇鎬昏繘搴�
-   private Integer leftTime;//	number	False	涓嬭浇鍓╀綑鏃堕棿
-   private Integer consumeTime	;//number	False	涓嬭浇鎬荤敤鏃�
-   private Boolean isDownloadFinished;//	boolean	False	涓嬭浇鏄惁缁撴潫
-   private String resourceDownloadProgress;//	object[]	False	璧勬簮涓嬭浇璇︽儏
+   private Integer  total;//	number	False	鎬绘潯鏁�
+   private List<TaskProgressDetailResponse> list;//object[]	False	璁惧閫氶亾鐨勪笅杞借褰�
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index c7af861..42270b4 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -602,18 +602,60 @@
      *娴峰悍涓�鍗¢�氫换鍔¤繘搴︽煡璇�
      * @return
      */
-    public  static  BaseResponse<TaskProgressResponse>    taskDataAddition(TaskProgressRequest param){
+    public  static  BaseResponse<TaskProgressNumResponse>    taskProgressNum(TaskProgressRequest param){
         log.info("銆愭捣搴蜂竴鍗¢�氫换鍔¤繘搴︽煡璇€��================寮�濮�===="+JSONObject.toJSONString(param));
+        String res = null;
+        try {
+            res = HKTools.taskProgressNum(JSONObject.toJSONString(param));
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<TaskProgressNumResponse> >(){};
+            BaseResponse<TaskProgressNumResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍涓�鍗¢�氫换鍔¤繘搴︽煡璇�");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴蜂竴鍗¢�氫换鍔¤繘搴︽煡璇€��================澶辫触====锛歕n"+ e.getMessage());
+        }finally {
+           // saveInterfaceLog(param,res);
+        }
+        return  null;
+    }
+    /**
+     *娴峰悍涓�鍗¢�氳澶囬�氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟v2
+     * @return
+     */
+    public  static  BaseResponse<TaskProgressResponse>    taskProgress(TaskProgressRequest param){
+        log.info("銆愭捣搴蜂竴鍗¢�氳澶囬�氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟銆�================寮�濮�===="+JSONObject.toJSONString(param));
         String res = null;
         try {
             res = HKTools.taskProgress(JSONObject.toJSONString(param));
             TypeReference typeReference =
                     new TypeReference< BaseResponse<TaskProgressResponse> >(){};
             BaseResponse<TaskProgressResponse>   result = JSONObject.parseObject(res, typeReference.getType());
-            logResult(result,"娴峰悍涓�鍗¢�氫换鍔¤繘搴︽煡璇�");
+            logResult(result,"娴峰悍涓�鍗¢�氳澶囬�氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟");
             return  result;
         }catch (Exception e){
-            log.error("銆愭捣搴蜂竴鍗¢�氫换鍔¤繘搴︽煡璇€��================澶辫触====锛歕n"+ e.getMessage());
+            log.error("銆愭捣搴蜂竴鍗¢�氳澶囬�氶亾鐨勪汉鍛樻潈闄愪笅杞借鎯呮�绘暟銆�================澶辫触====锛歕n"+ e.getMessage());
+        }finally {
+           // saveInterfaceLog(param,res);
+        }
+        return  null;
+    }
+    /**
+     *娴峰悍鏌ヨ鏉冮檺鏉$洰鍒楄〃
+     * @return
+     */
+    public  static  BaseResponse<AuthItemListResponse>    authItemList(AuthItemListRequest param){
+        log.info("銆愭捣搴锋煡璇㈡潈闄愭潯鐩垪琛ㄣ��================寮�濮�===="+JSONObject.toJSONString(param));
+        String res = null;
+        try {
+            res = HKTools.authItemList(JSONObject.toJSONString(param));
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<AuthItemListResponse> >(){};
+            BaseResponse<AuthItemListResponse>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍鏌ヨ鏉冮檺鏉$洰鍒楄〃");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴锋煡璇㈡潈闄愭潯鐩垪琛ㄣ��================澶辫触====锛歕n"+ e.getMessage());
         }finally {
            // saveInterfaceLog(param,res);
         }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
index 22ac061..e1ea0ee 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -62,12 +62,17 @@
     public static final String ERP_USERSTATUS_RL ="ERP_USERSTATUS_RL" ;
     public static final String ERP ="ERP" ;
     public static final Integer THREE =3 ;
-
+    public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
+    public static  boolean DEALING_HK_SYNCDEVICE = false;
+    public static  boolean DEALING_HK_SYNCPARK = false;
     public static  boolean DEALING_HK_IMG = false;
     public static  boolean DEALING_HK_ORG = false;
     public static  boolean DEALING_HK_USER = false;
     public static  boolean DEALING_HK_VISIT = false;
     public static  boolean DEALING_HK_EMPOWER = false;
+    public static  boolean DEALING_HK_EMPOWER_DETAIL = false;
+    public static  boolean DEALING_HK_EMPOWER_RESULT = false;
+    public static  boolean DEALING_HK_PARKBOOK = false;
     // ERP鎺ュ彛閰嶇疆
     public static final String ERP_CONFIG = "ERP_CONFIG";
     // ERP ACCESS_KEY
@@ -165,6 +170,15 @@
          int xfFail = 6;
          int signout = 7;
     }
+    public interface EmpowerStatus{
+        //涓�鍗¢�氭巿鏉冧笅鍙戠姸鎬� 0寰呬笅鍙� 1宸蹭笅鍙� 2涓嬪彂鎴愬姛   3宸插彇娑� 4涓嬪彂澶辫触 5浠诲姟涓嬭浇宸茬粨鏉�
+         int wait = 0;
+         int ing = 1;
+         int pass = 2;
+         int cancel = 3;
+         int fail = 4;
+         int downloaded = 5;
+    }
     public interface DOOR_ROLE_TYPE{
          int lw = 0;
          int fk = 1;
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/TestUtil.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/TestUtil.java
new file mode 100644
index 0000000..4f871d6
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/TestUtil.java
@@ -0,0 +1,128 @@
+//package com.doumee.core.utils;
+//
+//import java.awt.image.BufferedImage;
+//import java.io.ByteArrayOutputStream;
+//import java.io.File;
+//import java.io.FileOutputStream;
+//import java.io.IOException;
+//import java.net.URL;
+//import java.util.stream.IntStream;
+//import javax.imageio.ImageIO;
+//import org.apache.poi.ss.usermodel.Cell;
+//import org.apache.poi.ss.usermodel.Row;
+//import org.apache.poi.ss.usermodel.Sheet;
+//import org.apache.poi.ss.usermodel.Workbook;
+//import org.apache.poi.ss.usermodel.WorkbookFactory;
+//import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+//import org.apache.poi.xssf.usermodel.XSSFDrawing;
+//import org.apache.poi.xssf.usermodel.XSSFGraphicFrame;
+//import org.apache.poi.xssf.usermodel.XSSFShape;
+//import org.apache.poi.xssf.usermodel.XSSFSheet;
+//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+//import com.itextpdf.text.BaseColor;
+//import com.itextpdf.text.Document;
+//import com.itextpdf.text.DocumentException;
+//import com.itextpdf.text.Element;
+//import com.itextpdf.text.Font;
+//import com.itextpdf.text.Image;
+//import com.itextpdf.text.PageSize;
+//import com.itextpdf.text.Paragraph;
+//import com.itextpdf.text.pdf.PdfPCell;
+//import com.itextpdf.text.pdf.PdfPTable;
+//import com.itextpdf.text.pdf.PdfWriter;
+//
+//public class TestUtil {
+//    public static void main(String[] args) {
+//        try (Workbook workbook = WorkbookFactory.create(new File("example.xlsx"));
+//            FileOutputStream fos = new FileOutputStream("example.pdf")) {
+//            Document document = new Document(PageSize.A4, 50, 50, 50, 50);
+//            PdfWriter writer = PdfWriter.getInstance(document, fos);
+//            document.open();
+//            for (Sheet sheet : workbook) {
+//                PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum());
+//                table.setHeaderRows(1);
+//                table.setWidths(IntStream.range(0, sheet.getRow(0).getLastCellNum()).mapToDouble(i -> 1).toArray());
+//                table.setWidthPercentage(100);
+//                Paragraph title = new Paragraph(sheet.getSheetName(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));
+//                title.setAlignment(Element.ALIGN_CENTER);
+//                document.add(title);
+//                sheet.forEach(row -> {
+//                    IntStream.range(0, row.getLastCellNum()).forEach(i -> {
+//                        Cell cell = row.getCell(i);
+//                        PdfPCell pdfCell = null;
+//                        try {
+//                            pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));
+//                        } catch (DocumentException e) {
+//                            throw new RuntimeException(e);
+//                        } catch (IOException e) {
+//                            throw new RuntimeException(e);
+//                        }
+//                        pdfCell.setBorderWidth(1f);
+//                        pdfCell.setBorderColor(BaseColor.BLACK);
+//                        pdfCell.setPadding(5f);
+//                        if (row.getRowNum() == 0) {
+//                            pdfCell.setBackgroundColor(BaseColor.LIGHT_GRAY);
+//                        }
+//                        table.addCell(pdfCell);
+//                        if (cell.getCellType() == CellType.BLANK || cell.getCellType() == CellType.FORMULA || cell.getCellType() == CellType.ERROR || cell.getCellType() == CellType.STRING && cell.getStringCellValue().trim().isEmpty() || cell.getCellType() == CellType.NUMERIC && cell.getNumericCellValue() == 0 || cell.getCellType() == CellType.BOOLEAN && !cell.getBooleanCellValue() || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("#") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("#") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("=") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("=") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("@") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("@") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("'") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("'")) {
+//                            return;
+//                        }
+//                        if (cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("http")) {
+//                            try {
+//                                BufferedImage image = ImageIO.read(new URL(cell.getStringCellValue()));
+//                                if (image != null) {
+//                                    addImageToTable(table, image);
+//                                }
+//                            } catch (Exception e) {
+//                                e.printStackTrace();
+//                            }
+//                        } else {
+//                            if (sheet instanceof XSSFSheet) {
+//                                XSSFSheet xssfSheet = (XSSFSheet) sheet;
+//                                XSSFDrawing drawing = xssfSheet.createDrawingPatriarch();
+//                                for (XSSFShape shape : drawing.getShapes()) {
+//                                    if (shape instanceof XSSFClientAnchor) {
+//                                        XSSFClientAnchor anchor = (XSSFClientAnchor) shape.getAnchor();
+//                                        if (anchor.getRow1() == cell.getRowIndex() && anchor.getCol1() == cell.getColumnIndex()) {
+//                                            if (shape instanceof XSSFGraphicFrame) {
+//                                                XSSFGraphicFrame frame = (XSSFGraphicFrame) shape;
+//                                                BufferedImage image = frame.getGraphic().getBufferedImage();
+//                                                try {
+//                                                    addImageToTable(table, image);
+//                                                } catch (Exception e) {
+//                                                    throw new RuntimeException(e);
+//                                                }
+//                                            }
+//                                        }
+//                                    }
+//                                }
+//                            }
+//                        }
+//                    });
+//                });
+//                table.setSpacingBefore(20f);
+//                table.setSpacingAfter(20f);
+//                table.setKeepTogether(true);
+//                document.add(table);
+//            }
+//            document.close();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+//
+//    private static void addImageToTable(PdfPTable table, BufferedImage image) throws Exception {
+//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//        ImageIO.write(image, "png", baos);
+//        baos.flush();
+//        byte[] imageData = baos.toByteArray();
+//        baos.close();
+//        Image pdfImage = Image.getInstance(imageData);
+//        pdfImage.scaleToFit(100f, 100f);
+//        PdfPCell imageCell = new PdfPCell(pdfImage, true);
+//        imageCell.setBorderWidth(1f);
+//        imageCell.setBorderColor(BaseColor.BLACK);
+//        imageCell.setPadding(5f);
+//        table.addCell(imageCell);
+//    }
+//}
\ No newline at end of file
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
index b783383..3d380a9 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -118,8 +118,8 @@
     @TableField(exist = false)
     private String createrName;
 
-    @ApiModelProperty(value = "涓嬪彂鐘舵�� 0寰呬笅鍙� 1宸蹭笅鍙� 2宸插彇娑�", example = "1")
-    @ExcelColumn(name="涓嬪彂鐘舵��",index= 8,valueMapping ="0=寰呬笅鍙�;1=宸蹭笅鍙�;2=宸插彇娑�" )
+    @ApiModelProperty(value = "涓嬪彂鐘舵�� 0寰呬笅鍙� 1宸蹭笅鍙� 2涓嬪彂鎴愬姛  3宸插彇娑� 4涓嬪彂澶辫触 ", example = "1")
+    @ExcelColumn(name="涓嬪彂鐘舵��",index= 8,valueMapping ="0=寰呬笅鍙�;1=宸蹭笅鍙�;2=涓嬪彂鎴愬姛;3=宸插彇娑�;4=涓嬪彂澶辫触" )
     private Integer sendStatus;
 
     @ApiModelProperty(value = "涓嬪彂绫诲瀷 0瀹炴椂 1瀹氭椂 ", example = "1")
@@ -147,5 +147,17 @@
     @ApiModelProperty(value = "鏃堕棿娈�0锛�7,30")
     @TableField(exist = false)
     private Integer timeDn;
+    @ApiModelProperty(value = "鏃堕棿娈�0锛�7,30")
+    @TableField(exist = false)
+    private String deviceChannelNo;
+    @ApiModelProperty(value = "娴峰悍璁惧绫诲瀷code")
+    @TableField(exist = false)
+    private String deviceType;
+    @ApiModelProperty(value = "娴峰悍璁惧ode")
+    @TableField(exist = false)
+    private String deviceIndexCode;
+    @ApiModelProperty(value = "浜哄憳娴峰悍缂栫爜")
+    @TableField(exist = false)
+    private String memberHkId;
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java
index bc37b58..08f2fb6 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ParkBook.java
@@ -132,5 +132,9 @@
     @ExcelColumn(name="閮ㄩ棬")
     @TableField(exist = false)
     private String companyName;
+    @ApiModelProperty(value = "鍋滆溅搴撴捣搴风紪鐮�", example = "1")
+    @ExcelColumn(name="鍋滆溅搴撴捣搴风紪鐮�")
+    @TableField(exist = false)
+    private String parkHkId;
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
index 7d6c554..faf672b 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
@@ -60,4 +60,7 @@
 
     void syncVisitData();
     void syncEmpowerData();
+    void syncParkBookData();
+    void syncEmpowerResultData();
+    void syncEmpowerDetailData();
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
index f38dd29..436a7bc 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -814,10 +814,13 @@
      */
     private void dealMemberRoleEmpower(Member member, List<Integer> doorIds,Date startTime,Date endTime ) {
         //鍒犻櫎鎵�鏈夎�佺殑鎺堟潈淇℃伅
-        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
+//        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
+//                .eq(Empower::getMemberId,member.getId())
+//                .set(Empower::getIsdeleted,Constants.ONE)
+//                .set(Empower::getSendStatus,Constants.ZERO)
+//                );
+        empowerMapper.delete(new UpdateWrapper<Empower>().lambda()
                 .eq(Empower::getMemberId,member.getId())
-                .set(Empower::getIsdeleted,Constants.ONE)
-                .set(Empower::getSendStatus,Constants.ZERO)
                 );
         if(doorIds==null || doorIds.size() == 0){
           return;
@@ -949,8 +952,7 @@
         try{
             if(Objects.isNull(param)
                     ||Objects.isNull(param.getId())
-                    ||Objects.isNull(param.getStatus())
-            ){
+                    ||Objects.isNull(param.getStatus())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
             if(!(param.getStatus()==Constants.ZERO||param.getStatus()==Constants.ONE)){
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index e243cd2..9f44dd3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -85,5 +85,14 @@
     @Override
     public  void syncEmpowerData() {
     }
+    @Override
+    public  void syncParkBookData() {
+    }
+    @Override
+    public     void syncEmpowerResultData() {
+    }
+    @Override
+    public     void syncEmpowerDetailData() {
+    }
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
index 285c101..6e24bd8 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -7,10 +7,9 @@
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
+import com.doumee.core.haikang.model.param.request.DoorsListRequest;
 import com.doumee.core.haikang.model.param.request.ParkListRequest;
-import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
-import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
-import com.doumee.core.haikang.model.param.respose.ParkListResponse;
+import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
@@ -45,26 +44,85 @@
     @Override
 //    @Async
     public String syncHkDevices(AcsDeviceListRequest param){
-        List<Device> deleteList = new ArrayList<>();
-        List<Device> addList = new ArrayList<>();
-        List<Device> editList = new ArrayList<>();
-        List<AcsDeviceInfoResponse> allHkList = new ArrayList<>();
+        if(Constants.DEALING_HK_SYNCDEVICE){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍚屾浠诲姟姝e湪鎵ц鍝︼紝璇风◢鍚庢煡鐪嬬粨鏋滐紒") ;
+        }
+        Constants.DEALING_HK_SYNCDEVICE =true;
+        try {
+            List<Device> deleteList = new ArrayList<>();
+            List<Device> addList = new ArrayList<>();
+            List<Device> editList = new ArrayList<>();
+            List<AcsDeviceInfoResponse> allHkList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
+            List<Device> allList = deviceMapper.selectList(null);
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new AcsDeviceListRequest();
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<AcsDeviceListResponse> response = HKService.acsDeviceList(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                AcsDeviceListResponse r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(r.getList());
+                }
+                curPage++;
+            }
+            /**
+             * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
+             */
+            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
+            if(deleteList.size()>0){
+                //閫昏緫鍒犻櫎
+                for(Device d : deleteList){
+                    deviceMapper.updateById(d);
+                }
+            }
+            if(addList.size()>0){
+                deviceMapper.insertBatchSomeColumn(addList);
+            }
+            if(editList.size()>0){
+                for(Device d : editList){
+                    deviceMapper.updateById(d);
+                }
+            }
+            return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾澶辫触锛�");
+        }finally {
+            Constants.DEALING_HK_SYNCDEVICE =false;
+        }
+    }
+
+    public  List<DoorsInfoResponse>  getAllDoorList(){
+        List<DoorsInfoResponse> allDoorList = new ArrayList<>();
         Date date = new Date();
-        //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
-        List<Device> allList = deviceMapper.selectList(null);
         boolean hasNext = true;
         int curTotal = 0;
         int curPage = 1;
         while (hasNext){
             //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
-            param = new AcsDeviceListRequest();
+            DoorsListRequest param = new DoorsListRequest();
             param.setPageNo(curPage);
             param.setPageSize(100);
-            BaseResponse<AcsDeviceListResponse> response = HKService.acsDeviceList(param);
+            BaseResponse<DoorsListResponse> response = HKService.doorSearch(param);
             if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                 throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
             }
-            AcsDeviceListResponse r = response.getData();
+            DoorsListResponse r = response.getData();
             curTotal += 100;
             if(curTotal >= r.getTotal()){
                 hasNext = false;
@@ -72,43 +130,27 @@
             if(r.getList() == null || r.getList().size()==0){
                 hasNext =false;
             }else{
-                allHkList.addAll(r.getList());
+                allDoorList.addAll(r.getList());
             }
             curPage++;
         }
-        /**
-         * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
-         */
-        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
-        if(deleteList.size()>0){
-            //閫昏緫鍒犻櫎
-            for(Device d : deleteList){
-                deviceMapper.updateById(d);
-            }
-        }
-        if(addList.size()>0){
-            deviceMapper.insertBatchSomeColumn(addList);
-        }
-        if(editList.size()>0){
-            for(Device d : editList){
-                deviceMapper.updateById(d);
-            }
-        }
-        return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        return  allDoorList;
     }
 
     private void getDataChangeList(List<Device> allList, List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
         if(allHkList!=null && allHkList.size()>0){
+            //鑾峰彇娴峰悍鍏ㄩ儴闂ㄧ缁勬暟鎹�
+            List<DoorsInfoResponse> hkDoorList = getAllDoorList();
             for(AcsDeviceInfoResponse device : allHkList){
                 Device model = getExistedDevice(device,allList);
                 if(model !=null){
                     //濡傛灉宸插瓨鍦紝鍒欐洿鏂版暟鎹�
-                    model =  initDataByHkData(model,device,date);
+                    model =  initDataByHkData(model,device,date,hkDoorList);
                     editList.add(model);
                 }else{
                     //濡傛灉涓嶅瓨鍦紝鍒欐柊澧炴暟鎹�
                     model = new Device();
-                    model =  initDataByHkData(model,device,date);
+                    model =  initDataByHkData(model,device,date,hkDoorList);
                     addList.add(model);
                 }
             }
@@ -124,7 +166,7 @@
      * @param date
      * @return
      */
-    private Device initDataByHkData(Device model, AcsDeviceInfoResponse device,Date date) {
+    private Device initDataByHkData(Device model, AcsDeviceInfoResponse device,Date date, List<DoorsInfoResponse> hkDoorList) {
         model.setIsdeleted(Constants.ZERO);
         model.setIp(device.getIp());
         model.setHkDate(date);
@@ -137,7 +179,7 @@
         model.setManufature(device.getManufacturer());
         model.setType(Constants.ZERO);
 //        model.setNo(device.getDevSerialNum());
-//        model.setChannelNo(device);
+        model.setChannelNo(getChannelNo(device.getIndexCode(),hkDoorList));
         model.setResourceType(device.getResourceType());
         model.setDevTypeCode(device.getDevTypeCode());
         model.setManufature(device.getManufacturer());
@@ -146,6 +188,24 @@
         return  model;
     }
 
+    private String getChannelNo(String indexCode, List<DoorsInfoResponse> hkDoorList) {
+        String str = "";
+        if(hkDoorList!=null && hkDoorList.size()>0){
+            for(DoorsInfoResponse info : hkDoorList){
+                if(StringUtils.equals(indexCode,info.getParentIndexCode())){
+                    if(StringUtils.isBlank(info.getChannelNo())){
+                        continue;
+                    }
+                    if(StringUtils.isNotBlank(str)){
+                        str += ",";
+                    }
+                    str+=info.getChannelNo();
+                }
+            }
+        }
+        return str;
+    }
+
     private Device getExistedDevice(AcsDeviceInfoResponse device, List<Device> allList) {
         if(allList.size()>0){
             for(Device r : allList){
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
index 5ff883d..cd1be6c 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
@@ -7,10 +7,8 @@
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
 import com.doumee.core.haikang.model.param.request.DoorsListRequest;
+import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.model.param.respose.DoorsInfoResponse;
-import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
-import com.doumee.core.haikang.model.param.respose.DoorsInfoResponse;
-import com.doumee.core.haikang.model.param.respose.DoorsListResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
@@ -43,56 +41,68 @@
     @Override
 //    @Async
     public String syncDoors(DoorsListRequest param){
-        List<Device> deleteList = new ArrayList<>();
-        List<Device> addList = new ArrayList<>();
-        List<Device> editList = new ArrayList<>();
-        List<DoorsInfoResponse> allHkList = new ArrayList<>();
-        Date date = new Date();
-        //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
-        List<Device> allList = deviceMapper.selectList(null);
-        boolean hasNext = true;
-        int curTotal = 0;
-        int curPage = 1;
-        while (hasNext){
-            //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
-            param = new DoorsListRequest();
-            param.setPageNo(curPage);
-            param.setPageSize(100);
-            BaseResponse<DoorsListResponse> response = HKService.doorSearch(param);
-            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
-            }
-            DoorsListResponse r = response.getData();
-            curTotal += 100;
-            if(curTotal >= r.getTotal()){
-                hasNext = false;
-            }
-            if(r.getList() == null || r.getList().size()==0){
-                hasNext =false;
-            }else{
-                allHkList.addAll(r.getList());
-            }
-            curPage++;
+        if(Constants.DEALING_HK_SYNCDEVICE){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍚屾浠诲姟姝e湪鎵ц鍝︼紝璇风◢鍚庢煡鐪嬬粨鏋滐紒") ;
         }
-        /**
-         * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
-         */
-        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
-        if(deleteList.size()>0){
-            //閫昏緫鍒犻櫎
-            for(Device d : deleteList){
-                deviceMapper.updateById(d);
+        Constants.DEALING_HK_SYNCDEVICE =true;
+        try {
+            List<Device> deleteList = new ArrayList<>();
+            List<Device> addList = new ArrayList<>();
+            List<Device> editList = new ArrayList<>();
+            List<DoorsInfoResponse> allHkList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴闂ㄧ璁惧鏁版嵁
+            List<Device> allList = deviceMapper.selectList(null);
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new DoorsListRequest();
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<DoorsListResponse> response = HKService.doorSearch(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                DoorsListResponse r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(r.getList());
+                }
+                curPage++;
             }
-        }
-        if(addList.size()>0){
-            deviceMapper.insertBatchSomeColumn(addList);
-        }
-        if(editList.size()>0){
-            for(Device d : editList){
-                deviceMapper.updateById(d);
+            /**
+             * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
+             */
+            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
+            if(deleteList.size()>0){
+                //閫昏緫鍒犻櫎
+                for(Device d : deleteList){
+                    deviceMapper.updateById(d);
+                }
             }
+            if(addList.size()>0){
+                deviceMapper.insertBatchSomeColumn(addList);
+            }
+            if(editList.size()>0){
+                for(Device d : editList){
+                    deviceMapper.updateById(d);
+                }
+            }
+            return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾澶辫触锛�");
+        }finally {
+            Constants.DEALING_HK_SYNCDEVICE =false;
         }
-        return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+
     }
 
     private void getDataChangeList(List<Device> allList, List<DoorsInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
index 2e89198..b201c67 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -1,14 +1,20 @@
 package com.doumee.service.business.impl.hksync;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
-import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
-import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
+import com.doumee.core.haikang.model.param.request.*;
+import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.DeviceMapper;
 import com.doumee.dao.business.join.EmpowerJoinMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
+import com.doumee.dao.business.model.Device;
 import com.doumee.dao.business.model.Empower;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.Visits;
@@ -18,6 +24,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -30,48 +37,119 @@
 @Slf4j
 public class HkSyncEmpowerServiceImpl extends HkSyncBaseServiceImpl {
     @Autowired
-    private EmpowerJoinMapper empowerJoinMapper;
+    private EmpowerJoinMapper empowerMapper;
+    @Autowired
+    private DeviceMapper deviceMapper;
 
     /**
-     * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
+     * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
      */
     @Override
-    public  void syncEmpowerData(){
+    public  void syncEmpowerDetailData(){
+        if(Constants.DEALING_HK_EMPOWER_DETAIL){
+            return   ;
+        }
+        Constants.DEALING_HK_EMPOWER_DETAIL = true;
+        try {
+            //鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍
+            List<Empower>  list = getDealListDetail();
+           if(list == null || list.size() ==0){
+               return;
+           }
+           for(Empower c : list){
+               AuthItemListRequest param = new AuthItemListRequest();
+               param.setPageNo(1);
+               param.setPageSize(100);
+               param.setPersonIds(new ArrayList<>());
+               AuthItemListPersonRequest p = new AuthItemListPersonRequest();
+               p.setPersonIds(c.getMemberHkId());
+               param.getPersonIds().add(p);
+               TaskDataAdditionResourceRequest rec = new TaskDataAdditionResourceRequest();
+               rec.setResourceIndexCode(c.getDeviceIndexCode());
+               rec.setResourceType(c.getDeviceType());
+               rec.setChannelNos(c.getDeviceChannelNo().split(","));
+               param.setResourceInfos(rec);
+               //鏌ヨ宸蹭笅杞�
+               param.setPersonStatus(new Integer[]{3});
+               //鏌ヨ涓嬪彂鐘舵��
+               BaseResponse<AuthItemListResponse> response = HKService.authItemList(param);
+               if(response!=null
+                       && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                       && response.getData()!=null
+                       && response.getData().getList() != null
+                       && response.getData().getList().size()>0 ){
+                   //鏇存柊宸插畬鎴愪笅杞戒换鍔�
+                   empowerMapper.update(null,new UpdateWrapper<Empower>()
+                           .lambda()
+                           .eq(Empower::getHkId,c.getHkId() )
+                           .set(Empower::getSendStatus,Constants.EmpowerStatus.pass) );
+
+               }
+           }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            Constants.DEALING_HK_EMPOWER_DETAIL=false;
+        }
+
+    }
+    /**
+     * 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
+     */
+    @Override
+    public  void syncEmpowerResultData(){
+        if(Constants.DEALING_HK_EMPOWER_RESULT){
+            return   ;
+        }
+        Constants.DEALING_HK_EMPOWER_RESULT=true;
+        try {
+            //鏌ヨ鎵�鏈夋墽琛屼腑寰楁暟鎹�
+            List<Empower>  list = getIngTaskListResult();
+           if(list == null || list.size() ==0){
+               return;
+           }
+           for(Empower c : list){
+               TaskProgressRequest param = new TaskProgressRequest();
+               param.setTaskId(c.getHkId());
+               //鏌ヨ涓嬪彂鐘舵��
+               BaseResponse<TaskProgressNumResponse> response = HKService.taskProgressNum(param);
+               if(response!=null
+                       && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                       && response.getData()!=null
+                       && response.getData().getIsDownloadFinished() != null
+                       && response.getData().getIsDownloadFinished() ){
+                   //鏇存柊宸插畬鎴愪笅杞戒换鍔�
+                   empowerMapper.update(null,new UpdateWrapper<Empower>()
+                           .lambda()
+                           .eq(Empower::getHkId,c.getHkId() )
+                           .set(Empower::getSendStatus,Constants.EmpowerStatus.downloaded) );
+
+               }
+           }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            Constants.DEALING_HK_EMPOWER_RESULT =false;
+        }
+
+    }
+
+
+
+    /**
+     * 澶勭悊浜哄憳鎺堟潈鏁版嵁锛屽畾鏃朵笅鍙�
+     */
+    @Override
+    public  void syncEmpowerData() {
         if(Constants.DEALING_HK_EMPOWER){
             return   ;
         }
         Constants.DEALING_HK_EMPOWER =true;
         try {
-            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
-
-            MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
-            queryWrapper.selectAll(Empower.class);
-            queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName)
-                        .select("t1.hk_id as receptMemberHkId")
-                        .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
-            queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.pass)//瀹℃壒閫氳繃
-                    .eq(Visits::getHkStatus,Constants.ZERO)//鏈悓姝ュ埌娴峰悍
-                    .orderByAsc(Visits::getCreateDate);
-            List<Empower> list = empowerJoinMapper.selectJoinList(Empower.class,queryWrapper);
-            if(list ==null || list.size()==0){
-                return;
-            }
-            Date date = new Date();
-            for(Empower c : list) {
-                //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎
-                VisitAppointmentRequest request = new VisitAppointmentRequest();
-                BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request);
-                if (response != null
-                        && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
-                        &&response.getData()!=null
-                        &&StringUtils.isNotBlank(response.getData().getAppointRecordId())) {
-                    //娴峰悍涓嬪彂鎴愬姛
-                    c.setHkId( response.getData().getAppointRecordId());//棰勭害鏍囪瘑
-                } else {
-                    //娴峰悍涓嬪彂鎴愬姛
-                }
-                empowerJoinMapper.updateById(c);
-            }
+            //鍏堝垹闄ゆ墍鏈夐渶瑕佸彇娑堟巿鏉冪殑鏁版嵁
+//            dealDelListTask(getDealList(Constants.ONE));
+            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+            dealNewListTask(getDealList(Constants.ZERO));
         }catch (Exception e){
             e.printStackTrace();
         }finally {
@@ -79,4 +157,241 @@
         }
     }
 
+    private void dealDelListTask(List<Empower> list) {
+        //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+        if(list ==null || list.size()==0){
+            return;
+        }
+        Date date = new Date();
+        //鍒涘缓浠诲姟
+        String taskId = hkTaskAddtion();
+        List<Empower> successList = new ArrayList<>();
+        List<Empower> errorList = new ArrayList<>();
+        for(Empower c : list) {
+            //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
+            if(addTaskData(c,taskId,HKConstants.OPERA_TYPE.DEL.getKey())){
+                successList.add(c);
+            }else{
+                errorList.add(c);
+            }
+        }
+        if(successList.size()>0){
+            //寮�濮嬫墽琛屼笅鍙�
+            boolean status = startTask(taskId);
+            for(Empower model : successList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setRemark(status?"涓嬪彂浠诲姟鎴愬姛":"涓嬪彂浠诲姟澶辫触");
+                //涓嬪彂涓�
+                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
+            }
+        }
+        for(Empower model : errorList){
+            Empower update = new Empower();
+            update.setId(model.getId());
+            update.setSendDate(date);
+            update.setEditDate(date);
+            update.setHkId(taskId);
+            update.setSendStatus(Constants.EmpowerStatus.fail);
+            update.setRemark( "娣诲姞涓嬪彂浠诲姟鏁版嵁鍒櫎鎺堟潈澶辫触");
+            empowerMapper.updateById(update);
+        }
+    }
+
+    private void dealNewListTask(List<Empower> list) {
+        //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+        if(list ==null || list.size()==0){
+            return;
+        }
+        clearAllEmpowerFirst(list);
+        Date date = new Date();
+        //鍒涘缓浠诲姟
+        String taskId = hkTaskAddtion();
+        List<Empower> successList = new ArrayList<>();
+        List<Empower> errorList = new ArrayList<>();
+        for(Empower c : list) {
+            //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
+            if(addTaskData(c,taskId,HKConstants.OPERA_TYPE.ADD.getKey())){
+                successList.add(c);
+            }else{
+                errorList.add(c);
+            }
+        }
+        if(successList.size()>0){
+            //寮�濮嬫墽琛屼笅鍙�
+            boolean status = startTask(taskId);
+            for(Empower model : successList){
+                Empower update = new Empower();
+                update.setId(model.getId());
+                update.setSendDate(date);
+                update.setEditDate(date);
+                update.setHkId(taskId);
+                update.setRemark(status?"涓嬪彂浠诲姟鎴愬姛":"涓嬪彂浠诲姟澶辫触");
+                //涓嬪彂涓�
+                update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail);
+                empowerMapper.updateById(update);
+            }
+        }
+
+        for(Empower model : errorList){
+            Empower update = new Empower();
+            update.setId(model.getId());
+            update.setSendDate(date);
+            update.setEditDate(date);
+            update.setHkId(taskId);
+            update.setSendStatus(Constants.EmpowerStatus.fail);
+            update.setRemark( "娣诲姞涓嬪彂浠诲姟鏁版嵁澶辫触");
+            empowerMapper.updateById(update);
+        }
+
+
+    }
+
+    private void clearAllEmpowerFirst(List<Empower> list) {
+        //鏌ヨ鍏ㄩ儴鏁版嵁
+        List<Device> allDevice = deviceMapper.selectList(new QueryWrapper<Device>().lambda().isNotNull(Device::getHkId));
+        //鍒涘缓浠诲姟
+        String taskId = hkTaskAddtion();
+        for(Empower c : list) {
+            //鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
+            addTaskDataAll(c,taskId,allDevice);
+        }
+        startTask(taskId);
+    }
+
+    private boolean addTaskData(Empower c,String taskId,int type) {
+        if(StringUtils.isBlank(c.getMemberHkId() )
+                ||StringUtils.isBlank(c.getDeviceChannelNo())
+                ||StringUtils.isBlank(c.getDeviceType())
+                ||StringUtils.isBlank(c.getDeviceIndexCode())){
+            //蹇呭~鍙傛暟鏍¢獙
+            return  false;
+        }
+        TaskDataAdditionRequest param = new TaskDataAdditionRequest();
+        param.setTaskId(taskId);
+        List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();//	object[]	True	璧勬簮瀵硅薄
+        TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest();
+        res.setChannelNos(c.getDeviceChannelNo().split(","));
+        res.setResourceType(c.getDeviceType());
+        res.setResourceIndexCode(c.getDeviceIndexCode());
+        resourceInfos.add(res);
+        List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>();
+        TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest();
+        pinfo.setName(c.getMemberName());
+        pinfo.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime()));
+        pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime()));
+        pinfo.setOperatorType(type);
+        pinfo.setPersonId(c.getMemberHkId());
+        param.setResourceInfos(resourceInfos);
+        param.setPersonInfos(personInfos);
+        BaseResponse response =  HKService.taskDataAddition(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+    private boolean addTaskDataAll(Empower c,String taskId,List<Device> deviceList) {
+        if(StringUtils.isBlank(c.getMemberHkId() )
+                ||StringUtils.isBlank(c.getDeviceChannelNo())
+                ||StringUtils.isBlank(c.getDeviceType())
+                ||StringUtils.isBlank(c.getDeviceIndexCode())){
+            //蹇呭~鍙傛暟鏍¢獙
+            return  false;
+        }
+        TaskDataAdditionRequest param = new TaskDataAdditionRequest();
+        param.setTaskId(taskId);
+        List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();//	object[]	True	璧勬簮瀵硅薄
+        for(Device d:deviceList){
+            TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest();
+            res.setChannelNos(d.getChannelNo().split(","));
+            res.setResourceType(d.getResourceType());
+            res.setResourceIndexCode(c.getDeviceIndexCode());
+            resourceInfos.add(res);
+        }
+        List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>();
+        TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest();
+        pinfo.setName(c.getMemberName());
+        pinfo.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime()));
+        pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime()));
+        pinfo.setOperatorType(HKConstants.OPERA_TYPE.DEL.getKey());
+        pinfo.setPersonId(c.getMemberHkId());
+        param.setResourceInfos(resourceInfos);
+        param.setPersonInfos(personInfos);
+        BaseResponse response =  HKService.taskDataAddition(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+
+    private boolean startTask(String taskId) {
+        TaskProgressRequest param = new TaskProgressRequest();
+        param.setTaskId(taskId);
+        BaseResponse response =  HKService.taskStart(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+
+    private String hkTaskAddtion() {
+        TaskAdditionRequest param = new TaskAdditionRequest();
+        param.setTaskType(HKConstants.TASK_TYPE.FACE.getKey());
+        BaseResponse<TaskAdditionResponse> response = HKService.taskAddition(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+                && response.getData()!=null
+                && StringUtils.isNotBlank(response.getData().getTaskId())){
+            return  response.getData().getTaskId();
+        }else{
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "娴峰悍鍒涘缓涓嬭浇浠诲姟澶辫触==================");
+        }
+    }
+
+    private List<Empower> getDealList(int del ) {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Empower.class);
+        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
+        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
+        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
+        queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType);
+        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
+        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait);
+//        queryWrapper.eq( Empower::getIsdeleted,del);
+//        queryWrapper.last("limit 100");//姣忔闄愬埗涓嬪彂100涓�
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
+    private List<Empower> getDealListDetail() {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Empower.class);
+        queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
+        queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
+        queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId);
+        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
+        queryWrapper.selectAs(Device::getDevTypeCode,Empower::getDeviceType);
+        queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId);
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.downloaded);
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
+    private List<Empower> getIngTaskListResult() {
+        MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Empower.class);
+        queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.ing);
+        queryWrapper.groupBy(Empower::getHkId);
+        List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper);
+        return list;
+    }
+
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
index 5a769c6..de60719 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -1,10 +1,13 @@
 package com.doumee.service.business.impl.hksync;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
+import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
+import com.doumee.core.haikang.model.param.request.CarChargeDelRequest;
 import com.doumee.core.haikang.model.param.request.ParkListRequest;
 import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
 import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
@@ -13,9 +16,12 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.DeviceMapper;
+import com.doumee.dao.business.ParkBookMapper;
 import com.doumee.dao.business.ParksMapper;
-import com.doumee.dao.business.model.Device;
-import com.doumee.dao.business.model.Parks;
+import com.doumee.dao.business.join.ParkBookJoinMapper;
+import com.doumee.dao.business.join.ParksJoinMapper;
+import com.doumee.dao.business.model.*;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -34,7 +40,97 @@
 
     @Autowired
     private ParksMapper parksMapper;
+    @Autowired
+    private ParkBookJoinMapper parkBookMapper;
+    @Override
+    public  void syncParkBookData() {
+        if(Constants.DEALING_HK_PARKBOOK){
+            return   ;
+        }
+        Constants.DEALING_HK_PARKBOOK =true;
+        try {
+            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+            List<ParkBook> list =getDealList ();
+            if(list ==null || list.size()==0){
+                return;
+            }
+            Date date = new Date();
+            //鍏堝嚭鎵�鏈夐渶瑕佸彇娑堝寘鏈熺殑鏁版嵁璁板綍
+            for(ParkBook c : list) {
+                if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){
+                    //濡傛灉鍙栨秷棰勭害锛屽垯杩涜鍙栨秷鍖呮湡
+                    if(StringUtils.isNotBlank(c.getParkHkId())
+                            && StringUtils.isNotBlank(c.getCarCode())){
+                       boolean result =  cancelParkBookHk(c);
+                        c.setHkStatus(result?Constants.ONE:Constants.TWO);
+                    }else{
+                        c.setHkStatus(Constants.TWO);//涓嬪彂澶辫触
+                    }
+                    c.setHkDate(date);
+                    parkBookMapper.updateById(c);
+                }
+            }
+            //澶勭悊鎵�鏈夐渶瑕佸寘鏈熺殑杞﹁締鏁版嵁璁板綍
+            for(ParkBook c : list) {
+                if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)) {
+                    //鍒犻櫎鐨勫凡澶勭悊锛岃烦杩囧鐞�
+                    continue;
+                }
+                //鏁版嵁涓嶅悎娉曪紝鐩存帴鎻愮ず涓嬪彂澶辫触
+                if(StringUtils.isNotBlank(c.getParkHkId())
+                        && StringUtils.isNotBlank(c.getCarCode())){
+                    boolean result =  addParkBookHk(c);
+                    c.setHkStatus(result?Constants.ONE:Constants.TWO);
+                }else{
+                    c.setHkStatus(Constants.TWO);
+                }
+                c.setHkDate(date);
+                parkBookMapper.updateById(c);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            Constants.DEALING_HK_PARKBOOK =false;
+        }
 
+    }
+
+    private boolean addParkBookHk(ParkBook c) {
+        CarChargeAddRequest param = new CarChargeAddRequest();
+        param.setPlateNo(c.getCarCode());
+        param.setParkSyscode(c.getParkHkId());
+        param.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime()));
+        param.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime()));
+        BaseResponse response = HKService.carChargeAddtion(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+    private boolean cancelParkBookHk(ParkBook c) {
+        CarChargeDelRequest param = new CarChargeDelRequest();
+        param.setPlateNo(c.getCarCode());
+        param.setParkSyscode(c.getParkHkId());
+        BaseResponse response = HKService.carChargeDeletion(param);
+        if(response!=null
+                && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+
+    private List<ParkBook> getDealList() {
+        MPJLambdaWrapper<ParkBook> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(ParkBook.class);
+        queryWrapper.selectAs(Parks::getHkId,ParkBook::getParkHkId);
+        queryWrapper.leftJoin(Parks.class,Parks::getId,ParkBook::getParkId);
+        queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
+        List<ParkBook> list = parkBookMapper.selectJoinList(ParkBook.class,queryWrapper);
+        return list;
+    }
     /**
      * 鍚屾娴峰悍鍋滆溅搴撴暟鎹�
      * @param param
@@ -43,36 +139,47 @@
     @Override
 //    @Async
     public   String syncHkParks(ParkListRequest param){
-        List<Parks> deleteList = new ArrayList<>();
-        List<Parks> addList = new ArrayList<>();
-        List<Parks> editList = new ArrayList<>();
-        Date date = new Date();
-        //鏌ヨ鍏ㄩ儴褰撳墠鏁版嵁
-        List<Parks> allList = parksMapper.selectList(null);
+        if(Constants.DEALING_HK_SYNCPRIVILEGE){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍚屾浠诲姟姝e湪鎵ц鍝︼紝璇风◢鍚庢煡鐪嬬粨鏋滐紒") ;
+        }
+        Constants.DEALING_HK_SYNCPRIVILEGE =true;
+        try {
+            List<Parks> deleteList = new ArrayList<>();
+            List<Parks> addList = new ArrayList<>();
+            List<Parks> editList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴褰撳墠鏁版嵁
+            List<Parks> allList = parksMapper.selectList(null);
             //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
-        param = new ParkListRequest();
-        BaseResponse<List<ParkListResponse>> response = HKService.parkList(param);
-        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
-        }
-        List<ParkListResponse> allHkList = response.getData();
-         // 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
-        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
-        if(deleteList.size()>0){
-            //閫昏緫鍒犻櫎
-            for(Parks d : deleteList){
-                parksMapper.updateById(d);
+            param = new ParkListRequest();
+            BaseResponse<List<ParkListResponse>> response = HKService.parkList(param);
+            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
             }
-        }
-        if(addList.size()>0){
-            parksMapper.insertBatchSomeColumn(addList);
-        }
-        if(editList.size()>0){
-            for(Parks d : editList){
-                parksMapper.updateById(d);
+            List<ParkListResponse> allHkList = response.getData();
+            // 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
+            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
+            if(deleteList.size()>0){
+                //閫昏緫鍒犻櫎
+                for(Parks d : deleteList){
+                    parksMapper.updateById(d);
+                }
             }
+            if(addList.size()>0){
+                parksMapper.insertBatchSomeColumn(addList);
+            }
+            if(editList.size()>0){
+                for(Parks d : editList){
+                    parksMapper.updateById(d);
+                }
+            }
+            return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾澶辫触锛�");
+        }finally {
+            Constants.DEALING_HK_SYNCPRIVILEGE =false;
         }
-        return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
     }
     private void getDataChangeList(List<Parks> allList, List<ParkListResponse> allHkList, List<Parks> addList, List<Parks> editList,List<Parks> deleteList, Date date) {
         if(allHkList!=null && allHkList.size()>0){
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
index f8bd711..c8c8824 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
@@ -5,12 +5,16 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
 import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
+import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
+import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
 import com.doumee.core.haikang.model.param.respose.PrivilegeGroupInfoResponse;
 import com.doumee.core.haikang.model.param.respose.PrivilegeGroupListResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.DeviceRoleMapper;
+import com.doumee.dao.business.model.Device;
 import com.doumee.dao.business.model.DeviceRole;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,59 +42,71 @@
     @Override
 //    @Async
     public String syncPrivilege(PrivilegeGroupRequest param){
-        List<DeviceRole> deleteList = new ArrayList<>();
-        List<DeviceRole> addList = new ArrayList<>();
-        List<DeviceRole> editList = new ArrayList<>();
-        List<PrivilegeGroupInfoResponse> allHkList = new ArrayList<>();
-        Date date = new Date();
-        //鏌ヨ鍏ㄩ儴鐜版湁鏁版嵁锛屽彧绠$悊鍚屾 璁垮缁�
-        List<Integer> types = new ArrayList<>();
-        types.add(Constants.DOOR_ROLE_TYPE.fk);
-        types.add(Constants.DOOR_ROLE_TYPE.lw);
-        List<DeviceRole> allList = DeviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda().in(DeviceRole::getType,types));
-        boolean hasNext = true;
-        int curTotal = 0;
-        int curPage = 1;
-        while (hasNext){
-            //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
-            param = new PrivilegeGroupRequest();
-            param.setPageNo(curPage);
-            param.setPageSize(100);
-            BaseResponse<PrivilegeGroupListResponse> response = HKService.privilegeGroup(param);
-            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
-            }
-            PrivilegeGroupListResponse r = response.getData();
-            curTotal += 100;
-            if(curTotal >= r.getTotal()){
-                hasNext = false;
-            }
-            if(r.getList() == null || r.getList().size()==0){
-                hasNext =false;
-            }else{
-                allHkList.addAll(r.getList());
-            }
-            curPage ++;
+        if(Constants.DEALING_HK_SYNCDEVICE){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍚屾浠诲姟姝e湪鎵ц鍝︼紝璇风◢鍚庢煡鐪嬬粨鏋滐紒") ;
         }
-        /**
-         * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
-         */
-        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
-        if(deleteList.size()>0){
-            //閫昏緫鍒犻櫎
-            for(DeviceRole d : deleteList){
-                DeviceRoleMapper.updateById(d);
+        Constants.DEALING_HK_SYNCDEVICE =true;
+        try {
+            List<DeviceRole> deleteList = new ArrayList<>();
+            List<DeviceRole> addList = new ArrayList<>();
+            List<DeviceRole> editList = new ArrayList<>();
+            List<PrivilegeGroupInfoResponse> allHkList = new ArrayList<>();
+            Date date = new Date();
+            //鏌ヨ鍏ㄩ儴鐜版湁鏁版嵁锛屽彧绠$悊鍚屾 璁垮缁�
+            List<Integer> types = new ArrayList<>();
+            types.add(Constants.DOOR_ROLE_TYPE.fk);
+            types.add(Constants.DOOR_ROLE_TYPE.lw);
+            List<DeviceRole> allList = DeviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda().in(DeviceRole::getType,types));
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new PrivilegeGroupRequest();
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<PrivilegeGroupListResponse> response = HKService.privilegeGroup(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                PrivilegeGroupListResponse r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(r.getList());
+                }
+                curPage ++;
             }
-        }
-        if(addList.size()>0){
-            DeviceRoleMapper.insertBatchSomeColumn(addList);
-        }
-        if(editList.size()>0){
-            for(DeviceRole d : editList){
-                DeviceRoleMapper.updateById(d);
+            /**
+             * 鑾峰彇澧炲垹鏀规暟鎹泦鍚�
+             */
+            getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
+            if(deleteList.size()>0){
+                //閫昏緫鍒犻櫎
+                for(DeviceRole d : deleteList){
+                    DeviceRoleMapper.updateById(d);
+                }
             }
+            if(addList.size()>0){
+                DeviceRoleMapper.insertBatchSomeColumn(addList);
+            }
+            if(editList.size()>0){
+                for(DeviceRole d : editList){
+                    DeviceRoleMapper.updateById(d);
+                }
+            }
+            return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+        }catch (Exception e){
+            e.printStackTrace();
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "鍚屾澶辫触锛�");
+        }finally {
+            Constants.DEALING_HK_SYNCDEVICE =false;
         }
-        return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+editList.size()+"銆戞潯锛屽垹闄ゃ��"+deleteList.size()+"銆戞潯";
+
     }
 
     private void getDataChangeList(List<DeviceRole> allList, List<PrivilegeGroupInfoResponse> allHkList, List<DeviceRole> addList, List<DeviceRole> editList,List<DeviceRole> deleteList, Date date) {
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index 174a8be..45c3843 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -118,6 +118,7 @@
      * 鏍规嵁棰勭害杩斿洖鎺ュ彛灏佽鐢宠璁板綍鏇存柊瀛楁
      * @param c
      * @param date
+     * @param date
      * @param type 0闇�瑕佺櫥璁� 1鍏嶇櫥璁�
      */
     private void getUpdateModelByResponse(  Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
diff --git a/server/pom.xml b/server/pom.xml
index 172d776..6044bf1 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -280,6 +280,8 @@
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-redis</artifactId>
     </dependency>
+
+
   </dependencies>
   <build>
     <plugins>

--
Gitblit v1.9.3