|
@@ -29,6 +29,7 @@ import java.util.Collections;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.mock;
|
|
|
import static org.mockito.Mockito.when;
|
|
import static org.mockito.Mockito.when;
|
|
@@ -156,4 +157,47 @@ class WaterSupplyAlarmRealtimeContractTest {
|
|
|
assertEquals("待审核", row.getDisplayStatusText());
|
|
assertEquals("待审核", row.getDisplayStatusText());
|
|
|
assertEquals(1, row.getDeviceAlarmStatus());
|
|
assertEquals(1, row.getDeviceAlarmStatus());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void realtimeAlarmHandledButWithLiveOrderAppearsAsTransferred() {
|
|
|
|
|
+ AlarmData transferred = alarm("alarm-3", "CN-GS-202609020001", "压力过低", 1, 1);
|
|
|
|
|
+ // 以数据库语义驱动:若查询硬过滤 alarm_status=0,
|
|
|
|
|
+ // 已处理(alarm_status=1)但仍有未取消工单的报警不会命中,要求不得排除。
|
|
|
|
|
+ when(alarmDataService.list(any(AbstractWrapper.class))).thenAnswer(inv -> {
|
|
|
|
|
+ AbstractWrapper<?, ?, ?> wrapper = inv.getArgument(0);
|
|
|
|
|
+ if (wrapper.getSqlSegment().toLowerCase().contains("alarm_status")) {
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+ return Collections.singletonList(transferred);
|
|
|
|
|
+ });
|
|
|
|
|
+ WorkOrder order = new WorkOrder();
|
|
|
|
|
+ order.setAlarmId("alarm-3");
|
|
|
|
|
+ order.setOrderNo("WO202609151800002345");
|
|
|
|
|
+ order.setOrderStatus(3);
|
|
|
|
|
+ when(workOrderMapper.selectList(any())).thenReturn(Collections.singletonList(order));
|
|
|
|
|
+ when(alarmAuditMapper.selectList(any())).thenReturn(Collections.emptyList());
|
|
|
|
|
+ when(equipmentStatusMapper.selectList(any())).thenReturn(Collections.singletonList(
|
|
|
|
|
+ status("EQ-P-1", 1, 1, 1)));
|
|
|
|
|
+
|
|
|
|
|
+ List<WaterAlarmOutDTO> rows = service.getRealtimeAlarmList();
|
|
|
|
|
+
|
|
|
|
|
+ assertEquals(1, rows.size());
|
|
|
|
|
+ WaterAlarmOutDTO row = rows.get(0);
|
|
|
|
|
+ assertEquals(2, row.getDisplayStatus());
|
|
|
|
|
+ assertEquals("已转工单", row.getDisplayStatusText());
|
|
|
|
|
+ assertEquals("WO202609151800002345", row.getOrderNo());
|
|
|
|
|
+ assertEquals(1, row.getDeviceAlarmStatus());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void releasedAlarmIsFilteredOutOfRealtimeList() {
|
|
|
|
|
+ when(alarmDataService.list(any(AbstractWrapper.class))).thenReturn(
|
|
|
|
|
+ Collections.singletonList(alarm("alarm-4", "CN-GS-202609020001", "流量异常", 1, 3)));
|
|
|
|
|
+ when(workOrderMapper.selectList(any())).thenReturn(Collections.emptyList());
|
|
|
|
|
+ when(alarmAuditMapper.selectList(any())).thenReturn(Collections.emptyList());
|
|
|
|
|
+ when(equipmentStatusMapper.selectList(any())).thenReturn(Collections.singletonList(
|
|
|
|
|
+ status("EQ-P-1", 0, 1, 1)));
|
|
|
|
|
+
|
|
|
|
|
+ assertTrue(service.getRealtimeAlarmList().isEmpty());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|