fix[project]: 查询团队成员时,返回值新增用户类型作为区分
This commit is contained in:
@@ -70,5 +70,10 @@ public class CIDStaffResp implements Serializable {
|
|||||||
@Schema(description="关联role集合")
|
@Schema(description="关联role集合")
|
||||||
private List<CIDRoleResp> roleList = new ArrayList<>();
|
private List<CIDRoleResp> roleList = new ArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型,0:团队成员,3:项目参与人员
|
||||||
|
*/
|
||||||
|
@Schema(description = "用户类型,0:团队成员,3:项目参与人员")
|
||||||
|
private Integer userType = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
|
|||||||
|
|
||||||
List<SpdmNodeMemberVo> getNodeMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
List<SpdmNodeMemberVo> getNodeMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
||||||
|
|
||||||
|
List<SpdmNodeMemberVo> getOnlyNodeMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
||||||
|
|
||||||
List<ProjectNodePo> allList(@Param("nodeIdList") List<String> deleteNodeList);
|
List<ProjectNodePo> allList(@Param("nodeIdList") List<String> deleteNodeList);
|
||||||
|
|
||||||
void deleteTaskBatch(List<String> deleteNodeIdList);
|
void deleteTaskBatch(List<String> deleteNodeIdList);
|
||||||
|
|||||||
@@ -23,5 +23,7 @@ public class SpdmNodeMemberVo extends BaseEntity {
|
|||||||
|
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2042,7 +2042,6 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
return SdmResponse.success(jsonObject);
|
return SdmResponse.success(jsonObject);
|
||||||
}
|
}
|
||||||
List<Long> userIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().collect(Collectors.toList());
|
List<Long> userIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().collect(Collectors.toList());
|
||||||
;
|
|
||||||
|
|
||||||
// 查询node节点下的task的成员(仿真负责人和执行人)
|
// 查询node节点下的task的成员(仿真负责人和执行人)
|
||||||
List<SimulationTask> taskList = simulationTaskService.lambdaQuery().in(SimulationTask::getNodeId, allNodeIdList).list();
|
List<SimulationTask> taskList = simulationTaskService.lambdaQuery().in(SimulationTask::getNodeId, allNodeIdList).list();
|
||||||
@@ -2067,9 +2066,26 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
jsonObject.put("data", new ArrayList<CIDUserResp>());
|
jsonObject.put("data", new ArrayList<CIDUserResp>());
|
||||||
return SdmResponse.success(jsonObject);
|
return SdmResponse.success(jsonObject);
|
||||||
}
|
}
|
||||||
jsonObject.put("data", userList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList());
|
|
||||||
jsonObject.put("currentPage", req.getCurrent());
|
int current = req.getCurrent();
|
||||||
jsonObject.put("pageSize", req.getSize());
|
int size = req.getSize();
|
||||||
|
Map<Long, List<SpdmNodeMemberVo>> memberMap = spdmNodeMemberVoList.stream()
|
||||||
|
.collect(Collectors.groupingBy(SpdmNodeMemberVo::getUserId));
|
||||||
|
// 区分用户类型,前端分为两个表格展示 团队成员和项目参与人员
|
||||||
|
// 即是团队成语又是项目参与人员,理论上不允许这种情况,可能是脏数据,直接作为团队成员
|
||||||
|
List<CIDStaffResp> staffRespList = userList.stream()
|
||||||
|
.skip((long) (current - 1) * size)
|
||||||
|
.limit(size)
|
||||||
|
.peek(staff -> Optional.ofNullable(memberMap.get(staff.getUserId()))
|
||||||
|
.filter(CollectionUtils::isNotEmpty)
|
||||||
|
.ifPresent(list -> staff.setUserType(
|
||||||
|
list.size() > 1 ? NodeMemberTypeEnum.PARTICIPANT.getCode() : list.get(0).getType()
|
||||||
|
)))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
jsonObject.put("data", staffRespList);
|
||||||
|
jsonObject.put("currentPage", current);
|
||||||
|
jsonObject.put("pageSize", size);
|
||||||
jsonObject.put("total", userList.size());
|
jsonObject.put("total", userList.size());
|
||||||
return SdmResponse.success(jsonObject);
|
return SdmResponse.success(jsonObject);
|
||||||
}
|
}
|
||||||
@@ -5226,12 +5242,46 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SdmResponse addNodeMember(SpdmAddNodeMemberReq req) {
|
public SdmResponse addNodeMember(SpdmAddNodeMemberReq req) {
|
||||||
|
Long tenantId = ThreadLocalContext.getTenantId();
|
||||||
log.info("addNodeMember params:{}",req);
|
log.info("addNodeMember params:{}",req);
|
||||||
String projectId = req.getProjectId();
|
String projectId = req.getProjectId();
|
||||||
List<Long> addNodeMemberIdList = req.getAddNodeMemberIdList();
|
List<Long> addNodeMemberIdList = req.getAddNodeMemberIdList();
|
||||||
if (StringUtils.isBlank(projectId) || CollectionUtils.isEmpty(addNodeMemberIdList)) {
|
if (StringUtils.isBlank(projectId) || CollectionUtils.isEmpty(addNodeMemberIdList)) {
|
||||||
return SdmResponse.failed("参数不能为空");
|
return SdmResponse.failed("参数不能为空");
|
||||||
}
|
}
|
||||||
|
// 查询当前项目的团队成员,如果是团队成员,则不允许添加
|
||||||
|
List<SpdmNodeMemberVo> spdmNodeMemberVoList = nodeMapper.getOnlyNodeMemberListByNodeIdList(Collections.singletonList(projectId));
|
||||||
|
List<Long> expUserIdList = new ArrayList<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(spdmNodeMemberVoList)) {
|
||||||
|
List<Long> existUserIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).toList();
|
||||||
|
for (Long userId : addNodeMemberIdList) {
|
||||||
|
if (existUserIdList.contains(userId)) {
|
||||||
|
expUserIdList.add(userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(expUserIdList)) {
|
||||||
|
expUserIdList = expUserIdList.stream().distinct().toList();
|
||||||
|
String errorMsg = "";
|
||||||
|
List<String> expUserNameList = new ArrayList<>();
|
||||||
|
SdmResponse<List<CIDUserResp>> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(expUserIdList).build());
|
||||||
|
List<CIDUserResp> userList = cidUserResp.getData();
|
||||||
|
if (CollectionUtils.isNotEmpty(userList)) {
|
||||||
|
Map<Long, String> userMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUserId,CIDUserResp::getJobNumber,(oldVal,newVal) -> oldVal));
|
||||||
|
for (Long expUserId : expUserIdList) {
|
||||||
|
String userName = userMap.get(expUserId);
|
||||||
|
if (StringUtils.isBlank(userName)) {
|
||||||
|
expUserNameList.add(String.valueOf(expUserId));
|
||||||
|
}else {
|
||||||
|
expUserNameList.add(userName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
errorMsg = "用户:" + expUserNameList.stream().collect(Collectors.joining(",")) + "已经是团队成员,不能再添加为项目参与人";
|
||||||
|
}
|
||||||
|
return SdmResponse.failed(errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
Long userId = ThreadLocalContext.getUserId();
|
Long userId = ThreadLocalContext.getUserId();
|
||||||
String currentDateTime = DateUtils.getCurrentDateTime();
|
String currentDateTime = DateUtils.getCurrentDateTime();
|
||||||
List<SimulationNodeMember> nodeMemberList = new ArrayList<>();
|
List<SimulationNodeMember> nodeMemberList = new ArrayList<>();
|
||||||
|
|||||||
@@ -392,6 +392,19 @@
|
|||||||
group by user_id, type,nodeId
|
group by user_id, type,nodeId
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getOnlyNodeMemberListByNodeIdList" resultType="com.sdm.project.model.vo.SpdmNodeMemberVo">
|
||||||
|
select
|
||||||
|
DISTINCT user_id, type,nodeId
|
||||||
|
from
|
||||||
|
simulation_node_member
|
||||||
|
where nodeId in (
|
||||||
|
<foreach collection='nodeIdList' item='nodeId' index='index' separator=','>
|
||||||
|
#{nodeId}
|
||||||
|
</foreach>
|
||||||
|
) and type = 0
|
||||||
|
group by user_id, type,nodeId
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="getNodeById" resultType="com.sdm.project.model.vo.SpdmNodeVo">
|
<select id="getNodeById" resultType="com.sdm.project.model.vo.SpdmNodeVo">
|
||||||
select *
|
select *
|
||||||
from simulation_node
|
from simulation_node
|
||||||
|
|||||||
Reference in New Issue
Block a user