|
@@ -159,12 +159,16 @@ class WaterSupplyAlarmDashboardServiceTest {
|
|
|
assertEquals(1, dashboard.getReleasedCount());
|
|
assertEquals(1, dashboard.getReleasedCount());
|
|
|
assertEquals(1, dashboard.getAlarmingDeviceCount());
|
|
assertEquals(1, dashboard.getAlarmingDeviceCount());
|
|
|
|
|
|
|
|
- // 趋势覆盖 7 天,含无报警日
|
|
|
|
|
|
|
+ // 趋势:按天覆盖 7 天(含无报警日),且只按四个报警等级分别给序列,
|
|
|
|
|
+ // 不再输出“报警数 / 高等级报警”两个汇总口径(#45 验收反馈)
|
|
|
assertEquals(7, dashboard.getTrend().size());
|
|
assertEquals(7, dashboard.getTrend().size());
|
|
|
- assertEquals(2, countOn(dashboard, LocalDate.now().toString()));
|
|
|
|
|
- assertEquals(1, countOn(dashboard, LocalDate.now().minusDays(1).toString()));
|
|
|
|
|
- // 今日两条报警分别为 1 级与 2 级,均属于“高等级(1-2 级)”口径
|
|
|
|
|
- assertEquals(2, highLevelCountOn(dashboard, LocalDate.now().toString()));
|
|
|
|
|
|
|
+ String todayLabel = LocalDate.now().toString();
|
|
|
|
|
+ String yesterdayLabel = LocalDate.now().minusDays(1).toString();
|
|
|
|
|
+ assertEquals(1, levelCountOn(dashboard, todayLabel, 1));
|
|
|
|
|
+ assertEquals(1, levelCountOn(dashboard, todayLabel, 2));
|
|
|
|
|
+ assertEquals(0, levelCountOn(dashboard, todayLabel, 3));
|
|
|
|
|
+ assertEquals(0, levelCountOn(dashboard, todayLabel, 4));
|
|
|
|
|
+ assertEquals(1, levelCountOn(dashboard, yesterdayLabel, 3));
|
|
|
|
|
|
|
|
// 报警分类占比:压力预警 2 条,流量预警 1 条
|
|
// 报警分类占比:压力预警 2 条,流量预警 1 条
|
|
|
assertEquals(2, ratioOf(dashboard.getWarningTypeRatio(), "压力预警"));
|
|
assertEquals(2, ratioOf(dashboard.getWarningTypeRatio(), "压力预警"));
|
|
@@ -190,14 +194,23 @@ class WaterSupplyAlarmDashboardServiceTest {
|
|
|
return status;
|
|
return status;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static long countOn(AlarmDashboardOutDTO dashboard, String date) {
|
|
|
|
|
- return dashboard.getTrend().stream().filter(item -> date.equals(item.getDate()))
|
|
|
|
|
- .mapToLong(AlarmDashboardOutDTO.TrendItem::getCount).sum();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private static long highLevelCountOn(AlarmDashboardOutDTO dashboard, String date) {
|
|
|
|
|
- return dashboard.getTrend().stream().filter(item -> date.equals(item.getDate()))
|
|
|
|
|
- .mapToLong(AlarmDashboardOutDTO.TrendItem::getHighLevelCount).sum();
|
|
|
|
|
|
|
+ /** 读取指定日期、指定报警等级的趋势计数 */
|
|
|
|
|
+ private static long levelCountOn(AlarmDashboardOutDTO dashboard, String date, int level) {
|
|
|
|
|
+ return dashboard.getTrend().stream()
|
|
|
|
|
+ .filter(item -> date.equals(item.getDate()))
|
|
|
|
|
+ .mapToLong(item -> {
|
|
|
|
|
+ switch (level) {
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ return item.getLevel1Count();
|
|
|
|
|
+ case 2:
|
|
|
|
|
+ return item.getLevel2Count();
|
|
|
|
|
+ case 3:
|
|
|
|
|
+ return item.getLevel3Count();
|
|
|
|
|
+ default:
|
|
|
|
|
+ return item.getLevel4Count();
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .sum();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private static long ratioOf(List<AlarmDashboardOutDTO.RatioItem> items, String name) {
|
|
private static long ratioOf(List<AlarmDashboardOutDTO.RatioItem> items, String name) {
|