From 3c12a5b6348c49a0d72018b93585fe61b3188e00 Mon Sep 17 00:00:00 2001 From: 15195 Date: Sat, 31 Jan 2026 11:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9Ahpc=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=80=97=E6=97=B6=EF=BC=8C=E5=90=8E=E7=AB=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=80=BB=E8=BE=91=E5=8A=A8=E6=80=81=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdm/pbs/model/entity/SimulationJob.java | 3 ++ .../pbs/service/impl/PbsServiceDecorator.java | 46 ++++++++++++++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java b/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java index a1d924d8..9d20675e 100644 --- a/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java +++ b/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java @@ -173,4 +173,7 @@ public class SimulationJob implements Serializable { @TableField("dirId") private Long dirId; + @Schema(description = "任务耗时,前端展示字段") + private String costTime; + } \ No newline at end of file diff --git a/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java b/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java index 0a0f4f17..1eabaf53 100644 --- a/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java +++ b/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java @@ -572,8 +572,10 @@ public class PbsServiceDecorator implements IPbsServiceDecorator { queryChain.like(SimulationJob::getRunId, req.getRunId().trim()); } List results = queryChain.list(); - PageInfo page = new PageInfo<>(results); - return PageUtils.getJsonObjectSdmResponse(results, page); + // 时间转换 + convertTotalElapsedTimeToCostTime(results); + PageInfo page = new PageInfo<>(results); + return PageUtils.getJsonObjectSdmResponse(results, page); } public SdmResponse querySoftConfig(String appUuid) { @@ -774,6 +776,46 @@ public class PbsServiceDecorator implements IPbsServiceDecorator { } } + /** + * 将SimulationJob列表中的totalElapsedTime(秒)转换为人性化的耗时格式,并赋值给costTime字段 + * @param jobs 仿真任务列表 + */ + public static void convertTotalElapsedTimeToCostTime(List jobs) { + try { + // 空列表直接返回,避免空指针 + if (CollectionUtils.isEmpty(jobs)) { + return; + } + for (SimulationJob job : jobs) { + // 获取总耗时秒数,先做空值和负数判断 + Long totalSeconds = job.getTotalElapsedTime(); + if (totalSeconds == null || totalSeconds < 0) { + job.setCostTime(""); + continue; + } + // 时间单位换算:1小时=3600秒,1分钟=60秒 + long hours = totalSeconds / 3600; + long remainingSecondsAfterHour = totalSeconds % 3600; + long minutes = remainingSecondsAfterHour / 60; + long seconds = remainingSecondsAfterHour % 60; + // 拼接耗时字符串 + StringBuilder costTime = new StringBuilder(); + if (hours > 0) { + costTime.append(hours).append("小时"); + } + if (minutes > 0 || (hours > 0 && seconds > 0)) { // 有小时且有秒时,分钟即使为0也展示?按需调整 + costTime.append(minutes).append("分钟"); + } + if (seconds > 0 || (hours == 0 && minutes == 0)) { // 只有秒数时必须展示 + costTime.append(seconds).append("秒"); + } + // 赋值给costTime字段 + job.setCostTime(costTime.toString()); + } + } catch (Exception e) { + log.error("convertTotalElapsedTimeToCostTime 耗时数据转换异常:{}", e.getMessage()); + } + } }