From fdbc1bf698d0b7918938deab18d438a6279e6f74 Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Tue, 2 Dec 2025 17:23:03 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BB=BB=E5=8A=A1=E6=96=B0=E5=A2=9E3?= =?UTF-8?q?D=E5=9B=BE=E7=A4=BA=E7=9A=84=E6=96=87=E4=BB=B6id=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=202=E3=80=81=E9=A1=B9=E7=9B=AE=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=BD=93=E5=89=8D=E9=98=B6?= =?UTF-8?q?=E6=AE=B5=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdm/project/model/po/ProjectNodePo.java | 2 + .../com/sdm/project/model/po/TaskNodePo.java | 2 + .../project/model/vo/SpdmNodeDetailVo.java | 5 ++ .../project/service/impl/NodeServiceImpl.java | 63 +++++++++++++++++++ 4 files changed, 72 insertions(+) diff --git a/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java b/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java index ec3fcd16..c2a6db7e 100644 --- a/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java +++ b/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java @@ -157,4 +157,6 @@ public class ProjectNodePo extends NodeAllBase { private String tag9; @JsonProperty(value = "tag10") private String tag10; + + private Long imageFileId; } diff --git a/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java b/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java index a6425ae8..8e6b367c 100644 --- a/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java +++ b/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java @@ -181,4 +181,6 @@ public class TaskNodePo extends NodeAllBase { @JsonProperty(value = "tag10") private String tag10; + private Long imageFileId; + } diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmNodeDetailVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmNodeDetailVo.java index 1135bb4e..12eb7447 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmNodeDetailVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmNodeDetailVo.java @@ -94,4 +94,9 @@ public class SpdmNodeDetailVo extends BaseEntity { private String exeStatus; + /** + * 当前阶段 + */ + private String currentPhase; + } diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index 6ce6d81f..befa47da 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -68,6 +68,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import java.lang.reflect.Field; import java.sql.Wrapper; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -606,6 +607,68 @@ public class NodeServiceImpl extends ServiceImpl phaseNodeList = this.lambdaQuery().eq(SimulationNode::getParentId, uuid).eq(SimulationNode::getNodeType, NodeTypeEnum.PHASE.getValue()).list(); + if (CollectionUtils.isEmpty(phaseNodeList)) { + return SdmResponse.success(spdmNodeDetailVo); + } + phaseNodeList = phaseNodeList.stream().filter(phaseNode -> StringUtils.isNotBlank(phaseNode.getBeginTime()) && StringUtils.isNotBlank(phaseNode.getEndTime())).toList(); + if (CollectionUtils.isEmpty(phaseNodeList)) { + return SdmResponse.success(spdmNodeDetailVo); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + phaseNodeList = phaseNodeList.stream().sorted(Comparator.comparingLong(phaseNode -> { + try { + return sdf.parse(phaseNode.getBeginTime()).getTime(); + } catch (ParseException e) { + throw new RuntimeException(e); + } + })).toList(); + Long currentTime = System.currentTimeMillis(); + SimulationNode currentPhaseNode = null; + for (SimulationNode simulationNode : phaseNodeList) { + try { + if (currentTime >= sdf.parse(simulationNode.getBeginTime()).getTime() && currentTime <= sdf.parse(simulationNode.getEndTime()).getTime()) { + currentPhaseNode = simulationNode; + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + if (ObjectUtils.isNotEmpty(currentPhaseNode)) { + spdmNodeDetailVo.setCurrentPhase(currentPhaseNode.getNodeName()); + return SdmResponse.success(spdmNodeDetailVo); + } + + // 开始时间比当前时间小的里面的最大的一个 + List bigPhaseNodeList = phaseNodeList.stream().filter(phaseNode -> { + try { + return currentTime <= sdf.parse(phaseNode.getBeginTime()).getTime(); + } catch (ParseException e) { + throw new RuntimeException(e); + } + }).toList(); + if (CollectionUtils.isEmpty(bigPhaseNodeList)) { + SimulationNode simulationNode = phaseNodeList.stream().max(Comparator.comparingLong(phaseNode -> { + try { + return sdf.parse(phaseNode.getBeginTime()).getTime(); + } catch (ParseException e) { + throw new RuntimeException(e); + } + })).get(); + spdmNodeDetailVo.setCurrentPhase(simulationNode.getNodeName()); + return SdmResponse.success(spdmNodeDetailVo); + } + SimulationNode simulationNode = phaseNodeList.stream().min(Comparator.comparingLong(phaseNode -> { + try { + return sdf.parse(phaseNode.getBeginTime()).getTime(); + } catch (ParseException e) { + throw new RuntimeException(e); + } + })).get(); + spdmNodeDetailVo.setCurrentPhase(simulationNode.getNodeName()); return SdmResponse.success(spdmNodeDetailVo); }