From 10940b706f4311d7e428419cc206a6f7d68daf0e Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 01 九月 2026 13:31:52 +0800
Subject: [PATCH] 修正跨循环工步执行状态
---
ruoyi-device/src/main/java/com/ruoyi/device/bts/BtsDevelopmentSimulator.java | 9 ++++-----
ruoyi-device/src/test/java/com/ruoyi/device/bts/BtsDevelopmentSimulatorRecordStepCycleTest.java | 14 ++++++++++++++
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/ruoyi-device/src/main/java/com/ruoyi/device/bts/BtsDevelopmentSimulator.java b/ruoyi-device/src/main/java/com/ruoyi/device/bts/BtsDevelopmentSimulator.java
index 87641ff..3ffb9d8 100644
--- a/ruoyi-device/src/main/java/com/ruoyi/device/bts/BtsDevelopmentSimulator.java
+++ b/ruoyi-device/src/main/java/com/ruoyi/device/bts/BtsDevelopmentSimulator.java
@@ -444,11 +444,10 @@
List<BtsExcelFixture.FixtureRecord> sameCycle = BtsExcelFixture.records().stream()
.filter(item -> item.cycleNo() == first.cycleNo() && item.stepNo() == first.stepNo()).toList();
BtsExcelFixture.FixtureRecord last = sameCycle.get(sameCycle.size() - 1);
- String status = playback.naturallyFinished() || playback.cycleNo() > first.cycleNo()
- || (playback.cycleNo() == first.cycleNo() && playback.stepNo() > first.stepNo())
- ? "已完成"
- : playback.cycleNo() == first.cycleNo() && playback.stepNo() == first.stepNo()
- ? "进行中" : "待执行";
+ // step 号在每个循环内重复,跨循环时必须按当前循环的工步位置判断,不能把上一循环的同号工步当成当前状态。
+ String status = playback.naturallyFinished() ? "已完成"
+ : playback.stepNo() > first.stepNo() ? "已完成"
+ : playback.stepNo() == first.stepNo() ? "进行中" : "待执行";
rows.add(new BtsTestPlanRow("STEP", first.stepNo(), first.stepName(),
Math.max(0d, last.offsetSeconds() - first.offsetSeconds()), first.voltageV(), status,
null, null));
diff --git a/ruoyi-device/src/test/java/com/ruoyi/device/bts/BtsDevelopmentSimulatorRecordStepCycleTest.java b/ruoyi-device/src/test/java/com/ruoyi/device/bts/BtsDevelopmentSimulatorRecordStepCycleTest.java
index 0d3c06b..dcc3877 100644
--- a/ruoyi-device/src/test/java/com/ruoyi/device/bts/BtsDevelopmentSimulatorRecordStepCycleTest.java
+++ b/ruoyi-device/src/test/java/com/ruoyi/device/bts/BtsDevelopmentSimulatorRecordStepCycleTest.java
@@ -53,6 +53,20 @@
}
@Test
+ void testSnapshotKeepsCurrentStepVisibleWhenPlaybackEntersNextCycle() throws Exception
+ {
+ InMemoryBtsSimulatorStateStore store = new InMemoryBtsSimulatorStateStore();
+ try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0, store))
+ {
+ simulator.updateChannel(1, 1, true, DeviceWorkStatus.WORKING);
+ simulator.nextBtsCycle(1, 1);
+ var snapshot = simulator.btsTest(1, 1);
+ assertTrue(snapshot.rows().stream().anyMatch(row -> "STEP".equals(row.rowType()) && "进行中".equals(row.executionStatus())));
+ assertTrue(snapshot.rows().stream().anyMatch(row -> "STEP".equals(row.rowType()) && "待执行".equals(row.executionStatus())));
+ }
+ }
+
+ @Test
void playbackSpeedPauseResumeAndRestartAreIndependentOfDeviceStatus() throws Exception
{
Instant start = Instant.parse("2026-08-31T00:00:00Z");
--
Gitblit v1.7.1