fix[project]: 同步待办时,如果任务有所属工位,则直接创建相应的文件夹
This commit is contained in:
@@ -495,6 +495,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
BeanUtils.copyProperties(task,tagReq);
|
||||
if (NodeTypeEnum.TASK.getValue().equals(uuidOwnType)) {
|
||||
tagReq.setTaskId(uuid);
|
||||
tagReq.setTaskName(task.getTaskName());
|
||||
}
|
||||
createDirReq.setTagReq(tagReq);
|
||||
log.info("修改需求同步修改任务时调用创建文件夹的参数为:{}", createDirReq);
|
||||
|
||||
@@ -8,9 +8,7 @@ import com.sdm.common.common.ThreadLocalContext;
|
||||
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.BatchUpdatePermissionReq;
|
||||
import com.sdm.common.entity.req.data.CreateDirReq;
|
||||
import com.sdm.common.entity.req.data.UpdatePermissionReq;
|
||||
import com.sdm.common.entity.req.data.*;
|
||||
import com.sdm.common.feign.inter.data.IDataFeignClient;
|
||||
import com.sdm.common.utils.RandomUtil;
|
||||
import com.sdm.project.common.MemberTypeEnum;
|
||||
@@ -152,12 +150,43 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
|
||||
List<BatchUpdatePermissionReq.FilePermissionItem> filePermissionItemList = new ArrayList<>();
|
||||
for (SimulationDemand demand : demandList) {
|
||||
SimulationTask task = convertDemandToTask(demand, tagMap);
|
||||
String workspaceId = getWorkspaceIdFromTask(task, tagMap);
|
||||
if (StringUtils.isNotBlank(workspaceId)) {
|
||||
task.setNodeId(workspaceId);
|
||||
// 任务对应需求
|
||||
// 1.需求创建人对关联的任务文件夹有预览、下载权限
|
||||
// 2.需求负责人(仿真负责人、确认人)对关联的任务文件夹有预览、下载权限
|
||||
// 但是目前任务负责人就是从需求负责人继承的,权限也会继承
|
||||
// 构建单个任务的权限配置(仅当需求创建人不为空时)
|
||||
if (demand.getCreator() != null) {
|
||||
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
|
||||
item.setUuid(task.getUuid());
|
||||
Map<Long, Byte> userPermissions = new HashMap<>();
|
||||
userPermissions.put(demand.getCreator(), FilePermissionEnum.BASE.getValue());
|
||||
item.setUserPermissions(userPermissions);
|
||||
filePermissionItemList.add(item);
|
||||
} else {
|
||||
log.warn("需求创建人为空,跳过任务权限配置,需求ID: {}, 任务UUID: {}", demand.getUuid(), task.getUuid());
|
||||
}
|
||||
}
|
||||
tasksToCreate.add(task);
|
||||
taskExtrasToCreate.addAll(createTaskExtras(demand, task.getUuid()));
|
||||
taskMembersToCreate.addAll(createTaskMembers(demand, task.getUuid()));
|
||||
taskAttentionsToCreate.addAll(createTaskAttentions(demand, task.getUuid()));
|
||||
}
|
||||
|
||||
// 批量更新需求创建人对任务文件夹的权限
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
// 批量保存任务主表、扩展表、成员表、关注表
|
||||
// this.saveBatch(tasksToCreate);
|
||||
this.baseMapper.saveBatchTask(tasksToCreate);
|
||||
@@ -176,6 +205,22 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
|
||||
}
|
||||
this.baseMapper.saveBatchTaskAttention(taskAttentionsToCreate);
|
||||
}
|
||||
|
||||
// 批量创建任务目录和更新权限
|
||||
for (SimulationTask task : tasksToCreate) {
|
||||
// 任务挂载在workspace工位节点下,需要从task的tag中获取workspaceId
|
||||
String workspaceId = task.getNodeId();
|
||||
if (StringUtils.isBlank(workspaceId)) {
|
||||
continue;
|
||||
}
|
||||
TagReq tagReq = new TagReq();
|
||||
BeanUtils.copyProperties(task,tagReq);
|
||||
tagReq.setTaskId(task.getUuid());
|
||||
tagReq.setTaskId(task.getTaskName() );
|
||||
createTaskDir(task.getUuid(), workspaceId, task.getTaskName(),tagReq);
|
||||
}
|
||||
// 批量更新任务权限(使用批量接口)
|
||||
batchUpdateTaskPermissions(tasksToCreate);
|
||||
}
|
||||
|
||||
private SimulationTask convertDemandToTask(SimulationDemand demand, Map<String, String> tagMap) {
|
||||
@@ -327,7 +372,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
|
||||
/**
|
||||
* 创建任务目录
|
||||
*/
|
||||
private void createTaskDir(String taskUuid, String parentNodeUuid, String taskName) {
|
||||
private void createTaskDir(String taskUuid, String parentNodeUuid, String taskName,TagReq tagReq) {
|
||||
try {
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setUuId(taskUuid);
|
||||
@@ -335,7 +380,7 @@ public class SimulationTaskServiceImpl extends ServiceImpl<SimulationTaskMapper,
|
||||
createDirReq.setUuIdOwnType(NodeTypeEnum.TASK.getValue());
|
||||
createDirReq.setDirName(taskName);
|
||||
createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue());
|
||||
|
||||
createDirReq.setTagReq(tagReq);
|
||||
log.info("从需求创建任务时,调用创建文件夹的参数为:{}", createDirReq);
|
||||
SdmResponse response = dataFeignClient.createDir(createDirReq);
|
||||
log.info("从需求创建任务时,调用创建文件夹的返回值为:{}", response);
|
||||
|
||||
@@ -3248,10 +3248,12 @@ public class TaskServiceImpl implements ITaskService {
|
||||
createDirReq.setParentUuId(parentUuid);
|
||||
createDirReq.setDirName(dirName);
|
||||
createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue());
|
||||
// 这里需要跳过权限校验
|
||||
TagReq tagReq = new TagReq();
|
||||
BeanUtils.copyProperties(task,tagReq);
|
||||
if (NodeTypeEnum.TASK.getValue().equals(uuidOwnType)) {
|
||||
tagReq.setTaskId(uuid);
|
||||
tagReq.setTaskName(task.getTaskName());
|
||||
}
|
||||
createDirReq.setTagReq(tagReq);
|
||||
log.info("批量修改任务时调用创建文件夹的参数为:{}", createDirReq);
|
||||
@@ -4304,6 +4306,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
public SdmResponse deleteDirById(String uuid) {
|
||||
DelDirReq req = new DelDirReq();
|
||||
req.setDelUuid(uuid);
|
||||
req.setSkipPermissionCheck(true);
|
||||
log.info("调用删除任务文件夹的参数为:{}", req);
|
||||
SdmResponse response = dataClientFeignClient.delDir(req);
|
||||
log.info("调用删除任务文件夹的返回值为:{}", response);
|
||||
|
||||
Reference in New Issue
Block a user