feat(REQ-3488): 提交小组相关接口

This commit is contained in:
zhanghongbo 2025-01-15 16:05:08 +08:00
parent d38ffbedea
commit dc28c6b141
6 changed files with 79 additions and 44 deletions

View File

@ -10,10 +10,7 @@ import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/** /**
* @author zhanghongbo * @author zhanghongbo
@ -34,6 +31,8 @@ public class WorkerProfessionTagQueryPageReq extends PageReqV2 {
private Set<Long> professionIds; private Set<Long> professionIds;
private Boolean needSkillTags; private Boolean needSkillTags;
private Set<Long> orgNodeIds; private Set<Long> orgNodeIds;
private Collection<Long> projectWorkerIds;
private Long workspaceId;
public void check() { public void check() {
if (ObjectUtil.isAllEmpty(orgNodeId4ResolvedTeamOrgNodeId, personIds, orgNodeIds)) { if (ObjectUtil.isAllEmpty(orgNodeId4ResolvedTeamOrgNodeId, personIds, orgNodeIds)) {

View File

@ -53,6 +53,12 @@ public class ProjectWorkerProfessionResp implements Serializable {
* 数据有效性标记 * 数据有效性标记
*/ */
private Integer valid; private Integer valid;
/**
* 项目工人id
*/
private Long projectWorkerId;
/** /**
* 技能标签列表 * 技能标签列表
*/ */

View File

@ -8,6 +8,8 @@ import cn.axzo.orgmanax.infra.dao.workerprofession.entity.WorkerProfessionTag;
import lombok.*; import lombok.*;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -38,7 +40,7 @@ public interface WorkerProfessionTagRepository {
* 项目内工人ids * 项目内工人ids
*/ */
@CriteriaField(field = "projectWorkerId", operator = Operator.IN) @CriteriaField(field = "projectWorkerId", operator = Operator.IN)
private List<Long> projectWorkerIds; private Collection<Long> projectWorkerIds;
/** /**
* PLAT_TEAM:平台班组PROJECT_TEAM:项目内班组 * PLAT_TEAM:平台班组PROJECT_TEAM:项目内班组

View File

@ -16,18 +16,23 @@ 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.NoleaderProjectGroupWorkerRes;
import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp; import cn.axzo.orgmanax.dto.project.group.resp.ProjectGroupListResp;
import cn.axzo.orgmanax.dto.project.group.resp.ProjectWorkerSkillTagRes; import cn.axzo.orgmanax.dto.project.group.resp.ProjectWorkerSkillTagRes;
import cn.axzo.orgmanax.dto.workerprofession.req.WorkerProfessionTagQueryPageReq;
import cn.axzo.orgmanax.dto.workerprofession.resp.ProjectWorkerProfessionResp;
import cn.axzo.orgmanax.infra.client.datacollection.dto.DataCollectionSkillTypeEnum;
import cn.axzo.orgmanax.infra.dao.workerprofession.repository.WorkerProfessionSkillTagRepository; import cn.axzo.orgmanax.infra.dao.workerprofession.repository.WorkerProfessionSkillTagRepository;
import cn.axzo.orgmanax.server.node.service.NodeService; import cn.axzo.orgmanax.server.node.service.NodeService;
import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService; import cn.axzo.orgmanax.server.nodeuser.service.NodeUserService;
import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService; import cn.axzo.orgmanax.server.project.group.service.OrgProjectGroupService;
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService; import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionService;
import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionSkillService; import cn.axzo.orgmanax.server.workerprofession.service.OrgProjectWorkerProfessionSkillService;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Results;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -77,6 +82,7 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
} }
if (isReturnWorker) { if (isReturnWorker) {
//获取工人信息列表
for (ProjectGroupListResp.ProjectGroupInfo projectGroupInfo : projectGroupInfos) { for (ProjectGroupListResp.ProjectGroupInfo projectGroupInfo : projectGroupInfos) {
List<NodeUserDTO> nodeUserDTOS = nodeUserService.list(ListNodeUserReq.builder() List<NodeUserDTO> nodeUserDTOS = nodeUserService.list(ListNodeUserReq.builder()
.projectGroupWorkerStatus(ProjectGroupWorkerStatusEnum.VALID.getValue()) .projectGroupWorkerStatus(ProjectGroupWorkerStatusEnum.VALID.getValue())
@ -90,48 +96,56 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
continue; continue;
} }
//TODO List<Long> projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList());
// List<Long> projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList()); //获取工种
// //获取工种 List<ProjectWorkerProfessionResp> professionResps = orgProjectWorkerProfessionService.list(WorkerProfessionTagQueryPageReq.builder()
// orgProjectWorkerProfessionService.listValid() .projectWorkerIds(projectWorkerIdList)
// .workspaceId(projectGroupInfo.getWorkspaceId())
// //获取技能标签 .build());
// List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp> skillTagResps = orgProjectWorkerProfessionSkillService.list(WorkerProfessionSkillTagRepository.PageReq.builder() Map<Long, List<ProjectWorkerProfessionResp>> professionTagMap = professionResps.stream().collect(Collectors.groupingBy(ProjectWorkerProfessionResp::getProjectWorkerId));
// .workspaceId(projectGroupInfo.getWorkspaceId())
// .projectWorkerIds(projectWorkerIdList)
// .build());
// Map<Long, List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp>> workerSkillTagMap =
// skillTagResps.stream().collect(Collectors.groupingBy(WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp::getProjectWorkerId));
// List<NoleaderProjectGroupWorkerRes> 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<LabourProjectWorkerSkillTag> 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);
// }
//获取技能标签
List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp> skillTagResps = orgProjectWorkerProfessionSkillService.list(WorkerProfessionSkillTagRepository.PageReq.builder()
.workspaceId(projectGroupInfo.getWorkspaceId())
.projectWorkerIds(projectWorkerIdList)
.build());
Map<Long, List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp>> workerSkillTagMap =
skillTagResps.stream().collect(Collectors.groupingBy(WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp::getProjectWorkerId));
//封装
List<NoleaderProjectGroupWorkerRes> 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());
Long projectWorkerId = NodeUserProfile.resolveProjectWorkerId(nodeUserDTO);
workerRes.setProjectWorkerId(projectWorkerId);
List<ProjectWorkerProfessionResp> projectWorkerProfessionResps = Optional.ofNullable(professionTagMap.get(projectWorkerId)).orElse(new ArrayList<>());
workerRes.setProfessionList(BeanUtil.copyToList(projectWorkerProfessionResps, NoleaderProjectGroupWorkerRes.ProjectGroupWorkerProfession.class));
// 技工 or 普工, 经讨论取第一个即可
workerRes.setProfessionCategory(DataCollectionSkillTypeEnum.getType(projectWorkerProfessionResps.get(0).getType()).getDesc());
List<WorkerProfessionSkillTagRepository.WorkerProfessionSkillTagResp> skillTags = workerSkillTagMap.get(projectWorkerId);
log.info("工人{}技能标签:{}", personProfile.getRealName(), JSON.toJSONString(skillTags));
if (CollectionUtil.isNotEmpty(skillTags)) {
List<ProjectWorkerSkillTagRes> skillTagResList = skillTags.stream().map(skillTag -> {
ProjectWorkerSkillTagRes skillTagRes = new ProjectWorkerSkillTagRes();
skillTagRes.setId(0L); //历史代码skillTagId全是0L
skillTagRes.setName(skillTag.getSkillTagName());
return skillTagRes;
}).collect(Collectors.toList());
workerRes.setSkillTagList(skillTagResList);
}
groupWorkerlist.add(workerRes);
}
projectGroupInfo.setProjectGroupWorkerList(groupWorkerlist);
} }
} }
log.info("getNoLeaderGroupList result : {}", JSON.toJSONString(res));
return null; return res;
} }
private List<ProjectGroupListResp.ProjectGroupInfo> convert(List<OrgNodeDTO> orgNodeDTOS, Long workspaceId) { private List<ProjectGroupListResp.ProjectGroupInfo> convert(List<OrgNodeDTO> orgNodeDTOS, Long workspaceId) {

View File

@ -44,6 +44,13 @@ public interface OrgProjectWorkerProfessionService {
*/ */
PageResp<ProjectWorkerProfessionResp> page(WorkerProfessionTagQueryPageReq req); PageResp<ProjectWorkerProfessionResp> page(WorkerProfessionTagQueryPageReq req);
/**
* 查询工种信息
* @param req
* @return
*/
List<ProjectWorkerProfessionResp> list(WorkerProfessionTagQueryPageReq req);
/** /**
* 获取历史工种 * 获取历史工种
* @param req * @param req

View File

@ -318,6 +318,8 @@ public class OrgProjectWorkerProfessionServiceImpl implements OrgProjectWorkerPr
.scene(req.getScene().name()) .scene(req.getScene().name())
.professionIds(req.getProfessionIds()) .professionIds(req.getProfessionIds())
.personIds(req.getPersonIds()) .personIds(req.getPersonIds())
.projectWorkerIds(req.getProjectWorkerIds())
.workspaceId(req.getWorkspaceId())
.build(); .build();
PageResp<WorkerProfessionTagRepository.WorkerProfessionTagResp> page = workerProfessionTagRepository.page(pageReq); PageResp<WorkerProfessionTagRepository.WorkerProfessionTagResp> page = workerProfessionTagRepository.page(pageReq);
if (page == null || ObjectUtil.isEmpty(page)) { if (page == null || ObjectUtil.isEmpty(page)) {
@ -336,6 +338,11 @@ public class OrgProjectWorkerProfessionServiceImpl implements OrgProjectWorkerPr
.build(); .build();
} }
@Override
public List<ProjectWorkerProfessionResp> list(WorkerProfessionTagQueryPageReq req) {
return page(req).getData();
}
@Override @Override
public List<WorkerProfessionHistoryRepository.WorkerProfessionHistoryResp> listHistory(WorkerProfessionHistoryRepository.PageReq req) { public List<WorkerProfessionHistoryRepository.WorkerProfessionHistoryResp> listHistory(WorkerProfessionHistoryRepository.PageReq req) {
return workerProfessionHistoryRepository.list(req); return workerProfessionHistoryRepository.list(req);