From 6730b47bed29024618166dc2802277dcd351587c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 08 一月 2026 15:58:39 +0800
Subject: [PATCH] 修改简道云人员推送删除功能bug

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java |  115 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 78 insertions(+), 37 deletions(-)

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 10213d8..6f70365 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
@@ -15,6 +15,7 @@
 import com.doumee.core.dingTalk.DingTalk;
 import com.doumee.core.erp.ErpConstants;
 import com.doumee.core.erp.model.openapi.request.erp.OrgListRequest;
+import com.doumee.core.erp.model.openapi.response.erp.ERPApiResponse;
 import com.doumee.core.erp.model.openapi.response.erp.ErpOrgListResponse;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
@@ -28,6 +29,8 @@
 import com.doumee.core.jiandaoyun.api.arch.DeptApiClient;
 import com.doumee.core.jiandaoyun.constants.HttpConstant;
 import com.doumee.core.jiandaoyun.model.dept.DeptEntityModel;
+import com.doumee.core.jiandaoyun.model.request.BasePushRequest;
+import com.doumee.core.jiandaoyun.model.request.MemberPushData;
 import com.doumee.core.wms.model.response.WmsBaseDataResponse;
 import com.doumee.core.wms.model.response.WmsBaseResponse;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -806,7 +809,11 @@
                     deptIdList.add(deptId);
                 }
                 if(CollectionUtils.isNotEmpty(deptIdList)){
-                    syncDelCompany(deptIdList);
+                    syncDelCompany( companyMapper.selectList(new QueryWrapper<Company>()
+                            .lambda()
+                            .eq(Company::getIsdeleted,Constants.ZERO)
+                            .in(Company::getErpId,deptIdList)
+                    ));
                 }
             }else if(eventType.equals("org_dept_create")||eventType.equals("org_dept_modify")){
                 for (int i = 0; i < jsonArray.size(); i++) {
@@ -858,7 +865,7 @@
                     .in(Company::getId, delIds)
                     .notIn(fIds.size()>0,Company::getHkId, fIds));
             companyMapper.update(null,new UpdateWrapper<Company>().lambda()
-                    .set(Company::getHkStatus,Constants.TWO)
+                    .set(Company::getHkStatus,Constants.ZERO)
                     .set(Company::getHkDate,date)
                     .in(Company::getId, delIds)
                     .in(fIds.size()>0,Company::getHkId, fIds));
@@ -872,7 +879,7 @@
             if(list !=null && list.size()>0){
                 List<Company> addList = new ArrayList<>();
                 List<Company> updateList = new ArrayList<>();
-                List<Long> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
+                List<Company> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
                 List<Company>  allList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
                         .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE));
                 dealCompanyChangeList(list,addList,updateList,delIds,allList);
@@ -891,20 +898,28 @@
     @Override
     public String syncJdyCompany() {
         //{
-        //  "dept_no": 1,//鏁板瓧 1 涓烘牴閮ㄩ棬缂栧彿銆�
+        //  "dept_no": 1,//鏁板瓧 1 涓烘牴閮ㄩ棬缂栧彿銆�483636217锛氳姕婀栧競鍏徃
         //  "has_child": true
         //}
-        DeptApiClient deptApiClient = new DeptApiClient(systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.API_KEY).getCode(), HttpConstant.HOST);
+        DeptApiClient deptApiClient = new DeptApiClient(systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.JDY_API_KEY).getCode()
+                ,systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.JDY_API_HOST).getCode());
         try {
-            Map<String, Object> result =  deptApiClient.deptList(1,true,deptApiClient.getDefaultVersion());
+            int root = 1;
+            try {
+                root = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.JDY_CONFIG, Constants.JDY_COMPANY_ROOT_NO).getCode());
+            }catch (Exception e){
+
+            }
+            Map<String, Object> result =  deptApiClient.deptList(root,true,deptApiClient.getDefaultVersion());
             if(result!=null && result.get("departments")!=null ){
                 TypeReference<List<DeptEntityModel>> typeReference =     new TypeReference<List<DeptEntityModel>>(){};
                 Object obj = result.get("departments");
                 List<DeptEntityModel> list =  com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(obj), typeReference.getType());
+                list = sortJdyListBYParent(list,root);
                 if(list !=null && list.size()>0){
                     List<Company> addList = new ArrayList<>();
                     List<Company> updateList = new ArrayList<>();
-                    List<Long> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
+                    List<Company> delIds = new ArrayList<>();//淇敼涓轰娇鐢ㄩ拤閽塱d  erpId
                     List<Company>  allList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
                             .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE));
                     dealCompanyChangeListJdy(list,addList,updateList,delIds,allList);
@@ -913,18 +928,52 @@
                     }
                     return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+updateList.size()+"銆戞潯锛屽垹闄ゃ��"+delIds.size()+"銆戞潯";
                 }else{
-                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾閽夐拤鏁版嵁涓虹┖锛�");
+                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾绠�鍗曚簯鏁版嵁涓虹┖锛�");
                 }
             }
+        }catch (BusinessException e){
+            throw  e;
         }catch (Exception e){
-            e.printStackTrace();
-            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾鏁版嵁寮傚父锛�");
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾鏁版嵁寮傚父锛�"+e.getMessage());
         }
-
         return null;
     }
 
-    private void dealCompanyChangeListJdy(List<DeptEntityModel> list, List<Company> addList, List<Company> updateList, List<Long> delIds, List<Company> allList) {
+    private List<DeptEntityModel> sortJdyListBYParent(List<DeptEntityModel> list, int root) {
+        List<DeptEntityModel> all = new ArrayList<>();
+        for(DeptEntityModel t : list){
+            if(Constants.equalsInteger( t.getParent_no(),root)){
+                all.add(t);
+                if(hasChildCompany(list,t.getDept_no())){
+                    all.addAll(sortJdyListBYParent(list,t.getDept_no()));
+                }
+            }
+        }
+        return  all;
+    }
+
+
+    private boolean hasChildCompany(List<DeptEntityModel> list, Integer deptNo) {
+        for(DeptEntityModel t : list){
+            if(Constants.equalsInteger( t.getParent_no(),deptNo)){
+               return true;
+            }
+        }
+        return  false;
+    }
+
+    public static void main(String[] args) {
+        String temp = "{\"data\":{\"_id\":\"695f234fbb84d247f5e9eb69\",\"appId\":\"6954aca3cdf8fb470ca1aabd\",\"can_visit\":\"鍙嫓璁縗",\"code\":\"\",\"createTime\":\"2026-01-08T03:23:59.808Z\",\"creator\":{\"_id\":\"695490f0ea380dc657862993\",\"name\":\"姹熻悕\",\"status\":1,\"type\":0,\"username\":\"15345690849\"},\"deleteTime\":null,\"deleter\":null,\"depart_no\":\"567406402\",\"department\":{\"_id\":\"61b6fb6280e9de2aa1dfdd5c\",\"dept_no\":567406402,\"name\":\"鐗╂祦涓績瀹変繚閮╘",\"type\":0},\"entryId\":\"6954c7b47433108246904f1a\",\"formName\":\"鍐呴儴浜哄憳淇℃伅绠$悊\",\"idcardno\":\"\",\"imgurl\":[],\"job_date\":null,\"master\":\"鍚",\"name\":\"寮犲厛瀹塡",\"phone\":\"18655366393\",\"position\":\"\",\"sex\":\"濂砛",\"status\":\"鍦ㄨ亴\",\"updateTime\":\"2026-01-08T03:57:37.222Z\",\"updater\":{\"_id\":\"695490f0ea380dc657862993\",\"name\":\"姹熻悕\",\"status\":1,\"type\":0,\"username\":\"15345690849\"},\"user\":{\"_id\":\"61b6fc187532c000077d34b1\",\"name\":\"寮犲厛瀹塡",\"status\":1,\"type\":0,\"username\":\"zhangxa\"},\"username\":\"zhangxa\"},\"op\":\"data_update\",\"opTime\":1767844657222}" ;
+       TypeReference typeReference =
+                new TypeReference<BasePushRequest<MemberPushData>>() {
+                };
+        BasePushRequest<MemberPushData>  list = com.alibaba.fastjson.JSONObject.parseObject(temp, typeReference.getType());
+        list.getData();
+
+    }
+
+    private void dealCompanyChangeListJdy(List<DeptEntityModel> list, List<Company> addList, List<Company> updateList,
+                                          List<Company> delIds, List<Company> allList) {
         Date date = new Date();
         for(DeptEntityModel respone : list){
             Company param = new Company();
@@ -935,7 +984,6 @@
             //鏍规嵁erpid鏌ヨ浼佷笟淇℃伅锛屽垽鏂槸鏂板杩樻槸鏇存柊
             Company company = findCompanyByERPId(allList,respone.getDept_no().toString());
             if(company == null){
-                //濡傛灉鏄柊澧�
                 //灏佽鏂板缁勭粐瀵硅薄鏁版嵁
                 addList.add(getAddCompanyModel(param));
             }else{
@@ -945,12 +993,13 @@
         if(allList!=null && allList.size()>0){
             for(Company  c : allList){
                 if(!isCompanyDeletedJdy(c,list)){
-                    delIds.add(Long.valueOf(c.getErpId()));
+                    delIds.add(c);
                 }
             }
         }
     }
-    private void dealCompanyChangeList(List<OapiV2DepartmentGetResponse.DeptGetResponse> list, List<Company> addList, List<Company> updateList, List<Long> delIds, List<Company> allList) {
+    private void dealCompanyChangeList(List<OapiV2DepartmentGetResponse.DeptGetResponse> list, List<Company> addList,
+                                       List<Company> updateList, List<Company> delIds, List<Company> allList) {
         Date date = new Date();
         for(OapiV2DepartmentGetResponse.DeptGetResponse respone : list){
             Company param = new Company();
@@ -971,12 +1020,11 @@
         if(allList!=null && allList.size()>0){
             for(Company  c : allList){
                 if(!isCompanyDeleted(c,list)){
-                    delIds.add(Long.valueOf(c.getErpId()));
+                    delIds.add(c);
                 }
             }
         }
     }
-
 
     /**
      * 鏁寸悊閽夐拤鍚屾 鏂板缁勭粐瀵硅薄
@@ -995,7 +1043,6 @@
     private Company getUpdateCompanyModel(Company param, Company company) {
         return syncDDEditCompanyModel(param,company);
     }
-
 
     /**
      * 鏍规嵁ERPID  鍒ゆ柇鏁版嵁鏄惁宸插湪闆嗗悎閲屽瓨鍦�
@@ -1043,10 +1090,6 @@
         company.setIsdeleted(Constants.ZERO);
         company.setStatus(Constants.ZERO);
 
-//        company.setName(deptGetResponse.getName());
-//        company.setErpId(deptGetResponse.getDeptId().toString());
-//        company.setErpParentId(deptGetResponse.getParentId().toString());
-//        company.setSortnum(deptGetResponse.getOrder().intValue());//榛樿鏈�涓婇潰
         company.setName(param.getName());
         company.setErpId(param.getErpId() );
         company.setErpParentId(param.getErpParentId());
@@ -1054,22 +1097,19 @@
 
         company.setType(Constants.ONE);
         String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
-        Company root =getRootCompanyModel(rootOrgId);
+        String jdyRootId = systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.JDY_COMPANY_ROOT_NO).getCode();
+        Company root =getRootCompanyModel(rootOrgId,jdyRootId);
+        company.setHkParentId(rootOrgId);
         company.setCompanyPath(company.getId()+"/");//鍚嶇О璺緞
         company.setCompanyNamePath(company.getName());//鍚嶇О璺緞
-        company.setHkParentId(rootOrgId);
         String idPath = "";
-        if(StringUtils.isNotBlank(company.getErpParentId())){
-            Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId())
+        if(StringUtils.isNotBlank(param.getErpParentId())){
+            Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getErpParentId())
                     .eq(Company::getIsdeleted,Constants.ZERO).last(" limit 1 "));
             if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
                 //鐖剁骇涓嶅瓨鍦ㄧ殑锛岀洿鎺ユ寕鍦ㄦ牴缁勭粐涓�
                 parent = root;
-//                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅涓嶅瓨鍦▇");
             }
-//            if(StringUtils.isBlank(parent.getHkId())){
-//                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅灏氭湭鍚屾涓嬪彂鎴愬姛~");
-//            }
             if(Objects.nonNull(parent.getType())&&!Constants.equalsInteger(parent.getType(),-1)){
                 if(!Constants.equalsInteger(company.getType(),parent.getType())){
                     throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
@@ -1114,7 +1154,7 @@
      * @param rootOrgId
      * @return
      */
-    private Company getRootCompanyModel(String rootOrgId) {
+    private Company getRootCompanyModel(String rootOrgId,String erpId) {
         Company root = companyMapper.selectOne(new QueryWrapper<Company>().lambda()
                 .eq(Company::getIsdeleted,Constants.ZERO)
                 .isNull(Company::getParentId)
@@ -1131,6 +1171,7 @@
             root.setHkStatus(Constants.ONE);
             root.setIsdeleted(Constants.ZERO);
             root.setStatus(Constants.ZERO);
+            root.setErpId(erpId);
             root.setHkCompanyPath(rootOrgId+"/");
             root.setCompanyNamePath(root.getName());
             root.setHkDate(new Date());
@@ -1147,7 +1188,8 @@
     public Company syncDDEditCompanyModel(Company param,Company company){
         company.setErpParentId(param.getErpParentId().toString());
         String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
-        Company root =getRootCompanyModel(rootOrgId);
+        String jdyRootId = systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.JDY_COMPANY_ROOT_NO).getCode();
+        Company root =getRootCompanyModel(rootOrgId,jdyRootId);
         String idPath = "";
         if(StringUtils.isNotBlank(company.getErpParentId())){
             Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda()
@@ -1197,16 +1239,15 @@
 
 
 
-    public void syncDelCompany(List<Long> deptIdList){
-        List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>()
+    public void syncDelCompany(List<Company> companyList ){
+/*        List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>()
                 .lambda()
                 .eq(Company::getIsdeleted,Constants.ZERO)
-                .in(Company::getErpId,deptIdList)
-        );
+                .in(Company::getId,deptIdList)
+        );*/
         if(CollectionUtils.isNotEmpty(companyList)){
             List<Integer> delIds = companyList.stream().map(i->i.getId()).collect(Collectors.toList());
             List<String> delHKIds = companyList.stream().filter(i->StringUtils.isNotBlank(i.getHkId())).map(i->i.getHkId()).collect(Collectors.toList());
-
             //鏍囪涓氬姟鍒犻櫎
             companyMapper.update(new UpdateWrapper<Company>().lambda()
                     .set(Company::getIsdeleted,Constants.ONE)

--
Gitblit v1.9.3