project commit by lidongyang

This commit is contained in:
2025-12-09 09:57:40 +08:00
parent 0358e3bc17
commit b59292fdca
10 changed files with 835 additions and 483 deletions

View File

@@ -147,8 +147,8 @@ public class SimulationTaskController {
*/
@PostMapping("/getTaskCompleteStatistics")
@Operation(summary = "按工位、学科的仿真任务达成统计", description = "按工位、学科的仿真任务达成统计")
public SdmResponse getCommonCompleteStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
return taskService.getCommonCompleteStatistics(req);
public SdmResponse getTaskCompleteStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
return taskService.getTaskCompleteStatistics(req);
}
/**

View File

@@ -40,7 +40,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId, @Param("pos") int pos, @Param("limit") int limit);
int getNodeListCount(@Param("nodeType") String nodeType, @Param("nodeSubType") String nodeSubType, @Param("progressStatus") Integer progressStatus, @Param("nodeCode") String nodeCode,
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId);
@Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId);
List<SpdmNodeExtraVo> getNodeExtraListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
@@ -53,9 +53,9 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
void deleteTaskBatch(List<String> deleteNodeIdList);
void deleteTaskExtraBatch(@Param("taskIdList") List<Long> taskIdList);
void deleteTaskExtraBatch(@Param("taskIdList") List<String> taskIdList);
void deleteTaskMemberBatch(@Param("taskIdList") List<Long> taskIdList);
void deleteTaskMemberBatch(@Param("taskIdList") List<String> taskIdList);
void deletePerformanceBatch(@Param("performanceIdList") List<Long> performanceIdList);
@@ -65,7 +65,7 @@ public interface SimulationNodeMapper extends BaseMapper<SimulationNode> {
List<TaskNodeMemberPo> getTaskMemberListByNodeIdList(@Param("nodeIdList") List<String> nodeIdList);
List<PerformanceNodePo> getPerformanceListByNodeIdList(@Param("taskIdList") List<Long> taskIdList);
List<PerformanceNodePo> getPerformanceListByNodeIdList(@Param("taskIdList") List<String> taskIdList);
SpdmNodeVo getNodeById(@Param("projectNodeId") String projectNodeId);

View File

@@ -50,4 +50,8 @@ public interface SimulationTaskMapper extends BaseMapper<SimulationTask> {
List<TaskNodeExtraPo> getTaskExtraList(@Param("taskIdList") List<String> taskIdList);
List<SpdmTaskVo> getTaskListByTag(@Param("req") TaskCompleteStatisticsReq req);
List<SpdmTaskVo> getTaskListByName(@Param("taskNameList") List<String> taskNameList);
}

View File

@@ -47,6 +47,8 @@ public class PerformanceNodePo extends NodeAllBase {
*/
private String method;
private String completeStatus;
/**
* 目标值
*/

View File

@@ -159,4 +159,5 @@ public class ProjectNodePo extends NodeAllBase {
private String tag10;
private Long imageFileId;
private String englishName;
}

View File

@@ -55,7 +55,7 @@ public interface ITaskService {
BosimSaveProjectTaskRsp syncCidTask(SyncCidTaskReq req);
SdmResponse getCommonCompleteStatistics(TaskCompleteStatisticsReq req);
SdmResponse getTaskCompleteStatistics(TaskCompleteStatisticsReq req);
SdmResponse getPerformanceCompleteStatistics(PerformanceCompleteStatisticsReq req);

View File

@@ -235,7 +235,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
return true;
}
nodeMapper.deleteTaskBatch(deleteNodeIdList);
List<Long> taskIdList = taskNodePoList.stream().map(TaskNodePo::getId).toList();
List<String> taskIdList = taskNodePoList.stream().map(TaskNodePo::getUuid).toList();
nodeMapper.deleteTaskExtraBatch(taskIdList);
nodeMapper.deleteTaskMemberBatch(taskIdList);
// 删除当前节点及子节点下的指标相关信息
@@ -990,7 +990,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
}
req.setUserIds(userIds);
List<UserGroupTaskCompleteVo> userGroupTaskCompleteStatistics = this.baseMapper.getUserGroupTaskCompleteStatistics(req);
// 按用户分组统计任务状态

View File

@@ -20,6 +20,7 @@ import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
import com.sdm.common.utils.RandomUtil;
import com.sdm.common.utils.excel.ExcelUtil;
import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.RunPerformanceStatusEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.dao.SimulationDemandMapper;
import com.sdm.project.dao.SimulationNodeMapper;
@@ -153,12 +154,12 @@ public class TaskServiceImpl implements ITaskService {
List<String> taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).toList();
List<SpdmTaskMemberVo> taskMemberVoList = mapper.getMemberList(taskIdList, null);
List<SpdmTaskMemberVo> copyTaskMemberList = taskMemberVoList.stream().map(i -> {
SpdmTaskMemberVo o = new SpdmTaskMemberVo();
o.setTaskId(i.getTaskId());
o.setType(i.getType());
o.setUserId(i.getUserId());
return o;
}).collect(Collectors.toList());
SpdmTaskMemberVo o = new SpdmTaskMemberVo();
o.setTaskId(i.getTaskId());
o.setType(i.getType());
o.setUserId(i.getUserId());
return o;
}).collect(Collectors.toList());
Map<String, List<SpdmTaskMemberVo>> memberMap = Map.of();
if (CollectionUtils.isNotEmpty(taskMemberVoList)) {
@@ -1322,6 +1323,18 @@ public class TaskServiceImpl implements ITaskService {
resp.setMessage(ResultCode.FAILED.getMessage());
return resp;
}
List<String> taskNameList = taskInfoList.stream().map(ProjectTaskInfo::getTaskName).distinct().toList();
List<SpdmTaskVo> taskVoList = mapper.getTaskListByName(taskNameList);
if (CollectionUtils.isNotEmpty(taskVoList)) {
List<String> projectIdList = taskVoList.stream().map(SpdmTaskVo::getTag1).toList();
if (projectIdList.contains(projectId)) {
String existTaskName = taskVoList.stream().map(SpdmTaskVo::getTaskName).collect(Collectors.joining(","));
log.error("本次同步任务失败,以下任务:{}已存在",existTaskName);
resp.setCode(String.valueOf(ResultCode.FAILED.getCode()));
resp.setMessage("本次同步任务失败,以下任务:"+existTaskName+"已存在");
return resp;
}
}
List<CidTaskNode> taskNodeList = new ArrayList<>();
for (ProjectTaskInfo projectTaskInfo : taskInfoList) {
CidTaskNode taskNode = new CidTaskNode();
@@ -1366,10 +1379,66 @@ public class TaskServiceImpl implements ITaskService {
}
@Override
public SdmResponse getCommonCompleteStatistics(TaskCompleteStatisticsReq req) {
public SdmResponse getTaskCompleteStatistics(TaskCompleteStatisticsReq req) {
// 所有任务执行状态
Set<String> allExeStatus = new HashSet<>();
List<CommonGetCompleteFromTaskVo> commonCompleteStatisticsFromTask = mapper.getTaskCompleteStatistics(req);
List<SpdmTaskVo> taskList = mapper.getTaskListByTag(req);
if (CollectionUtils.isEmpty(taskList)) {
log.error("根据参数:{},未查询到任务",req);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
String resultTagType = req.getResultTagType();
List<String> nodeIdList = new ArrayList<>();
for (SpdmTaskVo taskVo : taskList) {
try {
String tagProperty = getTagProperty(taskVo, resultTagType);
if (StringUtils.isNotBlank(tagProperty)) {
nodeIdList.addAll(Arrays.stream(tagProperty.split(",")).toList());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
if (CollectionUtils.isEmpty(nodeIdList)) {
log.error("根据任务:{},未查询到{}标签中的节点id",taskList,resultTagType);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
nodeIdList = nodeIdList.stream().distinct().toList();
List<SpdmNodeVo> nodeList = nodeMapper.getNodeListByIds(nodeIdList);
if (CollectionUtils.isEmpty(nodeList)) {
log.error("根据节点id{},未查询节点",nodeIdList);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
Map<String, String> nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName));
List<CommonGetCompleteFromTaskVo> commonCompleteStatisticsFromTask = new ArrayList<>();
String resultTagId;
String[] resultTagIdArr;
for (SpdmTaskVo taskVo : taskList) {
try {
resultTagId = getTagProperty(taskVo,resultTagType);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (StringUtils.isBlank(resultTagId)) {
log.error("id{}任务的:{}标签不存在",taskVo.getId(),resultTagType);
continue;
}
resultTagIdArr = resultTagId.split(",");
CommonGetCompleteFromTaskVo commonGetCompleteFromTaskVo = new CommonGetCompleteFromTaskVo();
commonGetCompleteFromTaskVo.setTag(resultTagId);
commonGetCompleteFromTaskVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
commonGetCompleteFromTaskVo.setExeStatus(taskVo.getExeStatus());
commonCompleteStatisticsFromTask.add(commonGetCompleteFromTaskVo);
}
// 按tag分组统计任务状态
Map<String, CommonStatisticsVo> taskStatisticsMap = new HashMap<>();
// 统计每个tag的各种状态任务数量
@@ -1401,8 +1470,89 @@ public class TaskServiceImpl implements ITaskService {
public SdmResponse getPerformanceCompleteStatistics(PerformanceCompleteStatisticsReq req) {
// 所有指标执行状态
Set<String> allExeStatus = new HashSet<>();
// 处理指标完成情况统计
List<CommonGetCompleteFromPerformanceVo> commonCompleteStatisticsFromPerformance = mapper.getPerformanceCompleteStatistics(req);
TaskCompleteStatisticsReq taskCompleteStatisticsReq = new TaskCompleteStatisticsReq();
BeanUtils.copyProperties(req,taskCompleteStatisticsReq);
List<SpdmTaskVo> taskList = mapper.getTaskListByTag(taskCompleteStatisticsReq);
if (CollectionUtils.isEmpty(taskList)) {
log.error("根据参数:{},未查询到任务",req);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
// 查询任务下所有指标
List<String> taskIdList = taskList.stream().map(SpdmTaskVo::getUuid).distinct().toList();
List<PerformanceNodePo> performanceList = nodeMapper.getPerformanceListByNodeIdList(taskIdList);
if (CollectionUtils.isEmpty(performanceList)) {
log.error("根据任务id{},未查询到指标",taskIdList);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
Map<String, SpdmTaskVo> taskMap = taskList.stream().collect(Collectors.groupingBy(
SpdmTaskVo::getUuid,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.get(0)
)
));
String resultTagType = req.getResultTagType();
List<String> nodeIdList = new ArrayList<>();
SpdmTaskVo eachTaskVo;
for (PerformanceNodePo performanceNodePo : performanceList) {
eachTaskVo = taskMap.get(performanceNodePo.getTaskId());
if (ObjectUtils.isEmpty(eachTaskVo)) {
continue;
}
try {
String tagProperty = getTagProperty(eachTaskVo, resultTagType);
if (StringUtils.isNotBlank(tagProperty)) {
nodeIdList.addAll(Arrays.stream(tagProperty.split(",")).toList());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
if (CollectionUtils.isEmpty(nodeIdList)) {
log.error("根据任务:{},未查询到{}标签中的节点id",taskList,resultTagType);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
nodeIdList = nodeIdList.stream().distinct().toList();
List<SpdmNodeVo> nodeList = nodeMapper.getNodeListByIds(nodeIdList);
if (CollectionUtils.isEmpty(nodeList)) {
log.error("根据节点id{},未查询节点",nodeIdList);
JSONObject resultResponse = new JSONObject();
resultResponse.put("allExeStatus", allExeStatus);
resultResponse.put("result", new ArrayList<>());
return SdmResponse.success(resultResponse);
}
Map<String, String> nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName));
List<CommonGetCompleteFromPerformanceVo> commonCompleteStatisticsFromPerformance = new ArrayList<>();
String resultTagId;
String[] resultTagIdArr;
for (PerformanceNodePo performanceNodePo : performanceList) {
eachTaskVo = taskMap.get(performanceNodePo.getTaskId());
try {
resultTagId = getTagProperty(eachTaskVo,resultTagType);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (StringUtils.isBlank(resultTagId)) {
log.error("id{}任务的:{}标签不存在",eachTaskVo.getId(),resultTagType);
continue;
}
resultTagIdArr = resultTagId.split(",");
CommonGetCompleteFromPerformanceVo commonGetCompleteFromPerformanceVo = new CommonGetCompleteFromPerformanceVo();
commonGetCompleteFromPerformanceVo.setTag(resultTagId);
commonGetCompleteFromPerformanceVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
commonGetCompleteFromPerformanceVo.setCompleteStatus(StringUtils.isNotBlank(performanceNodePo.getCompleteStatus()) ?
performanceNodePo.getCompleteStatus() : RunPerformanceStatusEnum.UNCOMPLETED.getCode());
commonCompleteStatisticsFromPerformance.add(commonGetCompleteFromPerformanceVo);
}
// 按tag分组统计指标状态
Map<String, CommonStatisticsVo> performanceStatisticsMap = new HashMap<>();
// 统计每个tag的各种状态指标数量

File diff suppressed because it is too large Load Diff

View File

@@ -61,7 +61,7 @@
#{exeStatus}
</foreach>
)
</if>
</if>
<if test="req.achieveStatusList != null and req.achieveStatusList.size > 0">
and achieve_status in (
<foreach collection='req.achieveStatusList' item='achieveStatus' index='index' separator=','>
@@ -318,5 +318,51 @@
)
</select>
<select id="getTaskListByTag" resultType="com.sdm.project.model.vo.SpdmTaskVo">
select * from simulation_task task
<where>
task.exe_status is not null
<if test="req.tag1 != null and req.tag1 !='' ">
and task.tag1 like CONCAT('%',#{req.tag1},'%')
</if>
<if test="req.tag2 != null and req.tag2 !='' ">
and task.tag2 like CONCAT('%',#{req.tag2},'%')
</if>
<if test="req.tag3 != null and req.tag3 !='' ">
and task.tag3 like CONCAT('%',#{req.tag3},'%')
</if>
<if test="req.tag4 != null and req.tag4 !='' ">
and task.tag4 like CONCAT('%',#{req.tag4},'%')
</if>
<if test="req.tag5 != null and req.tag5 !='' ">
and task.tag5 like CONCAT('%',#{req.tag5},'%')
</if>
<if test="req.tag6 != null and req.tag6 !='' ">
and task.tag6 like CONCAT('%',#{req.tag6},'%')
</if>
<if test="req.tag7 != null and req.tag7 !='' ">
and task.tag7 like CONCAT('%',#{req.tag7},'%')
</if>
<if test="req.tag8 != null and req.tag8 !='' ">
and task.tag8 like CONCAT('%',#{req.tag8},'%')
</if>
<if test="req.tag9 != null and req.tag9 !='' ">
and task.tag9 like CONCAT('%',#{req.tag9},'%')
</if>
<if test="req.tag10 != null and req.tag10 !='' ">
and task.tag10 like CONCAT('%',#{req.tag10},'%')
</if>
</where>
</select>
<select id="getTaskListByName" resultType="com.sdm.project.model.vo.SpdmTaskVo">
select * from simulation_task where task_name in
(
<foreach collection='taskNameList' item='taskName' index='index' separator=','>
#{taskName}
</foreach>
)
</select>
</mapper>