From d38ffbedeab42ef7e49e575ac876be494cec5885 Mon Sep 17 00:00:00 2001 From: zhanghongbo Date: Wed, 15 Jan 2025 14:17:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3488):=20=E6=B7=BB=E5=8A=A0=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E6=9C=8D=E5=8A=A1=E4=BE=9D=E8=B5=96maokai=E7=9A=84?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=B1=BB=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orgmanax/dto/node/dto/NodeProfile.java | 8 +- .../controller/OrgProjectGroupController.java | 5 +- .../impl/OrgProjectGroupServiceImpl.java | 123 ++++++++++++++---- .../impl/OrgProjectWorkerServiceImpl.java | 2 +- ...OrgProjectWorkerProfessionServiceImpl.java | 2 +- 5 files changed, 104 insertions(+), 36 deletions(-) diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/NodeProfile.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/NodeProfile.java index 668fe3e..1dc4302 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/NodeProfile.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/node/dto/NodeProfile.java @@ -199,6 +199,10 @@ public class NodeProfile { PROJECT_TEAM_ID("项目班组id", Long.class, Arrays.asList("projectTeamId", "belongProjectTeamId")), PLAT_TEAM_ID("平台班组id", Long.class, Arrays.asList("platTeamId", "belongPlatTeamId")), PROJECT_GROUP_ID("项目小组id", Long.class, Arrays.asList("projectGroupId")), + PROJECT_GROUP_OWNER_PROJECT_WORKER_ID("项目小组owner项目工人id", Long.class, Arrays.asList("ownerProjectWorkerId")), + PROJECT_GROUP_TYPE("项目小组类型", Integer.class, Arrays.asList("type")), + PROJECT_GROUP_CREATE_AT("项目小组创建时间", Integer.class, Arrays.asList("createAt")), + PROJECT_GROUP_UPDATE_AT("项目小组修改时间", Integer.class, Arrays.asList("updateAt")), ; @@ -206,7 +210,7 @@ public class NodeProfile { /** * 解析类型 */ - private Class aClass; + private Class resolveClass; /** * 解析字段名 */ @@ -219,7 +223,7 @@ public class NodeProfile { .map(profile -> { List resolveFieldNames = resolveType.getResolveFieldName(); for (String field : resolveFieldNames) { - Object object = profile.getObject(field, resolveType.aClass); + Object object = profile.getObject(field, resolveType.resolveClass); if (object != null) { return object; } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/controller/OrgProjectGroupController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/controller/OrgProjectGroupController.java index f5ee443..b169449 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/controller/OrgProjectGroupController.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/controller/OrgProjectGroupController.java @@ -56,10 +56,7 @@ public class OrgProjectGroupController implements OrgProjectGroupApi { @Override public ApiResult getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker) { - - - orgProjectGroupService.getNoLeaderGroupList(workspaceId, platTeamId, isReturnWorker); - return null; + return ApiResult.success(orgProjectGroupService.getNoLeaderGroupList(workspaceId, platTeamId, isReturnWorker)); } @Override diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/service/impl/OrgProjectGroupServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/service/impl/OrgProjectGroupServiceImpl.java index 58f4731..0440758 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/service/impl/OrgProjectGroupServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/group/service/impl/OrgProjectGroupServiceImpl.java @@ -1,23 +1,36 @@ package cn.axzo.orgmanax.server.project.group.service.impl; import cn.axzo.orgmanax.api.project.group.enums.ProjectGroupTypeEnum; +import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum; +import cn.axzo.orgmanax.dto.common.IdentityType; +import cn.axzo.orgmanax.dto.common.PersonProfileBriefDTO; import cn.axzo.orgmanax.dto.node.dto.NodeProfile; import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO; import cn.axzo.orgmanax.dto.node.enums.NodeTypeEnum; import cn.axzo.orgmanax.dto.node.req.ListNodeReq; +import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserDTO; +import cn.axzo.orgmanax.dto.nodeuser.dto.NodeUserProfile; +import cn.axzo.orgmanax.dto.nodeuser.enums.ProjectGroupWorkerStatusEnum; +import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; import cn.axzo.orgmanax.dto.project.group.enums.ProjectGroupStatusEnum; +import cn.axzo.orgmanax.dto.project.group.resp.NoleaderProjectGroupWorkerRes; import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp; +import cn.axzo.orgmanax.dto.project.group.resp.ProjectWorkerSkillTagRes; +import cn.axzo.orgmanax.infra.dao.workerprofession.repository.WorkerProfessionSkillTagRepository; import cn.axzo.orgmanax.server.node.service.NodeService; +import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService; import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService; +import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService; +import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionSkillService; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.google.common.collect.Sets; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -30,15 +43,15 @@ import java.util.stream.Collectors; public class OrgProjectGroupServiceImpl implements OrgProjectGroupService { private NodeService nodeService; + private NodeUserService nodeUserService; + private OrgProjectWorkerProfessionSkillService orgProjectWorkerProfessionSkillService; + private OrgProjectWorkerProfessionService orgProjectWorkerProfessionService; @Override public ProjectGroupListResp getNoLeaderGroupList(Long workspaceId, Long platTeamId, Boolean isReturnWorker) { log.info("getNoLeaderGroupList : workspaceId={}, platTeamId={}, isReturnWorker={}", workspaceId, platTeamId, isReturnWorker); - //1.默认不返回工人列表 - if (isReturnWorker == null) { - isReturnWorker = false; - } + List orgNodeDTOS = nodeService.list(ListNodeReq.builder() .workspaceIds(Sets.newHashSet(workspaceId)) .platTeamIds(Sets.newHashSet(platTeamId)) @@ -49,37 +62,91 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService { .ownerProjectWorkerIds(Arrays.asList(0L)) .build()); + ProjectGroupListResp res = new ProjectGroupListResp(); if (ObjectUtil.isEmpty(orgNodeDTOS)) { - Collections.emptyList(); + res.setProjectGroupList(new ArrayList<>()); + return res; } - convert(orgNodeDTOS, workspaceId); + List projectGroupInfos = convert(orgNodeDTOS, workspaceId); + res.setProjectGroupList(projectGroupInfos); + //1.默认不返回工人列表 + if (isReturnWorker == null) { + isReturnWorker = false; + } + if (isReturnWorker) { + for (ProjectGroupListResp.ProjectGroupInfo projectGroupInfo : projectGroupInfos) { + List nodeUserDTOS = nodeUserService.list(ListNodeUserReq.builder() + .projectGroupWorkerStatus(ProjectGroupWorkerStatusEnum.VALID.getValue()) + .projectWorkerStatuses(Arrays.asList(ProjectWorkerStatusEnum.ACTIVE.value)) + .projectGroupId(projectGroupInfo.getId()) + .identityType(IdentityType.WORKER.getCode()) + .filterIncludeNodeTypes(Arrays.asList(NodeTypeEnum.PROJECT_GROUP.getValue())) + .needs(ListNodeUserReq.Needs.builder().personProfile(true).build()) + .build()); + if (ObjectUtil.isEmpty(nodeUserDTOS)) { + continue; + } + //TODO +// List projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList()); +// //获取工种 +// orgProjectWorkerProfessionService.listValid() +// +// //获取技能标签 +// List skillTagResps = orgProjectWorkerProfessionSkillService.list(WorkerProfessionSkillTagRepository.PageReq.builder() +// .workspaceId(projectGroupInfo.getWorkspaceId()) +// .projectWorkerIds(projectWorkerIdList) +// .build()); +// Map> workerSkillTagMap = +// skillTagResps.stream().collect(Collectors.groupingBy(WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp::getProjectWorkerId)); +// List groupWorkerlist = new ArrayList<>(); +// for (NodeUserDTO nodeUserDTO : nodeUserDTOS) { +// NoleaderProjectGroupWorkerRes workerRes = new NoleaderProjectGroupWorkerRes(); +// +// PersonProfileBriefDTO personProfile = nodeUserDTO.getPersonProfile(); +// workerRes.setFaceUrl(personProfile.getAvatarUrl()); +// workerRes.setPhone(personProfile.getPhone()); +// workerRes.setName(personProfile.getRealName()); +// workerRes.setIdentityId(nodeUserDTO.getIdentityId()); +// workerRes.setProjectWorkerId(NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)); +// workerRes.setProfessionList(BeanConvertUtils.copyList(oneWideByParam.getProfessionList(), +// NoleaderProjectGroupWorkerRes.ProjectGroupWorkerProfession.class)); +// workerRes.setProfessionCategory(oneWideByParam.getWorkerProfessionCategory()); +// List skillTagList = workerSkillTagMap +// .getOrDefault(worker.getProjectWorkerId(), null); +// log.info("工人{}技能标签:{}", oneWideByParam.getWorkerName(), JSON.toJSONString(skillTagList)); +// if (CollectionUtil.isNotEmpty(skillTagList)) { +// workerRes.setSkillTagList(BeanConvertUtils.copyList(skillTagList, +// ProjectWorkerSkillTagRes.class, (s, t) -> { +// t.setId(s.getSkillTagId()); +// t.setName(s.getSkillTagName()); +// })); +// } +// groupWorkerlist.add(workerRes); +// } + + } + } return null; } private List convert(List orgNodeDTOS, Long workspaceId) { - //todo -// return orgNodeDTOS.stream().map(orgNodeDTO -> { -// ProjectGroupListResp.ProjectGroupInfo projectGroupInfo = new ProjectGroupListResp.ProjectGroupInfo(); -// projectGroupInfo.setId(NodeProfile.resolveProjectGroupId(orgNodeDTO)); -// projectGroupInfo.setName(orgNodeDTO.getNodeName()); -// projectGroupInfo.setWorkspaceId(workspaceId); -// projectGroupInfo.setBelongProjectTeamId(NodeProfile.resolveProjectTeamId(orgNodeDTO)); -// projectGroupInfo.setBelongPlatTeamId(NodeProfile.resolvePlatTeamId(orgNodeDTO)); -// projectGroupInfo.setOwnerProjectWorkerId(orgNodeDTO.get); -// projectGroupInfo.setOwnerWorkerName(); -// projectGroupInfo.setOwnerWorkerPhone(); -// projectGroupInfo.setOwnerWorkerFaceUrl(); -// projectGroupInfo.setGroupType(); -// projectGroupInfo.setCreateAt(); -// projectGroupInfo.setUpdateAt(); -// projectGroupInfo.setProjectGroupWorkerList(); -// }).collect(Collectors.toList()); - return null; - + return orgNodeDTOS.stream().map(orgNodeDTO -> { + ProjectGroupListResp.ProjectGroupInfo projectGroupInfo = new ProjectGroupListResp.ProjectGroupInfo(); + projectGroupInfo.setId(NodeProfile.resolveProjectGroupId(orgNodeDTO)); + projectGroupInfo.setName(orgNodeDTO.getNodeName()); + projectGroupInfo.setWorkspaceId(workspaceId); + projectGroupInfo.setBelongProjectTeamId(NodeProfile.resolveProjectTeamId(orgNodeDTO)); + projectGroupInfo.setBelongPlatTeamId(NodeProfile.resolvePlatTeamId(orgNodeDTO)); + projectGroupInfo.setOwnerProjectWorkerId(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_OWNER_PROJECT_WORKER_ID)); + projectGroupInfo.setGroupType(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_TYPE)); + projectGroupInfo.setCreateAt(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_CREATE_AT)); + projectGroupInfo.setUpdateAt(NodeProfile.resolve(orgNodeDTO, NodeProfile.NodeProfileResolveTypeEnum.PROJECT_GROUP_UPDATE_AT)); + return projectGroupInfo; + }).collect(Collectors.toList()); } } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/worker/service/impl/OrgProjectWorkerServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/worker/service/impl/OrgProjectWorkerServiceImpl.java index 675aac9..9dddd4e 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/worker/service/impl/OrgProjectWorkerServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/project/worker/service/impl/OrgProjectWorkerServiceImpl.java @@ -2,7 +2,7 @@ package cn.axzo.orgmanax.server.project.worker.service.impl; import cn.axzo.orgmanax.api.invite.enums.WorkerInviteStatusEnum; import cn.axzo.orgmanax.api.project.group.enums.ProjectGroupTypeEnum; -import cn.axzo.orgmanax.api.project.worker.enums.ProjectWorkerStatusEnum; +import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum; import cn.axzo.orgmanax.dto.common.IdentityType; import cn.axzo.orgmanax.dto.node.dto.NodeProfile; import cn.axzo.orgmanax.dto.node.dto.OrgNodeDTO; diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/workerprofession/service/impl/OrgProjectWorkerProfessionServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/workerprofession/service/impl/OrgProjectWorkerProfessionServiceImpl.java index 8fb3d82..19d5d20 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/workerprofession/service/impl/OrgProjectWorkerProfessionServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/workerprofession/service/impl/OrgProjectWorkerProfessionServiceImpl.java @@ -1,7 +1,7 @@ package cn.axzo.orgmanax.server.workerprofession.service.impl; import cn.axzo.foundation.page.PageResp; -import cn.axzo.orgmanax.api.project.worker.enums.ProjectWorkerStatusEnum; +import cn.axzo.orgmanax.dto.project.worker.enums.ProjectWorkerStatusEnum; import cn.axzo.orgmanax.dto.common.IdentityType; import cn.axzo.orgmanax.dto.common.util.NumberUtil; import cn.axzo.orgmanax.dto.common.util.TreeUtil;