| | |
| | | package cn.gistack.alerts.alarmRule.service.impl; |
| | | |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRecordMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord; |
| | | import cn.gistack.alerts.sms.vo.Temp; |
| | | import cn.gistack.sm.intelligentCall.entity.Scene; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 告警记录服务实现层 |
| | |
| | | */ |
| | | @Service |
| | | public class AlarmRecordServiceImpl extends BaseServiceImpl<AlarmRecordMapper, AlarmRecord> implements AlarmRecordService { |
| | | |
| | | @Autowired |
| | | private AlarmRuleService alarmRuleService; |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | |
| | | } |
| | | return page.setRecords(baseMapper.selectAlarmRecordPage(page,alarmRecord)); |
| | | } |
| | | |
| | | /** |
| | | * 按行政区统计告警-按三大类 |
| | | * @param alarmRecord |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object statisticAlarmRecordByType(AlarmRecordVO alarmRecord) { |
| | | // 获取当前用户的行政区划 |
| | | String adCode = "420000000000"; |
| | | // 查询统计数据 |
| | | List<StatisticAlarmRecord> list = baseMapper.statisticAlarmRecordByType(alarmRecord); |
| | | // 返回数据 |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 按行政区统计告警 |
| | | * @param alarmRecord |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object statisticAlarmRecord(AlarmRecordVO alarmRecord) { |
| | | // 获取当前用户的行政区划 |
| | | String adCode = "420000000000"; |
| | | // 查询所有的市级行政区 |
| | | List<String> adNameList = baseMapper.getAdNameList(adCode); |
| | | // 查询符合条件的告警类型 |
| | | List<AlarmRule> alarmRuleList = baseMapper.listAlarmRule(alarmRecord); |
| | | // 查询统计数据 |
| | | List<StatisticAlarmRecord> list = baseMapper.statisticAlarmRecord(alarmRecord); |
| | | // 按行政区分组 |
| | | Map<String, List<StatisticAlarmRecord>> listMap = list.stream().filter(item->null!=item.getAdName()).collect(Collectors.groupingBy(StatisticAlarmRecord::getAdName)); |
| | | // 补全行政区 |
| | | for (String adName : adNameList) { |
| | | if (!listMap.containsKey(adName)){ |
| | | List<StatisticAlarmRecord> arrayList = new ArrayList<>(); |
| | | listMap.put(adName,arrayList); |
| | | } |
| | | } |
| | | List<String> ruleNameList = alarmRuleList.stream().map(alarmRule -> alarmRule.getRuleName()).collect(Collectors.toList()); |
| | | // 补全告警类型 |
| | | listMap.forEach((adName,statisticAlarmRecords)->{ |
| | | // 取出已有的告警类型 |
| | | List<String> newRuleNameList = statisticAlarmRecords.stream().map(alarmRule -> alarmRule.getRuleName()).collect(Collectors.toList()); |
| | | // 取差集 |
| | | List<String> resultAlarmRuleList = ruleNameList.stream().filter(item -> !newRuleNameList.contains(item)).collect(Collectors.toList()); |
| | | for (String ruleName : resultAlarmRuleList) { |
| | | StatisticAlarmRecord newStatisticAlarmRecord = new StatisticAlarmRecord(); |
| | | newStatisticAlarmRecord.setRuleName(ruleName); |
| | | newStatisticAlarmRecord.setNum(0); |
| | | newStatisticAlarmRecord.setAdName(adName); |
| | | statisticAlarmRecords.add(newStatisticAlarmRecord); |
| | | } |
| | | }); |
| | | List<Object> objects = new ArrayList<>(); |
| | | // 重新录入排序 |
| | | for (String adName : adNameList) { |
| | | if (listMap.containsKey(adName)){ |
| | | objects.add(listMap.get(adName)); |
| | | } |
| | | } |
| | | // 返回数据 |
| | | return objects; |
| | | } |
| | | } |