diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java index 9fd6cdb..33135b7 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java @@ -5,6 +5,7 @@ import com.ningdatech.basic.model.PageVo; import com.ningdatech.pmapi.organization.manage.OrganizationManage; import com.ningdatech.pmapi.organization.model.po.ReqOrganizationListPO; import com.ningdatech.pmapi.organization.model.po.ReqSynthesizePO; +import com.ningdatech.pmapi.organization.model.vo.KeyTreeVO; import com.ningdatech.pmapi.organization.model.vo.OrganizationSynthesizeTreeVO; import com.ningdatech.pmapi.organization.model.vo.OrganizationTreeVO; import com.ningdatech.pmapi.organization.model.vo.ResOrganizationListVO; @@ -54,4 +55,10 @@ public class DingOrganizationController { public List organizationSynthesizeList(@Valid @RequestBody ReqSynthesizePO request) { return organizationManage.organizationSynthesizeList(request); } + + @ApiOperation("组织树状列表筛选") + @PostMapping("/tree-list") + public List treeVOList(@Valid @RequestBody ReqSynthesizePO request) { + return organizationManage.treeVOList(request); + } } 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 7226d3e..cdd3bb1 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 @@ -12,6 +12,7 @@ import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo; import com.ningdatech.pmapi.organization.model.entity.DingOrganization; import com.ningdatech.pmapi.organization.model.po.ReqOrganizationListPO; import com.ningdatech.pmapi.organization.model.po.ReqSynthesizePO; +import com.ningdatech.pmapi.organization.model.vo.KeyTreeVO; import com.ningdatech.pmapi.organization.model.vo.OrganizationSynthesizeTreeVO; import com.ningdatech.pmapi.organization.model.vo.OrganizationSynthesizeTreeVO.OrganizationMemberInfo; import com.ningdatech.pmapi.organization.model.vo.OrganizationTreeVO; @@ -150,4 +151,47 @@ public class OrganizationManage { return organizationSynthesizeTreeVOList; } + + public List treeVOList(ReqSynthesizePO request) { + String parentCode = request.getParentCode(); + Boolean needMember = request.getNeedMember(); + + List childOrganizationList = getChildOrganizationList(parentCode); + + List orgKeyTreeVOList = childOrganizationList.stream().map(r -> { + KeyTreeVO keyTreeVO = new KeyTreeVO(); + keyTreeVO.setTitle(r.getName()); + keyTreeVO.setKey(r.getOrganizationCode()); + keyTreeVO.setType("ORGANIZATION"); + return keyTreeVO; + }).collect(Collectors.toList()); + + if (needMember && orgKeyTreeVOList.size() > 0) { + List organizationCodeList = orgKeyTreeVOList.stream() + .map(KeyTreeVO::getKey).collect(Collectors.toList()); + List dingEmployeeInfoList = iDingEmployeeInfoService.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) + .eq(DingEmployeeInfo::getMainJob, "true") + .in(DingEmployeeInfo::getOrganizationCode, organizationCodeList)); + + Map> organizationCodeGroupMap = dingEmployeeInfoList.stream() + .collect(Collectors.groupingBy(DingEmployeeInfo::getOrganizationCode)); + + for (KeyTreeVO keyTreeVO : orgKeyTreeVOList) { + String organizationCode = keyTreeVO.getKey(); + List dingEmployeeInfoGroupList = organizationCodeGroupMap.get(organizationCode); + if (CollUtil.isNotEmpty(dingEmployeeInfoGroupList)) { + List memberChildren = dingEmployeeInfoGroupList.stream().map(r -> { + KeyTreeVO child = new KeyTreeVO(); + child.setKey(r.getEmployeeCode()); + child.setTitle(r.getEmployeeName()); + child.setType("MEMBER"); + return child; + }).collect(Collectors.toList()); + keyTreeVO.setChildren(memberChildren); + } + } + } + + return orgKeyTreeVOList; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/KeyTreeVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/KeyTreeVO.java new file mode 100644 index 0000000..b8265f9 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/KeyTreeVO.java @@ -0,0 +1,30 @@ +package com.ningdatech.pmapi.organization.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author liuxinxin + * @date 2023/3/29 下午2:38 + */ + +@Data +@ApiModel("树形定制化接口") +public class KeyTreeVO { + + @ApiModelProperty("编码") + private String key; + + @ApiModelProperty("名称") + private String title; + + @ApiModelProperty("类型 ORGANIZATION/MEMBER") + private String type; + + @ApiModelProperty("子集") + private List children; + +} diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java index 5e0b892..f05dcb9 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/todocenter/TodoCenterTest.java @@ -131,7 +131,7 @@ public class TodoCenterTest extends AppTests { String passMsg = String.format(PASS_MSG_TEMPLATE, passWorkNoticeInfo.getOrganizationName(), "测试项目0301-1"); passWorkNoticeInfo.setMsg(passMsg); // 放入工作通知暂存表中,通过扫表异步发送 - workNoticeStagingService.addByWorkNotice(passWorkNoticeInfo, MsgTypeEnum.AUDIT); +// workNoticeStagingService.addByWorkNotice(passWorkNoticeInfo, MsgTypeEnum.AUDIT); } @Test