From bc1ac592e08c83ec00a7ab75168f18e7de981ab1 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Mon, 2 Feb 2026 09:44:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=9C=80=E6=B1=82=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E8=B4=9F=E8=B4=A3=E4=BA=BA=E5=AF=B9=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=96=87=E4=BB=B6=E5=A4=B9=E7=9A=84=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DemandServiceImpl.java | 90 ++++++++++++------- .../impl/SimulationTaskServiceImpl.java | 28 ++++++ 2 files changed, 86 insertions(+), 32 deletions(-) diff --git a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index 0f624c95..45236558 100644 --- a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java @@ -660,6 +660,11 @@ public class DemandServiceImpl extends BaseService implements IDemandService { String parentUuid = getLastNodeId(taskNodeList.get(0)); log.info("下发任务时,parentId为:{}", parentUuid); String demandId = req.getDemandId(); + // 关联的需求 + SpdmDemandVo demand = mapper.getDemandListById(Collections.singletonList(demandId)).get(0); + Long demandCreator = demand.getCreator(); + List filePermissions = new ArrayList<>(); + List projectNodeMemberList = new ArrayList<>(); List projectNodeExtraList = new ArrayList<>(); List allPerformanceList = new ArrayList<>(); @@ -683,14 +688,21 @@ public class DemandServiceImpl extends BaseService implements IDemandService { taskMemberNode.setUserId(userId); taskMemberNode.setType(MemberTypeEnum.PRINCIPAL.getCode()); projectNodeMemberList.add(taskMemberNode); - // 更新文件权限 - UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); - updatePermissionReq.setUserId(Long.valueOf(userId)); - updatePermissionReq.setUuid(task.getUuid()); + // 更新需求负责人对需求文件权限 + BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem(); + item.setUuid(task.getUuid()); Map userPermissions = new HashMap<>(); - userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); - updatePermissionReq.setUserPermissions(userPermissions); - SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); + userPermissions.put(Long.valueOf(userId), FilePermissionEnum.ALL.getValue()); + item.setUserPermissions(userPermissions); + filePermissions.add(item); + + // 更新需求负责人对任务文件夹的权限 + BatchUpdatePermissionReq.FilePermissionItem demandItem = new BatchUpdatePermissionReq.FilePermissionItem(); + demandItem.setUuid(task.getUuid()); + Map demandUserPermissions = new HashMap<>(); + demandUserPermissions.put(demandCreator, FilePermissionEnum.BASE.getValue()); + demandItem.setUserPermissions(demandUserPermissions); + filePermissions.add(demandItem); } } if (StringUtils.isNotBlank(eUserIdStr)) { @@ -704,16 +716,13 @@ public class DemandServiceImpl extends BaseService implements IDemandService { projectNodeMemberList.add(taskMemberNode); // 发送消息通知 sendMessage(MessageTemplateEnum.TASK_ISSUE, task.getNodeName(), userId, task.getUuid()); - // 更新文件权限 - UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); - updatePermissionReq.setUserId(Long.valueOf(userId)); - updatePermissionReq.setUuid(task.getUuid()); + // 更新需求执行人对需求文件权限 + BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem(); + item.setUuid(task.getUuid()); Map userPermissions = new HashMap<>(); - userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); - updatePermissionReq.setUserPermissions(userPermissions); - log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq); - SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); - log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse); + userPermissions.put(Long.valueOf(userId), FilePermissionEnum.ALL.getValue()); + item.setUserPermissions(userPermissions); + filePermissions.add(item); } } List extraList = task.getExtras(); @@ -785,16 +794,21 @@ public class DemandServiceImpl extends BaseService implements IDemandService { createDir(taskNode.getUuid(), parentUuid, taskNode.getNodeName()); } for (TaskNode taskNode : taskNodeList) { - // 更新文件权限 - UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); - updatePermissionReq.setUserId(jobNumber); - updatePermissionReq.setUuid(taskNode.getUuid()); + // 更新需求创建人对需求文件夹权限 + BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem(); + item.setUuid(taskNode.getUuid()); Map userPermissions = new HashMap<>(); userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); - updatePermissionReq.setUserPermissions(userPermissions); - log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq); - SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); - log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse); + item.setUserPermissions(userPermissions); + filePermissions.add(item); + + // 更新需求创建人对任务文件夹的权限 + BatchUpdatePermissionReq.FilePermissionItem demandItem = new BatchUpdatePermissionReq.FilePermissionItem(); + demandItem.setUuid(taskNode.getUuid()); + Map demandUserPermissions = new HashMap<>(); + demandUserPermissions.put(demandCreator, FilePermissionEnum.BASE.getValue()); + demandItem.setUserPermissions(demandUserPermissions); + filePermissions.add(demandItem); } } if (CollectionUtils.isNotEmpty(projectNodeExtraList)) { @@ -819,15 +833,13 @@ public class DemandServiceImpl extends BaseService implements IDemandService { return response; } for (TaskNode taskNode : allPerformanceList) { - UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); - updatePermissionReq.setUserId(jobNumber); - updatePermissionReq.setUuid(taskNode.getUuid()); + // 更新文件权限 + BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem(); + item.setUuid(taskNode.getUuid()); Map userPermissions = new HashMap<>(); - userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); - updatePermissionReq.setUserPermissions(userPermissions); - log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq); - SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); - log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse); + userPermissions.put(Long.valueOf(jobNumber), FilePermissionEnum.ALL.getValue()); + item.setUserPermissions(userPermissions); + filePermissions.add(item); } List newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(TaskNode::getTaskId).toList()); @@ -863,6 +875,20 @@ public class DemandServiceImpl extends BaseService implements IDemandService { return response; } } + // 执行批量更新权限 + if (CollectionUtils.isNotEmpty(filePermissions)) { + BatchUpdatePermissionReq batchReq = new BatchUpdatePermissionReq(); + batchReq.setFilePermissions(filePermissions); + + log.info("从需求分发任务时,批量更新权限,任务数量:{}", filePermissions.size()); + SdmResponse response1 = dataFeignClient.batchUpdatePermission(batchReq); + log.info("从需求分发任务时,批量更新权限结果:{}", response1); + + if (!response1.isSuccess()) { + log.error("批量更新任务权限失败:{}", response1.getMessage()); + } + } + } } return response; diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationTaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationTaskServiceImpl.java index b64289be..7897b43e 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationTaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationTaskServiceImpl.java @@ -135,6 +135,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl longUserIdList = Arrays.stream(userIdArr).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList()); simulationTaskMemberService.deleteTaskMemberList(req.getUuid(), MemberTypeEnum.EXECUTOR.getCode()); simulationTaskMemberService.saveTaskMemberList(req.getUuid(), MemberTypeEnum.EXECUTOR.getCode(), longUserIdList); + // 对关联的需求文件夹设置权限 } // 设置仿真负责人 if (StringUtils.isNotBlank(req.getPMemberList())) { @@ -159,6 +160,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl tagMap = tagMapService.getTagMapName(); + List filePermissionItemList = new ArrayList<>(); for (SimulationDemand demand : demandList) { SimulationTask task = convertDemandToTask(demand, tagMap); tasksToCreate.add(task); @@ -166,6 +168,32 @@ public class SimulationTaskServiceImpl extends ServiceImpl userPermissions = new HashMap<>(); + userPermissions.put(demand.getCreator(), FilePermissionEnum.BASE.getValue()); + item.setUserPermissions(userPermissions); + filePermissionItemList.add(item); + } + // 批量更新需求创建人对任务文件夹的权限 + if (CollectionUtils.isNotEmpty(filePermissionItemList)) { + BatchUpdatePermissionReq batchReq = new BatchUpdatePermissionReq(); + batchReq.setFilePermissions(filePermissionItemList); + + log.info("从需求批量创建任务时,批量更新需求创建人对任务文件夹的权限,任务数量:{}", filePermissionItemList.size()); + SdmResponse response = dataFeignClient.batchUpdatePermission(batchReq); + log.info("从需求批量创建任务时,批量更新需求创建人对任务文件夹的权限结果:{}", response); + + if (!response.isSuccess()) { + log.error("批量更新任务权限失败:{}", response.getMessage()); + } } // 批量保存任务主表、扩展表、成员表、关注表