仿真需求下发任务接口
This commit is contained in:
@@ -2,10 +2,7 @@ package com.sdm.project.controller;
|
||||
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.project.model.bo.ModifyProjectNode;
|
||||
import com.sdm.project.model.req.SpdmAddDemandReq;
|
||||
import com.sdm.project.model.req.SpdmDeleteDemandReq;
|
||||
import com.sdm.project.model.req.SpdmDemandListReq;
|
||||
import com.sdm.project.model.req.SpdmEditDemandReq;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.service.IDemandService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -70,16 +67,16 @@ public class SimulationDemandController {
|
||||
return demandService.list(req);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 下发任务
|
||||
// *
|
||||
// * @param req
|
||||
// * @return
|
||||
// */
|
||||
// @PostMapping("/issueTask")
|
||||
// @Operation(summary = "下发任务", description = "下发任务")
|
||||
// public SdmResponse issueTask(@RequestBody ModifyProjectNode req) {
|
||||
// return demandService.issueTask(req);
|
||||
// }
|
||||
/**
|
||||
* 下发任务
|
||||
*
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/issueTask")
|
||||
@Operation(summary = "下发任务", description = "下发任务")
|
||||
public SdmResponse issueTask(@RequestBody SpdmTaskIssue req) {
|
||||
return demandService.issueTask(req);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -251,6 +251,6 @@ public class TaskNode extends BaseEntity {
|
||||
// private String tags9;
|
||||
// private String tags10;
|
||||
|
||||
|
||||
private String demandId;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.sdm.project.model.req;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.sdm.common.entity.pojo.BaseEntity;
|
||||
import com.sdm.project.model.bo.ProjectNode;
|
||||
import com.sdm.project.model.bo.TaskNode;
|
||||
import com.sdm.project.model.bo.TaskNodeTag;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Data
|
||||
public class SpdmTaskIssue extends BaseEntity {
|
||||
|
||||
List<TaskNodeTag> idMap;
|
||||
|
||||
List<TaskNode> addNodeList;
|
||||
|
||||
String demandId;
|
||||
}
|
||||
@@ -17,4 +17,6 @@ public interface IDemandService {
|
||||
|
||||
SdmResponse list(SpdmDemandListReq req);
|
||||
|
||||
SdmResponse issueTask(SpdmTaskIssue req);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.sdm.project.service.impl;
|
||||
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
@@ -10,7 +11,11 @@ import com.sdm.project.common.DemandStatusTypeEnum;
|
||||
import com.sdm.project.common.MemberTypeEnum;
|
||||
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.po.TaskNodePo;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.model.vo.*;
|
||||
import com.sdm.project.service.IDemandService;
|
||||
@@ -27,6 +32,8 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.sdm.project.service.impl.NodeServiceImpl.setTagProperty;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
@@ -34,6 +41,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
@Autowired
|
||||
private SimulationDemandMapper mapper;
|
||||
|
||||
private SimulationProjectMapper projectMapper;
|
||||
|
||||
@Autowired
|
||||
private SimulationTaskMapper taskMapper;
|
||||
|
||||
@@ -112,7 +121,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
}
|
||||
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setNodeId((int)demandId);
|
||||
createDirReq.setNodeId((int) demandId);
|
||||
createDirReq.setParentNodeId(null);
|
||||
createDirReq.setDirName(req.getDemandName());
|
||||
log.info("创建需求时,调用创建文件夹的参数为:{}", createDirReq);
|
||||
@@ -262,7 +271,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
eachTaskList = taskMap.get(demand.getUuid());
|
||||
if (CollectionUtils.isEmpty(eachTaskList)) {
|
||||
newDemandList.add(demand);
|
||||
}else {
|
||||
} else {
|
||||
if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains("不合格")) {
|
||||
eachStatus = "不合格";
|
||||
} else {
|
||||
@@ -284,7 +293,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(req.getDemandStatus())) {
|
||||
if (CollectionUtils.isEmpty(taskList) ) {
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
demandList = demandList.stream().filter(firstDemand -> req.getDemandStatus().equals(firstDemand.getDemandStatus())).toList();
|
||||
} else {
|
||||
List<SpdmTaskVo> eachTaskList;
|
||||
@@ -294,19 +303,19 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
eachTaskList = taskMap.get(demand.getUuid());
|
||||
if (CollectionUtils.isEmpty(eachTaskList)) {
|
||||
newDemandList.add(demand);
|
||||
}else {
|
||||
} 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())){
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.NOT_STARTED.getName())) {
|
||||
eachStatus = DemandStatusTypeEnum.NOT_STARTED.getName();
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.IN_PROGRESS.getName())){
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.IN_PROGRESS.getName())) {
|
||||
eachStatus = DemandStatusTypeEnum.IN_PROGRESS.getName();
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.PAUSE.getName())){
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.PAUSE.getName())) {
|
||||
eachStatus = DemandStatusTypeEnum.PAUSE.getName();
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED.getName())){
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED.getName())) {
|
||||
eachStatus = DemandStatusTypeEnum.CLOSED.getName();
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED_LOOP.getName())){
|
||||
} else if (statusList.contains(DemandStatusTypeEnum.CLOSED_LOOP.getName())) {
|
||||
eachStatus = DemandStatusTypeEnum.CLOSED_LOOP.getName();
|
||||
} else {
|
||||
eachStatus = DemandStatusTypeEnum.REJECTED.getName();
|
||||
@@ -326,9 +335,9 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
return SdmResponse.success(new ArrayList<>());
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("currentPage",req.getCurrent());
|
||||
jsonObject.put("pageSize",req.getSize());
|
||||
jsonObject.put("total",demandList.size());
|
||||
jsonObject.put("currentPage", req.getCurrent());
|
||||
jsonObject.put("pageSize", req.getSize());
|
||||
jsonObject.put("total", demandList.size());
|
||||
demandList = demandList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList();
|
||||
if (CollectionUtils.isEmpty(demandList)) {
|
||||
log.error("demandList4为空");
|
||||
@@ -397,5 +406,175 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
return SdmResponse.success(jsonObject);
|
||||
}
|
||||
|
||||
@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".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.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) {
|
||||
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) {
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setNodeId(Math.toIntExact(nodeId));
|
||||
createDirReq.setParentNodeId(Math.toIntExact(parentNodeId));
|
||||
createDirReq.setDirName(dirName);
|
||||
log.info("下发任务调用创建文件夹的参数为:{}", createDirReq);
|
||||
// SdmResponse response = dataClientAPIClient.createDir(createDirReq);
|
||||
// log.info("调用创建文件夹的返回值为:{}", response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.constants.SystemConstants;
|
||||
import com.sdm.common.entity.constants.TagConstant;
|
||||
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.VersionEnum;
|
||||
@@ -989,19 +990,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
|
||||
}
|
||||
|
||||
private List<ProjectNodePo> traverseProjectNodeTree(ProjectNodePo projectNodePo, List<ProjectNodePo> newProjectNodePoList) {
|
||||
log.info("当前节点类型为:{}", projectNodePo.getNodeType());
|
||||
List<ProjectNodePo> projectNodePoList = mapper.queryNodeListByParentNodeId(Collections.singletonList(projectNodePo.getUuid()));
|
||||
if (CollectionUtils.isEmpty(projectNodePoList)) {
|
||||
return newProjectNodePoList;
|
||||
}
|
||||
for (ProjectNodePo nodePo : projectNodePoList) {
|
||||
|
||||
}
|
||||
return newProjectNodePoList;
|
||||
}
|
||||
|
||||
|
||||
private void handlePerformanceExtra(TaskNode projectNode, List<TaskNode> performanceNodeList, List<TaskExtraNode> performanceNodeExtraList) {
|
||||
performanceNodeList.add(projectNode);
|
||||
List<TaskExtraNode> extraList = projectNode.getTaskExtraNodeList();
|
||||
@@ -1747,11 +1735,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
||||
}
|
||||
|
||||
private void createDir(Long nodeId, Long parentNodeId, String dirName) {
|
||||
// CreateDirReq createDirReq = new CreateDirReq();
|
||||
// createDirReq.setNodeId(nodeId);
|
||||
// createDirReq.setParentNodeId(parentNodeId);
|
||||
// createDirReq.setDirName(dirName);
|
||||
// log.info("调用创建文件夹的参数为:{}", createDirReq);
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setNodeId(Math.toIntExact(nodeId));
|
||||
createDirReq.setParentNodeId(Math.toIntExact(parentNodeId));
|
||||
createDirReq.setDirName(dirName);
|
||||
log.info("调用创建文件夹的参数为:{}", createDirReq);
|
||||
// SdmResponse response = dataClientAPIClient.createDir(createDirReq);
|
||||
// log.info("调用创建文件夹的返回值为:{}", response);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user