diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/ICompanyFiscalCodeService.java b/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/ICompanyFiscalCodeService.java
index 80741af..02690f7 100644
--- a/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/ICompanyFiscalCodeService.java
+++ b/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/ICompanyFiscalCodeService.java
@@ -3,6 +3,9 @@ package com.ningdatech.pmapi.fiscal.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.fiscal.entity.CompanyFiscalCode;
+import java.util.List;
+import java.util.Map;
+
/**
*
* 服务类
@@ -14,4 +17,12 @@ import com.ningdatech.pmapi.fiscal.entity.CompanyFiscalCode;
public interface ICompanyFiscalCodeService extends IService {
CompanyFiscalCode getByOrganizationCode(String orgCode);
+
+ /**
+ * 获取 key orgCode fiscalCode
+ *
+ * @param orgCodeList
+ * @return
+ */
+ Map getByOrgFiscalCodeMap(List orgCodeList);
}
diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/impl/CompanyFiscalCodeServiceImpl.java b/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/impl/CompanyFiscalCodeServiceImpl.java
index dcef437..26315f4 100644
--- a/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/impl/CompanyFiscalCodeServiceImpl.java
+++ b/pmapi/src/main/java/com/ningdatech/pmapi/fiscal/service/impl/CompanyFiscalCodeServiceImpl.java
@@ -1,5 +1,6 @@
package com.ningdatech.pmapi.fiscal.service.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,6 +9,11 @@ import com.ningdatech.pmapi.fiscal.mapper.NdCompanyFiscalCodeMapper;
import com.ningdatech.pmapi.fiscal.service.ICompanyFiscalCodeService;
import org.springframework.stereotype.Service;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
/**
*
* 服务实现类
@@ -30,4 +36,17 @@ public class CompanyFiscalCodeServiceImpl extends ServiceImpl getByOrgFiscalCodeMap(List orgCodeList) {
+ if (CollUtil.isNotEmpty(orgCodeList)) {
+ return new HashMap();
+ }
+ List companyFiscalCodeList = this.list(Wrappers.lambdaQuery(CompanyFiscalCode.class)
+ .in(CompanyFiscalCode::getOrganizationCode, orgCodeList));
+
+ Map orgCodeAndFiscalCodeMap = companyFiscalCodeList.stream()
+ .collect(Collectors.toMap(CompanyFiscalCode::getOrganizationCode, CompanyFiscalCode::getFiscalCode));
+ return orgCodeAndFiscalCodeMap;
+ }
}
diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java b/pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java
index e1175b6..77bb4a5 100644
--- a/pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java
+++ b/pmapi/src/main/java/com/ningdatech/pmapi/meta/helper/basic/AbstractDictionaryCache.java
@@ -2,10 +2,10 @@ package com.ningdatech.pmapi.meta.helper.basic;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
-import com.ningdatech.pmapi.meta.service.IMetaDictionaryService;
import com.ningdatech.pmapi.meta.constant.DictAllTypeEnum;
import com.ningdatech.pmapi.meta.helper.DictionaryCache;
import com.ningdatech.pmapi.meta.model.dto.DictionaryDTO;
+import com.ningdatech.pmapi.meta.service.IMetaDictionaryService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java
index 4e2083b..97222af 100644
--- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java
+++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java
@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.pmapi.common.config.DingOrganizationProperties;
+import com.ningdatech.pmapi.common.helper.RegionCacheHelper;
import com.ningdatech.pmapi.common.util.StrUtils;
+import com.ningdatech.pmapi.fiscal.service.ICompanyFiscalCodeService;
import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo;
import com.ningdatech.pmapi.organization.model.entity.DingOrganization;
import com.ningdatech.pmapi.organization.model.po.ReqOrganizationListPO;
@@ -17,6 +19,7 @@ import com.ningdatech.pmapi.organization.model.vo.OrganizationTreeVO;
import com.ningdatech.pmapi.organization.model.vo.ResOrganizationListVO;
import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService;
import com.ningdatech.pmapi.organization.service.IDingOrganizationService;
+import com.ningdatech.pmapi.sys.model.dto.RegionDTO;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
@@ -24,6 +27,7 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -40,24 +44,43 @@ public class OrganizationManage {
private final IDingEmployeeInfoService iDingEmployeeInfoService;
+ private final RegionCacheHelper regionCacheHelper;
+
+ private final ICompanyFiscalCodeService iCompanyFiscalCodeService;
+
public PageVo organizationList(ReqOrganizationListPO reqOrganizationListPO) {
String orgName = reqOrganizationListPO.getOrgName();
+ String regionId = reqOrganizationListPO.getRegionId();
Page page = iDingOrganizationService
.page(new Page<>(reqOrganizationListPO.getPageNumber(), reqOrganizationListPO.getPageSize())
, Wrappers.lambdaQuery(DingOrganization.class)
- .like(StringUtils.isNotBlank(orgName), DingOrganization::getOrganizationName, orgName));
+ .like(StringUtils.isNotBlank(orgName), DingOrganization::getOrganizationName, orgName)
+ .eq(StringUtils.isNotBlank(regionId), DingOrganization::getDivisionCode, regionId)
+ .orderByAsc(DingOrganization::getId)
+
+ );
long total = page.getTotal();
List records = page.getRecords();
-
List resVOList = new ArrayList<>();
if (CollUtil.isNotEmpty(records)) {
+ List organizationCodeList = records.stream().map(DingOrganization::getOrganizationCode)
+ .distinct().collect(Collectors.toList());
+ Map orgFiscalCodeMap = iCompanyFiscalCodeService.getByOrgFiscalCodeMap(organizationCodeList);
+
resVOList = records.stream().map(r -> {
ResOrganizationListVO resOrganizationListVO = new ResOrganizationListVO();
resOrganizationListVO.setOrgCode(r.getOrganizationCode());
resOrganizationListVO.setOrgName(r.getOrganizationName());
- // TODO 补充其他字段
+ String divisionCode = r.getDivisionCode();
+ if (StringUtils.isNotBlank(divisionCode)) {
+ RegionDTO regionDTO = regionCacheHelper.getByCodeAndLevel(divisionCode, 3);
+ resOrganizationListVO.setRegionId(regionDTO.getRegionCode());
+ resOrganizationListVO.setRegionName(regionDTO.getRegionName());
+ }
+ String fiscalCode = orgFiscalCodeMap.get(r.getOrganizationCode());
+ resOrganizationListVO.setFiscalCode(fiscalCode);
return resOrganizationListVO;
}).collect(Collectors.toList());
}
@@ -110,6 +133,12 @@ public class OrganizationManage {
public List treeRubbishVOList(ReqSynthesizePO request) {
String organizationCode = request.getOrganizationCode();
String organizationName = request.getOrganizationName();
+ String employeeName = request.getEmployeeName();
+
+ // 用户搜索为特殊逻辑
+ if (StringUtils.isNotBlank(employeeName)) {
+ return treeEmployeeQuery(employeeName, organizationCode);
+ }
List dingOrganizationList = new ArrayList<>();
List organizationCodeList = new ArrayList<>();
@@ -141,6 +170,61 @@ public class OrganizationManage {
return orgKeyTreeVOList;
}
+ public List treeEmployeeQuery(String employeeName, String organizationCode) {
+ List organizationCodeList = CollUtil.toList(organizationCode).stream()
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toList());
+ List dingEmployeeInfoList = iDingEmployeeInfoService
+ .list(Wrappers.lambdaQuery(DingEmployeeInfo.class)
+ .like(DingEmployeeInfo::getEmployeeName, employeeName)
+ .eq(DingEmployeeInfo::getMainJob, "true")
+ .in(CollUtil.isNotEmpty(organizationCodeList), DingEmployeeInfo::getOrganizationCode, organizationCodeList)
+ );
+ List resultOrganizationCodeList = dingEmployeeInfoList.stream()
+ .filter(r -> StringUtils.isNotBlank(r.getOrganizationCode()))
+ .map(DingEmployeeInfo::getOrganizationCode)
+ .distinct().collect(Collectors.toList());
+
+ if (CollectionUtil.isEmpty(resultOrganizationCodeList)) {
+ return new ArrayList<>();
+ }
+
+ List dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class)
+ .in(DingOrganization::getOrganizationCode, resultOrganizationCodeList));
+
+ List orgKeyTreeVOList = dingOrganizationList.stream().map(r -> {
+ KeyTreeVO keyTreeVO = new KeyTreeVO();
+ keyTreeVO.setTitle(r.getOrganizationName());
+ keyTreeVO.setKey(r.getOrganizationCode());
+ keyTreeVO.setType("ORGANIZATION");
+ return keyTreeVO;
+ }).collect(Collectors.toList());
+
+ employeeNameSearcheTreeVOList(orgKeyTreeVOList, dingEmployeeInfoList);
+ return orgKeyTreeVOList;
+ }
+
+ private void employeeNameSearcheTreeVOList(List basicOrgKeyTreeVOList, List allDingEmployeeInfoList) {
+ Map> orgCodeEmployeeMap = allDingEmployeeInfoList.stream()
+ .filter(r -> StringUtils.isNotBlank(r.getOrganizationCode()))
+ .collect(Collectors.groupingBy(DingEmployeeInfo::getOrganizationCode));
+
+ for (KeyTreeVO basicOrgKeyTreeVO : basicOrgKeyTreeVOList) {
+ String parentCode = basicOrgKeyTreeVO.getKey();
+
+ List dingEmployeeInfoList = orgCodeEmployeeMap.get(parentCode);
+ List memberChildren = dingEmployeeInfoList.stream().map(r -> {
+ KeyTreeVO child = new KeyTreeVO();
+ child.setKey(r.getEmployeeCode());
+ child.setTitle(r.getEmployeeName());
+ child.setType("MEMBER");
+ return child;
+ }).collect(Collectors.toList());
+ basicOrgKeyTreeVO.setChildren(memberChildren);
+ }
+ }
+
+
public void treeVOList(Boolean needMember, List basicOrgKeyTreeVOList) {
for (KeyTreeVO basicOrgKeyTreeVO : basicOrgKeyTreeVOList) {
String parentCode = basicOrgKeyTreeVO.getKey();
diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqSynthesizePO.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqSynthesizePO.java
index 189929d..7bd77fe 100644
--- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqSynthesizePO.java
+++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqSynthesizePO.java
@@ -21,4 +21,7 @@ public class ReqSynthesizePO {
@ApiModelProperty("单位名称")
private String organizationName;
+
+ @ApiModelProperty("筛选人员姓名")
+ private String employeeName;
}