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