feat(REQ-3488): 提交小组相关接口
This commit is contained in:
parent
d38ffbedea
commit
dc28c6b141
@ -10,10 +10,7 @@ import lombok.experimental.SuperBuilder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
@ -34,6 +31,8 @@ public class WorkerProfessionTagQueryPageReq extends PageReqV2 {
|
||||
private Set<Long> professionIds;
|
||||
private Boolean needSkillTags;
|
||||
private Set<Long> orgNodeIds;
|
||||
private Collection<Long> projectWorkerIds;
|
||||
private Long workspaceId;
|
||||
|
||||
public void check() {
|
||||
if (ObjectUtil.isAllEmpty(orgNodeId4ResolvedTeamOrgNodeId, personIds, orgNodeIds)) {
|
||||
|
||||
@ -53,6 +53,12 @@ public class ProjectWorkerProfessionResp implements Serializable {
|
||||
* 数据有效性标记
|
||||
*/
|
||||
private Integer valid;
|
||||
|
||||
/**
|
||||
* 项目工人id
|
||||
*/
|
||||
private Long projectWorkerId;
|
||||
|
||||
/**
|
||||
* 技能标签列表
|
||||
*/
|
||||
|
||||
@ -8,6 +8,8 @@ import cn.axzo.orgmanax.infra.dao.workerprofession.entity.WorkerProfessionTag;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@ -38,7 +40,7 @@ public interface WorkerProfessionTagRepository {
|
||||
* 项目内工人ids
|
||||
*/
|
||||
@CriteriaField(field = "projectWorkerId", operator = Operator.IN)
|
||||
private List<Long> projectWorkerIds;
|
||||
private Collection<Long> projectWorkerIds;
|
||||
|
||||
/**
|
||||
* PLAT_TEAM:平台班组,PROJECT_TEAM:项目内班组
|
||||
|
||||
@ -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.ProjectGroupListResp;
|
||||
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.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.bean.BeanUtil;
|
||||
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.apache.ibatis.annotations.Results;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
@ -77,6 +82,7 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
|
||||
}
|
||||
|
||||
if (isReturnWorker) {
|
||||
//获取工人信息列表
|
||||
for (ProjectGroupListResp.ProjectGroupInfo projectGroupInfo : projectGroupInfos) {
|
||||
List<NodeUserDTO> nodeUserDTOS = nodeUserService.list(ListNodeUserReq.builder()
|
||||
.projectGroupWorkerStatus(ProjectGroupWorkerStatusEnum.VALID.getValue())
|
||||
@ -90,48 +96,56 @@ public class OrgProjectGroupServiceImpl implements OrgProjectGroupService {
|
||||
continue;
|
||||
}
|
||||
|
||||
//TODO
|
||||
// List<Long> projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList());
|
||||
// //获取工种
|
||||
// orgProjectWorkerProfessionService.listValid()
|
||||
//
|
||||
// //获取技能标签
|
||||
// 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());
|
||||
// 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<Long> projectWorkerIdList = nodeUserDTOS.stream().map(nodeUserDTO -> NodeUserProfile.resolveProjectWorkerId(nodeUserDTO)).collect(Collectors.toList());
|
||||
//获取工种
|
||||
List<ProjectWorkerProfessionResp> professionResps = orgProjectWorkerProfessionService.list(WorkerProfessionTagQueryPageReq.builder()
|
||||
.projectWorkerIds(projectWorkerIdList)
|
||||
.workspaceId(projectGroupInfo.getWorkspaceId())
|
||||
.build());
|
||||
Map<Long, List<ProjectWorkerProfessionResp>> professionTagMap = professionResps.stream().collect(Collectors.groupingBy(ProjectWorkerProfessionResp::getProjectWorkerId));
|
||||
|
||||
//获取技能标签
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
log.info("getNoLeaderGroupList result : {}", JSON.toJSONString(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
private List<ProjectGroupListResp.ProjectGroupInfo> convert(List<OrgNodeDTO> orgNodeDTOS, Long workspaceId) {
|
||||
|
||||
@ -44,6 +44,13 @@ public interface OrgProjectWorkerProfessionService {
|
||||
*/
|
||||
PageResp<ProjectWorkerProfessionResp> page(WorkerProfessionTagQueryPageReq req);
|
||||
|
||||
/**
|
||||
* 查询工种信息
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
List<ProjectWorkerProfessionResp> list(WorkerProfessionTagQueryPageReq req);
|
||||
|
||||
/**
|
||||
* 获取历史工种
|
||||
* @param req
|
||||
|
||||
@ -318,6 +318,8 @@ public class OrgProjectWorkerProfessionServiceImpl implements OrgProjectWorkerPr
|
||||
.scene(req.getScene().name())
|
||||
.professionIds(req.getProfessionIds())
|
||||
.personIds(req.getPersonIds())
|
||||
.projectWorkerIds(req.getProjectWorkerIds())
|
||||
.workspaceId(req.getWorkspaceId())
|
||||
.build();
|
||||
PageResp<WorkerProfessionTagRepository.WorkerProfessionTagResp> page = workerProfessionTagRepository.page(pageReq);
|
||||
if (page == null || ObjectUtil.isEmpty(page)) {
|
||||
@ -336,6 +338,11 @@ public class OrgProjectWorkerProfessionServiceImpl implements OrgProjectWorkerPr
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectWorkerProfessionResp> list(WorkerProfessionTagQueryPageReq req) {
|
||||
return page(req).getData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WorkerProfessionHistoryRepository.WorkerProfessionHistoryResp> listHistory(WorkerProfessionHistoryRepository.PageReq req) {
|
||||
return workerProfessionHistoryRepository.list(req);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user