仿真需求下发任务 bug fix

This commit is contained in:
2025-10-27 13:42:03 +08:00
parent cfa09a1178
commit 7af492a3ee
15 changed files with 370 additions and 101 deletions

View File

@@ -0,0 +1,21 @@
package com.sdm.project.common;
import lombok.Getter;
@Getter
public enum TaskAchieveStatusEnum {
NO_CALCULATE ("未分析", "0"),
UNQUALIFIED ("不合格", "1"),
QUALIFIED ("合格", "2");
private final String name;
private final String code;
TaskAchieveStatusEnum(String name, String code) {
this.name = name;
this.code = code;
}
}

View File

@@ -0,0 +1,25 @@
package com.sdm.project.common;
import lombok.Getter;
@Getter
public enum TaskExeStatusEnum {
NO_STARTED("未开始", "1"),
IN_PROGRESS("进行中", "2"),
REJECTED("已驳回", "3"),
COMPLETED("已完成", "4"),
PAUSED("已暂停", "5"),
CLOSED("已关闭","6"),
POSTPONED("已延期", "7");
private final String name;
private final String code;
TaskExeStatusEnum(String name, String code) {
this.name = name;
this.code = code;
}
}

View File

@@ -95,29 +95,4 @@ public class SimulationProjectController {
// return projectService.delete(req);
// }
// /**
// * 我的任务
// *
// * @param req
// * @return
// */
// @GetMapping("/list")
// @Operation(summary = "我的任务", description = "我的任务")
// public SdmResponse list(@Validated @RequestBody ProjectNodeListReq req) {
// return projectService.list(req);
// }
// /**
// * 通过或驳回任务
// *
// * @param taskId
// * @param handleType
// * @return
// */
// @GetMapping("/taskHandle")
// @Operation(summary = "通过或驳回任务", description = "通过或驳回任务")
// public SdmResponse taskHandle(@RequestParam(value = "当前任务的uuid", required = true) String taskId, @RequestParam(value = "0驳回1通过", required = true) Integer handleType) {
// return projectService.taskHandle(taskId, handleType);
// }
}

View File

@@ -31,4 +31,6 @@ public interface SimulationDemandMapper {
List<SpdmUserVo> getUserList(@Param("userIdList") List<Long> userIdList);
SpdmUserVo getUserByJobNumber(@Param("jobNumber") String jobNumber);
SpdmDemandVo getDemandByName(@Param("tenantId") String tenantId,@Param("demandName") String demandName);
}

View File

@@ -6,6 +6,7 @@ import com.sdm.common.entity.pojo.BaseEntity;
import com.sdm.project.model.po.ProjectNodeExtraPo;
import com.sdm.project.model.po.TaskNodeExtraPo;
import com.sdm.project.model.po.TaskNodeMemberPo;
import com.sdm.project.model.vo.SpdmUserVo;
import lombok.Data;
import java.util.ArrayList;
@@ -178,7 +179,17 @@ public class TaskNode extends BaseEntity {
private String nodeLevel;
/**
* 仿真负责人
*/
@JsonProperty(value = "pMemberList")
private String pMemberList;
/**
* 仿真执行人
*/
@JsonProperty(value = "eMemberList")
private String eMemberList;
/**
* 任务名称

View File

@@ -62,9 +62,20 @@ public class SpdmTaskListReq {
private List<TaskNodeTag> idMap;
/**
* 计划开始时间
*/
private String beginTime;
/**
* 计划结束时间
*/
private String endTime;
/**
* 实际结束时间
*/
private String finishTime;
}

View File

@@ -91,4 +91,6 @@ public class SpdmNodeVo extends BaseEntity {
private SpdmUserVo creatorObj;
private String exeStatus;
}

View File

@@ -7,14 +7,16 @@ import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
import com.sdm.common.service.BaseService;
import com.sdm.project.common.DemandStatusTypeEnum;
import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.TaskAchieveStatusEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.dao.SimulationDemandMapper;
import com.sdm.project.dao.SimulationNodeMapper;
import com.sdm.project.dao.SimulationProjectMapper;
import com.sdm.project.dao.SimulationTaskMapper;
import com.sdm.project.model.bo.*;
import com.sdm.project.model.po.ProjectNodePo;
import com.sdm.project.model.bo.TaskExtraNode;
import com.sdm.project.model.bo.TaskMemberNode;
import com.sdm.project.model.bo.TaskNode;
import com.sdm.project.model.po.TaskNodePo;
import com.sdm.project.model.req.*;
import com.sdm.project.model.vo.*;
@@ -32,7 +34,7 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.sdm.project.service.impl.NodeServiceImpl.setTagProperty;
import static com.sdm.project.service.impl.NodeServiceImpl.getTagListProperty;
@Slf4j
@Service
@@ -41,6 +43,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
@Autowired
private SimulationDemandMapper mapper;
@Autowired
private SimulationProjectMapper projectMapper;
@Autowired
@@ -68,6 +71,10 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
req.setCreateTime(curDateStr);
req.setUuid(generateUuid());
SpdmDemandVo demandByName = mapper.getDemandByName(tenantId, req.getDemandName());
if (ObjectUtils.isNotEmpty(demandByName)) {
return SdmResponse.failed("需求名称:" + demandByName.getDemandName() + "已存在,请修改");
}
if (mapper.addDemand(req, tenantId, jobNumber) <= 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return SdmResponse.failed("新增需求失败!");
@@ -241,13 +248,11 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
demandList = demandList.stream().filter(demand -> jobNumber.equals(demand.getCreator())).toList();
} else {
// 仿真负责人是当前用户
// if (CollectionUtils.isNotEmpty(demandMemberVoList)) {
demandMemberVoList = demandMemberVoList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType()) && Long.valueOf(jobNumber).equals(member.getUserId())).toList();
if (CollectionUtils.isNotEmpty(demandMemberVoList)) {
List<String> myDemandIdList = demandMemberVoList.stream().map(SpdmDemandMemberVo::getDemandId).toList();
demandList = demandList.stream().filter(demand -> myDemandIdList.contains(demand.getUuid())).toList();
}
// }
}
if (CollectionUtils.isEmpty(demandList)) {
log.error("demandList1为空");
@@ -270,13 +275,17 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
for (SpdmDemandVo demand : demandList) {
eachTaskList = taskMap.get(demand.getUuid());
if (CollectionUtils.isEmpty(eachTaskList)) {
log.info("当前需求:{}没有关联的任务",demand.getId());
newDemandList.add(demand);
} else {
if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains("不合格")) {
eachStatus = "不合格";
if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.UNQUALIFIED.getCode())) {
eachStatus = TaskAchieveStatusEnum.UNQUALIFIED.getCode();
} else if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.NO_CALCULATE.getCode())) {
eachStatus = TaskAchieveStatusEnum.NO_CALCULATE.getCode();
} else {
eachStatus = "合格";
eachStatus = TaskAchieveStatusEnum.QUALIFIED.getCode();
}
log.info("当前需求:{}的风险状态为:{}",demand.getId(),eachStatus);
if (!eachStatus.equals(req.getAchieveStatus())) {
continue;
}
@@ -297,30 +306,45 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
demandList = demandList.stream().filter(firstDemand -> req.getDemandStatus().equals(firstDemand.getDemandStatus())).toList();
} else {
List<SpdmTaskVo> eachTaskList;
String eachStatus;
String eachStatus = "";
List<SpdmDemandVo> newDemandList = new ArrayList<>();
for (SpdmDemandVo demand : demandList) {
eachTaskList = taskMap.get(demand.getUuid());
if (CollectionUtils.isEmpty(eachTaskList)) {
log.info("当前需求:{}没有关联的任务",demand.getId());
newDemandList.add(demand);
} else {
// 有进行中就是进行中,
// 没有进行中,有暂停就是暂停
// 没有进行中和暂停,有延期就是延期
// 全部已完成就已完成
// 全部关闭就已关闭
// 全部未开始就未开始
// 全部驳回就驳回
// 其他 进行中
List<String> statusList = eachTaskList.stream().map(SpdmTaskVo::getExeStatus).toList();
if (statusList.contains(DemandStatusTypeEnum.UNASSIGNED.getName())) {
eachStatus = DemandStatusTypeEnum.UNASSIGNED.getName();
} else if (statusList.contains(DemandStatusTypeEnum.NOT_STARTED.getName())) {
eachStatus = DemandStatusTypeEnum.NOT_STARTED.getName();
} else if (statusList.contains(DemandStatusTypeEnum.IN_PROGRESS.getName())) {
eachStatus = DemandStatusTypeEnum.IN_PROGRESS.getName();
} else if (statusList.contains(DemandStatusTypeEnum.PAUSE.getName())) {
eachStatus = DemandStatusTypeEnum.PAUSE.getName();
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED.getName())) {
eachStatus = DemandStatusTypeEnum.CLOSED.getName();
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED_LOOP.getName())) {
eachStatus = DemandStatusTypeEnum.CLOSED_LOOP.getName();
if (statusList.contains(TaskExeStatusEnum.IN_PROGRESS.getCode())) {
eachStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
} else if (statusList.contains(TaskExeStatusEnum.PAUSED.getCode())) {
eachStatus = TaskExeStatusEnum.PAUSED.getCode();
} else if (statusList.contains(TaskExeStatusEnum.POSTPONED.getCode())) {
eachStatus = TaskExeStatusEnum.POSTPONED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.COMPLETED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.COMPLETED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.CLOSED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.CLOSED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.NO_STARTED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.NO_STARTED.getCode();
} else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.REJECTED.getCode().equals(status))) {
eachStatus = TaskExeStatusEnum.REJECTED.getCode();
} else {
eachStatus = DemandStatusTypeEnum.REJECTED.getName();
eachStatus = TaskExeStatusEnum.IN_PROGRESS.getCode();
}
if (!eachStatus.equals(req.getAchieveStatus())) {
log.info("当前需求:{}的需求状态为:{}",demand.getId(),eachStatus);
if (!eachStatus.equals(req.getDemandStatus())) {
continue;
}
newDemandList.add(demand);
@@ -409,47 +433,35 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
@Override
public SdmResponse issueTask(SpdmTaskIssue req) {
log.info("issueTask参数为{}", req);
String tenantId = ThreadLocalContext.getCompany();
List<TaskNode> taskNodeList = req.getAddNodeList();
if (CollectionUtils.isEmpty(taskNodeList)) {
return SdmResponse.success(new ArrayList<>());
}
List<TaskNodeTag> idMapList = req.getIdMap();
idMapList = idMapList.stream().filter(idMap -> !"null".equals(idMap.getKey())).toList();
if (CollectionUtils.isEmpty(idMapList)) {
return SdmResponse.success(new ArrayList<>());
}
TaskNodeTag taskNodeTag = idMapList.get(idMapList.size() - 1);
List<ProjectNodePo> nodeListByNodeIdList = projectMapper.getNodeListByNodeIdList(Collections.singletonList(taskNodeTag.getKey()));
if (CollectionUtils.isEmpty(nodeListByNodeIdList)) {
return SdmResponse.success(new ArrayList<>());
}
long parentId = nodeListByNodeIdList.get(0).getId();
log.info("issueTask的idMap最后一层非空节点为{}",taskNodeTag);
long parentId = getLastNodeId(taskNodeList.get(0));
log.info("下发任务时parentId为{}", parentId);
String demandId = req.getDemandId();
List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
List<TaskNode> allPerformanceList = new ArrayList<>();
List<TaskExtraNode> allPerformanceExtraList = new ArrayList<>();
for (TaskNode task : taskNodeList) {
for (TaskNodeTag tag : idMapList) {
try {
setTagProperty(task, tag.getKey(), Arrays.stream(tag.getValue().split(",")).toList());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
task.setUuid(generateUuid());
task.setDemandId(demandId);
List<TaskMemberNode> taskMemberNodeList = task.getMemberList();
if (CollectionUtils.isNotEmpty(taskMemberNodeList)) {
for (TaskMemberNode member : taskMemberNodeList) {
task.setTaskName(task.getNodeName());
task.setTaskCode(task.getNodeCode());
task.setTenantId(tenantId);
String userIdStr = task.getEMemberList();
log.info("下发的仿真执行人为:{}", userIdStr);
if (StringUtils.isNotBlank(userIdStr)) {
String[] userIdArr = userIdStr.split(",");
for (String userId : userIdArr) {
TaskMemberNode taskMemberNode = new TaskMemberNode();
taskMemberNode.setTaskId(task.getUuid());
taskMemberNode.setNodeId(task.getUuid());
taskMemberNode.setIdentity(member.getIdentity());
taskMemberNode.setName(member.getName());
taskMemberNode.setUserId(member.getUserId());
taskMemberNode.setType(member.getType());
taskMemberNode.setUserId(userId);
taskMemberNode.setType(MemberTypeEnum.EXECUTOR.getCode());
projectNodeMemberList.add(taskMemberNode);
}
}
@@ -504,7 +516,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
)
));
for (TaskNode taskNode : taskNodeList) {
createDir(taskNode.getId(),parentId, taskNode.getNodeName());
createDir(taskNode.getId(), parentId, taskNode.getNodeName());
}
}
if (CollectionUtils.isNotEmpty(projectNodeExtraList)) {
@@ -564,7 +576,185 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
return response;
}
private long getLastNodeId(TaskNode taskNode) {
// List<String> tag1 = taskNode.getTag1();
// if (CollectionUtils.isNotEmpty(tag1)) {
// tag1.get(tag1.size() - 1);
// }
List<String> tagListProperty;
String lastNodeId = "";
for (int i = 1; i <= 10; i++) {
try {
tagListProperty = getTagListProperty(taskNode, "Tag" + i);
if (CollectionUtils.isNotEmpty(tagListProperty)) {
lastNodeId = tagListProperty.get(tagListProperty.size() - 1);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return projectMapper.getNodeListByNodeIdList(Collections.singletonList(lastNodeId)).get(0).getId();
}
// @Override
// public SdmResponse issueTask(SpdmTaskIssue req) {
// log.info("issueTask参数为{}", req);
// List<TaskNode> taskNodeList = req.getAddNodeList();
// if (CollectionUtils.isEmpty(taskNodeList)) {
// return SdmResponse.success(new ArrayList<>());
// }
// List<TaskNodeTag> idMapList = req.getIdMap();
// idMapList = idMapList.stream().filter(idMap -> null != idMap.getKey() &&!"null".equals(idMap.getKey())).toList();
// if (CollectionUtils.isEmpty(idMapList)) {
// return SdmResponse.success(new ArrayList<>());
// }
// TaskNodeTag taskNodeTag = idMapList.get(idMapList.size() - 1);
// List<ProjectNodePo> nodeListByNodeIdList = projectMapper.getNodeListByNodeIdList(Collections.singletonList(taskNodeTag.getKey()));
// if (CollectionUtils.isEmpty(nodeListByNodeIdList)) {
// return SdmResponse.success(new ArrayList<>());
// }
// long parentId = nodeListByNodeIdList.get(0).getId();
// log.info("issueTask的idMap最后一层非空节点为{}",taskNodeTag);
// String demandId = req.getDemandId();
// List<TaskMemberNode> projectNodeMemberList = new ArrayList<>();
// List<TaskExtraNode> projectNodeExtraList = new ArrayList<>();
// List<TaskNode> allPerformanceList = new ArrayList<>();
// List<TaskExtraNode> allPerformanceExtraList = new ArrayList<>();
// for (TaskNode task : taskNodeList) {
// for (TaskNodeTag tag : idMapList) {
// try {
// setTagProperty(task, tag.getValue(), Arrays.stream(tag.getKey().split(",")).toList());
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
// task.setUuid(generateUuid());
// task.setDemandId(demandId);
// task.setTaskName(task.getNodeName());
// task.setTaskCode(task.getNodeCode());
// List<TaskMemberNode> taskMemberNodeList = task.getMemberList();
// if (CollectionUtils.isNotEmpty(taskMemberNodeList)) {
// for (TaskMemberNode member : taskMemberNodeList) {
// TaskMemberNode taskMemberNode = new TaskMemberNode();
// taskMemberNode.setTaskId(task.getUuid());
// taskMemberNode.setNodeId(task.getUuid());
// taskMemberNode.setIdentity(member.getIdentity());
// taskMemberNode.setName(member.getName());
// taskMemberNode.setUserId(member.getUserId());
// taskMemberNode.setType(member.getType());
// 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<TaskNode> performanceList = task.getChildren();
// for (TaskNode 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 jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber();
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String createTime = format.format(new Date());
// SdmResponse response = SdmResponse.success();
// Map<String, TaskNode> taskNodeMap = Map.of();
// if (CollectionUtils.isNotEmpty(taskNodeList)) {
// taskNodeList.forEach(projectNode -> {
// projectNode.setCreator(jobNumber);
// projectNode.setCreateTime(createTime);
// });
// if (projectMapper.batchAddSimulationTask(taskNodeList) <= 0) {
// response = SdmResponse.failed("新增任务失败");
// return response;
// }
// taskNodeMap = taskNodeList.stream().collect(Collectors.groupingBy(
// TaskNode::getUuid,
// Collectors.collectingAndThen(
// Collectors.toList(),
// list -> list.get(0)
// )
// ));
// for (TaskNode taskNode : taskNodeList) {
// createDir(taskNode.getId(),parentId, taskNode.getNodeName());
// }
// }
// 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.batchAddSimulationPerformance(allPerformanceList) <= 0) {
// response = SdmResponse.failed("新增指标失败");
// return response;
// }
//
// List<TaskNodePo> newTaskNodeList = projectMapper.getTaskListByNodeIdList(allPerformanceList.stream().map(TaskNode::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 (TaskNode 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.getId(),
// ObjectUtils.isNotEmpty(taskNodePoMap.get(taskNode.getTaskId())) ? taskNodePoMap.get(taskNode.getTaskId()).getId() : taskNodeMap.get(taskNode.getTaskId()).getId(),
// taskNode.getNodeName());
// }
//
// }
// if (CollectionUtils.isNotEmpty(allPerformanceExtraList)) {
// allPerformanceExtraList.forEach(projectNode -> projectNode.setCreateTime(createTime));
// if (projectMapper.batchAddSimulationPerformanceExtra(allPerformanceExtraList) <= 0) {
// response = SdmResponse.failed("新增任务指标附加属性失败");
// return response;
// }
// }
//
// return response;
// }
private void createDir(Long nodeId, Long parentNodeId, String dirName) {

View File

@@ -686,6 +686,13 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
return (String) field.get(obj);
}
public static List<String> getTagListProperty(Object obj, String propertyName) throws Exception {
Class<?> clazz = obj.getClass();
Field field = clazz.getDeclaredField(propertyName);
field.setAccessible(true);
return (List<String>) field.get(obj);
}
@Override
public SdmResponse getUserGroupProjectStatistics(Integer userGroupId, Integer userId) {
List<UserGroupProjectVo> userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId);

View File

@@ -53,9 +53,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private String currentTopNodeType = "";
private HashMap<String, List<String>> idMap = new HashMap<>();
// private HashMap<String, List<String>> idMap = new HashMap<>();
private HashMap<String, List<String>> taskIdMap = new HashMap<>();
// private HashMap<String, List<String>> taskIdMap = new HashMap<>();
private HashMap<String, List<String>> projectIdMap = new HashMap<>();
@@ -84,7 +84,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
public SdmResponse add(JSONObject jsonObject) {
String tenantId = ThreadLocalContext.getCompany();
TaskNodeTree taskNodeTree = parseTaskTree(jsonObject);
SdmResponse response = realAddSimulationTaskItems(taskNodeTree, "", tenantId);
HashMap<String, List<String>> idMap = new HashMap<>();
HashMap<String, List<String>> taskIdMap = new HashMap<>();
SdmResponse response = realAddSimulationTaskItems(taskNodeTree, "", tenantId,idMap,taskIdMap);
if (response.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("新增任务失败,清理新增数据!");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -615,7 +617,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
if (CollectionUtils.isNotEmpty(addNodeList)) {
String tenantId = ThreadLocalContext.getCompany();
TaskNodeTree taskNodeTree = newParseTaskTree(JSONArray.parseArray(JSONArray.toJSONString(addNodeList)));
SdmResponse response = realAddSimulationTaskItems(taskNodeTree, "", tenantId);
HashMap<String, List<String>> idMap = new HashMap<>();
HashMap<String, List<String>> taskIdMap = new HashMap<>();
SdmResponse response = realAddSimulationTaskItems(taskNodeTree, "", tenantId,idMap,taskIdMap);
if (response.getCode() != ResultCode.SUCCESS.getCode()) {
log.error("新增任务、分析项失败,清理新增数据!");
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -1006,7 +1010,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
private void handleTaskExtraAndMember(TaskNode projectNode, List<TaskNode> taskNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNodeTag> tagList) {
private void handleTaskExtraAndMember(TaskNode projectNode, List<TaskNode> taskNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNodeTag> tagList,HashMap<String, List<String>> taskIdMap) {
if (StringUtils.isBlank(projectNode.getTaskName())) {
projectNode.setTaskName(projectNode.getNodeName());
}
@@ -1239,7 +1243,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
private void handleNodeExtraAndMember(TaskNode projectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList) {
private void handleNodeExtraAndMember(TaskNode projectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList,HashMap<String, List<String>> idMap,HashMap<String, List<String>> taskIdMap) {
List<String> tagList = idMap.get(projectNode.getNodeType());
if (CollectionUtils.isEmpty(tagList)) {
tagList = new ArrayList<>();
@@ -1325,9 +1329,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
List<TaskExtraNode> projectNodePerformanceExtraList = new ArrayList<>();
// List<String> newAllProjectNodeList = new ArrayList<>();
// List<TaskNode> eachProjectNodeList = new ArrayList<>();
HashMap<String, List<String>> idMap = new HashMap<>();
HashMap<String, List<String>> taskIdMap = new HashMap<>();
for (TaskNode taskNode : taskNodeTree.getNodeList()) {
currentTopNodeType = taskNode.getNodeType();
traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, tagList);
traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, tagList,idMap,taskIdMap);
// eachProjectNodeList = projectNodeList.stream().filter(node -> !newAllProjectNodeList.contains(node.getUuid())).toList();
// newAllProjectNodeList.addAll(eachProjectNodeList.stream().map(TaskNode::getUuid).toList());
@@ -1546,7 +1552,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
return response;
}
private SdmResponse realAddSimulationTaskItems(TaskNodeTree taskNodeTree, String parentId, String tenantId) {
private SdmResponse realAddSimulationTaskItems(TaskNodeTree taskNodeTree, String parentId, String tenantId,HashMap<String, List<String>> idMap,HashMap<String, List<String>> taskIdMap) {
String jobNumber = ThreadLocalContext.getCommonHeader().getJobNumber();
SdmResponse response = SdmResponse.success();
if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) {
@@ -1561,7 +1567,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
List<TaskNode> projectNodePerformanceList = new ArrayList<>();
List<TaskExtraNode> projectNodePerformanceExtraList = new ArrayList<>();
for (TaskNode taskNode : taskNodeTree.getNodeList()) {
traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, null);
traverseTaskNode(taskNode.getPid(), tenantId, VersionEnum.INITIAL.getCode(), taskNode, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, projectNodePerformanceList, projectNodePerformanceExtraList, null,idMap,taskIdMap);
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime = format.format(new Date());
@@ -1744,7 +1750,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// log.info("调用创建文件夹的返回值为:{}", response);
}
private void traverseTaskNode(String parentId, String tenantId, String nodeVersion, TaskNode eachProjectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNode> taskNodeList, List<TaskMemberNode> taskNodeMemberList, List<TaskExtraNode> taskNodeExtraList, List<TaskNode> taskPerformanceList, List<TaskExtraNode> performanceExtraList, List<TaskNodeTag> tagList) {
private void traverseTaskNode(String parentId, String tenantId, String nodeVersion, TaskNode eachProjectNode, List<TaskNode> projectNodeList, List<TaskMemberNode> projectNodeMemberList, List<TaskExtraNode> projectNodeExtraList, List<TaskNode> taskNodeList, List<TaskMemberNode> taskNodeMemberList, List<TaskExtraNode> taskNodeExtraList, List<TaskNode> taskPerformanceList, List<TaskExtraNode> performanceExtraList, List<TaskNodeTag> tagList,HashMap<String, List<String>> idMap,HashMap<String, List<String>> taskIdMap) {
// if (!bStringNotBlank(projectNode.getUuid())) {//兼容在已有节点下添加分析项情况
// projectNode.setUuid(generateUuid());
// }
@@ -1758,12 +1764,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
String nodeType = eachProjectNode.getNodeType();
List<TaskNode> childrenNodeList = eachProjectNode.getChildren();
if (SystemConstants.TASK_TAG.equals(nodeType)) {
handleTaskExtraAndMember(eachProjectNode, taskNodeList, taskNodeMemberList, taskNodeExtraList, tagList);
handleTaskExtraAndMember(eachProjectNode, taskNodeList, taskNodeMemberList, taskNodeExtraList, tagList,taskIdMap);
} else if (SystemConstants.PERFORMANCE_TAG.equals(nodeType)) {
eachProjectNode.setTaskId(parentId);
handlePerformanceExtra(eachProjectNode, taskPerformanceList, performanceExtraList);
} else {
handleNodeExtraAndMember(eachProjectNode, projectNodeList, projectNodeMemberList, projectNodeExtraList);
handleNodeExtraAndMember(eachProjectNode, projectNodeList, projectNodeMemberList, projectNodeExtraList,idMap,taskIdMap);
}
if (CollectionUtils.isEmpty(childrenNodeList)) {
for (TaskNode projectNode : projectNodeList) {
@@ -1968,7 +1974,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
// 处理子节点
for (TaskNode node : childrenNodeList) {
traverseTaskNode(eachProjectNode.getUuid(), tenantId, nodeVersion, node, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, taskPerformanceList, performanceExtraList, tagList);
traverseTaskNode(eachProjectNode.getUuid(), tenantId, nodeVersion, node, projectNodeList, projectNodeMemberList, projectNodeExtraList, taskNodeList, taskNodeMemberList, taskNodeExtraList, taskPerformanceList, performanceExtraList, tagList,idMap,taskIdMap);
}
}

View File

@@ -62,7 +62,7 @@ public class TaskServiceImpl implements ITaskService {
log.error("公司和工号都不能为空");
return SdmResponse.failed("公司和工号都不能为空");
}
// 0所有 1我执行的 2:我关注的
// 0我执行的 1:我关注的 2所有
Integer type = req.getType();
if (type != 0 && type != 1 && type != 2) {
log.error("type必须为0或1或2");
@@ -100,12 +100,11 @@ public class TaskServiceImpl implements ITaskService {
throw new RuntimeException(e);
}
}
} else {
taskList = allTaskList;
}
if (CollectionUtils.isEmpty(taskList)) {
log.info("未查询任务");
log.info("未查询任务");
return SdmResponse.success(new ArrayList<>());
}
JSONObject jsonObject = new JSONObject();

View File

@@ -157,4 +157,8 @@
limit 1
</select>
<select id="getDemandByName" resultType="com.sdm.project.model.vo.SpdmDemandVo">
select * from simulation_demand where tenant_id = #{tenantId} and demand_name = #{demandName} limit 1
</select>
</mapper>

View File

@@ -61,6 +61,9 @@
<if test="editNode.exeStatus != null and editNode.exeStatus != ''">
exe_status = #{editNode.exeStatus},
</if>
<if test="editNode.achieveStatus != null and editNode.achieveStatus != ''">
achieveStatus = #{editNode.achieveStatus},
</if>
<if test="editNode.updater != null and editNode.updater != ''">
updater = #{editNode.updater},
</if>

View File

@@ -35,11 +35,11 @@
<insert id="batchAddSimulationTask" 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,flowTemplateName,englishName,tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10) values
,creator,create_time,department,sectionName,groupName,bCapacity,flowTemplateName,englishName,demand_id,tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10) values
<foreach collection='list' item='it' index='index' separator=','>
(#{it.uuid},#{it.taskName},#{it.taskCode},'','',#{it.nodeId},#{it.days},#{it.standard},'',1,1,
#{it.beginTime},#{it.endTime},0,0,#{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.flowTemplateName},#{it.englishName},#{it.Tag1,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.Tag2,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
(#{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.flowTemplateName},#{it.englishName},#{it.demandId},#{it.Tag1,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.Tag2,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.Tag3,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.Tag4,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.Tag5,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.Tag6,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.Tag7,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.Tag8,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
@@ -72,9 +72,9 @@
INSERT INTO simulation_node_versions(nodeName,nodeVersion,parentVersion,versionContents,creator) VALUES (#{version.nodeName},#{version.nodeVersion},#{version.parentVersion},#{version.versionContents},#{version.creator})
</insert>
<insert id="batchAddSimulationTaskMember">
insert into simulation_task_member (task_id,identity,name,creator,create_time) values
insert into simulation_task_member (task_id,identity,name,user_id,creator,create_time,type) values
<foreach collection='list' item='addNodeMember' index='index' separator=','>
(#{addNodeMember.taskId},#{addNodeMember.identity},#{addNodeMember.name},#{addNodeMember.creator},#{addNodeMember.createTime})
(#{addNodeMember.taskId},#{addNodeMember.identity},#{addNodeMember.name},#{addNodeMember.userId},#{addNodeMember.creator},#{addNodeMember.createTime},#{addNodeMember.type})
</foreach>
</insert>

View File

@@ -66,8 +66,21 @@
</foreach>
)
</if>
<if test="req.beginTime != null and req.beginTime != ''">
<![CDATA[
and STR_TO_DATE(begin_time,'%Y-%m-%d') >= #{req.beginTime}
]]>
</if>
<if test="req.endTime != null and req.endTime != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime}
]]>
</if>
<if test="req.finishTime != null and req.finishTime != ''">
and finish_time = #{req.finishTime}
<![CDATA[
and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishTime}
]]>
</if>
</select>
@@ -118,12 +131,12 @@
</if>
<if test="req.beginTime != null and req.beginTime != ''">
<![CDATA[
and STR_TO_DATE(create_time,'%Y-%m-%d') <= #{req.endTime}
and STR_TO_DATE(begin_time,'%Y-%m-%d') >= #{req.beginTime}
]]>
</if>
<if test="req.endTime != null and req.endTime != ''">
<![CDATA[
and STR_TO_DATE(create_time,'%Y-%m-%d') <= #{req.endTime}
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime}
]]>
</if>