From 066694a762f620c3187cf6d4f9365530a4b2faec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?niohe=C2=B7erbao?= Date: Fri, 7 Apr 2023 10:50:04 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=20=E5=8D=95=E4=BD=8D=E8=AE=BE=E7=BD=AE-?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=85=8D=E7=BD=AE=EF=BC=8C=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E4=BA=BA=E5=91=98=E6=97=B6=EF=BC=8C=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E4=BA=BA=E5=91=98=EF=BC=8C=E6=8E=A5=E5=8F=A3=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=A9=BA=EF=BC=8C=E5=AE=9E=E9=99=85=E4=B8=8A=E6=98=AF?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E8=AF=A5=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/manage/OrganizationManage.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) 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 067983b..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 @@ -133,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<>(); @@ -164,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();