fix[project]: 查询团队成员时,返回值新增用户类型作为区分
This commit is contained in:
@@ -70,5 +70,10 @@ public class CIDStaffResp implements Serializable {
|
||||
@Schema(description="关联role集合")
|
||||
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> getOnlyNodeMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
|
||||
|
||||
List<ProjectNodePo> allList(@Param("nodeIdList") List<String> deleteNodeList);
|
||||
|
||||
void deleteTaskBatch(List<String> deleteNodeIdList);
|
||||
|
||||
@@ -23,5 +23,7 @@ public class SpdmNodeMemberVo extends BaseEntity {
|
||||
|
||||
private Long userId;
|
||||
|
||||
private Integer type;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2042,7 +2042,6 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
List<Long> userIdList = spdmNodeMemberVoList.stream().map(SpdmNodeMemberVo::getUserId).distinct().collect(Collectors.toList());
|
||||
;
|
||||
|
||||
// 查询node节点下的task的成员(仿真负责人和执行人)
|
||||
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>());
|
||||
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());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
|
||||
int current = req.getCurrent();
|
||||
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());
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
@@ -5226,12 +5242,46 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
|
||||
@Override
|
||||
public SdmResponse addNodeMember(SpdmAddNodeMemberReq req) {
|
||||
Long tenantId = ThreadLocalContext.getTenantId();
|
||||
log.info("addNodeMember params:{}",req);
|
||||
String projectId = req.getProjectId();
|
||||
List<Long> addNodeMemberIdList = req.getAddNodeMemberIdList();
|
||||
if (StringUtils.isBlank(projectId) || CollectionUtils.isEmpty(addNodeMemberIdList)) {
|
||||
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();
|
||||
String currentDateTime = DateUtils.getCurrentDateTime();
|
||||
List<SimulationNodeMember> nodeMemberList = new ArrayList<>();
|
||||
|
||||
@@ -392,6 +392,19 @@
|
||||
group by user_id, type,nodeId
|
||||
</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 *
|
||||
from simulation_node
|
||||
|
||||
Reference in New Issue
Block a user