Browse Source

fix 单位设置-流程配置,节点选择人员时,搜索人员,接口返回空,实际上是存在该人员

tags/24080901
niohe·erbao 1 year ago
parent
commit
066694a762
1 changed files with 61 additions and 0 deletions
  1. +61
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java

+ 61
- 0
pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java View File

@@ -133,6 +133,12 @@ public class OrganizationManage {
public List<KeyTreeVO> treeRubbishVOList(ReqSynthesizePO request) {
String organizationCode = request.getOrganizationCode();
String organizationName = request.getOrganizationName();
String employeeName = request.getEmployeeName();

// 用户搜索为特殊逻辑
if (StringUtils.isNotBlank(employeeName)) {
return treeEmployeeQuery(employeeName, organizationCode);
}

List<DingOrganization> dingOrganizationList = new ArrayList<>();
List<String> organizationCodeList = new ArrayList<>();
@@ -164,6 +170,61 @@ public class OrganizationManage {
return orgKeyTreeVOList;
}

public List<KeyTreeVO> treeEmployeeQuery(String employeeName, String organizationCode) {
List<String> organizationCodeList = CollUtil.toList(organizationCode).stream()
.filter(StringUtils::isNotBlank)
.collect(Collectors.toList());
List<DingEmployeeInfo> dingEmployeeInfoList = iDingEmployeeInfoService
.list(Wrappers.lambdaQuery(DingEmployeeInfo.class)
.like(DingEmployeeInfo::getEmployeeName, employeeName)
.eq(DingEmployeeInfo::getMainJob, "true")
.in(CollUtil.isNotEmpty(organizationCodeList), DingEmployeeInfo::getOrganizationCode, organizationCodeList)
);
List<String> resultOrganizationCodeList = dingEmployeeInfoList.stream()
.filter(r -> StringUtils.isNotBlank(r.getOrganizationCode()))
.map(DingEmployeeInfo::getOrganizationCode)
.distinct().collect(Collectors.toList());

if (CollectionUtil.isEmpty(resultOrganizationCodeList)) {
return new ArrayList<>();
}

List<DingOrganization> dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class)
.in(DingOrganization::getOrganizationCode, resultOrganizationCodeList));

List<KeyTreeVO> 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<KeyTreeVO> basicOrgKeyTreeVOList, List<DingEmployeeInfo> allDingEmployeeInfoList) {
Map<String, List<DingEmployeeInfo>> orgCodeEmployeeMap = allDingEmployeeInfoList.stream()
.filter(r -> StringUtils.isNotBlank(r.getOrganizationCode()))
.collect(Collectors.groupingBy(DingEmployeeInfo::getOrganizationCode));

for (KeyTreeVO basicOrgKeyTreeVO : basicOrgKeyTreeVOList) {
String parentCode = basicOrgKeyTreeVO.getKey();

List<DingEmployeeInfo> dingEmployeeInfoList = orgCodeEmployeeMap.get(parentCode);
List<KeyTreeVO> 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<KeyTreeVO> basicOrgKeyTreeVOList) {
for (KeyTreeVO basicOrgKeyTreeVO : basicOrgKeyTreeVOList) {
String parentCode = basicOrgKeyTreeVO.getKey();


Loading…
Cancel
Save