From 909ee569d4d8bfc523cb71790a5e6f59405d78b7 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 20 二月 2024 14:01:58 +0800
Subject: [PATCH] 大屏

---
 /dev/null                                                                                                            |  699 ------------------------------
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java |  273 +++++++++++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentResInfoResponse.java     |   55 ++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java                   |    4 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java  |   19 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java   |  189 ++++++++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitingInfoResponse.java           |   51 ++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AppointmentListRequest.java         |   13 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitingInfoRequest.java            |   23 +
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentInfoResponse.java        |   23 +
 10 files changed, 638 insertions(+), 711 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserListPageResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
similarity index 71%
rename from server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserListPageResponse.java
rename to server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
index 456e598..9a6c9c8 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserListPageResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
@@ -5,10 +5,10 @@
 import java.util.List;
 
 @Data
-public class OrgListPageResponse {
+public class BaseListPageResponse<T> {
 
   private int total;//	number	False	鏌ヨ鏁版嵁璁板綍鎬绘暟
   private int pageSize;//	number	False	姣忛〉璁板綍鎬绘暟
   private int pageNo	;// number	False	褰撳墠椤电爜
-  private List<OrgListResponse> list	;// object[]	False	鏉冮檺缁勫璞″垪琛�
+  private List<T> list	;// object[]	False	鏉冮檺缁勫璞″垪琛�
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AppointmentListRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AppointmentListRequest.java
new file mode 100644
index 0000000..5e10d7d
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AppointmentListRequest.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+@Data
+public class OrgUserListRequest {
+
+    private String startTime	;//string	True	閽堝鏇存柊鏃堕棿鐨勬煡璇㈠紑濮嬫棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
+    private String  endTime;//	string	False	閽堝鏇存柊鏃堕棿鐨勬煡璇㈡埅姝㈡棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
+    private Integer  pageNo	;//integer	True	椤电爜,pageNo鈮�1
+    private Integer  pageSize;//	integer	True	鍒嗛〉澶у皬
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitingInfoRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitingInfoRequest.java
new file mode 100644
index 0000000..eba7e2e
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/VisitingInfoRequest.java
@@ -0,0 +1,23 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class VisitingInfoResponse {
+    private String   receptionistId;//	string	False	琚浜篒D锛屼粠 鑾峰彇浜哄憳鍒楄〃v2 鎺ュ彛鑾峰彇杩斿洖鍙傛暟personId
+    private String    receptionistName	;//string	False	琚浜哄鍚嶏紝鏀寔涓嫳鏂囧瓧绗︼紝涓嶈兘鍖呭惈 鈥� / \ : * ? " < >
+    private String    visitorName	;//string	False	璁垮濮撳悕锛岄暱搴︿笉瓒呰繃32锛屾敮鎸佷腑鑻辨枃瀛楃锛屼笉鑳藉寘鍚� 鈥� / \ : * ? " < >
+    private String     phoneNo;//	string	False	璁垮鑱旂郴鐢佃瘽寤鸿濉啓鎵嬫満鍙风爜
+    private Integer     visitorStatus;//	number	False	5锛氳秴鏈熻嚜鍔ㄧ绂�6锛氬凡绛剧7锛氳秴鏈熸湭绛剧8锛氬凡鍒拌揪
+    private String     visitStartTimeBegin;//	string	False	鏉ヨ鏃堕棿鏌ヨ鏃堕棿娈垫潯浠剁殑寮�濮嬫椂闂达紝鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛�
+    private String    visitStartTimeEnd;//	string	False	鏉ヨ鏃堕棿鏌ヨ鏃堕棿娈垫潯浠剁殑缁撴潫鏃堕棿锛屾椂闂村弬鏁伴渶婊¤冻ISO8601鏍煎紡锛歽yyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛�
+    private String    visitEndTimeBegin;//	string	False	绂诲紑鏃堕棿鏌ヨ鏃堕棿娈垫潯浠剁殑寮�濮嬫椂闂达紝鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛�
+    private String     visitEndTimeEnd	;//string	False	绂诲紑鏃堕棿鏌ヨ鏃堕棿娈垫潯浠剁殑缁撴潫鏃堕棿锛屾椂闂村弬鏁伴渶婊¤冻ISO8601鏍煎紡锛歽yyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛�
+    private Integer     pageNo	;//number	True	pageNo瑕佹眰澶т簬0涓嶈秴杩�2147483647
+    private Integer    pageSize;//	number	True	pageSize瑕佹眰澶т簬0涓斾笉瓒呰繃1000
+    private String    cardNo	;//string	False	鍗″彿锛�8-20浣嶆暟瀛椼�佸ぇ鍐欏瓧姣�
+    private String   orderId	;//string	False	璁垮璁板綍ID
+    private String     QRCode	;//string	False	璁垮浜岀淮鐮佸唴瀹�,鏀寔鍔ㄦ�佷簩缁寸爜鎴栧巻鍙茬増鏈帴鍙h繑鍥炵殑闈欐�佷簩缁寸爜
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentInfoResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentInfoResponse.java
new file mode 100644
index 0000000..dacd650
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentInfoResponse.java
@@ -0,0 +1,23 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UserInfoResponse {
+
+private String personId	;//string	False	浜哄憳ID
+private String personName	;//string	False	濮撳悕
+private Integer gender	;//number	False
+private String orgIndexCode;//	string	False	鎵�灞炵粍缁囧敮涓�鏍囪瘑鐮�
+private String phoneNo;//	string	False	鑱旂郴鐢佃瘽
+private String jobNo;//	string	False	宸ュ彿
+private Integer certificateType;//	number	False	璇佷欢绫诲瀷111:韬唤璇�414:鎶ょ収113:鎴峰彛绨�335:椹鹃┒璇�131:宸ヤ綔璇�133:瀛︾敓璇�990:鍏朵粬 ;
+private String certificateNo	;//string	False	璇佷欢鍙风爜   涓�涓叉暟瀛楀瓧绗︿覆
+private String createTime	;//string	False	鍒涘缓鏃堕棿 瑕佹眰閬靛畧ISO8601鏍囧噯锛屽2018-07-26T21:30:08.000+08:00 琛ㄧず鍖椾含鏃堕棿2017骞�7鏈�26鏃�21鏃�30鍒�08绉�
+private String updateTime;//	string	False	鏇存柊鏃堕棿  瑕佹眰閬靛畧ISO8601鏍囧噯锛屽2018-07-26T21:30:08.000+08:00  琛ㄧず鍖椾含鏃堕棿2017骞�7鏈�26鏃�21鏃�30鍒�08绉�
+private String orgPath;//	string	False	鎵�灞炵粍缁囩洰褰曪紝@杩涜鍒嗗壊锛屼緥濡� @root000000@
+private String orgPathName;//	string	False	鎵�灞炵粍缁囧悕绉帮紝@杩涜鍒嗗壊锛屽@榛樿閮ㄩ棬@
+private List<UserPhotoResponse> personPhoto;//	object	False	浜哄憳鍥剧墖淇℃伅
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentResInfoResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentResInfoResponse.java
new file mode 100644
index 0000000..00ce369
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AppointmentResInfoResponse.java
@@ -0,0 +1,55 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class AppointmentInfoResponse {
+
+ 
+   private String appointRecordId		;//string	False	棰勭害璁板綍ID锛屽彲浣滀负淇敼棰勭害鐨勪緷鎹�
+private String receptionistId		;//string	False	琚浜哄敮涓�鏍囪瘑
+private String receptionistName		;//string	False	琚浜哄鍚嶏紝鏀寔涓嫳鏂囧瓧绗︼紝涓嶈兘鍖呭惈 鈥� / \ : * ? " < >
+           private String receptionistCode		;//string	False	琚浜烘墍灞炵粍缁囩紪鐮�
+private String visitStartTime		;//string	False	鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛� yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛�
+           private String visitEndTime		;//string	False	鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛�  yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛� 棰勮绂诲紑鏃堕棿蹇呴』鏅氫簬褰撳墠鏃堕棿鍜岄璁℃潵璁挎椂闂�
+private String visitPurpose		;//string	False	鏉ヨ浜嬬敱
+private String visitorName		;//string	False	璁垮濮撳悕
+private String visitorWorkUnit		;//string	False	鏉ヨ鍗曚綅
+private String visitorAddress		;//string	False	璁垮浣忓潃
+private String visitorId		;//string	False	璁垮Id
+private String verificationCode		;//string	False	璁垮楠岃瘉鐮侊紝鐢ㄤ簬璁垮鍦ㄨ瀹㈡満鐧昏鐨勫嚟璇�
+private String QRCode		;//string	False	鍔ㄦ�佷簩缁寸爜锛屽闇�瑕佷娇鐢紝鍙皢璁垮浜岀淮鐮佸唴瀹硅浆鎴愪簩缁寸爜鍥剧墖鍗冲彲
+private Integer gender;//	integer	False	1-鐢�,  2-濂�
+private String phoneNo		;//string	False	鑱旂郴鐢佃瘽寤鸿濉啓鎵嬫満鍙风爜锛屼粎鏀寔绾暟瀛椼��
+           private String plateNo		;//string	False	璁垮杞︾墝鍙�
+private Integer certificateType	;//	integer	False	璇佷欢绫诲瀷锛岃瑙侀檮褰旳.11 璇佷欢绫诲瀷
+private String certificateNo		;//string	False	璇佷欢鍙凤紝鏍煎紡涓猴細1~20涓暟瀛椼�佸瓧姣嶇粍鎴�
+private String picUri		;//string	False	杩斿洖鍥剧墖鐨勭浉瀵筓ri锛涢渶瑕佽皟鐢ㄨ幏鍙栬瀹㈣褰曚腑鐨勫浘鐗囨帴鍙o紝鏉ヨ幏鍙栧浘鐗囩殑鏁版嵁
+private String svrIndexCode		;//string	False	涓巔icUri閰嶅杈撳嚭鐨勫瓧娈典俊鎭紝鐢ㄤ簬鈥滆幏鍙栬瀹㈣褰曠殑鍥剧墖鈥濇帴鍙g殑杈撳叆鍙傛暟
+    /**
+     * 璁垮鍗曠姸鎬�,
+     *             0:寰呭鏍搞��
+     *             1锛氭甯搞��
+     *             2锛氳繜鍒般��
+     *             3锛氬け鏁堛��
+     *             4锛氬鏍搁��鍥炪��
+     *             9锛氬鏍稿け鏁堛��
+     *             10锛氶個绾︿腑銆�
+     *             11:閭�绾﹀け鏁�
+     */
+    private Integer visitorStatus		;//integer	False
+
+
+private String certAddr		;//string	False	璇佷欢鍦板潃
+private String certIssuer		;//string	False	鍙戣瘉鏈哄叧
+private Integer nation	;//integer	False
+private String birthplace		;//string	False	绫嶈疮
+private String orderId		;//string	False	璁垮璁板綍鍞竴鏍囪瘑锛岀敤浜庡凡棰勭害鐧昏銆佽瀹㈢绂荤瓑鎿嶄綔
+private List<Map<String,Object>> designatedResources;//	object	False	鏉冮檺涓嬪彂鎸囧畾鐨勮祫婧愮偣闆嗗悎
+private String[] privilegeGroupNames;//	string[]	False	鏉冮檺缁勫悕绉伴泦鍚�
+private String identityUri		;//string	False	璇佷欢鐓�,鍥剧墖鐨勭浉瀵筓RL
+private String identitySvrCode		;//string	False	璇佷欢鐓у搴斿浘鐗囨湇鍔″櫒serviceNodes
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgListPageResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgListPageResponse.java
deleted file mode 100644
index 2696169..0000000
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgListPageResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.doumee.core.haikang.model.param.respose;
-
-import lombok.Data;
-
-@Data
-public class OrgListResponse {
-
-  private String orgIndexCode;//	缁勭粐鍞竴鏍囪瘑鐮侊紙鏈�澶ч暱搴�64锛�
-    private String  orgNo	;//string	False	缁勭粐缂栧彿锛堟渶澶ч暱搴�64锛�
-    private String orgName;//	string	False	缁勭粐鍚嶇О锛堟渶澶ч暱搴�64锛�  褰撳墠缁勭粐鐨勫悕绉帮紝濡傞粯璁ら儴闂�
-    private String orgPath	;//string	False	缁勭粐鐩綍锛堟渶澶ч暱搴�64锛� 渚嬪锛氶粯璁ら儴闂�/缁煎悎瀹夐槻/寮�鍙戝皬缁�
-    private String  parentOrgIndexCode;//	string	False	鐖剁粍缁囧敮涓�鏍囪瘑鐮侊紙鏈�澶ч暱搴�64锛�
-    private String  parentOrgName;//	string	False	鐖剁粍缁囧悕绉帮紙鏈�澶ч暱搴�64锛�
-    private String  updateTime;//	string	False	鏇存柊鏃堕棿    瑕佹眰閬靛畧ISO8601鏍囧噯锛屽2018-07-26T21:30:08+08:00琛ㄧず鍖椾含鏃堕棿2017骞�7鏈�26鏃�21鏃�30鍒�08绉�
-}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgTimeRangetListPageResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgTimeRangetListPageResponse.java
deleted file mode 100644
index bf32b1e..0000000
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgTimeRangetListPageResponse.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.doumee.core.haikang.model.param.respose;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class OrgTimeRangetListPageResponse {
-
-  private int total;//	number	False	鏌ヨ鏁版嵁璁板綍鎬绘暟
-  private int pageSize;//	number	False	姣忛〉璁板綍鎬绘暟
-  private int pageNo	;// number	False	褰撳墠椤电爜
-  private List<OrgInfoResponse> list	;// object[]	False	鏉冮檺缁勫璞″垪琛�
-}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserTimeRangeListPageResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserTimeRangeListPageResponse.java
deleted file mode 100644
index f4bcb1c..0000000
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/UserTimeRangeListPageResponse.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.doumee.core.haikang.model.param.respose;
-
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class UserListPageResponse {
-
-  private int total;//	number	False	鏌ヨ鏁版嵁璁板綍鎬绘暟
-  private int pageSize;//	number	False	姣忛〉璁板綍鎬绘暟
-  private int pageNo	;// number	False	褰撳墠椤电爜
-  private List<UserInfoResponse> list	;// object[]	False	鏉冮檺缁勫璞″垪琛�
-}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitingInfoResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitingInfoResponse.java
new file mode 100644
index 0000000..3f098bf
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitingInfoResponse.java
@@ -0,0 +1,51 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class AppointmentInfoResponse {
+    private String appointRecordId		;//string	False	棰勭害璁板綍ID锛屽彲浣滀负淇敼棰勭害鐨勪緷鎹�
+    private String receptionistId		;//string	False	琚浜哄敮涓�鏍囪瘑
+    private String receptionistName		;//string	False	琚浜哄鍚嶏紝鏀寔涓嫳鏂囧瓧绗︼紝涓嶈兘鍖呭惈 鈥� / \ : * ? " < >
+    private String receptionistCode		;//string	False	琚浜烘墍灞炵粍缁囩紪鐮�
+    private String visitStartTime		;//string	False	鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛� yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛�
+    private String visitEndTime		;//string	False	鏃堕棿鍙傛暟闇�婊¤冻ISO8601鏍煎紡锛�  yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛� 棰勮绂诲紑鏃堕棿蹇呴』鏅氫簬褰撳墠鏃堕棿鍜岄璁℃潵璁挎椂闂�
+    private String visitPurpose		;//string	False	鏉ヨ浜嬬敱
+    private String visitorName		;//string	False	璁垮濮撳悕
+    private String visitorWorkUnit		;//string	False	鏉ヨ鍗曚綅
+    private String visitorAddress		;//string	False	璁垮浣忓潃
+    private String visitorId		;//string	False	璁垮Id
+    private String verificationCode		;//string	False	璁垮楠岃瘉鐮侊紝鐢ㄤ簬璁垮鍦ㄨ瀹㈡満鐧昏鐨勫嚟璇�
+    private String QRCode		;//string	False	鍔ㄦ�佷簩缁寸爜锛屽闇�瑕佷娇鐢紝鍙皢璁垮浜岀淮鐮佸唴瀹硅浆鎴愪簩缁寸爜鍥剧墖鍗冲彲
+    private Integer gender;//	integer	False	1-鐢�,  2-濂�
+    private String phoneNo		;//string	False	鑱旂郴鐢佃瘽寤鸿濉啓鎵嬫満鍙风爜锛屼粎鏀寔绾暟瀛椼��
+    private String plateNo		;//string	False	璁垮杞︾墝鍙�
+    private Integer certificateType	;//	integer	False	璇佷欢绫诲瀷锛岃瑙侀檮褰旳.11 璇佷欢绫诲瀷
+    private String certificateNo		;//string	False	璇佷欢鍙凤紝鏍煎紡涓猴細1~20涓暟瀛椼�佸瓧姣嶇粍鎴�
+    private String picUri		;//string	False	杩斿洖鍥剧墖鐨勭浉瀵筓ri锛涢渶瑕佽皟鐢ㄨ幏鍙栬瀹㈣褰曚腑鐨勫浘鐗囨帴鍙o紝鏉ヨ幏鍙栧浘鐗囩殑鏁版嵁
+    private String svrIndexCode		;//string	False	涓巔icUri閰嶅杈撳嚭鐨勫瓧娈典俊鎭紝鐢ㄤ簬鈥滆幏鍙栬瀹㈣褰曠殑鍥剧墖鈥濇帴鍙g殑杈撳叆鍙傛暟
+    /**
+     * 璁垮鍗曠姸鎬�,
+     *             0:寰呭鏍搞��
+     *             1锛氭甯搞��
+     *             2锛氳繜鍒般��
+     *             3锛氬け鏁堛��
+     *             4锛氬鏍搁��鍥炪��
+     *             9锛氬鏍稿け鏁堛��
+     *             10锛氶個绾︿腑銆�
+     *             11:閭�绾﹀け鏁�
+     */
+    private Integer visitorStatus		;//integer	False
+    private String certAddr		;//string	False	璇佷欢鍦板潃
+    private String certIssuer		;//string	False	鍙戣瘉鏈哄叧
+    private Integer nation	;//integer	False
+    private String birthplace		;//string	False	绫嶈疮
+    private String orderId		;//string	False	璁垮璁板綍鍞竴鏍囪瘑锛岀敤浜庡凡棰勭害鐧昏銆佽瀹㈢绂荤瓑鎿嶄綔
+    private List<AppointmentResInfoResponse> designatedResources;//	object	False	鏉冮檺涓嬪彂鎸囧畾鐨勮祫婧愮偣闆嗗悎
+    private String[] privilegeGroupNames;//	string[]	False	鏉冮檺缁勫悕绉伴泦鍚�
+    private String identityUri		;//string	False	璇佷欢鐓�,鍥剧墖鐨勭浉瀵筓RL
+    private String identitySvrCode		;//string	False	璇佷欢鐓у搴斿浘鐗囨湇鍔″櫒serviceNodes
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserFERPServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
similarity index 97%
rename from server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserFERPServiceImpl.java
rename to server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
index faa89fe..299175e 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserFERPServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -3,12 +3,11 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.DataSyncConfig;
 import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.erp.model.openapi.request.UserUpdateRequest;
 import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
-import com.doumee.core.haikang.model.HKTools;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.respose.*;
@@ -18,12 +17,10 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.ImageBase64Util;
 import com.doumee.dao.business.*;
-import com.doumee.dao.business.join.CompanyJoinMapper;
 import com.doumee.dao.business.join.MemberJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.service.business.ERPSyncService;
 import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
-import com.github.yulichang.query.MPJQueryWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -41,7 +38,7 @@
  */
 @Service
 @Slf4j
-public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl {
+public class HkSyncOrgUserFERPServiceImpl extends HkSyncBaseServiceImpl {
     @Autowired
     private CompanyMapper companyMapper;
 
@@ -61,13 +58,15 @@
     private ERPSyncService erpSyncService;
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private DataSyncConfig dataSyncConfig;
 
     /**
      * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
      */
     @Override
     public   void syncOrgData(){
-        if(Constants.DEALING_HK_ORG){
+        if(Constants.DEALING_HK_ORG || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
             return   ;
         }
         Constants.DEALING_HK_ORG =true;
@@ -258,7 +257,7 @@
      */
     @Override
     public   void syncUserData(){
-        if(Constants.DEALING_HK_USER){
+        if(Constants.DEALING_HK_USER  || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
             return   ;
         }
         Constants.DEALING_HK_USER =true;
@@ -266,7 +265,7 @@
             //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
             List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                     .selectAll(Member.class )
-                    .selectAs(Company::getHkId,Member::getCompanyHkId)
+                    .selectAs(Company::getHkId,Member::getHkOrgId)
                     .isNotNull(Member::getFaceImg)
                     .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                     .eq(Member::getHkStatus,Constants.ZERO)
@@ -426,7 +425,7 @@
             }
             CardInfoRequest cr = new CardInfoRequest();
             cr.setCardNo(m.getCode());
-            cr.setOrgIndexCode(member.getCompanyHkId());
+            cr.setOrgIndexCode(member.getHkOrgId());
             cr.setPersonId(member.getHkId());
             cr.setCardType(m.getType());
             param.getCardList().add(cr);
@@ -648,7 +647,7 @@
 
     private UserAddRequest getUserAddModel(Member c,String path,int type) {
         UserAddRequest model = new UserAddRequest();
-        model.setOrgIndexCode(c.getCompanyHkId());
+        model.setOrgIndexCode(c.getHkOrgId());
         model.setJobNo(c.getCode());
         model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo()));
         model.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+"");
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFHKServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFHKServiceImpl.java
deleted file mode 100644
index faa89fe..0000000
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFHKServiceImpl.java
+++ /dev/null
@@ -1,699 +0,0 @@
-package com.doumee.service.business.impl.hksync.ferp;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.erp.model.openapi.request.UserUpdateRequest;
-import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.haikang.model.HKConstants;
-import com.doumee.core.haikang.model.HKTools;
-import com.doumee.core.haikang.model.param.BaseResponse;
-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.DESUtil;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.ImageBase64Util;
-import com.doumee.dao.business.*;
-import com.doumee.dao.business.join.CompanyJoinMapper;
-import com.doumee.dao.business.join.MemberJoinMapper;
-import com.doumee.dao.business.model.*;
-import com.doumee.service.business.ERPSyncService;
-import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
-import com.github.yulichang.query.MPJQueryWrapper;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-/**
- * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇
- * @author 姹熻箘韫�
- * @date 2023/11/30 15:33
- */
-@Service
-@Slf4j
-public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl {
-    @Autowired
-    private CompanyMapper companyMapper;
-
-    @Autowired
-    private MemberRoleMapper memberRoleMapper;
-    @Autowired
-    private DeviceRoleMapper deviceRoleMapper;
-    @Autowired
-    private DeviceMapper deviceMapper;
-    @Autowired
-    private EmpowerMapper empowerMapper;
-    @Autowired
-    private MemberCardMapper memberCardMapper;
-    @Autowired
-    private MemberJoinMapper memberMapper;
-    @Autowired
-    private ERPSyncService erpSyncService;
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
-
-    /**
-     * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
-     */
-    @Override
-    public   void syncOrgData(){
-        if(Constants.DEALING_HK_ORG){
-            return   ;
-        }
-        Constants.DEALING_HK_ORG =true;
-        try {
-            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
-            String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
-            List<Company> list = companyMapper.selectList(new QueryWrapper<Company>()
-                    .select("*,(select b.hk_id from company b where company.erp_parent_id = b.erp_id limit 1) as hkParentId")
-                    .lambda()
-                    .eq(Company::getHkStatus,Constants.ZERO)
-                    .orderByAsc(Company::getErpDate));
-            if(list ==null || list.size()==0){
-                return;
-            }
-            Date date = new Date();
-            List<OrgEditRequest> editHkList = new ArrayList<>();
-            List<OrgAddRequest> addList = new ArrayList<>();
-            List<Company> updateList = new ArrayList<>();
-            List<Integer> delIds = new ArrayList<>();
-            List<String> delHKIds = new ArrayList<>();
-            for(Company c : list){
-                if(StringUtils.isBlank(c.getErpParentId())){
-                    //濡傛灉鏄痚rp椤跺眰缁勭粐锛岄粯璁ゅ啀娴峰悍鏍圭粍缁囦笅鍒涘缓缁勭粐
-                    c.setHkParentId(rootOrgId);
-                }
-                if(StringUtils.isBlank(c.getHkParentId())){
-                    //濡傛灉涓婄骇娴峰悍閮ㄩ棬杩樻病鍚屾锛屽垯姝ゆ涓嶅鐞�
-                    continue;
-                }
-                if(StringUtils.isBlank(c.getHkId())){
-                    //濡傛灉鏂板鍚屾鏁告摎
-                    if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
-                        //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍
-                        c.setHkStatus(Constants.TWO);
-                        companyMapper.updateById(c);
-                        continue ;
-                    }
-                    OrgAddRequest m = getOrgAddModel(c,rootOrgId);
-                    addList.add(m);
-                    c.setHkId(m.getOrgIndexCode());
-                    updateList.add(c);
-                }else{
-                    if(Constants.equalsInteger(c.getIsdeleted(),Constants.ONE)){
-                        //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎
-                        delIds.add(c.getId());
-                        delHKIds.add(c.getHkId());
-                    }else{
-                        //濡傛灉鏇存柊
-                        editHkList.add(getOrgHkEditModel(c,rootOrgId));
-                    }
-                    updateList.add(c);
-                }
-            }
-            //澶勭悊鍒犻櫎鏁版嵁
-            doHkDeleteOrg(delIds,delHKIds,date);
-            //澶勭悊鏂板鏁版嵁
-            doHkAddOrg(updateList,addList,editHkList);
-        }catch (Exception e){
-            e.printStackTrace();
-        }finally {
-            Constants.DEALING_HK_ORG =false;
-        }
-
-    }
-
-    /**
-     * 澶勭悊鎵归噺鏂板鐨勬捣搴锋暟鎹紝鏇存柊鍚屾鏁版嵁鐘舵��
-     * @param updateList
-     * @param addList
-     */
-    private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList, List<OrgEditRequest> editHkList) {
-        Date date = new Date();
-        if(addList!=null &&addList.size()>0){
-            //澶勭悊鏂板
-            BaseResponse<OrgOrUserAddResponse> result =  HKService.addBatchOrg(addList);
-            if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
-                OrgOrUserAddResponse data = result.getData();
-                if(data.getSuccesses()!=null && data.getSuccesses().size()>0){
-                    //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵��
-                    for(OrgOrUserAddSuccessResponse r :data.getSuccesses()){
-                        Integer index = getCompanyId(updateList,r.getOrgIndexCode());
-                        if(index!=null){
-                            companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                                    .set(Company::getHkStatus,Constants.ONE)
-                                    .set(Company::getHkDate,date)
-                                    .set(Company::getHkId,r.getOrgIndexCode())
-                                    .eq(Company::getId, index) );
-                        }
-                    }
-                }
-            }
-        }
-        if(editHkList!=null){
-            //鎵ц鏇存柊鎿嶄綔
-            List<String> success = new ArrayList<>();
-            List<String> error = new ArrayList<>();
-            for(OrgEditRequest param : editHkList){
-                BaseResponse  result =  HKService.editOrg(param);
-                if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
-                    success.add(param.getOrgIndexCode());
-                }else{
-                    error.add(param.getOrgIndexCode());
-                }
-            }
-            if(success.size()>0){
-                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                        .set(Company::getHkStatus,Constants.ONE)
-                        .set(Company::getHkDate,date)
-                        .in(Company::getHkId, success) );
-            }
-            if(error.size()>0){
-                companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                        .set(Company::getHkStatus,Constants.TWO)
-                        .set(Company::getHkDate,date)
-                        .in(Company::getHkId, error) );
-            }
-        }
-    }
-
-    private Integer getCompanyId(List<Company> updateList, String orgIndexCode) {
-        if(updateList!=null && StringUtils.isNotBlank(orgIndexCode)){
-            for(Company c : updateList){
-                if(StringUtils.equals(c.getHkId(),orgIndexCode)){
-                    return c.getId();
-                }
-            }
-        }
-        return  null;
-    }
-
-    private OrgAddRequest getOrgAddModel(Company c,String rootOrgId) {
-        OrgAddRequest model = new OrgAddRequest();
-        model.setOrgIndexCode(HKConstants.RES_ORG_INDEX+UUID.randomUUID().toString().replace("-",""));
-        model.setOrgName(c.getName()+HKConstants.RES_ORG_NAME_INDEX);
-//        model.setOrgCode(c.getCode());
-        model.setParentIndexCode(c.getHkParentId());
-        return  model;
-
-    }
-    private OrgEditRequest getOrgHkEditModel(Company c,String rootOrgId) {
-        OrgEditRequest model = new OrgEditRequest();
-        model.setOrgIndexCode(c.getHkId());
-        model.setOrgName(c.getName());
-        return  model;
-
-    }
-
-    /**
-     * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭�
-     * @param delIds
-     * @param date
-     */
-    private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds,  Date date) {
-       if(delHkIds.size() == 0){
-           return;
-       }
-        OrgDelRequest request = new OrgDelRequest();
-        request.setIndexCodes( delHkIds.toArray(new String[]{}));
-        BaseResponse<List<OrgUpdateFailureResponse>> result =  HKService.delBatchOrg(request);
-        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
-            List<String> fIds = new ArrayList<>();
-            if(result.getData()!=null){
-                for(OrgUpdateFailureResponse r : result.getData()){
-                    if(!r.getCode().equals("0x00052102")){
-                        //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛
-                        fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
-                    }
-                }
-            }
-            //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
-            companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                    .set(Company::getHkStatus,Constants.ONE)
-                    .set(Company::getHkDate,date)
-                    .set(Company::getHkId,null )
-                    .in(Company::getId, delIds)
-                    .notIn(fIds.size()>0,Company::getHkId, fIds));
-            companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                    .set(Company::getHkStatus,Constants.TWO)
-                    .set(Company::getHkDate,date)
-                    .in(Company::getId, delIds)
-                    .in(fIds.size()>0,Company::getHkId, fIds));
-        }
-    }
-
-    /**
-     * 鍚屾娴峰悍浜哄憳淇℃伅
-     * @return
-     */
-    @Override
-    public   void syncUserData(){
-        if(Constants.DEALING_HK_USER){
-            return   ;
-        }
-        Constants.DEALING_HK_USER =true;
-        try {
-            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
-            List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
-                    .selectAll(Member.class )
-                    .selectAs(Company::getHkId,Member::getCompanyHkId)
-                    .isNotNull(Member::getFaceImg)
-                    .leftJoin(Company.class,Company::getId,Member::getCompanyId)
-                    .eq(Member::getHkStatus,Constants.ZERO)
-                    .orderByAsc(Member::getErpDate));
-            if(list ==null || list.size()==0){
-                return;
-            }
-            Date date = new Date();
-            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
-                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
-            for(Member c : list){
-                dealMemberInfoBiz(c,date,path) ;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }finally {
-            Constants.DEALING_HK_USER =false;
-        }
-    }
-    public static   List<Integer>  getRoleIdByParam(  Member member,DeviceRoleMapper deviceRoleMapper) {
-            //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺
-            List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
-                    .eq(DeviceRole::getType,Constants.TWO)
-                    .exists("(select b.id from member_role b    where b.ROLE_ID = device_role.ID and b.MEMBER_ID="+member.getId()+")"));
-            if(CollectionUtils.isNotEmpty(deviceRoleList)){
-                List<MemberRole> memberRoleList = new ArrayList<>();
-                String ids = "";
-                List<Integer> r = new ArrayList<>();
-                for (int i = 0; i < deviceRoleList.size(); i++) {
-                    DeviceRole deviceRole =deviceRoleList.get(i);
-                    if(i>0){
-                        ids += ",";
-                    }
-                    String doorids =deviceRole.getDoorIds();
-                    if(StringUtils.isNotBlank(doorids)){
-                        String[] ss = doorids.split(",");
-                        try {
-                            for(String s :ss){
-                                r.add(Integer.parseInt(s));
-                            }
-                        }catch (Exception e){
-                            //鑴忔暟鎹笉澶勭悊
-                        }
-                    }
-                }
-                return  r;
-            }
-        return  null;
-    }
-    @Transactional
-    private boolean dealMemberInfoBiz(Member c, Date date, String path) {
-        if( c.getCompanyId() == null){
-            //濡傛灉娌℃湁缁勭粐涓嶅仛澶勭悊
-            return  false;
-        }
-        if(!Constants.equalsInteger(Constants.ONE,c.getIsdeleted()) && StringUtils.isBlank(c.getHkId())){
-            //濡傛灉鏂板鍚屾鏁告摎
-            dealUserHkAddBiz(c,date,path);
-        }else{
-            //濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級
-            dealUserHkEditBiz(c,date,path);
-        }
-        return  false;
-    }
-    private void dealMemberRoleEmpower(Member member ) {
-        //澶勭悊鏂板鐨勪汉鍛樺崱鐗囨暟鎹紙涓庢捣搴峰悓姝ワ級
-        List<MemberCard> cards = dealMemberHkCard(member);
-        dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper);
-    }
-
-    public static void dealMemberRoleEmpowerDo(List<MemberCard> cards,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) {
-        if(cards == null || cards.size() == 0){
-            return;
-        }
-        List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper);
-        if(doorIds==null || doorIds.size() == 0){
-            return;
-        }
-        if(StringUtils.isBlank(member.getFaceImg())){
-            return;
-        }
-
-        List<Integer> deviceIds =new ArrayList<>();//鏂拌澶囩紪鐮侀泦鍚�
-        List<Empower> list = new ArrayList<>();//鏂版巿鏉冭褰曢泦鍚�
-        if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)
-                && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){
-            //濡傛灉鐢ㄦ埛鏄悓姝ユ捣搴锋垚鍔燂紝娣诲姞甯︿笅鍙戞潈闄愶紙鍙鐞嗘柊澧炴垨鑰呯紪杈戠殑锛�
-            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,doorIds));
-            if(deviceList == null || deviceList.size() == 0){
-                return;
-            }
-            for (Device deviceRole:deviceList) {
-                Empower model = new Empower();
-                model.setCreateDate(new Date());
-                model.setMemberId(member.getId());
-                model.setIsdeleted(Constants.ZERO);
-                model.setDeviceId(deviceRole.getId());
-                model.setSendStatus(Constants.ZERO);
-                model.setSendInfo("寰呭悓姝ュ畨闃插钩鍙�");
-                model.setRemark("寰呭悓姝ュ畨闃插钩鍙�");
-                model.setStartTime(member.getStartTime());
-                model.setEndTime(member.getEndTime());
-                //榛樿缁欎簬铏氭嫙鍗�
-                model.setCardNos(Constants.VIRTUAL_CARD_INDEX+member.getId());
-                model.setSendType(Constants.ZERO);
-                //鏍囪鏈�鏂扮殑鎺堟潈璁惧缂栫爜闆嗗悎
-                deviceIds.add(deviceRole.getId());
-                list.add(model);
-            }
-
-        }
-        //寰呯Щ闄ゆ潈闄愮殑璁惧鏁版嵁鎺堟潈璁板綍锛堥拡瀵瑰垹闄ゅ拰鏇存柊涓㈠け鐨勬潈闄愶紝闇�瑕佸悓姝ヤ笅鍙戝垹闄ゆ潈闄愶級
-        empowerMapper.update(null,new UpdateWrapper<Empower>().lambda()
-                .eq(Empower::getMemberId,member.getId())
-                .set(Empower::getIsdeleted,Constants.ONE)
-                .eq(Empower::getIsdeleted,Constants.ZERO)
-                .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds)
-                .set(Empower::getSendStatus,Constants.ZERO));
-        //瀵煎叆鏂板鐨勬巿鏉冧俊鎭�
-        if(list.size()>0){
-            //鐩存帴瑕嗙洊閲嶅鐨勮澶囨潈闄愶紝鐩存帴鍒犻櫎鍗冲彲
-            empowerMapper.delete(new UpdateWrapper<Empower>().lambda()
-                    .eq(Empower::getMemberId,member.getId())
-                    .eq(Empower::getIsdeleted,Constants.ZERO)
-                    .in(Empower::getDeviceId,deviceIds) );
-            empowerMapper.insertBatchSomeColumn(list);
-        }
-    }
-
-    /**
-     * 瀵逛汉鍛樺甫寮�鍗℃暟鎹繘琛岃嚜鍔ㄥ紑鍗℃搷浣�
-     * @param member
-     * @return
-     */
-    private List<MemberCard> dealMemberHkCard(Member member) {
-        List<MemberCard> memberCards = memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
-                .eq(MemberCard::getMemberId,member.getId())
-                .eq(MemberCard::getType,Constants.TWO)
-                .eq(MemberCard::getHkStatus,Constants.ZERO)  );
-        if(memberCards==null ||  memberCards.size()==0){
-            //娌℃湁甯﹀鐞嗙殑鏁版嵁锛岀洿鎺ヨ烦杩�
-            return  getNormalCardList(member,memberCardMapper);
-        }
-
-        List<Integer> allCodes = new ArrayList<>();
-        List<String> doneCodes = new ArrayList<>();
-        CardBingdingRequest param = new CardBingdingRequest();
-        if(member.getStartTime() !=null && member.getEndTime()!=null){
-            param.setStartDate(DateUtil.getISO8601Timestamp(member.getStartTime()));
-            param.setEndDate(DateUtil.getISO8601Timestamp(member.getEndTime()));
-        }
-        param.setCardList(new ArrayList<>());
-        for(MemberCard m : memberCards){
-            allCodes.add(m.getId());
-            if(StringUtils.isBlank(m.getCode())){
-                continue;
-            }
-            CardInfoRequest cr = new CardInfoRequest();
-            cr.setCardNo(m.getCode());
-            cr.setOrgIndexCode(member.getCompanyHkId());
-            cr.setPersonId(member.getHkId());
-            cr.setCardType(m.getType());
-            param.getCardList().add(cr);
-        }
-
-        //澶勭悊鏂板鏁版嵁
-        BaseResponse<List<CardInfoResponse>> result =  HKService.cardBingding(param);
-        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
-            if(result.getData()!=null ){
-                for(CardInfoResponse r : result.getData()){
-                    doneCodes.add(r.getCardNo());
-                }
-            }
-        }
-        if(doneCodes.size()>0){
-            memberCardMapper.update(null,new UpdateWrapper<MemberCard>().lambda()
-                    .eq(MemberCard::getMemberId,member.getId())
-                    .eq(MemberCard::getHkStatus,Constants.ZERO)
-                    .set(MemberCard::getHkStatus,Constants.ONE)
-                    .set(MemberCard::getHkDate,new Date())
-                    .set(MemberCard::getRemark,"寮�鍗℃垚鍔�")
-                    .in(MemberCard::getCode,doneCodes));
-        }
-        memberCardMapper.update(null,new UpdateWrapper<MemberCard>().lambda()
-                .eq(MemberCard::getMemberId,member.getId())
-                .eq(MemberCard::getHkStatus,Constants.ZERO)
-                .set(MemberCard::getHkStatus,Constants.TWO)
-                .set(MemberCard::getRemark,"寮�鍗″け璐�")
-                .set(MemberCard::getHkDate,new Date())
-                .notIn(doneCodes.size()>0,MemberCard::getCode,doneCodes)
-                .in(MemberCard::getId,allCodes));
-
-       return   getNormalCardList(member,memberCardMapper);
-    }
-
-    public static   List<MemberCard> getNormalCardList(Member member,MemberCardMapper memberCardMapper) {
-       return memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda()
-                .eq(MemberCard::getMemberId,member.getId())
-                .eq(MemberCard::getType,Constants.TWO)
-                .eq(MemberCard::getStatus,Constants.MemberCard.normal)
-                .eq(MemberCard::getHkStatus,Constants.ONE)  );
-
-    }
-
-
-    /**
-     *  濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級
-     * @param c
-     * @param date
-     * @param path
-     */
-    private void dealUserHkEditBiz(Member c, Date date, String path) {
-        c.setHkStatus(Constants.ONE);
-        if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
-            //澶勭悊鍒犻櫎鏁版嵁锛堝垹闄や箣鍓嶄笅鍙戠殑娴峰悍浜哄憳淇℃伅锛�
-            boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date);
-            c.setHkStatus(r?Constants.ONE:Constants.TWO);
-            c.setRemark(r?null:"鍒犻櫎娴峰悍浜哄憳淇℃伅澶辫触锛�");
-            c.setIsdeleted(r? Constants.ONE: Constants.ZERO);//鍒犻櫎澶辫触锛屾仮澶嶆暟鎹�
-            //鍒犻櫎鎵�鏈夌粦瀹氱殑鍗$墖淇℃伅
-            memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId()));
-        }else{
-            //澶勭悊淇敼鏁版嵁锛屽苟涓旀洿鏂颁汉鑴�
-            UserAddRequest  addHkModel = getUserAddModel(c,path,1);//淇敼
-            //澶勭悊鏂板鏁版嵁
-            BaseResponse result =  HKService.editUser(addHkModel);
-            if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){
-                if(StringUtils.isNotBlank(c.getFaceImg())){
-                    //濡傛灉鏈変汉鑴哥収鐗囷紝澶勭悊浜鸿劯鐓х墖鍚屾
-                    String faceid = dealMemberFace(c,path);
-                    if(StringUtils.isBlank(faceid)){
-                        noticeErpFail(c,Constants.ZERO,"浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒");
-                        c.setHkStatus(Constants.TWO);
-                        c.setRemark("浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒锛�"+result.getMsg());
-                    }else{
-                        c.setFaceId(faceid);
-                    }
-                }
-            }else{
-                noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒");
-                c.setHkStatus(Constants.TWO);
-                c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴鏇存柊澶辫触锛岃淇鍚庨噸璇曪紒锛�"+(result!=null?result.getCode()+result.getMsg():""));
-            }
-            //閲嶆柊涓嬪彂鏉冮檺鏁版嵁
-            dealMemberRoleEmpower(c);
-        }
-        c.setHkDate(date);
-        memberMapper.updateById(c);
-    }
-
-    /**
-     * 鏂扮敤鎴峰悓姝ュ埌娴峰悍骞冲彴
-     * @param c
-     * @param date
-     * @param path
-     * @return
-     */
-    private boolean dealUserHkAddBiz(Member c, Date date, String path) {
-        if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
-            //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍
-            c.setHkStatus(Constants.TWO);
-            c.setRemark("鏈悓姝ユ暟鎹紝鐩存帴鍒犻櫎");
-            c.setEditDate(date);
-            c.setErpId(c.getErpOrgId()+"_"+UUID.randomUUID().toString());
-            memberMapper.updateById(c);
-            return  false;
-        }
-        UserAddRequest addHkModel = getUserAddModel(c,path,0);//鏂板
-        if(addHkModel == null){
-            //濡傛灉浜鸿劯鏁版嵁涓嶆纭紝涓嬭浇澶辫触绛夊師鍥�
-            noticeErpFail(c,Constants.ZERO,"浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�");
-            c.setHkStatus(Constants.TWO);
-            c.setRemark("浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�");
-            memberMapper.updateById(c);
-            return  false;
-        }
-        //澶勭悊鏂板鏁版嵁
-        BaseResponse<UserAddResponse> result =  HKService.addUser(addHkModel);
-        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
-            c.setFaceId(result.getData().getFaceId());
-            c.setHkStatus(Constants.ONE);
-            c.setHkId(addHkModel.getPersonId());
-            memberMapper.updateById(c);
-            dealMemberRoleEmpower(c);
-            return  true;
-        }else{
-            noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg());
-            c.setHkStatus(Constants.TWO);
-            c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+(result!=null?result.getMsg():""));
-            memberMapper.updateById(c);
-            return  false;
-        }
-    }
-
-    /**
-     * 澶勭悊鏂板鎴栬�呬慨鏀逛汉鑴镐俊鎭�
-     * @param c
-     * @param path
-     * @return
-     */
-    private String dealMemberFace(Member c,String path) {
-        if(StringUtils.isBlank(c.getFaceId())){
-            BaseResponse<FaceAddOrEditesponse> response = HKService.addFace(getFaceAddModel(c,path));
-            if(response !=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)&& response.getData()!=null ){
-                return  response.getData().getFaceId();
-            }
-        }else{
-            BaseResponse response = HKService.editFace(getFaceUpdateModel(c,path));
-            if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) ){
-                return  c.getFaceId();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * 閫氱煡erp绯荤粺锛屼汉鍛樹笅鍙戝悓姝ヤ俊鎭姸鎬佸け璐�
-     * @param c
-     * @param type
-     * @param s
-     */
-    private void noticeErpFail(Member c, int type, String s) {
-        UserFailRequest r = new UserFailRequest();
-        r.setUserId(c.getErpId());
-        r.setInfo(s);
-        r.setType(type);
-        //閫氱煡ERP浜鸿劯鏁版嵁涓嶆纭�
-        erpSyncService.noticeUserFail(r);
-    }
-
-    /**
-     * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭�
-     * @param id
-     * @param date
-     */
-    private boolean doHkDeleteUser(Integer  id,String delHkIds,  Date date ) {
-        if(StringUtils.isBlank(delHkIds)){
-            return true;
-        }
-        UserDelRequest request = new UserDelRequest();
-        request.setPersonIds(new String[]{delHkIds});
-        BaseResponse<List<UserDelResponse>> result =  HKService.delBatchUser(request);
-        if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
-            List<String> fIds = new ArrayList<>();
-            //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
-            if(result.getData()!=null && result.getData().size()>0){
-                log.info("娴峰悍鍒犻櫎鐢ㄦ埛澶辫触锛�==============="+result.getData().get(0).getPersonId());
-                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
-                        .set(Member::getHkStatus,Constants.TWO)//鍚屾澶辫触
-                        .set(Member::getHkDate,date)
-                        .in(Member::getId, id));
-            }else{
-                //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
-                memberMapper.update(null,new UpdateWrapper<Member>().lambda()
-                        .set(Member::getHkStatus,Constants.ONE)//鍚屾鎴愬姛
-                        .set(Member::getHkDate,date)
-                        .in(Member::getId, id));
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * 鍒犻櫎浜哄憳鎵�鏈夎澶囦笂鐨勬潈闄愪俊鎭�
-     * @param userId
-     * @param allDevice
-     */
-    private void delUserHkRolle(String userId,List<Device> allDevice) {
-        //鍒涘缓浠诲姟
-        String taskId = hkTaskAddtion();
-        //
-       if(taskId!=null){
-           //鍒犻櫎鎵�鏈夎澶囦笂鐨勬潈闄�
-           addTaskDataAllDel(userId,taskId,allDevice);
-           startTask(taskId);
-       }
-    }
-
-    private UserAddRequest getUserAddModel(Member c,String path,int type) {
-        UserAddRequest model = new UserAddRequest();
-        model.setOrgIndexCode(c.getCompanyHkId());
-        model.setJobNo(c.getCode());
-        model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo()));
-        model.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+"");
-        model.setPersonId(type == 0 ?UUID.randomUUID().toString().replace("-", ""):c.getHkId());
-        model.setGender(Constants.formatIntegerNum(c.getSex())+"");
-        model.setPersonName(c.getName());
-        if(type== 0 && StringUtils.isNotBlank(c.getFaceImg())){
-            model.setFaces(new ArrayList<>());
-            UserAddFaceRequest face = new UserAddFaceRequest();
-            String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
-            if(imageBase== null){
-                //浜鸿劯鏁版嵁涓嶆纭紝
-                return  null;
-            }
-            face.setFaceData(imageBase);
-            model.getFaces().add(face);
-
-        }
-        return  model;
-    }
-    private FaceAddRequest getFaceAddModel(Member c,String path) {
-        FaceAddRequest model = new FaceAddRequest();
-        model.setPersonId(c.getHkId());
-        if(StringUtils.isNotBlank(c.getFaceImg())){
-            String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
-            if(imageBase == null){
-                //浜鸿劯鏁版嵁涓嶆纭紝
-                return  null;
-            }
-            model.setFaceData(imageBase);
-        }
-        return  model;
-    }
-    private FaceEditRequest getFaceUpdateModel(Member c,String path) {
-        FaceEditRequest model = new FaceEditRequest();
-        model.setFaceId(c.getFaceId());
-        if(StringUtils.isNotBlank(c.getFaceImg())){
-            String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
-            if(imageBase == null){
-                //浜鸿劯鏁版嵁涓嶆纭紝
-                return  null;
-            }
-            model.setFaceData(imageBase);
-        }
-        return  model;
-    }
-
-}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
new file mode 100644
index 0000000..9602356
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
@@ -0,0 +1,273 @@
+package com.doumee.service.business.impl.hksync.fhk;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.DataSyncConfig;
+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.BaseListPageResponse;
+import com.doumee.core.haikang.model.param.BaseResponse;
+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.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.model.*;
+import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+@Slf4j
+public class HkSyncOrgUserForHKServiceImpl extends HkSyncBaseServiceImpl {
+    @Autowired
+    private CompanyMapper companyMapper;
+    @Autowired
+    private MemberMapper memberMapper;
+
+    @Autowired
+    private DataSyncConfig dataSyncConfig;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    /**
+     * 鍚屾娴峰悍缁勭粐淇℃伅鍒颁笟鍔$郴缁�
+     */
+    @Override
+    @Transactional
+    public   void syncOrgData(){
+        if(Constants.DEALING_HK_ORG){
+            return ;
+        }
+        Constants.DEALING_HK_ORG =true;
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.hk){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+            }
+            LoginUserInfo user =  (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+            OrgUserListRequest param = new OrgUserListRequest();
+            //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+
+            List<Company>  allHkList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new OrgUserListRequest();
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<BaseListPageResponse<OrgInfoResponse>> response = HKService.orgAllList(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                BaseListPageResponse<OrgInfoResponse> r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(getNewOrgModelBYList(r.getList(),user.getId()));
+                }
+                curPage++;
+            }
+            if(allHkList .size() == 0){
+                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍缁勭粐淇℃伅锛�");
+            }
+            companyMapper.delete(new UpdateWrapper<>());//娓呯┖鍘熸湁鏁版嵁
+            companyMapper.insertBatchSomeColumn(allHkList);//鎻掑叆鏂版暟鎹�
+        }catch (BusinessException e){
+            throw  e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+        }finally {
+            Constants.DEALING_HK_ORG =false;
+        }
+    }
+
+    private List<Company> getNewOrgModelBYList(List<OrgInfoResponse> list, Integer userid) {
+        List<Company> newList = new ArrayList<>();
+        if(list == null || list.size()==0){
+            return  newList;
+        }
+        for(OrgInfoResponse model :list){
+            Company c = new Company();
+            c.setHkId(model.getOrgIndexCode());
+            c.setCode(model.getOrgNo());
+            c.setName(model.getOrgName());
+            c.setHkStatus(Constants.ONE);
+            c.setHkDate(new Date());
+            c.setIsdeleted(Constants.ZERO);
+            c.setCreateDate(c.getHkDate());
+            c.setEditDate(DateUtil.getISO8601DateByStr(model.getUpdateTime()));
+            c.setCreator(userid);
+            c.setStatus(Constants.ZERO);
+            c.setType(Constants.ONE);
+            if(!StringUtils.equals(model.getOrgIndexCode(),systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode())){
+                c.setHkParentId(model.getParentOrgIndexCode());
+            }
+            newList.add(c);
+        }
+        return newList;
+    }
+
+    /**
+     * 鍚屾娴峰悍浜哄憳淇℃伅
+     * @return
+     */
+    @Override
+    public   void syncUserData(){
+        if(Constants.DEALING_HK_USER){
+            return   ;
+        }
+        Constants.DEALING_HK_USER =true;
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.hk){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+            }
+            LoginUserInfo user =  (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+            List<Company> companies = companyMapper.selectList(new QueryWrapper<>());
+            if(companies == null || companies.size() == 0){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇峰厛鍚屾浼佷笟缁勭粐淇℃伅~");
+            }
+            OrgUserListRequest param = new OrgUserListRequest();
+            //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            List<Member>  allHkList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new OrgUserListRequest();
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<BaseListPageResponse<UserInfoResponse>> response = HKService.userAllList(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                BaseListPageResponse<UserInfoResponse> r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(getNewUserModelBYList(r.getList(),companies,user.getId()));
+                }
+                curPage++;
+            }
+            if(allHkList .size() == 0){
+                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍缁勭粐淇℃伅锛�");
+            }
+            memberMapper.delete(new UpdateWrapper<>());//娓呯┖鍘熸湁鏁版嵁
+            memberMapper.insertBatchSomeColumn(allHkList);//鎻掑叆鏂版暟鎹�
+        }catch (BusinessException e){
+            throw  e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+        }finally {
+            Constants.DEALING_HK_USER =false;
+        }
+    }
+
+
+    private List<Member> getNewUserModelBYList(List<UserInfoResponse> list, List<Company> companies,Integer userid) {
+        List<Member> newList = new ArrayList<>();
+        if(list == null || list.size()==0){
+            return  newList;
+        }
+        for(UserInfoResponse model :list){
+            Member c = new Member();
+            String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,model.getCertificateNo());
+            c.setIdcardNo(encryptIdNo);
+            c.setIdcardDecode(Constants.getTuominStr(model.getCertificateNo()));
+            c.setIdcardType(getIdcardTypeByHk(model.getCertificateType()));
+            c.setCode(model.getJobNo());
+            c.setPhone(model.getPhoneNo());
+            c.setHkId(model.getPersonId());
+            c.setName(model.getPersonName());
+            c.setHkStatus(Constants.ONE);
+            c.setHkDate(new Date());
+            c.setCanVisit(Constants.ZERO);
+            c.setHighCheckor(Constants.ZERO);
+            c.setSex(model.getGender());
+            c.setIsdeleted(Constants.ZERO);
+            c.setCreateDate(c.getHkDate());
+            c.setEditDate(DateUtil.getISO8601DateByStr(model.getUpdateTime()));
+            c.setCreator(userid);
+            c.setStatus(Constants.ZERO);
+            c.setType(Constants.TWO);
+            c.setCompanyId(getCompanyId(companies,model.getOrgIndexCode()));
+            if(model.getPersonPhoto()!=null && model.getPersonPhoto().size()>0){
+                c.setFaceId(model.getPersonPhoto().get(0).getPersonPhotoIndexCode());
+                c.setFaceImg(HKConstants.IMG_INDEX+model.getPersonPhoto().get(0).getPicUri());
+                c.setFaceServerIndexCode(model.getPersonPhoto().get(0).getServerIndexCode());
+            }
+            newList.add(c);
+        }
+        return newList;
+    }
+
+    private Integer getCompanyId(List<Company> companies, String orgIndexCode) {
+        if(companies == null){
+            return  null;
+        }
+        for(Company c : companies){
+            if(StringUtils.equals(c.getHkId(),orgIndexCode)){
+                return c.getId();
+            }
+        }
+        return null;
+    }
+
+    /**
+     *   //璇佷欢绫诲瀷111:韬唤璇�414:鎶ょ収113:鎴峰彛绨�335:椹鹃┒璇�131:宸ヤ綔璇�133:瀛︾敓璇�990:鍏朵粬 ;
+     *  // 璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収
+     * @param certificateType
+     * @return
+     */
+    private Integer getIdcardTypeByHk(Integer certificateType) {
+        if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.SHENFENZHENG.getKey())){
+            return 0;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.HUZHAO.getKey())){
+            return 2;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.JIASHIZHENG.getKey())){
+            return 3;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.XUESHENGZHENG.getKey())){
+            return 4;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.GONGXUOZHENG.getKey())){
+            return 5;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.GONGXUOZHENG.getKey())){
+            return 6;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.HUKOUBEN.getKey())){
+            return 7;
+        }else if(Constants.equalsInteger(certificateType,HKConstants.CertificateType.QITA.getKey())){
+            return 8;
+        }
+        return  null;
+    }
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
new file mode 100644
index 0000000..d8251d0
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
@@ -0,0 +1,189 @@
+package com.doumee.service.business.impl.hksync.fhk;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.DataSyncConfig;
+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.BaseListPageResponse;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.AppointmentListRequest;
+import com.doumee.core.haikang.model.param.request.OrgUserListRequest;
+import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
+import com.doumee.core.haikang.model.param.respose.OrgInfoResponse;
+import com.doumee.core.haikang.model.param.respose.UserInfoResponse;
+import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CompanyMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.VisitsMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Visits;
+import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鎷夊彇娴峰悍璁垮淇℃伅閫氳繃姝ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+@Slf4j
+public class HkSyncVistFromHKServiceImpl extends HkSyncBaseServiceImpl {
+    @Autowired
+    private CompanyMapper companyMapper;
+    @Autowired
+    private MemberMapper memberMapper;
+    @Autowired
+    private VisitsMapper visitsMapper;
+    @Autowired
+    private DataSyncConfig dataSyncConfig;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+
+    /**
+     * 鍚屾娴峰悍缁勭粐淇℃伅鍒颁笟鍔$郴缁�
+     */
+    @Override
+    @Transactional
+    public   void syncVistAppointData(){
+        if(Constants.DEALING_FROM_HK_VISIT){
+            return ;
+        }
+        Constants.DEALING_FROM_HK_VISIT =true;
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getVisitorDataOrigin()) != DataSyncConfig.origin.hk){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佹捣搴锋暟鎹悓姝ユ搷浣渵");
+            }
+            AppointmentListRequest param =  new AppointmentListRequest();
+            //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            //鏌ヨ浠婂ぉ鐨�
+            param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp( Utils.Date.getStart(new Date())));
+
+            List<Visits>  allHkList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<BaseListPageResponse<AppointmentInfoResponse>> response = HKService.appointmentRecords(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                BaseListPageResponse<AppointmentInfoResponse> r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(getNewVisitModelBYList(r.getList()));
+                }
+                curPage++;
+            }
+            if(allHkList .size() == 0){
+                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍缁勭粐淇℃伅锛�");
+            }
+            //娓呯┖鍘熸湁鏁版嵁
+            visitsMapper.delete(new UpdateWrapper<Visits>().lambda().apply("to_days(create_date)=to_days(now())" ));
+            visitsMapper.insertBatchSomeColumn(allHkList);//鎻掑叆鏂版暟鎹�
+        }catch (BusinessException e){
+            throw  e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+        }finally {
+            Constants.DEALING_FROM_HK_VISIT =false;
+        }
+    }
+
+    private List<Visits> getNewVisitModelBYList(List<AppointmentInfoResponse> list ) {
+        List<Visits> newList = new ArrayList<>();
+        if(list == null || list.size()==0){
+            return  newList;
+        }
+        for(AppointmentInfoResponse model :list){
+            Visits c = new Visits();
+            c.setHkId(model.getAppointRecordId());
+            c.setCode(model.getQRCode());
+            c.setName(model.getVisitorName());
+            c.setHkStatus(Constants.ONE);
+            c.setHkDate(new Date());
+            c.setIsdeleted(Constants.ZERO);
+            c.setCreateDate(c.getHkDate());
+            c.setStarttime(DateUtil.getISO8601DateByStr(model.getVisitStartTime()));
+            c.setEndtime(DateUtil.getISO8601DateByStr(model.getVisitEndTime()));
+            c.setReason(model.getVisitPurpose());
+            c.setStatus(model.getVisitorStatus());
+            c.setType(Constants.ONE);
+            if(StringUtils.isNotBlank(model.getReceptionistId())){
+                //琚闂汉
+                Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,model.getReceptionistId()).last("limit 1"));
+                c.setReceptMemberId(member!=null?member.getId():null);
+            }
+            c.setCompanyName(model.getVisitorWorkUnit());
+            c.setPhone(model.getPhoneNo());
+            c.setCarNos(model.getPlateNo());
+            if(StringUtils.isNotBlank(model.getCertificateNo())){
+                //琚闂汉
+                Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+                        .eq(Member::getType,Constants.ONE)
+                        .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, model.getCertificateNo()))
+                        .last("limit 1"));
+                if(member == null){
+                    member = new Member();
+                    member.setName(model.getVisitorName());
+                    member.setPhone(model.getPhoneNo());
+                    member.setSex(model.getGender());
+                    member.setIsdeleted(Constants.ZERO);
+                    member.setType(Constants.ONE);
+                    member.setVisitCompanyName(model.getVisitorWorkUnit());
+                    member.setCreateDate(new Date());
+                    if(StringUtils.isNotBlank(model.getPicUri())){
+                        member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri());
+                        member.setFaceServerIndexCode(model.getSvrIndexCode());
+                    }
+                    memberMapper.insert(member);
+                }else{
+                    member.setIsdeleted(Constants.ZERO);
+                    member.setEditDate(new Date());
+                    member.setName(model.getVisitorName());
+                    member.setPhone(model.getPhoneNo());
+                    member.setSex(model.getGender());
+                    member.setVisitCompanyName(model.getVisitorWorkUnit());
+                    if(StringUtils.isNotBlank(model.getPicUri())){
+                        member.setFaceServerIndexCode(model.getSvrIndexCode());
+                        member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri());
+                    }
+                    memberMapper.updateById(member);
+                }
+                c.setMemberId(member.getId());
+
+            }
+            newList.add(c);
+        }
+        return newList;
+    }
+
+
+}

--
Gitblit v1.9.3