From a94aacd36460d76297878c304f4837813191232c Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 29 九月 2025 18:04:47 +0800
Subject: [PATCH] 钉钉授权 与 通知开发
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java | 377 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 352 insertions(+), 25 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 5f76792..575f5a3 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
@@ -5,9 +5,15 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
+import com.dingtalk.api.response.OapiV2DepartmentListsubResponse;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.DataSyncConfig;
import com.doumee.core.constants.ResponseStatus;
+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.ErpOrgListResponse;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
@@ -17,9 +23,9 @@
import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse;
import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse;
import com.doumee.core.haikang.service.HKService;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
+import com.doumee.service.business.third.model.LoginUserInfo;
+import com.doumee.service.business.third.model.PageData;
+import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.UpdateCompanySortDTO;
@@ -33,6 +39,7 @@
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.CompanyService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.taobao.api.ApiException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -40,6 +47,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import shade.com.alibaba.fastjson2.JSONArray;
+import shade.com.alibaba.fastjson2.JSONObject;
import java.util.*;
import java.util.stream.Collectors;
@@ -63,6 +72,9 @@
@Autowired
private CompanyJoinMapper companyJoinMapper;
+
+ @Autowired
+ private DingTalk dingTalk;
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
@@ -96,12 +108,19 @@
if(StringUtils.isBlank(parent.getHkId())){
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅灏氭湭鍚屾涓嬪彂鎴愬姛~");
}
- if(Constants.equalsInteger(parent.getType(),Constants.ZERO)){
- //濡傛灉鐖剁骇鏄浉鍏虫柟缁勭粐锛屼笅绾т笉鑳藉缓绔嬪唴閮ㄧ粍缁�
- if(Constants.equalsInteger(company.getType(),Constants.ONE)){
- 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(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
}
+ }else if(Objects.isNull(parent.getType())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
}
+// if(Constants.equalsInteger(parent.getType(),Constants.ZERO)){
+// //濡傛灉鐖剁骇鏄浉鍏虫柟缁勭粐锛屼笅绾т笉鑳藉缓绔嬪唴閮ㄧ粍缁�
+// if(Constants.equalsInteger(company.getType(),Constants.ONE)){
+// throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐩稿叧鏂圭粍缁囷紝涓嬬骇涓嶈兘寤虹珛鍐呴儴缁勭粐~");
+// }
+// }
idPath = parent.getCompanyPath();
company.setHkParentId(parent.getHkId());
company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
@@ -117,6 +136,7 @@
company.setHkDate(company.getCreateDate());
company.setEditDate(company.getCreateDate());
company.setEditor(company.getCreator());
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
company.setHkId(UUID.randomUUID().toString().replace("-",""));
companyMapper.insert(company);
//涓嬪彂娴峰悍瀹夐槻骞冲彴
@@ -208,6 +228,7 @@
insert.setCode(company.getCode());
insert.setParentId(company.getParentId());
insert.setLinkName(company.getLinkName());
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
insert.setLinkPhone(company.getLinkPhone());
companyMapper.insert(insert);
return insert.getId();
@@ -289,22 +310,25 @@
if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝缁勭粐淇℃伅涓嶅瓨鍦▇");
}
- if( Constants.equalsInteger(Constants.ONE,model.getType())&& Constants.equalsInteger(Constants.ZERO,company.getType())){
- //濡傛灉鐢卞唴閮ㄧ粍缁囧垏鎹㈡垚鍐呴儴缁勭粐锛屾帓鏌ヤ笅绾х粍缁囨槸鍚︽湁鍐呴儴缁勭粐
- if(companyJoinMapper.selectCount(new QueryWrapper<Company>().lambda()
- .eq(Company::getIsdeleted,Constants.ZERO )
- .eq(Company::getType,Constants.ONE )
- .ne(Company::getId,model.getId())
- .likeRight(Company::getCompanyPath,model.getCompanyPath())) >0){
- throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝涓嬬骇閮ㄩ棬瀛樺湪鍐呴儴缁勭粐锛岃閮ㄩ棬涓嶆敮鎸佸垏鎹负鐩稿叧鏂圭粍缁囷紒~");
- }
- }
+
+// if( Constants.equalsInteger(Constants.ONE,model.getType())&& Constants.equalsInteger(Constants.ZERO,company.getType())){
+// //濡傛灉鐢卞唴閮ㄧ粍缁囧垏鎹㈡垚鍐呴儴缁勭粐锛屾帓鏌ヤ笅绾х粍缁囨槸鍚︽湁鍐呴儴缁勭粐
+// if(companyJoinMapper.selectCount(new QueryWrapper<Company>().lambda()
+// .eq(Company::getIsdeleted,Constants.ZERO )
+// .eq(Company::getType,Constants.ONE )
+// .ne(Company::getId,model.getId())
+// .likeRight(Company::getCompanyPath,model.getCompanyPath())) >0){
+// throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝涓嬬骇閮ㄩ棬瀛樺湪鍐呴儴缁勭粐锛岃閮ㄩ棬涓嶆敮鎸佸垏鎹负鐩稿叧鏂圭粍缁囷紒~");
+// }
+// }
+ company.setType(null);
company.setEditDate(new Date());
company.setEditor(user.getId());
company.setHkStatus(Constants.ONE);
company.setHkDate(company.getHkDate());
company.setHkId(StringUtils.defaultString(model.getHkId(),UUID.randomUUID().toString().replace("-","")));
company.setParentId(null);//涓嶆敮鎸佷慨鏀圭埗绾�
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
companyMapper.updateById(company);
//鏇存柊鐨刢ompanyPath
String newName = model.getCompanyNamePath().replace(model.getName(),company.getName());
@@ -322,7 +346,6 @@
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝缁勭粐鍚屾涓嬪彂澶辫触锛岃绋嶅悗閲嶈瘯");
}
}
-
}
@Override
@@ -452,7 +475,7 @@
if (company.getQueryHiddenDanger() != null && Constants.equalsInteger(company.getQueryHiddenDanger(),Constants.ONE)) {
queryWrapper.apply(" t.id in ( select hdp.COMPANY_ID from hidden_danger_param hdp where hdp.ISDELETED = 0 and hdp.STATUS = 0 and hdp.TYPE = 0 ) ");
}
- queryWrapper.orderByDesc(Company::getCreateDate);
+ queryWrapper.orderByAsc(Company::getPinyin);
queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
queryWrapper.select(" t.* ")
.select("(select count(m.id) from member m where m.COMPANY_ID=t.id and m.ISDELETED=0) as countNum") ;
@@ -564,10 +587,9 @@
queryWrapper.ge(Company::getFsDate, Utils.Date.getStart(pageWrap.getModel().getFsDate()));
queryWrapper.le(Company::getFsDate, Utils.Date.getEnd(pageWrap.getModel().getFsDate()));
}
- queryWrapper.orderByDesc(Company::getCreateDate);
queryWrapper.leftJoin(Company.class,Company::getId,Company::getParentId);
/* .leftJoin(Member.class, Member::getId,Company::getHeadId)*/
- /* queryWrapper.leftJoin(" company c on c.id=t.parent_id");*/
+ /* queryWrapper.leftJoin(" company c on c.id=t.parent_id");*/
queryWrapper.selectAll(Company.class)
.select("(select count(m.id) from member m where m.COMPANY_ID=t.id and m.ISDELETED=0) as countNum") ;
queryWrapper.select("t1.name",Company::getParentName);
@@ -575,6 +597,7 @@
queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getStatus()),Company::getStatus,Constants.ZERO);
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Company::getName,pageWrap.getModel().getName());
queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getParentName()),"c.name",pageWrap.getModel().getParentName());
+ queryWrapper.orderByAsc(Company::getSortnum);
IPage<Company> companyIPage = companyJoinMapper.selectJoinPage(page, Company.class, queryWrapper);
return PageData.from(companyIPage);
}
@@ -603,7 +626,8 @@
LambdaQueryWrapper<Company> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Company::getIsdeleted,Constants.ZERO)
- .eq(Constants.equalsInteger(type,Constants.ONE),Company::getType,type);
+ .eq(Constants.equalsInteger(type,Constants.ONE),Company::getType,type)
+ .orderByAsc(Company::getSortnum);
List<Company> companies = companyMapper.selectList(wrapper);
return getCompanyTree( companies, null);
}
@@ -617,7 +641,8 @@
if(origin == DataSyncConfig.origin.erp){
collect= companies.stream().filter(s -> ( StringUtils.defaultString(s.getErpParentId(),"").equals(StringUtils.defaultString(parentId)))).collect(Collectors.toList());
}else if(origin == DataSyncConfig.origin.hk){
- collect= companies.stream().filter(s -> ( StringUtils.defaultString(s.getHkParentId(),"").equals(StringUtils.defaultString(parentId)))).collect(Collectors.toList());
+ collect= companies.stream().filter(s ->
+ ( StringUtils.defaultString(s.getHkParentId(),"").equals(StringUtils.defaultString(parentId)))).collect(Collectors.toList());
}else{
collect= companies.stream().filter(s -> (StringUtils.defaultString(s.getParentId()+"","").equals(StringUtils.defaultString(parentId)))).collect(Collectors.toList());
}
@@ -655,6 +680,7 @@
if (CollectionUtils.isEmpty(companies)){
return;
}
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
//鏂板鐨勬儏鍐靛瓨鍦ㄨ褰�
if (Objects.isNull(company.getId())){
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"鍏徃鍚嶇О宸插瓨鍦�");
@@ -682,7 +708,8 @@
queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Company::getEditor);
queryWrapper.eq(Company::getIsdeleted,Constants.ZERO);
if(Objects.nonNull(type) && ( Constants.equalsInteger(type,Constants.ONE) || Constants.equalsInteger(type,Constants.ZERO))){
- queryWrapper.eq(type!=null,Company::getType,type);
+// queryWrapper.eq(type!=null,Company::getType,type);
+ queryWrapper.apply("( t.type = "+type+" or t.type = -1 )");
}else if(Objects.nonNull(type) && Constants.equalsInteger(type,Constants.TWO)){
String companySpecialId = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SPECIAL_COMPANY_ID).getCode();
if(StringUtils.isNotBlank(companySpecialId)){
@@ -750,7 +777,307 @@
for (Company updCompany:companyPool) {
companyMapper.updateById(updCompany);
}
-
}
+
+
+ // org_dept_create 閮ㄩ棬鏂板缓 {"timeStamp":"1758783935796","eventId":"0c779adba04143958a3960e8e36bbce5","deptId":[1040735458]}
+ // org_dept_modify 閮ㄩ棬淇敼 {"timeStamp":"1758785791639","eventId":"6c2d8c7a61a7419e8928fda3effb3bf4","deptId":[1040735458]}
+ // org_dept_remove 閮ㄩ棬鍒犻櫎 {"timeStamp":"1758785817760","eventId":"47e289f334e041719ed354052da474de","deptId":[1040735458]}
+
+ @Override
+ public void ddPushCompanyInfo(String eventType, JSONObject eventData) throws ApiException {
+ JSONArray jsonArray = eventData.getJSONArray("deptId");
+ if(jsonArray.isEmpty()){
+ return;
+ }
+ if(eventType.equals("org_dept_remove")){
+ //鍒犻櫎瀵瑰簲閮ㄩ棬淇℃伅
+ List<Long> deptIdList = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Long deptId = jsonArray.getLong(i);
+ deptIdList.add(deptId);
+ }
+ if(CollectionUtils.isNotEmpty(deptIdList)){
+ syncDelCompany(deptIdList);
+ }
+ }else if(eventType.equals("org_dept_create")||eventType.equals("org_dept_modify")){
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda()
+ .eq(Company::getIsdeleted,Constants.ZERO)
+ .eq(Company::getErpId,jsonArray.getLong(i))
+ );
+ OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse = dingTalk.syncDepartmentInfo(jsonArray.getLong(i));
+ if(Objects.isNull(company)){
+ getAddCompanyModel(deptGetResponse,company);
+ }else{
+ getUpdateCompanyModel(deptGetResponse,company);
+ }
+ }
+ }
+ }
+
+ private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds, Date date) {
+ if(delHkIds.size() == 0){
+ return;
+ }
+ OrgDelRequest request = new OrgDelRequest();
+ request.setIndexCodes( delHkIds.toArray(new String[]{}));
+ BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request);
+ if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+ List<String> fIds = new ArrayList<>();
+ if(result.getData()!=null){
+ for(OrgUpdateFailureResponse r : result.getData()){
+ if(r.getCode().equals("0x00052102")){
+ //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛
+ fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
+ }
+ }
+ }
+ //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
+ companyMapper.update(null,new UpdateWrapper<Company>().lambda()
+ .set(Company::getHkStatus,Constants.ONE)
+ .set(Company::getHkDate,date)
+ .set(Company::getHkId,null )
+ .in(Company::getId, delIds)
+ .notIn(fIds.size()>0,Company::getHkId, fIds));
+ companyMapper.update(null,new UpdateWrapper<Company>().lambda()
+ .set(Company::getHkStatus,Constants.TWO)
+ .set(Company::getHkDate,date)
+ .in(Company::getId, delIds)
+ .in(fIds.size()>0,Company::getHkId, fIds));
+ }
+ }
+
+ @Override
+ public String syncDDCompany() throws ApiException {
+ List<OapiV2DepartmentGetResponse.DeptGetResponse> list = dingTalk.syncAllDDDepartmentList();
+ 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> allList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
+ .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE));
+ dealCompanyChangeList(list,addList,updateList,delIds,allList);
+ if(delIds.size()>0){
+ syncDelCompany(delIds);
+ }
+ return "鍚屾鏁版嵁锛氭柊澧炪��"+addList.size()+"銆戞潯锛屾洿鏂般��"+updateList.size()+"銆戞潯锛屽垹闄ゃ��"+delIds.size()+"銆戞潯";
+ }else{
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鍚屾閽夐拤鏁版嵁涓虹┖锛�");
+ }
+ }
+
+ private void dealCompanyChangeList(List<OapiV2DepartmentGetResponse.DeptGetResponse> list, List<Company> addList, List<Company> updateList, List<Long> delIds, List<Company> allList) {
+ Date date = new Date();
+ for(OapiV2DepartmentGetResponse.DeptGetResponse respone : list){
+ //鏍规嵁erpid鏌ヨ浼佷笟淇℃伅锛屽垽鏂槸鏂板杩樻槸鏇存柊
+ Company company = findCompanyByERPId(allList,respone.getDeptId().toString());
+ if(company == null){
+ //濡傛灉鏄柊澧�
+ //灏佽鏂板缁勭粐瀵硅薄鏁版嵁
+ addList.add(getAddCompanyModel(respone,new Company()));
+ }else{
+ updateList.add(getUpdateCompanyModel(respone,company));
+ }
+ }
+ if(allList!=null && allList.size()>0){
+ for(Company c : allList){
+ if(!isCompanyDeleted(c,list)){
+ delIds.add(Long.valueOf(c.getErpId()));
+ }
+ }
+ }
+ }
+
+
+ /**
+ * 鏁寸悊閽夐拤鍚屾 鏂板缁勭粐瀵硅薄
+ * @param deptGetResponse
+ * @return
+ */
+ private Company getAddCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company) {
+ return syncDDAddCompanyModel(deptGetResponse,company);
+ }
+
+ /**
+ * 鏁寸悊閽夐拤鍚屾 鏂板 闇�瑕佷慨鏀圭殑缁勭粐瀵硅薄
+ * @param deptGetResponse
+ * @param company
+ * @return
+ */
+ private Company getUpdateCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse, Company company) {
+ return syncDDEditCompanyModel(deptGetResponse,company);
+ }
+
+
+ /**
+ * 鏍规嵁ERPID 鍒ゆ柇鏁版嵁鏄惁宸插湪闆嗗悎閲屽瓨鍦�
+ * @param allList
+ * @param id
+ * @return
+ */
+ private Company findCompanyByERPId(List<Company> allList, String id) {
+ if(allList!=null){
+ for(Company com :allList){
+ if(StringUtils.equals(com.getErpId(),id)){
+ return com;
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isCompanyDeleted(Company c, List<OapiV2DepartmentGetResponse.DeptGetResponse> list) {
+ for(OapiV2DepartmentGetResponse.DeptGetResponse m : list){
+ if(StringUtils.equals(c.getErpId(),m.getDeptId().toString())){
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * 鏁寸悊 閽夐拤鍚屾鐨� 缁勭粐淇℃伅
+ * @param deptGetResponse
+ * @param company
+ * @return
+ */
+ public Company syncDDAddCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){
+ company = new Company();
+ company.setCreateDate(new Date());
+ 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.setType(Constants.ONE);
+ String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
+ 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())
+ .eq(Company::getIsdeleted,Constants.ZERO).last(" limit 1 "));
+ if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
+ 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(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
+ }
+ }else if(Objects.isNull(parent.getType())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
+ }
+ idPath = parent.getCompanyPath();
+ company.setHkParentId(parent.getHkId());
+ company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
+ company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
+ company.setParentId(parent.getId());
+ }
+ company.setHkCompanyPath(company.getCompanyNamePath());
+ company.setCreateDate(new Date());
+ company.setIsdeleted(Constants.ZERO);
+ company.setHkStatus(Constants.ZERO);
+ company.setStatus(Constants.ZERO);
+ company.setHkDate(company.getCreateDate());
+ company.setEditDate(company.getCreateDate());
+ company.setEditor(company.getCreator());
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
+ companyMapper.insert(company);
+
+ company.setHkId(UUID.randomUUID().toString().replace("-",""));
+ //涓嬪彂娴峰悍瀹夐槻骞冲彴
+ Boolean issueStatus = addHkOrg(company);
+ Company com = new Company();
+ com.setId(company.getId());
+ com.setHkId(issueStatus?company.getHkId():null);
+ com.setHkStatus(issueStatus?Constants.ONE:Constants.TWO);
+ com.setCompanyPath(idPath+company.getId()+"/");
+ companyMapper.updateById(com);
+ return company;
+ }
+
+
+ public Company syncDDEditCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){
+ company.setErpParentId(deptGetResponse.getParentId().toString());
+ String idPath = "";
+ if(StringUtils.isNotBlank(company.getErpParentId())){
+ Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId())
+ .eq(Company::getIsdeleted,Constants.ZERO).last("limit 1 "));
+ if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){
+ 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(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
+ }
+ }else if(Objects.isNull(parent.getType())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝缁勭粐淇℃伅閿欒");
+ }
+ idPath = parent.getCompanyPath();
+ company.setHkParentId(parent.getHkId());
+ company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/");
+ company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName());
+ company.setParentId(parent.getId());
+ }
+
+ company.setName(deptGetResponse.getName());
+ company.setErpId(deptGetResponse.getDeptId().toString());
+ company.setErpParentId(deptGetResponse.getParentId().toString());
+ company.setSortnum(deptGetResponse.getOrder().intValue());//榛樿鏈�涓婇潰
+ company.setEditDate(new Date());
+ company.setHkCompanyPath(company.getCompanyNamePath());
+ company.setHkStatus(Constants.ZERO);
+ company.setStatus(Constants.ZERO);
+ company.setSortnum(deptGetResponse.getOrder().intValue());
+ company.setHkDate(company.getCreateDate());
+ company.setEditDate(company.getCreateDate());
+ company.setEditor(company.getCreator());
+ company.setPinyin(Constants.getChinesePingyin(company.getName()));
+ companyMapper.updateById(company);
+ //涓嬪彂娴峰悍瀹夐槻骞冲彴
+ Boolean issueStatus = editHkOrg(company);
+ Company com = new Company();
+ com.setId(company.getId());
+ com.setHkId(issueStatus?company.getHkId():null);
+ com.setHkStatus(issueStatus?Constants.ONE:Constants.TWO);
+ com.setCompanyPath(idPath+company.getId()+"/");
+ companyMapper.updateById(com);
+ return company;
+ }
+
+
+
+ public void syncDelCompany(List<Long> deptIdList){
+ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>()
+ .lambda()
+ .eq(Company::getIsdeleted,Constants.ZERO)
+ .in(Company::getErpId,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)
+ .set(Company::getEditDate,new Date())
+ .in(Company::getId,delIds)
+ );
+ //娴峰悍鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎
+ doHkDeleteOrg(delIds,delHKIds,new Date());
+ }
+ }
+
+
+
}
--
Gitblit v1.9.3