From 0aa2dd71fa4b989838f89aff2cac82950a70097f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 22 八月 2024 18:10:48 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 admin/src/views/business/deviceBroadcast.vue                                                                                  |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java                                   |   10 
 admin/src/views/business/deviceLed.vue                                                                                        |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java                                  |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java                                       |    2 
 admin/src/views/business/approvalConfiguration.vue                                                                            |    3 
 admin/src/views/business/deviceRole_f.vue                                                                                     |    2 
 admin/src/views/business/memberCard.vue                                                                                       |   20 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java                                  |   10 
 admin/src/components/business/OperaPlatformApproveTemplWindow.vue                                                             |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java                                |    5 
 admin/src/views/vehicle/cars.vue                                                                                              |   35 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java   |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                                    |    6 
 admin/src/components/business/cardOpeningRecord.vue                                                                           |    4 
 admin/src/views/vehicle/parkBook.vue                                                                                          |   60 ++--
 server/visits/admin_timer/src/main/java/com/doumee/api/HkUsersTimerController.java                                            |    4 
 admin/src/views/task/visSubDetail.vue                                                                                         |    7 
 admin/src/views/vehicle/parks.vue                                                                                             |    4 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java                                      |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java                           |   11 
 admin/src/views/business/deviceRole.vue                                                                                       |    2 
 admin/src/views/operation/serviceCar/apprConfig.vue                                                                           |    2 
 admin/src/views/business/approvalReport.vue                                                                                   |    2 
 server/system_timer/src/main/resources/bootstrap.yml                                                                          |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java                                       |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java    |    5 
 admin/src/views/business/device.vue                                                                                           |    2 
 admin/src/views/business/internalCompany.vue                                                                                  |    4 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java                                   |   14 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java                |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java           |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java                          |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java |  337 ++++++++++++++++++++++++++++++
 admin/src/views/business/internalMember.vue                                                                                   |   14 
 35 files changed, 492 insertions(+), 119 deletions(-)

diff --git a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
index 902bf73..6ff22bc 100644
--- a/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
+++ b/admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -353,6 +353,8 @@
                     companyName: i.companyName
                   }
                 })
+              }else{
+                item.objIds = []
               }
             })
             this.apprList = arr
diff --git a/admin/src/components/business/cardOpeningRecord.vue b/admin/src/components/business/cardOpeningRecord.vue
index 1fc2444..132525f 100644
--- a/admin/src/components/business/cardOpeningRecord.vue
+++ b/admin/src/components/business/cardOpeningRecord.vue
@@ -36,8 +36,8 @@
             <el-table-column prop="memberName" label="鍛樺伐濮撳悕" min-width="100px"></el-table-column>
             <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
             <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-            <el-table-column prop="createDate" label="寮�鍗℃椂闂�" min-width="100px"></el-table-column>
-            <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+            <el-table-column prop="createDate" label="寮�鍗℃椂闂�" min-width="140px"></el-table-column>
+            <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
             <el-table-column
                 label="鎿嶄綔"
                 min-width="120"
diff --git a/admin/src/views/business/approvalConfiguration.vue b/admin/src/views/business/approvalConfiguration.vue
index c295e5a..f894e52 100644
--- a/admin/src/views/business/approvalConfiguration.vue
+++ b/admin/src/views/business/approvalConfiguration.vue
@@ -316,6 +316,7 @@
       this.apprList.forEach((item, index) => {
         if (i === index) {
           item.active = true
+          console.log("====================",item.objIds)
           if (item.objIds && item.objIds.length > 0) {
             const objIds = item.objIds.map(i => {
               return `${i.id}-${i.name}${i.companyName ? '-' + i.companyName : ''}`
@@ -343,6 +344,8 @@
                   companyName: i.companyName
                 }
               })
+            }else{
+              item.objIds = []
             }
           })
           this.apprList = arr
diff --git a/admin/src/views/business/approvalReport.vue b/admin/src/views/business/approvalReport.vue
index b5b2c9f..cb2cfef 100644
--- a/admin/src/views/business/approvalReport.vue
+++ b/admin/src/views/business/approvalReport.vue
@@ -330,6 +330,8 @@
                   companyName: i.companyName
                 }
               })
+            }else{
+              item.objIds = []
             }
           })
           this.apprList = arr
diff --git a/admin/src/views/business/device.vue b/admin/src/views/business/device.vue
index 1377701..e5d3caa 100644
--- a/admin/src/views/business/device.vue
+++ b/admin/src/views/business/device.vue
@@ -61,7 +61,7 @@
                         </el-switch>
                     </template>
                 </el-table-column>
-                <el-table-column prop="no" label="璁惧鍙�"></el-table-column>
+                <el-table-column prop="no" width="200px" label="璁惧鍙�"></el-table-column>
             </el-table>
             <pagination
                 @size-change="handleSizeChange"
diff --git a/admin/src/views/business/deviceBroadcast.vue b/admin/src/views/business/deviceBroadcast.vue
index c5d62e2..d0e5c49 100644
--- a/admin/src/views/business/deviceBroadcast.vue
+++ b/admin/src/views/business/deviceBroadcast.vue
@@ -2,7 +2,7 @@
     <TableLayout :permissions="['business:device:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍚嶇О" prop="name">
+            <el-form-item title="鍚嶇О" prop="name">
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <section>
diff --git a/admin/src/views/business/deviceLed.vue b/admin/src/views/business/deviceLed.vue
index b8173fc..3ab4c39 100644
--- a/admin/src/views/business/deviceLed.vue
+++ b/admin/src/views/business/deviceLed.vue
@@ -2,7 +2,7 @@
     <TableLayout :permissions="['business:device:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍚嶇О" prop="name">
+            <el-form-item title="鍚嶇О" prop="name">
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <section>
diff --git a/admin/src/views/business/deviceRole.vue b/admin/src/views/business/deviceRole.vue
index c2c96cb..97d0395 100644
--- a/admin/src/views/business/deviceRole.vue
+++ b/admin/src/views/business/deviceRole.vue
@@ -2,7 +2,7 @@
     <TableLayout :permissions="['business:devicerole:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="110px" inline>
-            <el-form-item label="闂ㄧ鐐瑰垎缁勫悕绉�" prop="name">
+            <el-form-item title="闂ㄧ鐐瑰垎缁勫悕绉�" prop="name">
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ラ棬绂佺偣鍒嗙粍鍚嶇О" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <section>
diff --git a/admin/src/views/business/deviceRole_f.vue b/admin/src/views/business/deviceRole_f.vue
index 7b4273f..dde4a02 100644
--- a/admin/src/views/business/deviceRole_f.vue
+++ b/admin/src/views/business/deviceRole_f.vue
@@ -2,7 +2,7 @@
     <TableLayout :permissions="['business:devicerole:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="闂ㄧ缁勫悕绉�" prop="name">
+            <el-form-item title="闂ㄧ缁勫悕绉�" prop="name">
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ラ棬绂佺粍鍚嶇О" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <section>
diff --git a/admin/src/views/business/internalCompany.vue b/admin/src/views/business/internalCompany.vue
index b797cdb..60279db 100644
--- a/admin/src/views/business/internalCompany.vue
+++ b/admin/src/views/business/internalCompany.vue
@@ -20,7 +20,7 @@
                <li><el-button type="primary" v-permissions="['business:company:create']" @click="$refs.OperaInternalCompanyWindow.open('鏂板缓浼佷笟',null,null)">鏂板缓</el-button></li>
               <li><el-button @click="sort('top')" :loading="sorting" icon="el-icon-sort-up" v-permissions="['business:company:sort']">涓婄Щ</el-button></li>
               <li><el-button @click="sort('bottom')" :loading="sorting" icon="el-icon-sort-down" v-permissions="['business:company:sort']">涓嬬Щ</el-button></li>
-              <!--<li><el-button type="primary"  v-permissions="['business:company:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>-->
+              <li><el-button type="primary"  v-permissions="['business:company:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>
             </ul>
             <el-table
                 v-loading="isWorking.search"
@@ -108,7 +108,7 @@
     },
     // 鍚屾淇℃伅
     async synchronous () {
-      this.$dialog.actionConfirm('鎿嶄綔纭鎻愰啋', '鎮ㄧ‘璁ゅ悓姝ュ叏閮ㄤ俊鎭悧锛�')
+      this.$dialog.actionConfirm('璇ユ搷浣滃皢绯荤粺娓呯┖宸叉湁缁勭粐淇℃伅锛屾偍纭鍚屾鍏ㄩ儴淇℃伅鍚楋紵', '鎿嶄綔纭鎻愰啋')
         .then(() => {
           this.loading = true
           companySync({})
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index 747d2d7..12dce90 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -45,16 +45,14 @@
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
             <ul class="toolbar" v-permissions="['business:member:delete','business:member:create,business:empower:create']">
-<!--
-                <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>
--->
-                <li><el-button type="primary" @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐',null,department,searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
+              <li><el-button type="primary" v-permissions="['business:member:sync']" :loading="loading" @click="synchronous()">鍚屾</el-button></li>
+              <li><el-button type="primary" @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐',null,department,searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
               <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆',searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
-                <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
-                <li><el-button type="primary" v-permissions="['business:empower:create']"  @click="startEmpowerBatch()"  icon="el-icon-plus">涓嬪彂鎺堟潈</el-button></li>
-             <li style="float: right">
+              <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
+              <li><el-button type="primary" v-permissions="['business:empower:create']"  @click="startEmpowerBatch()"  icon="el-icon-plus">涓嬪彂鎺堟潈</el-button></li>
+              <li style="float: right">
                 <el-checkbox style="font-size: 12px"  label="1" v-model="searchForm.includeChild" key="1"  @change="search" >鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
-             </li>
+              </li>
             </ul>
             <el-table
                 v-loading="isWorking.search"
diff --git a/admin/src/views/business/memberCard.vue b/admin/src/views/business/memberCard.vue
index 8dae20d..9391141 100644
--- a/admin/src/views/business/memberCard.vue
+++ b/admin/src/views/business/memberCard.vue
@@ -2,20 +2,20 @@
     <TableLayout :permissions="['business:membercard:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="鍗″彿" prop="code">
-                <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ュ崱鍙�" @keypress.enter.native="search"></el-input>
+            <el-form-item title="鍗″彿" prop="code">
+                <el-input v-model="searchForm.code" placeholder="鍗″彿" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyword">
-                <el-input v-model="searchForm.keyword" placeholder="璇疯緭鍏ュ憳宸ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+            <el-form-item title="濮撳悕/鎵嬫満鍙�" prop="keyword">
+                <el-input v-model="searchForm.keyword" placeholder="鍛樺伐濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="鐢ㄦ埛绫诲瀷" prop="memberType">
-                <el-select v-model="searchForm.memberType" placeholder="璇烽�夋嫨">
+            <el-form-item title="鐢ㄦ埛绫诲瀷" prop="memberType">
+                <el-select v-model="searchForm.memberType" placeholder="鐢ㄦ埛绫诲瀷">
                     <el-option label="鍔冲姟浜哄憳" :value="0"></el-option>
                     <el-option label="鍐呴儴鍛樺伐" :value="2"></el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
+            <el-form-item title="鐘舵��" prop="status">
+                <el-select v-model="searchForm.status" placeholder="鐘舵��">
                     <el-option label="绂佺敤" :value="0"></el-option>
                     <el-option label="鍚敤" :value="1"></el-option>
                     <el-option label="閫�鍗�" :value="2"></el-option>
@@ -60,8 +60,8 @@
                 <el-table-column prop="memberName" label="鍛樺伐濮撳悕" min-width="100px"></el-table-column>
                 <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
                 <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="createDate" label="寮�鍗℃椂闂�" min-width="100px"></el-table-column>
-                <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="寮�鍗℃椂闂�" min-width="140px"></el-table-column>
+                <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="140px"></el-table-column>
                 <el-table-column
                     label="鎿嶄綔"
                     min-width="120"
diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue
index daef69a..a26b625 100644
--- a/admin/src/views/operation/serviceCar/apprConfig.vue
+++ b/admin/src/views/operation/serviceCar/apprConfig.vue
@@ -349,6 +349,8 @@
                   companyName: i.companyName
                 }
               })
+            }else{
+              item.objIds = []
             }
           })
           this.apprList = arr
diff --git a/admin/src/views/task/visSubDetail.vue b/admin/src/views/task/visSubDetail.vue
index d8e4b15..57a70bd 100644
--- a/admin/src/views/task/visSubDetail.vue
+++ b/admin/src/views/task/visSubDetail.vue
@@ -350,8 +350,11 @@
         2: '瀹℃壒閫氳繃',
         3: '瀹℃壒鏈�氳繃',
         4: '宸插彇娑�',
-        5: '浠栦汉鎴栫',
-        6: '浠栦汉鎷掔粷'
+        5: '棰勭害鎴愬姛',
+        6: '棰勭害澶辫触',
+        7: '鎷滆涓�',
+        8: '宸茬绂�',
+        9: '宸插け鏁�'
       },
       cateList: {
         0: '璁垮鐢宠',
diff --git a/admin/src/views/vehicle/cars.vue b/admin/src/views/vehicle/cars.vue
index be1ed7e..bdd6b22 100644
--- a/admin/src/views/vehicle/cars.vue
+++ b/admin/src/views/vehicle/cars.vue
@@ -1,24 +1,24 @@
 <template>
     <TableLayout :permissions="['business:member:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-            <el-form-item label="杞︾墝鍙�" prop="code">
-                <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="" prop="code" title="杞︾墝鍙�">
+                <el-input v-model="searchForm.code" clearable placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-          <el-form-item label="杞︿富濮撳悕/鎵嬫満鍙�" prop="memberName">
+          <el-form-item label="" prop="memberName" title="杞︿富濮撳悕/鎵嬫満鍙�">
             <el-input v-model="searchForm.memberName" clearable placeholder="杞︿富濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
           </el-form-item>
-          <el-form-item label="杞︿富閮ㄩ棬" prop="companyName">
+          <el-form-item label="" prop="companyName" title="杞︿富閮ㄩ棬鍚嶇О">
             <el-input v-model="searchForm.companyName" clearable placeholder="杞︿富閮ㄩ棬鍚嶇О" @keypress.enter.native="search"></el-input>
           </el-form-item>
-          <el-form-item label="鎺堟潈鐘舵��" prop="authStatus">
-            <el-select v-model="searchForm.authStatus" @keypress.enter.native="search" clearable placeholder="鏄惁鎺堟潈">
-              <el-option label="鏄�" value="1"></el-option>
-              <el-option label="鍚�" value="0"></el-option>
+          <el-form-item label="" prop="authStatus" title="鏄惁鎺堟潈">
+            <el-select v-model="searchForm.authStatus" @change="search" clearable placeholder="鏄惁鎺堟潈">
+              <el-option label="宸叉巿鏉�" value="1"></el-option>
+              <el-option label="鏈巿鏉�" value="0"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="杞﹁締绫诲瀷" prop="type">
-            <el-select v-model="searchForm.type" @keypress.enter.native="search" clearable placeholder="杞﹁締绫诲瀷">
+          <el-form-item label="" prop="type" title="杞﹁締绫诲瀷">
+            <el-select v-model="searchForm.type" @change="search" clearable placeholder="杞﹁締绫诲瀷">
              <el-option label="瀹夋嘲鍏姟杞�" value="0"></el-option>
               <el-option label="瀹夋嘲鑷湁鐗╂祦杞�" value="1"></el-option>
               <el-option label="鍏朵粬" value="2"></el-option>
@@ -59,7 +59,7 @@
                     <span v-else style="color: red">鍚�</span>
                   </template>
                 </el-table-column>
-                <el-table-column prop="parksName" label="宸叉巿鏉冨仠杞﹀満" min-width="200px">
+                <el-table-column prop="parksName" align="center" label="宸叉巿鏉冨仠杞﹀満" min-width="200px">
                   <template slot-scope="{row}">
                     <div  v-if="row.parkBookList && row.parkBookList.length" >
                       <span v-for="item in row.parkBookList"  :key="item.id" style="display: block">
@@ -69,24 +69,25 @@
                     <span  v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span>
                   </template>
                 </el-table-column>
-              <el-table-column label="涓嬪彂鏈夋晥鏈�" min-width="170px">
+              <el-table-column label="涓嬪彂鏈夋晥鏈�" align="center" min-width="170px">
                 <template slot-scope="{row}">
                   <div v-if="row.authStatus !=null && row.authStatus == 1 && row.parkBookList!=null && row.parkBookList.length>0">
                     <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
                     <div v-else>
-                      <span>璧凤細{{row.startTime}}</span><br/>
-                      <span>姝細{{row.endTime}}</span>
+                      <span style="color: green">璧凤細{{row.startTime}}</span><br/>
+                      <span style="color: red">姝細{{row.endTime}}</span>
                     </div>
                   </div>
                   <div v-else >-</div>
                 </template>
               </el-table-column>
                 <el-table-column prop="editorName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
-                <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="140px"></el-table-column>
               <el-table-column
                   v-if="containPermissions(['business:member:update', 'business:member:delete','business:empower:create'])"
                   label="鎿嶄綔"
-                  min-width="250"
+                  min-width="200"
+                  align="center"
                   fixed="right"
               >
                 <template slot-scope="{row}">
diff --git a/admin/src/views/vehicle/parkBook.vue b/admin/src/views/vehicle/parkBook.vue
index adf8ffe..ee74c48 100644
--- a/admin/src/views/vehicle/parkBook.vue
+++ b/admin/src/views/vehicle/parkBook.vue
@@ -1,18 +1,18 @@
 <template>
     <TableLayout :permissions="['business:member:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
-        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
-            <el-form-item label="杞︾墝鍙�" prop="carCode">
-                <el-input v-model="searchForm.carCode" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item title="杞︾墝鍙�" prop="carCode">
+                <el-input v-model="searchForm.carCode" placeholder="杞︾墝鍙�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="杞︿富濮撳悕/鎵嬫満鍙�" prop="memberName">
-                <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+            <el-form-item title="杞︿富濮撳悕/鎵嬫満鍙�" prop="memberName">
+                <el-input v-model="searchForm.memberName" placeholder="鍛樺伐濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="杞︿富缁勭粐" prop="companyName">
-                <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ヨ溅涓荤粍缁�" @keypress.enter.native="search"></el-input>
+            <el-form-item title="杞︿富缁勭粐" prop="companyName">
+                <el-input v-model="searchForm.companyName" placeholder="杞︿富缁勭粐鍚嶇О" @keypress.enter.native="search"></el-input>
             </el-form-item>
-            <el-form-item label="鍋滆溅搴撳悕绉�" prop="parksName">
-                <el-input v-model="searchForm.parksName" placeholder="璇疯緭鍏ュ仠杞﹀簱鍚嶇О" @keypress.enter.native="search"></el-input>
+            <el-form-item title="鍋滆溅搴撳悕绉�" prop="parksName">
+                <el-input v-model="searchForm.parksName" placeholder="鍋滆溅搴撳悕绉�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <section>
                 <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -33,8 +33,27 @@
                 @selection-change="handleSelectionChange"
             >
                 <el-table-column type="selection" width="55"></el-table-column>
-                <el-table-column prop="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="parksName" label="鍋滆溅鍦�" min-width="100px"></el-table-column>
+                <el-table-column prop="carCode" label="杞︾墝鍙�" fixed min-width="100px"></el-table-column>
+                <el-table-column prop="parksName" label="鍋滆溅鍦�" fixed min-width="100px"></el-table-column>
+              <el-table-column prop="startTime" label="鏈夋晥鏈�"  align="center" fixed min-width="150px">
+                <template slot-scope="{row}">
+                  <div v-if="!row.startTime || !row.endTime">闀挎湡鏈夋晥</div>
+                  <div v-else>
+                    <span style="color: green">璧凤細{{row.startTime}}</span><br/>
+                    <span style="color: red">姝細{{row.endTime}}</span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column prop="startTime" label="鐘舵��" fixed min-width="100px">
+                <template slot-scope="{row}">
+                  <div v-if="row.isdeleted==1"  style="color: red">宸插垹闄�</div>
+                  <div v-else style="color: green">
+                    <span v-if="row.hkStatus==0"  style="color: #435EBE">寰呬笅鍙�</span>
+                    <span v-if="row.hkStatus==1"  style="color: green">涓嬪彂鎴愬姛</span>
+                    <span v-if="row.hkStatus==2"  style="color: red">涓嬪彂澶辫触</span>
+                  </div>
+                </template>
+              </el-table-column>
                 <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px">
                     <template slot-scope="{row}">
                         <span v-if="row.memberType === 0">鍔冲姟璁垮</span>
@@ -45,29 +64,12 @@
                 <el-table-column prop="memberName" label="濮撳悕" min-width="100px"></el-table-column>
                 <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
                 <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="startTime" label="鏈夋晥鏈�" min-width="130px">
-                    <template slot-scope="{row}">
-                        <span>{{validity(row.startTime, row.endTime)}}</span>
-<!--                        <span v-if="!row.startTime || !row.endTime">闀挎湡</span>-->
-<!--                        <span v-else>{{row.startTime}} 鑷� {{row.endTime}}</span>-->
-                    </template>
-                </el-table-column>
-              <el-table-column prop="startTime" label="鐘舵��" min-width="100px">
-                <template slot-scope="{row}">
-                  <div v-if="row.isdeleted==1"  style="color: red">宸插垹闄�</div>
-                  <div v-else style="color: green">
-                      <span v-if="row.hkStatus==0"  style="color: #435EBE">寰呬笅鍙�</span>
-                      <span v-if="row.hkStatus==1"  style="color: green">涓嬪彂鎴愬姛</span>
-                     <span v-if="row.hkStatus==2"  style="color: red">涓嬪彂澶辫触</span>
-                   </div>
-                </template>
-              </el-table-column>
               <el-table-column prop="remark" label="澶囨敞" min-width="100px">
                 <template slot-scope="{row}">
                   <span v-if="row.isdeleted !=2">{{row.remark}}</span>
                 </template>
               </el-table-column>
-                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="140px"></el-table-column>
 <!--                <el-table-column-->
 <!--                    v-if="containPermissions(['business:member:update', 'business:member:delete'])"-->
 <!--                    label="鎿嶄綔"-->
diff --git a/admin/src/views/vehicle/parks.vue b/admin/src/views/vehicle/parks.vue
index 04aff12..d0764f3 100644
--- a/admin/src/views/vehicle/parks.vue
+++ b/admin/src/views/vehicle/parks.vue
@@ -32,8 +32,8 @@
             >
                 <el-table-column prop="name" label="鍋滆溅搴撳悕绉�" min-width="100px"></el-table-column>
                 <el-table-column prop="parentName" label="鎵�灞炲仠杞﹀簱" min-width="100px"></el-table-column>
-                <el-table-column prop="parkCreateDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-                <el-table-column prop="parkEditDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
             </el-table>
             <pagination
                 @size-change="handleSizeChange"
diff --git a/server/system_timer/src/main/resources/bootstrap.yml b/server/system_timer/src/main/resources/bootstrap.yml
index 5eb6d62..107b53b 100644
--- a/server/system_timer/src/main/resources/bootstrap.yml
+++ b/server/system_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: test
+    active: dev
   application:
     name: systemTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/HkUsersTimerController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/HkUsersTimerController.java
index 879d448..ffef6c7 100644
--- a/server/visits/admin_timer/src/main/java/com/doumee/api/HkUsersTimerController.java
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/HkUsersTimerController.java
@@ -38,7 +38,7 @@
     public ApiResponse syncOrgData() {
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
             //濡傛灉鏄疎RP绯荤粺鍚屾涓嬪彂
-            hkSyncOrgUserService.syncOrgData();
+            hkSyncOrgUserService.syncOrgData(null);
         }
         return ApiResponse.success("寮�鍚畾鏃跺悓姝ユ捣搴风粍缁囨暟鎹垚鍔�");
     }
@@ -53,7 +53,7 @@
     public ApiResponse syncUserData() {
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp) {
             //濡傛灉鏄疎RP绯荤粺鍚屾涓嬪彂
-            hkSyncOrgUserService.syncUserData();
+            hkSyncOrgUserService.syncUserData(null);
         }
         return ApiResponse.success("寮�鍚畾鏃跺悓姝ユ捣搴蜂汉鍛樻暟鎹垚鍔�");
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
index 8315ae3..b65d924 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
@@ -173,7 +173,11 @@
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
             return ApiResponse.success( erpSyncService.syncCompany(null));
         }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.hk){
-             hkSyncOrgUserFHKService.syncOrgData();
+             hkSyncOrgUserFHKService.syncOrgData(this.getLoginUser(null));
+            return ApiResponse.success("鍚屾鎴愬姛");
+        }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.self){
+            //濡傛灉鏄嚜寤虹郴绲憋紝鍚屾瀹夐槻骞冲彴鍒濆鍖栨暟鎹�
+            hkSyncOrgUserFHKService.syncOrgData(this.getLoginUser(null));
             return ApiResponse.success("鍚屾鎴愬姛");
         }
         return ApiResponse.failed("鏃犳晥鎿嶄綔");
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
index edf9b7b..31466bd 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
@@ -231,7 +231,7 @@
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
             erpSyncService.syncUsers(null);
         }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.hk){
-            hkSyncOrgUserFHKService.syncUserData();
+            hkSyncOrgUserFHKService.syncUserData(this.getLoginUser(null));
         }
         return ApiResponse.success("鍚屾鎴愬姛");
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
index 7785c41..464f2bd 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java
@@ -15,6 +15,7 @@
 import com.doumee.service.business.CompanyService;
 import com.doumee.service.business.ext.ERPSyncService;
 import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromHKServiceImpl;
+import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromSelfServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -42,6 +43,8 @@
     private ERPSyncService erpSyncService;
     @Autowired
     private HkSyncOrgUserFromHKServiceImpl hkSyncOrgUserFHKService;
+    @Autowired
+    private HkSyncOrgUserFromSelfServiceImpl hkSyncOrgUserFromSelfService;
     @Autowired
     private DataSyncConfig dataSyncConfig;
 
@@ -171,11 +174,14 @@
     @ApiOperation("鍏ㄩ噺閮ㄩ棬淇℃伅鍚屾")
     @PostMapping("/syncAll")
     @CloudRequiredPermission("business:company:sync")
-    public ApiResponse sync(){
+    public ApiResponse sync(@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
             return ApiResponse.success( erpSyncService.syncCompany(null));
         }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.hk){
-             hkSyncOrgUserFHKService.syncOrgData();
+             hkSyncOrgUserFHKService.syncOrgData(this.getLoginUser(token));
+            return ApiResponse.success("鍚屾鎴愬姛");
+        }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.self){
+            hkSyncOrgUserFromSelfService.syncOrgData(this.getLoginUser(token));
             return ApiResponse.success("鍚屾鎴愬姛");
         }
         return ApiResponse.failed("鏃犳晥鎿嶄綔");
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
index 254b0ef..9118d7a 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -2,6 +2,7 @@
 
 import com.doumee.api.BaseController;
 import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.config.annotation.LoginNoRequired;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.haikang.model.param.request.*;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
@@ -101,19 +102,22 @@
 //    @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戦棬绂佷簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/acs")
-    public ApiResponse pushAcs(  HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    @LoginNoRequired
+    public ApiResponse pushAcs(  HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response ){
         String result = hkSyncPushService.dealAcsEvent(param,response);
         return ApiResponse.success(result);
     }
 //    @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戣瀹簨浠惰闃呮帹閫佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/visit")
-    public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    @LoginNoRequired
+    public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response){
         String result = hkSyncPushService.dealVisitEvent(param,response);
         return ApiResponse.success(result);
     }
     @ApiOperation("銆愭捣搴枫�戣瀹CCM浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/visitIccm")
+    @LoginNoRequired
     public ApiResponse pushVisitIccm(@RequestBody EventVisitIccmRequest param, HttpServletResponse response) {
         String result = hkSyncPushService.dealVisitEventIccm(param,response);
         return ApiResponse.success(result);
@@ -121,14 +125,16 @@
 //    @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝仠杞﹀満浜嬩欢璁㈤槄鎺ㄩ�佸鎺ュ鐞嗘帴鍙�")
     @PostMapping("/push/parks")
-    public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    @LoginNoRequired
+    public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response ){
         String result = hkSyncPushService.dealParkEvent(param,response);
         return ApiResponse.success(result);
     }
     @PreventRepeat
     @ApiOperation("銆愭捣搴枫�戝彇娑堣闃呬簨浠�")
     @PostMapping("/cancelEventSub")
-    public ApiResponse cancelEventSub(@RequestBody EventSubRequest param, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+    @LoginNoRequired
+    public ApiResponse cancelEventSub(@RequestBody EventSubRequest param, HttpServletResponse response){
          hkSyncPushService.cancelEventSub();
         return ApiResponse.success(null);
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
index 39f5e8b..7343cc6 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
@@ -23,6 +23,7 @@
 import com.doumee.service.business.MemberService;
 import com.doumee.service.business.ext.ERPSyncService;
 import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromHKServiceImpl;
+import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromSelfServiceImpl;
 import io.swagger.annotations.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +47,8 @@
     private ERPSyncService erpSyncService;
     @Autowired
     private HkSyncOrgUserFromHKServiceImpl hkSyncOrgUserFHKService;
+    @Autowired
+    private HkSyncOrgUserFromSelfServiceImpl hkSyncOrgUserFromSelfService;
     @Autowired
     private DataSyncConfig dataSyncConfig;
 
@@ -321,11 +324,14 @@
     @ApiOperation("鍏ㄩ噺淇℃伅鍚屾")
     @PostMapping("/syncAll")
     @CloudRequiredPermission("business:member:sync")
-    public ApiResponse sync(){
+    public ApiResponse sync(@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.erp){
             erpSyncService.syncUsers(null);
         }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.hk){
-            hkSyncOrgUserFHKService.syncUserData();
+            hkSyncOrgUserFHKService.syncUserData(this.getLoginUser(token));
+        }else if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) == DataSyncConfig.origin.self){
+            hkSyncOrgUserFromSelfService.syncUserData(this.getLoginUser(token));
+            return ApiResponse.success("鍚屾鎴愬姛");
         }
         return ApiResponse.success("鍚屾鎴愬姛");
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
index 3d3bc10..44d9f8c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
@@ -43,8 +43,6 @@
 @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/public")
 @Slf4j
 public class PublicCloudController extends BaseController {
-
-
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
@@ -303,9 +301,6 @@
             e.printStackTrace();
         }
     }
-
-
-
 
     public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception {
         response.setCharacterEncoding("UTF-8");
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
index 548d308..c04cf08 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
@@ -45,10 +45,8 @@
 @Slf4j
 public class WebPublicController extends BaseController {
 
-
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
-
 
     @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
     @ApiImplicitParams({
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index 9889344..2b59378 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -488,16 +488,16 @@
      * @return
      */
     public  static  BaseResponse<IccmAppointmentMDJResponse>   iccmAppiontmentMDJ(IccmAppointmentMDJRequest param){
-        log.info("銆愭捣搴疯瀹㈠厤鐧昏棰勭害銆�================寮�濮�===="+JSONObject.toJSONString(param));
+        log.info("銆愭捣搴疯瀹㈠厤鐧昏棰勭害銆�================iccm寮�濮�===="+JSONObject.toJSONString(param));
         try {
-            String res = HKTools.visitAppiontmentMDJ(JSONObject.toJSONString(param));
+            String res = HKTools.iccmAppointmentMDJ(JSONObject.toJSONString(param));
             TypeReference typeReference =
                     new TypeReference< BaseResponse<IccmAppointmentMDJResponse> >(){};
             BaseResponse<IccmAppointmentMDJResponse>   result = JSONObject.parseObject(res, typeReference.getType());
             logResult(result,"娴峰悍璁垮鍏嶇櫥璁伴绾�");
             return  result;
         }catch (Exception e){
-            log.error("銆愭捣搴疯瀹㈠厤鐧昏棰勭害銆�================澶辫触====锛歕n"+ e.getMessage());
+            log.error("銆愭捣搴疯瀹㈠厤鐧昏棰勭害銆�================iccm澶辫触====锛歕n"+ e.getMessage());
         }
         return  null;
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
index 9d6623e..4802f9f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -8,6 +8,7 @@
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitIccmRequest;
 import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
 import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.dao.business.model.Device;
 import com.doumee.dao.business.model.ParkBook;
 import io.swagger.models.auth.In;
@@ -59,10 +60,10 @@
     String downHKImgs(int type);
     void cancelEventSub();
 
-    void syncOrgData();
+    void syncOrgData(LoginUserInfo user);
     void getOutTimeVisitRecordIccm();
 
-    void syncUserData();
+    void syncUserData(LoginUserInfo user);
     void syncVistAppointData(Date date);
     void syncVehicleData();
     String syncPlatforms(PlatformsListRequest param);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index d398459..2c9996d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -104,6 +104,7 @@
                 }
             }
             idPath = parent.getCompanyPath();
+            company.setHkParentId(parent.getHkId());
             company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
             company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
         }
@@ -156,6 +157,7 @@
     }
     private boolean delHkOrg(Company company) {
         OrgDelRequest request =new OrgDelRequest();
+
         request.setIndexCodes(new String[]{company.getHkId()});
         BaseResponse<List<OrgUpdateFailureResponse>> result =  HKService.delBatchOrg(request);
         if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
@@ -232,6 +234,7 @@
                 .eq(Member::getIsdeleted,Constants.ZERO)) >0){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ラ儴闂ㄤ笅瀛樺湪浜哄憳淇℃伅锛屼笉鑳借繘琛屽垹闄ゆ搷浣滐紒");
         }
+
         Company company = new Company();
         company.setId(id);
         company.setEditDate(new Date());
@@ -241,7 +244,7 @@
         company.setHkDate(company.getHkDate());
         companyMapper.updateById(company);
         //涓嬪彂娴峰悍瀹夐槻骞冲彴
-        if(StringUtils.isBlank(model.getHkId()) && Constants.equalsInteger(Constants.ONE,model.getHkStatus()) && !delHkOrg(model)){
+        if(StringUtils.isNotBlank(model.getHkId()) && Constants.equalsInteger(Constants.ONE,model.getHkStatus()) && !delHkOrg(model)){
             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝缁勭粐鍒犻櫎涓嬪彂澶辫触锛岃纭璇ョ粍缁囨棤涓嬬骇缁勭粐鎴栫粍缁囦汉鍛樹俊鎭瘇");
         }
     }
@@ -483,13 +486,11 @@
         companyMapper.updateById(company);
     }
 
-
     @Override
     public long count(Company company) {
         QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
         return companyMapper.selectCount(wrapper);
     }
-
 
     @Override
     public List<CompanyDTO> findCompanyTreePage(Integer type) {
@@ -501,7 +502,6 @@
         List<Company> companies = companyMapper.selectList(wrapper);
         return getCompanyTree( companies, null);
     }
-
 
     private List<CompanyDTO> getCompanyTree(List<Company> companies, String parentId){
         if (CollectionUtils.isEmpty(companies)){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 23a6c33..693f779 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -98,8 +98,8 @@
 
     @Autowired
     private EmpowerMapper empowerMapper;
-
     @Autowired
+
     private DeviceMapper deviceMapper;
 
     @Autowired
@@ -152,7 +152,7 @@
                 //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
                 if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){
                     //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿
-                    systemUserMapper.insert(createSystemUser(insert));
+                    systemUserMapper.insert(createSystemUser(insert,systemDictDataBiz));
                     //澶勭悊鍩硅鏈夋晥鏈熶笟鍔�
                     dealTrainTIme(member,0,loginUserInfo);
                 }
@@ -166,7 +166,7 @@
         }
         return insert;
     }
-    private SystemUser createSystemUser(Member insert) {
+    public static SystemUser createSystemUser(Member insert,SystemDictDataBiz systemDictDataBiz) {
         SystemUser user = new SystemUser();
         // 鐢熸垚瀵嗙爜鐩�
         String salt = RandomStringUtils.randomAlphabetic(6);
@@ -186,6 +186,7 @@
         user.setUpdateUser(insert.getEditor());
         user.setUpdateTime(insert.getEditDate());
         user.setMemberId(insert.getId());
+        user.setSource(Constants.ZERO);
         user.setDeleted(Boolean.FALSE);
         user.setFixed(Boolean.FALSE);
         user.setStatus(Constants.ZERO);
@@ -1589,7 +1590,7 @@
                 .eq(Member::getType,Constants.memberType.internal)
                 .eq(Member::getStatus,Constants.ZERO)
                 .isNotNull(Member::getHkId)
-                .apply("to_days(lastVisitDate)+ "+days+" < to_days(now())" ));
+                .apply("to_days(LAST_VISIT_DATE)+ "+days+" < to_days(now())" ));
         if(CollectionUtils.isEmpty(memberList)){
            return;
         }
@@ -1862,7 +1863,7 @@
                 //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
                 if(Constants.equalsInteger(insert.getCompanyType(),Constants.ONE)){
                     //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿
-                    userList.add(createSystemUser(insert));
+                    userList.add(createSystemUser(insert,systemDictDataBiz));
                 }
             }
             if(userList.size()>0){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index 9f8ca7d..c07db90 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -14,6 +14,7 @@
 import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
 import com.doumee.core.haikang.model.param.respose.TaskAdditionResponse;
 import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.dao.business.model.Device;
 import com.doumee.dao.business.model.ParkBook;
 import com.doumee.service.business.ext.HkSyncService;
@@ -115,7 +116,7 @@
         return  null;
     }
     @Override
-    public  void syncUserData(){
+    public  void syncUserData(LoginUserInfo user){
     }
     @Override
     public  void syncUserUpdateData(Date start, Date end){
@@ -135,7 +136,7 @@
     public  void syncVehicleUpdateData(Date date){
     }
     @Override
-    public  void syncOrgData( ){
+    public  void syncOrgData( LoginUserInfo user){
     }
     @Override
     public  void syncOrgUpdateData( Date start, Date end){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
index 62b5b77..dad3c62 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
@@ -120,11 +120,17 @@
                 if(model !=null){
                     //濡傛灉宸插瓨鍦紝鍒欐洿鏂版暟鎹�
                     model =  initDataByHkData(model,device,date);
+                    if(allHkList.size()==1){
+                        model.setIsDefault(Constants.ZERO);
+                    }
                     editList.add(model);
                 }else{
                     //濡傛灉涓嶅瓨鍦紝鍒欐柊澧炴暟鎹�
                     model = new DeviceRole();
                     model =  initDataByHkData(model,device,date);
+                    if(allHkList.size()==1){
+                        model.setIsDefault(Constants.ZERO);
+                    }
                     addList.add(model);
                 }
             }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
index 09da7f9..fb18e3a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -11,6 +11,7 @@
 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;
@@ -71,7 +72,7 @@
      * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
      */
     @Override
-    public   void syncOrgData(){
+    public   void syncOrgData(LoginUserInfo user){
         if(Constants.DEALING_HK_ORG || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
             return   ;
         }
@@ -261,7 +262,7 @@
      * @return
      */
     @Override
-    public   void syncUserData(){
+    public   void syncUserData(LoginUserInfo user){
         if(Constants.DEALING_HK_USER  || Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.erp){
             return   ;
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
index f471370..21bfeff 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
@@ -56,7 +56,7 @@
      */
     @Override
     @Transactional
-    public   void syncOrgData(){
+    public   void syncOrgData(LoginUserInfo user){
         if(Constants.DEALING_HK_ORG){
             return ;
         }
@@ -65,7 +65,6 @@
             if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.hk){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
             }
-            LoginUserInfo user =  (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
             TimeRangeListRequest param = new TimeRangeListRequest();
             //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
             boolean hasNext = true;
@@ -142,7 +141,7 @@
      * @return
      */
     @Override
-    public   void syncUserData(){
+    public   void syncUserData(LoginUserInfo user){
         if(Constants.DEALING_HK_USER){
             return   ;
         }
@@ -151,7 +150,6 @@
             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(), "瀵逛笉璧凤紝璇峰厛鍚屾浼佷笟缁勭粐淇℃伅~");
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java
new file mode 100644
index 0000000..d310af4
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java
@@ -0,0 +1,337 @@
+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.TimeRangeListRequest;
+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.dao.business.MemberMapper;
+import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.vo.CompanyTree;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.MemberService;
+import com.doumee.service.business.impl.MemberServiceImpl;
+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 HkSyncOrgUserFromSelfServiceImpl extends HkSyncBaseServiceImpl {
+    @Autowired
+    private CompanyMapper companyMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private MemberMapper memberMapper;
+    @Autowired
+    private SystemUserMapper systemUserMapper;
+
+    @Autowired
+    private DataSyncConfig dataSyncConfig;
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    /**
+     * 鍚屾娴峰悍缁勭粐淇℃伅鍒颁笟鍔$郴缁�
+     */
+    @Override
+    @Transactional
+    public   void syncOrgData(LoginUserInfo user ){
+        if(Constants.DEALING_HK_ORG){
+            return ;
+        }
+        Constants.DEALING_HK_ORG =true;
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.self){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+            }
+            TimeRangeListRequest param = null;
+            //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+
+            List<Company>  allHkList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new TimeRangeListRequest();
+                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(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                if(response.getData() == null || response.getData().getTotal() ==0){
+                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.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.update(null,new UpdateWrapper<Company>().lambda()
+                    .eq(Company::getType,Constants.ONE)
+                    .eq(Company::getIsdeleted,Constants.ZERO)
+                    .set(Company::getIsdeleted,Constants.ONE));//娓呯┖鍘熸湁鏁版嵁
+            companyMapper.insert(allHkList);//鎻掑叆鏂版暟鎹�
+            dealTreePathInfo(allHkList);//澶勭悊鏍戝舰缁撴灉鏁版嵁
+        }catch (BusinessException e){
+            throw  e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+        }finally {
+            Constants.DEALING_HK_ORG =false;
+        }
+    }
+
+    private void dealTreePathInfo(List<Company> allHkList) {
+        List<Company> tree  = new CompanyTree(allHkList,DataSyncConfig.origin.hk).buildTree();
+        if(tree!=null || tree.size()>0){
+            for(Company t : tree){
+                t.setCompanyPath(t.getId()+"/");
+                t.setCompanyNamePath(t.getName());
+                companyMapper.updateById(t);
+                dealChildParentId(t,t.getChildList());
+            }
+        }
+    }
+
+    private void dealChildParentId(Company t, List<Company> childList) {
+        if(childList ==null || childList.size()==0){
+            return;
+        }
+        for(Company c : childList){
+            c.setParentId(t.getId());
+            c.setCompanyPath(t.getCompanyPath()+c.getId()+"/");
+            c.setCompanyNamePath(t.getCompanyNamePath()+"/"+c.getName());
+            companyMapper.updateById(c);
+            if(t.getChildList()!=null || t.getChildList().size()==0){
+                //閫掑綊澶勭悊瀛愰泦
+                dealChildParentId(c,c.getChildList());
+            }
+        }
+    }
+
+    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.setEditor(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(LoginUserInfo user){
+        if(Constants.DEALING_HK_USER){
+            return   ;
+        }
+        Constants.DEALING_HK_USER =true;
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin()) != DataSyncConfig.origin.self){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佺粍缁囧悓姝ユ搷浣渵");
+            }
+            List<Company> companies = companyMapper.selectList(new QueryWrapper<>());
+            if(companies == null || companies.size() == 0){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇峰厛鍚屾浼佷笟缁勭粐淇℃伅~");
+            }
+            TimeRangeListRequest param = new TimeRangeListRequest();
+            //鑾峰彇ERP缁勭粐淇℃伅锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            List<Member>  allHkList = new ArrayList<>();
+            List<SystemUser>  allUserList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param = new TimeRangeListRequest();
+                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(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                if(response.getData() == null || response.getData().getTotal() ==0){
+                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.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.update(null,new UpdateWrapper<Member>().lambda()
+                    .eq(Member::getType,Constants.TWO)
+                    .eq(Member::getIsdeleted,Constants.ZERO)
+                    .set(Member::getIsdeleted,Constants.ONE));//娓呯┖鍘熸湁鏁版嵁
+            systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+                    .eq(SystemUser::getType,Constants.TWO)
+                    .eq(SystemUser::getDeleted,Boolean.FALSE)
+                    .set(SystemUser::getDeleted,Boolean.TRUE));//娓呯┖鍘熸湁鏁版嵁
+            memberMapper.insert(allHkList);//鎻掑叆鏂版暟鎹�
+            for(Member c :allHkList){
+                allUserList.add(MemberServiceImpl.createSystemUser(c,systemDictDataBiz));//鍒涘缓鐧婚檰璐﹀彿
+            }
+            systemUserMapper.insert(allUserList);
+        }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.setWorkStatus(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.setEditor(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;
+    }
+
+}

--
Gitblit v1.9.3