1、修改宜安科技同步任务接口

2、二维导出功能修复
This commit is contained in:
2025-12-09 09:46:04 +08:00
parent 063e031ed5
commit dde1298b4e
10 changed files with 216 additions and 13 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

@@ -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);
// 删除当前节点及子节点下的指标相关信息

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;
@@ -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的各种状态指标数量

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,englishName) values
,creator,create_time,department,sectionName,groupName,bCapacity,englishName,tag1) 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.englishName})
#{it.creator},#{it.createTime},#{it.department},#{it.section},#{it.group},#{it.bCapacity},#{it.englishName},#{it.tag1})
</foreach>
</insert>

View File

@@ -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>