From 91d8d400b10dc2cd8699cd73d636a2b09ec0cf5a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 22 八月 2024 10:53:51 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java                                   |   10 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java                                  |    5 
 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                           |    9 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java                                       |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java                                       |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CompanyCloudController.java                                  |   10 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java    |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java                                |    5 
 admin/src/views/business/internalCompany.vue                                                                                  |    4 
 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/service/business/impl/hksync/HkSyncBaseServiceImpl.java                |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java |  336 ++++++++++++++++++++++++++++++++++++++++++++++++
 admin/src/views/business/internalMember.vue                                                                                   |   14 -
 14 files changed, 382 insertions(+), 37 deletions(-)

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/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/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/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/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 23a6c33..06f7454 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);
@@ -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/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..0609a80
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromSelfServiceImpl.java
@@ -0,0 +1,336 @@
+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.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