Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-11-28 11:49:15 +08:00
11 changed files with 287 additions and 169 deletions

View File

@@ -98,17 +98,17 @@ public class SimulationTaskController {
return taskService.exportTask(taskExportExcelFormat, httpservletResponse);
}
/**
* 同步CID创建的任务
*
* @param req
* @return
*/
@PostMapping("/synchronizeCidTask")
@Operation(summary = "同步CID创建的任务", description = "同步CID创建的任务")
public SdmResponse synchronizeCidTask(@RequestBody SpdmSyncCidTaskReq req) {
return taskService.synchronizeCidTask(req);
}
// /**
// * 同步CID创建的任务
// *
// * @param req
// * @return
// */
// @PostMapping("/synchronizeCidTask")
// @Operation(summary = "同步CID创建的任务", description = "同步CID创建的任务")
// public SdmResponse synchronizeCidTask(@RequestBody SpdmSyncCidTaskReq req) {
// return taskService.synchronizeCidTask(req);
// }
/**
* 获取任务详情

View File

@@ -5,6 +5,10 @@ import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.project.model.req.YA.GetModelNodeInfoReq;
import com.sdm.project.model.req.YA.SaveModelNodeInfoReq;
import com.sdm.project.model.req.YA.SyncCidProjectReq;
import com.sdm.project.model.req.YA.SyncCidTaskReq;
import com.sdm.project.service.INodeService;
import com.sdm.project.service.ITaskService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -17,13 +21,18 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("/dataManager/tree/node")
@Tag(name = "宜安项目数据归档", description = "宜安项目模型数据关了")
public class YAModelController {
@Resource
private INodeService nodeService;
@Resource
private ITaskService taskService;
/**
* 创建文件夹
@@ -70,16 +79,16 @@ public class YAModelController {
}
@PostMapping("SyncProject")
public void syncCidProject()
@PostMapping("syncProject")
public void syncCidProject(@RequestBody @Validated SyncCidProjectReq req)
{
nodeService.syncProject(req);
}
@PostMapping("SyncCidTask")
public void syncCidTask()
@PostMapping("syncCidTask")
public void syncCidTask(@RequestBody @Validated SyncCidTaskReq req)
{
taskService.syncCidTask(req);
}
}

View File

@@ -1,7 +1,9 @@
package com.sdm.project.model.req.YA;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ProjectTaskInfo {
@Schema(description = "任务名称")

View File

@@ -1,6 +1,7 @@
package com.sdm.project.model.req.YA;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
@@ -10,5 +11,7 @@ public class SyncCidProjectReq {
private String projectName;
@Schema(description = "项目Id")
@NotBlank(message = "项目Id不能为空")
private String projectId;
}

View File

@@ -1,6 +1,7 @@
package com.sdm.project.model.req.YA;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.util.ArrayList;
@@ -13,8 +14,9 @@ public class SyncCidTaskReq {
private String projectName;
@Schema(description = "项目Id")
@NotBlank(message = "项目Id不能为空")
private String projectId;
@Schema(description = "")
@Schema(description = "项目关联的任务集合")
private List<ProjectTaskInfo> taskInfoList = new ArrayList<>();
}

View File

@@ -11,6 +11,7 @@ import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp;
import com.sdm.common.entity.resp.project.SimulationNodeResp;
import com.sdm.project.model.entity.SimulationNode;
import com.sdm.project.model.req.*;
import com.sdm.project.model.req.YA.SyncCidProjectReq;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
@@ -72,4 +73,5 @@ public interface INodeService extends IService<SimulationNode> {
SdmResponse getNodeDetailForData(GetNodeDetailReq req);
void syncProject(SyncCidProjectReq req);
}

View File

@@ -5,6 +5,7 @@ import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
import com.sdm.project.model.bo.ModifyTaskNode;
import com.sdm.project.model.req.*;
import com.sdm.project.model.req.YA.SyncCidTaskReq;
import com.sdm.project.model.resp.GetAllRunResultByTaskIdResp;
import com.sdm.project.model.resp.TaskCountResp;
import com.sdm.project.model.resp.UserWorkloadResp;
@@ -47,8 +48,10 @@ public interface ITaskService {
*/
SdmResponse exportTask(TaskExportExcelFormat taskExportExcelFormat , HttpServletResponse httpservletResponse);
SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req);
// SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req);
SdmResponse getTaskDetail(GetTaskDetailReq req);
void syncCidTask(SyncCidTaskReq req);
}

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sdm.common.common.ResultCode;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat;
@@ -45,6 +46,7 @@ import com.sdm.project.model.po.ProjectNodePo;
import com.sdm.project.model.po.TaskNodeExtraPo;
import com.sdm.project.model.po.TaskNodePo;
import com.sdm.project.model.req.*;
import com.sdm.project.model.req.YA.SyncCidProjectReq;
import com.sdm.project.model.vo.*;
import com.sdm.project.service.*;
import jakarta.servlet.http.HttpServletResponse;
@@ -676,7 +678,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
* @param parentUuid 父节点uuid
* @param dirName 待长江文件夹名称
*/
private void createDir(String uuid, String uuidOwnType, String parentUuid, String dirName) {
private SdmResponse createDir(String uuid, String uuidOwnType, String parentUuid, String dirName) {
CreateDirReq createDirReq = new CreateDirReq();
createDirReq.setUuId(uuid);
createDirReq.setUuIdOwnType(uuidOwnType);
@@ -686,6 +688,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
log.info("创建项目阶段时,调用创建文件夹的参数为:{}", createDirReq);
SdmResponse response = dataClientFeignClient.createDir(createDirReq);
log.info("创建项目阶段时,调用创建文件夹的返回值为:{}", response);
return response;
}
@@ -1473,4 +1476,34 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
return SdmResponse.success(spdmNodeDetailForDataVo);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void syncProject(SyncCidProjectReq req) {
log.info("syncProject参数为{}", req);
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
SpdmProjectNodeEditReq spdmProjectNodeEditReq = new SpdmProjectNodeEditReq();
spdmProjectNodeEditReq.setNodeName(req.getProjectName());
spdmProjectNodeEditReq.setNodeType(NodeTypeEnum.PROJECT.getValue());
spdmProjectNodeEditReq.setUuid(req.getProjectId());
spdmProjectNodeEditReq.setPid(req.getProjectId());
spdmProjectNodeEditReq.setTag1(req.getProjectId());
spdmProjectNodeEditReq.setCreateTime(curDateStr);
spdmProjectNodeEditReq.setTenantId(1999999999999999999L);
if (nodeMapper.addNodeBatch(Collections.singletonList(spdmProjectNodeEditReq)) <= 0) {
log.error("同步CID项目{}失败",req.getProjectId() + " " + req.getProjectName());
return;
}
try {
// 创建项目节点的文件夹
SdmResponse response = createDir(spdmProjectNodeEditReq.getUuid(), spdmProjectNodeEditReq.getNodeType(), null, spdmProjectNodeEditReq.getNodeName());
if (ObjectUtils.isEmpty(response) || response.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("同步CID项目{}时,创建文件夹失败,原因为:{}",req.getProjectId() + " " + req.getProjectName(),response.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}catch (Exception ex) {
log.error("同步CID项目{}时,创建文件夹异常,原因为:{}",req.getProjectId() + " " + req.getProjectName(),ex.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}

View File

@@ -3,6 +3,7 @@ package com.sdm.project.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.sdm.common.common.ResultCode;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.ExportExcelFormat;
@@ -27,6 +28,8 @@ import com.sdm.project.model.bo.*;
import com.sdm.project.model.entity.*;
import com.sdm.project.model.po.*;
import com.sdm.project.model.req.*;
import com.sdm.project.model.req.YA.ProjectTaskInfo;
import com.sdm.project.model.req.YA.SyncCidTaskReq;
import com.sdm.project.model.resp.*;
import com.sdm.project.model.vo.*;
import com.sdm.project.service.*;
@@ -39,6 +42,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
@@ -1034,150 +1038,150 @@ public class TaskServiceImpl implements ITaskService {
return response;
}
@Override
public SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req) {
log.info("同步CID任务的参数为{}", req);
Long tenantId = ThreadLocalContext.getTenantId();
Long jobNumber = ThreadLocalContext.getUserId();
List<CidTaskNode> taskNodeList = req.getTaskList();
if (CollectionUtils.isEmpty(taskNodeList)) {
log.error("同步CID任务的参数为空");
return SdmResponse.failed("同步CID任务的参数为空");
}
SdmResponse response = SdmResponse.success();
List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
List<CidTaskNode> allPerformanceList = new ArrayList<>();
List<TaskExtraNode> allPerformanceExtraList = new ArrayList<>();
for (CidTaskNode task : taskNodeList) {
task.setUuid(RandomUtil.generateString(32));
task.setTenantId(tenantId);
String pUserIdStr = task.getPMemberList();
String eUserIdStr = task.getEMemberList();
log.info("下发的仿真负责人为:{}", pUserIdStr);
log.info("下发的仿真执行人为:{}", eUserIdStr);
if (StringUtils.isNotBlank(pUserIdStr)) {
String[] userIdArr = pUserIdStr.split(",");
for (String userId : userIdArr) {
TaskMemberNode taskMemberNode = new TaskMemberNode();
taskMemberNode.setTaskId(task.getUuid());
taskMemberNode.setNodeId(task.getUuid());
taskMemberNode.setUserId(userId);
taskMemberNode.setType(MemberTypeEnum.PRINCIPAL.getCode());
projectNodeMemberList.add(taskMemberNode);
}
}
if (StringUtils.isNotBlank(eUserIdStr)) {
String[] userIdArr = eUserIdStr.split(",");
for (String userId : userIdArr) {
TaskMemberNode taskMemberNode = new TaskMemberNode();
taskMemberNode.setTaskId(task.getUuid());
taskMemberNode.setNodeId(task.getUuid());
taskMemberNode.setUserId(userId);
taskMemberNode.setType(MemberTypeEnum.EXECUTOR.getCode());
projectNodeMemberList.add(taskMemberNode);
}
}
List<TaskExtraNode> extraList = task.getTaskExtraNodeList();
if (CollectionUtils.isNotEmpty(extraList)) {
for (TaskExtraNode extra : extraList) {
TaskExtraNode taskExtraNode = new TaskExtraNode();
taskExtraNode.setTaskId(task.getUuid());
taskExtraNode.setNodeId(task.getUuid());
taskExtraNode.setPropertyName(extra.getPropertyName());
taskExtraNode.setPropertyValue(extra.getPropertyValue());
projectNodeExtraList.add(taskExtraNode);
}
}
// 指标
List<CidTaskNode> performanceList = task.getChildren();
for (CidTaskNode performance : performanceList) {
performance.setTaskId(task.getUuid());
List<TaskExtraNode> performanceExtraList = performance.getTaskExtraNodeList();
if (CollectionUtils.isNotEmpty(performanceExtraList)) {
for (TaskExtraNode extra : performanceExtraList) {
extra.setPerformanceId(performance.getUuid());
extra.setTaskId(performance.getTaskId());
extra.setNodeId(performance.getNodeId());
allPerformanceExtraList.add(extra);
}
}
allPerformanceList.add(performance);
}
}
String createTime = DateUtil.now();
Map<String, CidTaskNode> taskNodeMap = Map.of();
if (CollectionUtils.isNotEmpty(taskNodeList)) {
taskNodeList.forEach(projectNode -> {
projectNode.setCreator(jobNumber);
projectNode.setCreateTime(createTime);
});
if (projectMapper.batchAddSimulationCidTask(taskNodeList) <= 0) {
response = SdmResponse.failed("新增任务失败");
return response;
}
taskNodeMap = taskNodeList.stream().collect(Collectors.groupingBy(
CidTaskNode::getUuid,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.get(0)
)
));
for (CidTaskNode taskNode : taskNodeList) {
createDir(taskNode.getUuid(), null, taskNode.getTaskName());
}
}
if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
projectNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
if (projectMapper.batchAddSimulationTaskExtra(projectNodeExtraList) <= 0) {
response = SdmResponse.failed("新增任务附加属性失败");
}
}
if (CollectionUtils.isNotEmpty(projectNodeMemberList)) {
projectNodeMemberList.forEach(projectNode -> projectNode.setCreateTime(createTime));
if (projectMapper.batchAddSimulationTaskMember(projectNodeMemberList) <= 0) {
response = SdmResponse.failed("新增任务成员属性失败");
return response;
}
}
// 指标
if (CollectionUtils.isNotEmpty(allPerformanceList)) {
allPerformanceList.forEach(projectNode -> projectNode.setCreateTime(createTime));
if (projectMapper.batchAddSimulationCidPerformance(allPerformanceList) <= 0) {
response = SdmResponse.failed("新增指标失败");
return response;
}
List<TaskNodePo> newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(CidTaskNode::getTaskId).toList());
Map<String, TaskNodePo> taskNodePoMap = Map.of();
if (CollectionUtils.isNotEmpty(newTaskNodeList)) {
taskNodePoMap = newTaskNodeList.stream().collect(Collectors.groupingBy(
TaskNodePo::getUuid,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.get(0)
)
));
}
for (CidTaskNode taskNode : allPerformanceList) {
if (ObjectUtils.isEmpty(taskNodePoMap.get(taskNode.getTaskId())) && ObjectUtils.isEmpty(taskNodeMap.get(taskNode.getTaskId()))) {
log.error("taskNodeMap不空根据taskId{},未查询到任务", taskNode.getTaskId());
response = SdmResponse.failed("新增指标时,创建文件失败");
return response;
}
createDir(taskNode.getUuid(),
ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(),
taskNode.getTaskName());
}
}
if (CollectionUtils.isNotEmpty(allPerformanceExtraList)) {
allPerformanceExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
if (projectMapper.batchAddSimulationPerformanceExtra(allPerformanceExtraList) <= 0) {
response = SdmResponse.failed("新增任务指标附加属性失败");
return response;
}
}
return response;
}
// @Override
// public SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req) {
// log.info("同步CID任务的参数为{}", req);
// Long tenantId = ThreadLocalContext.getTenantId();
// Long jobNumber = ThreadLocalContext.getUserId();
// List<CidTaskNode> taskNodeList = req.getTaskList();
// if (CollectionUtils.isEmpty(taskNodeList)) {
// log.error("同步CID任务的参数为空");
// return SdmResponse.failed("同步CID任务的参数为空");
// }
// SdmResponse response = SdmResponse.success();
// List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
// List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
// List<CidTaskNode> allPerformanceList = new ArrayList<>();
// List<TaskExtraNode> allPerformanceExtraList = new ArrayList<>();
// for (CidTaskNode task : taskNodeList) {
// task.setUuid(RandomUtil.generateString(32));
// task.setTenantId(tenantId);
// String pUserIdStr = task.getPMemberList();
// String eUserIdStr = task.getEMemberList();
// log.info("下发的仿真负责人为:{}", pUserIdStr);
// log.info("下发的仿真执行人为:{}", eUserIdStr);
// if (StringUtils.isNotBlank(pUserIdStr)) {
// String[] userIdArr = pUserIdStr.split(",");
// for (String userId : userIdArr) {
// TaskMemberNode taskMemberNode = new TaskMemberNode();
// taskMemberNode.setTaskId(task.getUuid());
// taskMemberNode.setNodeId(task.getUuid());
// taskMemberNode.setUserId(userId);
// taskMemberNode.setType(MemberTypeEnum.PRINCIPAL.getCode());
// projectNodeMemberList.add(taskMemberNode);
// }
// }
// if (StringUtils.isNotBlank(eUserIdStr)) {
// String[] userIdArr = eUserIdStr.split(",");
// for (String userId : userIdArr) {
// TaskMemberNode taskMemberNode = new TaskMemberNode();
// taskMemberNode.setTaskId(task.getUuid());
// taskMemberNode.setNodeId(task.getUuid());
// taskMemberNode.setUserId(userId);
// taskMemberNode.setType(MemberTypeEnum.EXECUTOR.getCode());
// projectNodeMemberList.add(taskMemberNode);
// }
// }
// List<TaskExtraNode> extraList = task.getTaskExtraNodeList();
// if (CollectionUtils.isNotEmpty(extraList)) {
// for (TaskExtraNode extra : extraList) {
// TaskExtraNode taskExtraNode = new TaskExtraNode();
// taskExtraNode.setTaskId(task.getUuid());
// taskExtraNode.setNodeId(task.getUuid());
// taskExtraNode.setPropertyName(extra.getPropertyName());
// taskExtraNode.setPropertyValue(extra.getPropertyValue());
// projectNodeExtraList.add(taskExtraNode);
// }
// }
// // 指标
// List<CidTaskNode> performanceList = task.getChildren();
// for (CidTaskNode performance : performanceList) {
// performance.setTaskId(task.getUuid());
// List<TaskExtraNode> performanceExtraList = performance.getTaskExtraNodeList();
// if (CollectionUtils.isNotEmpty(performanceExtraList)) {
// for (TaskExtraNode extra : performanceExtraList) {
// extra.setPerformanceId(performance.getUuid());
// extra.setTaskId(performance.getTaskId());
// extra.setNodeId(performance.getNodeId());
// allPerformanceExtraList.add(extra);
// }
// }
// allPerformanceList.add(performance);
// }
// }
// String createTime = DateUtil.now();
// Map<String, CidTaskNode> taskNodeMap = Map.of();
// if (CollectionUtils.isNotEmpty(taskNodeList)) {
// taskNodeList.forEach(projectNode -> {
// projectNode.setCreator(jobNumber);
// projectNode.setCreateTime(createTime);
// });
// if (projectMapper.batchAddSimulationCidTask(taskNodeList) <= 0) {
// response = SdmResponse.failed("新增任务失败");
// return response;
// }
// taskNodeMap = taskNodeList.stream().collect(Collectors.groupingBy(
// CidTaskNode::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// for (CidTaskNode taskNode : taskNodeList) {
// createDir(taskNode.getUuid(), NodeTypeEnum.TASK.getValue(),null, taskNode.getTaskName());
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
// projectNodeExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (projectMapper.batchAddSimulationTaskExtra(projectNodeExtraList) <= 0) {
// response = SdmResponse.failed("新增任务附加属性失败");
// }
// }
// if (CollectionUtils.isNotEmpty(projectNodeMemberList)) {
// projectNodeMemberList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (projectMapper.batchAddSimulationTaskMember(projectNodeMemberList) <= 0) {
// response = SdmResponse.failed("新增任务成员属性失败");
// return response;
// }
// }
// // 指标
// if (CollectionUtils.isNotEmpty(allPerformanceList)) {
// allPerformanceList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (projectMapper.batchAddSimulationCidPerformance(allPerformanceList) <= 0) {
// response = SdmResponse.failed("新增指标失败");
// return response;
// }
// List<TaskNodePo> newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(CidTaskNode::getTaskId).toList());
// Map<String, TaskNodePo> taskNodePoMap = Map.of();
// if (CollectionUtils.isNotEmpty(newTaskNodeList)) {
// taskNodePoMap = newTaskNodeList.stream().collect(Collectors.groupingBy(
// TaskNodePo::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// }
// for (CidTaskNode taskNode : allPerformanceList) {
// if (ObjectUtils.isEmpty(taskNodePoMap.get(taskNode.getTaskId())) && ObjectUtils.isEmpty(taskNodeMap.get(taskNode.getTaskId()))) {
// log.error("taskNodeMap不空根据taskId{},未查询到任务", taskNode.getTaskId());
// response = SdmResponse.failed("新增指标时,创建文件失败");
// return response;
// }
// createDir(taskNode.getUuid(),NodeTypeEnum.PERFORMANCE.getValue(),
// ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getUuid() : taskNodeMap.get(taskNode.getTaskId()).getUuid(),
// taskNode.getTaskName());
// }
// }
// if (CollectionUtils.isNotEmpty(allPerformanceExtraList)) {
// allPerformanceExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (projectMapper.batchAddSimulationPerformanceExtra(allPerformanceExtraList) <= 0) {
// response = SdmResponse.failed("新增任务指标附加属性失败");
// return response;
// }
// }
// return response;
// }
@Override
public SdmResponse getTaskDetail(GetTaskDetailReq req) {
@@ -1229,14 +1233,74 @@ public class TaskServiceImpl implements ITaskService {
return SdmResponse.success(spdmTaskDetailVo);
}
private void createDir(String uuid, String parentUuid, String dirName) {
private SdmResponse createDir(String uuid, String uuidOwnType,String parentUuid, String dirName) {
CreateDirReq createDirReq = new CreateDirReq();
createDirReq.setUuId(uuid);
createDirReq.setUuIdOwnType(uuidOwnType);
createDirReq.setParentUuId(parentUuid);
createDirReq.setDirName(dirName);
log.info("同步CID任务调用创建文件夹的参数为{}", createDirReq);
SdmResponse response = dataClientFeignClient.createDir(createDirReq);
log.info("同步CID调用创建文件夹的返回值为{}", response);
return response;
}
@Transactional
@Override
public void syncCidTask(SyncCidTaskReq req) {
log.info("syncCidTask参数为{}", req);
List<ProjectTaskInfo> taskInfoList = req.getTaskInfoList();
if (CollectionUtils.isEmpty(taskInfoList)) {
log.error("同步cid任务时任务为空");
return;
}
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
SpdmProjectNodeEditReq spdmProjectNodeEditReq = new SpdmProjectNodeEditReq();
spdmProjectNodeEditReq.setNodeName(req.getProjectName());
spdmProjectNodeEditReq.setNodeType(NodeTypeEnum.PROJECT.getValue());
spdmProjectNodeEditReq.setUuid(req.getProjectId());
spdmProjectNodeEditReq.setPid(req.getProjectId());
spdmProjectNodeEditReq.setTag1(req.getProjectId());
spdmProjectNodeEditReq.setCreateTime(curDateStr);
spdmProjectNodeEditReq.setTenantId(1999999999999999999L);
if (nodeMapper.addNodeBatch(Collections.singletonList(spdmProjectNodeEditReq)) <= 0) {
log.error("同步CID项目:{}失败",req.getProjectId() + " " + req.getProjectName());
return;
}
List<CidTaskNode> taskNodeList = new ArrayList<>();
for (ProjectTaskInfo projectTaskInfo : taskInfoList) {
CidTaskNode taskNode = new CidTaskNode();
taskNode.setUuid(projectTaskInfo.getTaskId());
taskNode.setTaskName(projectTaskInfo.getTaskName());
taskNode.setNodeId(req.getProjectId());
taskNode.setCreateTime(curDateStr);
taskNode.setTenantId(1999999999999999999L);
taskNodeList.add(taskNode);
}
if (projectMapper.batchAddSimulationCidTask(taskNodeList) <= 0) {
log.error("同步CID任务失败");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return;
}
try {
// 创建项目节点的文件夹
SdmResponse response = createDir(spdmProjectNodeEditReq.getUuid(), spdmProjectNodeEditReq.getNodeType(), null, spdmProjectNodeEditReq.getNodeName());
if (ObjectUtils.isEmpty(response) || response.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("同步CID任务时创建项目{}的文件夹失败,原因为:{}",req.getProjectId() + " " + req.getProjectName(),response.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
// 创建任务节点的文件夹
for (CidTaskNode taskNode : taskNodeList) {
response = createDir(taskNode.getUuid(), NodeTypeEnum.TASK.getValue(), req.getProjectId(), taskNode.getTaskName());
if (ObjectUtils.isEmpty(response) || response.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("同步CID任务时创建任务{}的文件夹失败,原因为:{}",taskNode.getUuid() + " " + taskNode.getTaskName(),response.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}catch (Exception ex) {
log.error("同步CID任务时创建文件夹失败原因为{}",ex.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}

View File

@@ -11,7 +11,7 @@
values
<foreach collection='addNodeList' item='addNode' index='index' separator=','>
(#{addNode.uuid},#{addNode.ownRootNodeUuid},#{addNode.nodeName},#{addNode.nodeCode},'',#{addNode.nodeType},#{addNode.nodeSubType},'0',#{addNode.pid},
'',1,#{addNode.beginTime},#{addNode.endTime},'',#{addNode.progressStatus},#{addNode.achieveStatus},#{addNode.exeStauts},#{addNode.tenantId},#{addNode.description},
'',1,#{addNode.beginTime},#{addNode.endTime},'',#{addNode.progressStatus},#{addNode.achieveStatus},#{addNode.exeStatus},#{addNode.tenantId},#{addNode.description},
#{addNode.detailImgUrl},#{addNode.creator},#{addNode.createTime},#{addNode.tag1},#{addNode.tag2},
#{addNode.tag3},#{addNode.tag4},#{addNode.tag5},#{addNode.tag6},#{addNode.tag7},#{addNode.tag8},#{addNode.tag9},#{addNode.tag10})
</foreach>

View File

@@ -35,11 +35,11 @@
<insert id="batchAddSimulationCidTask" useGeneratedKeys="true" keyProperty="id">
insert into simulation_task (uuid,task_name,task_code,task_pool_name,task_pool_version,node_id,days,standard,fold_id,status,achieve_status,begin_time,end_time,progress,exe_status,confidence,analyse_target,analyse_software,description,difficult,tenant_id
,creator,create_time,department,sectionName,groupName,bCapacity,flowTemplate,englishName) values
,creator,create_time,department,sectionName,groupName,bCapacity,englishName) values
<foreach collection='list' item='it' index='index' separator=','>
(#{it.uuid},#{it.taskName},#{it.taskCode},'','',#{it.nodeId},#{it.days},#{it.standard},'',1,0,
#{it.beginTime},#{it.endTime},0,1,#{it.confidence},#{it.analyseTarget},#{it.analyseSoftwares},#{it.description},#{it.difficult},#{it.tenantId},
#{it.creator},#{it.createTime},#{it.department},#{it.section},#{it.group},#{it.bCapacity},#{it.flowTemplate},#{it.englishName})
#{it.creator},#{it.createTime},#{it.department},#{it.section},#{it.group},#{it.bCapacity},#{it.englishName})
</foreach>
</insert>