From b707eeb64691f2b06e7eb7057c281b5403c2d823 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 11 Oct 2023 15:23:16 +0800
Subject: [PATCH] 新增预计统计接口,可以按类型时间等筛选

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java
index b5ab126..66c8748 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/service/impl/AlarmRecordServiceImpl.java
@@ -1,12 +1,26 @@
 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;
 
 /**
  * 告警记录服务实现层
@@ -15,6 +29,9 @@
  */
 @Service
 public class AlarmRecordServiceImpl extends BaseServiceImpl<AlarmRecordMapper, AlarmRecord> implements AlarmRecordService {
+
+	@Autowired
+	private AlarmRuleService alarmRuleService;
 
 	/**
 	 * 自定义分页列表查询
@@ -29,4 +46,54 @@
 		}
 		return page.setRecords(baseMapper.selectAlarmRecordPage(page,alarmRecord));
 	}
+
+	/**
+	 * 按行政区统计告警
+	 * @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().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;
+	}
 }

--
Gitblit v1.9.3