ke
2024-07-19 08a962d2925baa255207fdf979e6fee794f1773b
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java
@@ -49,9 +49,9 @@
    */
   @Override
   public Object selectAlarmRecordPage(IPage<AlarmRecordVO> page, AlarmRecordVO alarmRecord) {
      if (!Strings.isBlank(alarmRecord.getAdCode())){
         alarmRecord.setAdCode(alarmRecord.getAdCode().replaceAll("0+$", ""));
      }
//      if (!Strings.isBlank(alarmRecord.getAdCode())){
//         alarmRecord.setAdCode(alarmRecord.getAdCode().replaceAll("0+$", ""));
//      }
      if (null != alarmRecord.getIsExport()){
         return baseMapper.selectAlarmRecordPage(null,alarmRecord);
      }
@@ -182,4 +182,96 @@
      List<StatisticAlarmRecord> list = baseMapper.statisticsPie(alarmRecordVO);
      return list;
   }
   /**
    * 告警统计按告警分类-等级统计
    * @param alarmRecord
    * @return
    */
   @Override
   public Object statisticAlaByTypeAndLev(AlarmRecordVO alarmRecord) {
      Map<String, Object> map = new HashMap<>(4);
      List<StatisticAlarmRecord> recordList = baseMapper.statisticAlaByTypeAndLev(alarmRecord);
      if (recordList.size()>0){
         map.put("水情监测",setAlaStatisticListByData(recordList,"水情监测"));
         map.put("雨情监测",setAlaStatisticListByData(recordList,"雨情监测"));
         map.put("渗压监测",setAlaStatisticListByData(recordList,"渗压监测"));
         map.put("渗流监测",setAlaStatisticListByData(recordList,"渗流监测"));
         map.put("变形监测",setAlaStatisticListByData(recordList,"变形监测"));
      }else {
         map.put("水情监测",setAlaStatisticList());
         map.put("雨情监测",setAlaStatisticList());
         map.put("渗压监测",setAlaStatisticList());
         map.put("渗流监测",setAlaStatisticList());
         map.put("变形监测",setAlaStatisticList());
      }
      return map;
   }
   /**
    * 设置组装预警统计数据-带参数
    * @return
    */
   private List<StatisticAlarmRecord> setAlaStatisticListByData(List<StatisticAlarmRecord> recordList, String typeName) {
      List<StatisticAlarmRecord> list = new ArrayList<>();
      List<String> levelList = new ArrayList<>(){{
         add("蓝色预警");
         add("黄色预警");
         add("橙色预警");
         add("红色预警");
      }};
      List<String> alarmLevelList = recordList.stream()
         .filter(a -> a.getRuleName().equals(typeName))
         .map(StatisticAlarmRecord::getAlarmLevel)
         .distinct()
         .collect(Collectors.toList());
      // 先取差集
      List<String> diffList = levelList.stream().filter(item -> !alarmLevelList.contains(item)).collect(Collectors.toList());
      for (StatisticAlarmRecord alarmRecord : recordList) {
         if (alarmRecord.getRuleName().equals(typeName)){
            StatisticAlarmRecord statisticAlarmRecord = new StatisticAlarmRecord();
            statisticAlarmRecord.setAlarmLevel(alarmRecord.getAlarmLevel());
            statisticAlarmRecord.setNum(alarmRecord.getNum());
            list.add(statisticAlarmRecord);
         }
      }
      if (diffList.size()>0){
         for (String level : diffList) {
            StatisticAlarmRecord statisticAlarmRecord = new StatisticAlarmRecord();
            statisticAlarmRecord.setAlarmLevel(level);
            statisticAlarmRecord.setNum(0);
            list.add(statisticAlarmRecord);
         }
      }
      return list;
   }
   /**
    * 设置组装预警统计数据
    * @return
    */
   private List<StatisticAlarmRecord> setAlaStatisticList() {
      List<StatisticAlarmRecord> list = new ArrayList<>();
      StatisticAlarmRecord statisticAlarmRecord1 = new StatisticAlarmRecord();
      statisticAlarmRecord1.setAlarmLevel("蓝色预警");
      statisticAlarmRecord1.setNum(0);
      StatisticAlarmRecord statisticAlarmRecord2 = new StatisticAlarmRecord();
      statisticAlarmRecord2.setAlarmLevel("黄色预警");
      statisticAlarmRecord2.setNum(0);
      StatisticAlarmRecord statisticAlarmRecord3 = new StatisticAlarmRecord();
      statisticAlarmRecord3.setAlarmLevel("橙色预警");
      statisticAlarmRecord3.setNum(0);
      StatisticAlarmRecord statisticAlarmRecord4 = new StatisticAlarmRecord();
      statisticAlarmRecord4.setAlarmLevel("红色预警");
      statisticAlarmRecord4.setNum(0);
      list.add(statisticAlarmRecord1);
      list.add(statisticAlarmRecord2);
      list.add(statisticAlarmRecord3);
      list.add(statisticAlarmRecord4);
      return list;
   }
}