1、新增节点、任务、指标、需求时,同步更新发起人的文件权限

This commit is contained in:
2025-12-12 14:31:45 +08:00
parent e405a0fff7
commit 3b0fa0ba9b
5 changed files with 120 additions and 11 deletions

View File

@@ -18,4 +18,10 @@ public class TaskTreeExportExcelParam {
* 节点标签顺序集合
*/
private List<TaskNodeTag> tagMap;
/**
* 勾选的任务id集合
*/
private List<String> taskIdList;
}

View File

@@ -8,8 +8,10 @@ import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.enums.MessageTemplateEnum;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.UpdatePermissionReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.system.SendMsgReq;
import com.sdm.common.entity.req.system.UserQueryReq;
@@ -193,7 +195,17 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
log.info("创建需求时,调用创建文件夹的参数为:{}", createDirReq);
SdmResponse response = dataClientFeignClient.createDir(createDirReq);
log.info("创建需求时,调用创建文件夹的返回值为:{}", response);
// 更新文件权限
Long userId = ThreadLocalContext.getUserId();
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(userId);
updatePermissionReq.setUuid(uuid);
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("创建需求时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("创建需求时,更新用户权限的返回值为:{}",updatePermissionResponse);
return SdmResponse.success(req.getUuid());
}
@@ -686,6 +698,18 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
// 发送消息通知
sendMessage(MessageTemplateEnum.TASK_ISSUE, taskNode.getNodeName());
}
for (TaskNode taskNode : taskNodeList) {
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(jobNumber);
updatePermissionReq.setUuid(taskNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse);
}
}
if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
projectNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
@@ -708,6 +732,17 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
response = SdmResponse.failed("新增指标失败");
return response;
}
for (TaskNode taskNode : allPerformanceList) {
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(jobNumber);
updatePermissionReq.setUuid(taskNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("下发任务时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("下发任务时,更新用户权限的返回值为:{}",updatePermissionResponse);
}
List<TaskNodePo> newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(TaskNode::getTaskId).toList());
Map<String, TaskNodePo> taskNodePoMap = Map.of();
@@ -1116,8 +1151,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
createDirReq.setParentUuId(parentUuid);
createDirReq.setDirName(dirName);
log.info("下发任务调用创建文件夹的参数为:{}", createDirReq);
// SdmResponse response = dataClientAPIClient.createDir(createDirReq);
// log.info("调用创建文件夹的返回值为:{}", response);
SdmResponse response = dataClientFeignClient.createDir(createDirReq);
log.info("下发任务调用创建文件夹的返回值为:{}", response);
}
}

View File

@@ -10,11 +10,9 @@ import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.bo.DataDictionary;
import com.sdm.common.entity.constants.TagConstant;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.DelDirReq;
import com.sdm.common.entity.req.data.RenameDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.data.*;
import com.sdm.common.entity.req.project.*;
import com.sdm.common.entity.req.system.QueryGroupDetailReq;
import com.sdm.common.entity.req.system.UserQueryReq;
@@ -145,6 +143,19 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return SdmResponse.failed("操作节点失败,原因:新增节点时失败!");
}
for (SpdmProjectNodeEditReq addNode : addNodeList) {
// 更新文件权限
Long userId = ThreadLocalContext.getUserId();
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(userId);
updatePermissionReq.setUuid(addNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("创建项目阶段时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
log.info("创建项目阶段时,更新用户权限的返回值为:{}",updatePermissionResponse);
}
return SdmResponse.success(addNodeList);
}

View File

@@ -8,10 +8,12 @@ import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.DelDirReq;
import com.sdm.common.entity.req.data.RenameDirReq;
import com.sdm.common.entity.req.data.UpdatePermissionReq;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.req.task.TaskExportExcelParam;
import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat;
@@ -1410,8 +1412,21 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
private void updatePermission(Long userId,String uuid) {
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(userId);
updatePermissionReq.setUuid(uuid);
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("仿真策划时,更新用户权限的参数为:{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataClientFeignClient.updatePermission(updatePermissionReq);
log.info("仿真策划时,更新用户权限的返回值为:{}",updatePermissionResponse);
}
private SdmResponse newRealAddSimulationTaskItems(TaskNodeTree taskNodeTree, Long tenantId, List<TaskNodeTag> tagList, String ownRootNodeUuid) {
Long jobNumber = ThreadLocalContext.getUserId();
Long userId = ThreadLocalContext.getUserId();
SdmResponse response = SdmResponse.success();
if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) {
response = SdmResponse.failed("节点不能为空");
@@ -1480,6 +1495,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
: projectNodeMap.get(taskNode.getParentId()).getUuid()),
taskNode.getNodeName());
}
for (TaskNode taskNode : projectNodeList) {
updatePermission(userId,taskNode.getUuid());
}
}
if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
projectNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
@@ -1545,6 +1563,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
taskNode.getNodeName());
}
}
for (TaskNode taskNode : taskNodeList) {
updatePermission(userId,taskNode.getUuid());
}
}
if (CollectionUtils.isNotEmpty(taskNodeExtraList)) {
taskNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
@@ -1565,7 +1586,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
response = SdmResponse.failed("新增指标失败");
return response;
}
List<TaskNodePo> newTaskNodeList = mapper.getTaskListByNodeIdList(projectNodePerformanceList.stream().map(TaskNode::getTaskId).toList());
Map<String, TaskNodePo> taskNodePoMap = Map.of();
if (CollectionUtils.isNotEmpty(newTaskNodeList)) {
@@ -1599,6 +1619,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
taskNode.getNodeName());
}
}
for (TaskNode taskNode : projectNodePerformanceList) {
updatePermission(userId,taskNode.getUuid());
}
}
if (CollectionUtils.isNotEmpty(projectNodePerformanceExtraList)) {
projectNodePerformanceExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));

View File

@@ -8,8 +8,10 @@ import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.constants.ProjectConstants;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.UpdatePermissionReq;
import com.sdm.common.entity.req.project.SimulationPerformance;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
@@ -1357,6 +1359,9 @@ public class TaskServiceImpl implements ITaskService {
@Transactional
@Override
public BosimSaveProjectTaskRsp syncCidTask(SyncCidTaskReq req) {
Long userId = ThreadLocalContext.getUserId();
log.info("syncCidTask中userId为{}",userId);
userId = ObjectUtils.isNotEmpty(userId) ? userId : 1999363561237610497L;
BosimSaveProjectTaskRsp resp = new BosimSaveProjectTaskRsp();
String projectId = req.getProjectId();
String projectName = req.getProjectName();
@@ -1394,6 +1399,16 @@ public class TaskServiceImpl implements ITaskService {
resp.setMessage(ResultCode.FAILED.getMessage());
return resp;
}
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(userId);
updatePermissionReq.setUuid(spdmProjectNodeEditReq.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("同步CID项目时更新用户权限的参数为{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataClientFeignClient.updatePermission(updatePermissionReq);
log.info("同步CID项目时更新用户权限的返回值为{}",updatePermissionResponse);
}catch (Exception ex) {
log.error("同步CID项目{}时,创建文件夹异常,原因为:{}",req.getProjectId() + " " + req.getProjectName(),ex.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -1454,6 +1469,19 @@ public class TaskServiceImpl implements ITaskService {
return resp;
}
}
for (CidTaskNode cidTaskNode : taskNodeList) {
// 更新文件权限
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
updatePermissionReq.setUserId(userId);
updatePermissionReq.setUuid(cidTaskNode.getUuid());
Map<Long, Byte> userPermissions = new HashMap<>();
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
updatePermissionReq.setUserPermissions(userPermissions);
log.info("同步CID任务时更新用户权限的参数为{}",updatePermissionReq);
SdmResponse updatePermissionResponse = dataClientFeignClient.updatePermission(updatePermissionReq);
log.info("同步CID任务时更新用户权限的返回值为{}",updatePermissionResponse);
}
}catch (Exception ex) {
log.error("同步CID任务时创建文件夹失败原因为{}",ex.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -1881,8 +1909,14 @@ public class TaskServiceImpl implements ITaskService {
log.error("导出任务分析项树时,任务不能为空");
return SdmResponse.failed("任务不能为空");
}
List<String> chooseTaskIdList = params.getTaskIdList();
if (CollectionUtils.isNotEmpty(chooseTaskIdList)) {
taskVoList = taskVoList.stream().filter(task -> chooseTaskIdList.contains(task.getUuid())).toList();
}
if (CollectionUtils.isEmpty(taskVoList)) {
log.error("导出任务分析项树时根据任务id{}过滤后,任务集合为空",chooseTaskIdList);
return SdmResponse.failed("任务不能为空");
}
List<ExportExcelFormat> fixedHeaderList = new ArrayList<>();
Optional<ExportExcelFormat> nodeNameOptional = exportExcelFormats.stream().filter(header -> "nodeName".equals(header.getKey())).findAny();
Optional<ExportExcelFormat> nodeCodeOptional = exportExcelFormats.stream().filter(header -> "nodeCode".equals(header.getKey())).findAny();