1、仿真任务达成统计
This commit is contained in:
@@ -152,21 +152,21 @@ public class SimulationTaskController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 按工位、学科的仿真任务达成统计
|
||||
* 按工位、学科的仿真任务完成统计
|
||||
*/
|
||||
@SysLog("按工位、学科的仿真任务达成统计")
|
||||
@SysLog("按工位、学科的仿真任务完成统计")
|
||||
@PostMapping("/getTaskCompleteStatistics")
|
||||
@Operation(summary = "按工位、学科的仿真任务达成统计", description = "按工位、学科的仿真任务达成统计")
|
||||
@Operation(summary = "按工位、学科的仿真任务完成统计", description = "按工位、学科的仿真任务完成统计")
|
||||
public SdmResponse getTaskCompleteStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
|
||||
return taskService.getTaskCompleteStatistics(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按工位、学科的仿真指标达成统计
|
||||
* 按工位、学科的仿真指标完成统计
|
||||
*/
|
||||
@SysLog("按工位、学科的仿真指标达成统计")
|
||||
@SysLog("按工位、学科的仿真指标完成统计")
|
||||
@PostMapping("/getPerformanceCompleteStatistics")
|
||||
@Operation(summary = "按工位、学科的仿真指标达成统计", description = "按工位、学科的仿真指标达成统计")
|
||||
@Operation(summary = "按工位、学科的仿真指标完成统计", description = "按工位、学科的仿真指标完成统计")
|
||||
public SdmResponse getPerformanceCompleteStatistics(@RequestBody @Validated PerformanceCompleteStatisticsReq req) {
|
||||
return taskService.getPerformanceCompleteStatistics(req);
|
||||
}
|
||||
@@ -204,4 +204,14 @@ public class SimulationTaskController {
|
||||
return taskService.getTaskListByDemandId(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 仿真任务达成统计
|
||||
*/
|
||||
@SysLog("仿真任务达成统计")
|
||||
@PostMapping("/getTaskAchieveStatistics")
|
||||
@Operation(summary = "仿真任务达成统计", description = "仿真任务达成统计")
|
||||
public SdmResponse getTaskAchieveStatistics(@RequestBody @Validated TaskCompleteStatisticsReq req) {
|
||||
return taskService.getTaskAchieveStatistics(req);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.sdm.project.model.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CommonGetAchieveFromTaskVo {
|
||||
private String tag;
|
||||
private String nodeName;
|
||||
private String achieveStatus;
|
||||
}
|
||||
@@ -71,4 +71,6 @@ public interface ITaskService {
|
||||
|
||||
SdmResponse newExportTaskTree(TaskTreeExportExcelFormat taskTreeExportExcelFormat, HttpServletResponse httpservletResponse);
|
||||
|
||||
SdmResponse getTaskAchieveStatistics(TaskCompleteStatisticsReq req);
|
||||
|
||||
}
|
||||
|
||||
@@ -2248,4 +2248,90 @@ public class TaskServiceImpl implements ITaskService {
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse getTaskAchieveStatistics(TaskCompleteStatisticsReq req) {
|
||||
// 所有任务达成状态
|
||||
Set<String> allAchieveStatus = new HashSet<>();
|
||||
List<SpdmTaskVo> taskList = mapper.getTaskListByTag(req);
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
log.error("根据参数:{},未查询到任务", req);
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allAchieveStatus", allAchieveStatus);
|
||||
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("allAchieveStatus", allAchieveStatus);
|
||||
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("allAchieveStatus", allAchieveStatus);
|
||||
resultResponse.put("result", new ArrayList<>());
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
Map<String, String> nodeMap = nodeList.stream().collect(Collectors.toMap(SpdmNodeVo::getUuid, SpdmNodeVo::getNodeName));
|
||||
List<CommonGetAchieveFromTaskVo> commonAchieveStatisticsFromTask = 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(",");
|
||||
CommonGetAchieveFromTaskVo commonGetAchieveFromTaskVo = new CommonGetAchieveFromTaskVo();
|
||||
commonGetAchieveFromTaskVo.setTag(resultTagId);
|
||||
commonGetAchieveFromTaskVo.setNodeName(nodeMap.get(resultTagIdArr[resultTagIdArr.length - 1]));
|
||||
commonGetAchieveFromTaskVo.setAchieveStatus(taskVo.getAchieveStatus());
|
||||
commonAchieveStatisticsFromTask.add(commonGetAchieveFromTaskVo);
|
||||
}
|
||||
// 按tag分组统计任务状态
|
||||
Map<String, CommonStatisticsVo> taskStatisticsMap = new HashMap<>();
|
||||
// 统计每个tag的各种状态任务数量
|
||||
for (CommonGetAchieveFromTaskVo item : commonAchieveStatisticsFromTask) {
|
||||
String name = item.getNodeName();
|
||||
CommonStatisticsVo stat = taskStatisticsMap.getOrDefault(name, new CommonStatisticsVo());
|
||||
stat.setName(name);
|
||||
Map<String, Integer> statusCount = stat.getStatusCount();
|
||||
if (statusCount == null) {
|
||||
statusCount = new HashMap<>();
|
||||
stat.setStatusCount(statusCount);
|
||||
}
|
||||
String achieveStatus = item.getAchieveStatus();
|
||||
allAchieveStatus.add(achieveStatus);
|
||||
statusCount.put(achieveStatus, statusCount.getOrDefault(achieveStatus, 0) + 1);
|
||||
taskStatisticsMap.put(name, stat);
|
||||
}
|
||||
// 转换为列表返回
|
||||
List<CommonStatisticsVo> taskResult = new ArrayList<>(taskStatisticsMap.values());
|
||||
JSONObject resultResponse = new JSONObject();
|
||||
resultResponse.put("allAchieveStatus", allAchieveStatus);
|
||||
resultResponse.put("result", taskResult);
|
||||
return SdmResponse.success(resultResponse);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -343,52 +343,6 @@
|
||||
)
|
||||
</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>
|
||||
|
||||
<select id="getTaskListByDemandId" resultType="com.sdm.project.model.vo.SpdmTaskVo">
|
||||
select * from simulation_task where demand_id = #{demandId}
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user