|
@@ -18,15 +18,21 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
|
|
|
+ @Value("${syz_kg_relieve_show:true}")
|
|
|
+ private boolean syz_kg_relieve_show;
|
|
|
+
|
|
|
@Autowired
|
|
|
private AlarmSnapMapper alarmSnapMapper;
|
|
|
|
|
@@ -79,7 +85,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
Integer isopened,
|
|
|
String keyword,
|
|
|
String startTime,
|
|
|
- String endTime) throws Exception{
|
|
|
+ String endTime) throws Exception {
|
|
|
if (keyword != null && keyword.trim() != "")
|
|
|
keyword = "%" + keyword.trim() + "%";
|
|
|
Date dtStart = null;
|
|
@@ -94,7 +100,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public void saveAlarmSnap(AlarmSnap alarmSnap) throws Exception{
|
|
|
+ public void saveAlarmSnap(AlarmSnap alarmSnap) throws Exception {
|
|
|
if (alarmSnap.getId() == null || alarmSnap.getId() <= 0) {
|
|
|
alarmSnap.setId(SnowflakeGenerator.generateId());
|
|
|
alarmSnapMapper.insert(alarmSnap);
|
|
@@ -123,7 +129,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public int saveAlarmSnaps(List<AlarmSnap> alarmSnaps) throws Exception{
|
|
|
+ public int saveAlarmSnaps(List<AlarmSnap> alarmSnaps) throws Exception {
|
|
|
if (alarmSnaps == null || alarmSnaps.size() == 0)
|
|
|
return 0;
|
|
|
List<AlarmSnap> insertSnaps = new ArrayList<>();
|
|
@@ -170,7 +176,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
if (insertSnaps.size() > 0)
|
|
|
alarmSnapMapper.batchInsert(insertSnaps);
|
|
|
|
|
|
- if (updateSnaps.size() > 0){
|
|
|
+ if (updateSnaps.size() > 0) {
|
|
|
alarmSnapMapper.batchUpdate(updateSnaps);
|
|
|
|
|
|
}
|
|
@@ -220,7 +226,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (insertFaultSnaps.size() > 0){
|
|
|
+ if (insertFaultSnaps.size() > 0) {
|
|
|
//insertFaultSnaps = checkGroupSnap(insertFaultSnaps);
|
|
|
for (Iterator it = insertFaultSnaps.iterator(); it.hasNext(); ) {
|
|
|
FaultSnap snap = (FaultSnap) it.next();
|
|
@@ -231,7 +237,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
}
|
|
|
faultSnapMapper.batchInsert(insertFaultSnaps);
|
|
|
for (FaultSnap snap : insertFaultSnaps) {
|
|
|
- FaultHistory fh = createFaultHistory(snap);
|
|
|
+ FaultHistory fh = createFaultHistory(snap);
|
|
|
|
|
|
//region 如果报警未升压站类报警,则根据alarmSnap 中的dataInfo(测点值0,或1)
|
|
|
if (snap.getCategory1().contains("SYZ")) {
|
|
@@ -255,11 +261,11 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
}
|
|
|
|
|
|
|
|
|
- if (updateFaultSnaps.size() > 0){
|
|
|
+ if (updateFaultSnaps.size() > 0) {
|
|
|
//updateFaultSnaps = checkGroupSnap(updateFaultSnaps);
|
|
|
faultSnapMapper.batchUpdate(updateFaultSnaps);
|
|
|
for (FaultSnap snap : updateFaultSnaps) {
|
|
|
- FaultHistory fh = createFaultHistory(snap);
|
|
|
+ FaultHistory fh = createFaultHistory(snap);
|
|
|
//region 如果报警未升压站类报警,则根据alarmSnap 中的dataInfo(测点值0,或1)
|
|
|
if (snap.getCategory1().contains("SYZ")) {
|
|
|
if (snap.getAlertText().contains("地刀") || snap.getAlertText().contains("刀闸") || snap.getAlertText().contains("分位") || snap.getAlertText().contains("合位") ||
|
|
@@ -362,7 +368,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void testSaveSnap() throws Exception{
|
|
|
+ private void testSaveSnap() throws Exception {
|
|
|
List<AlarmSnap> lst = new ArrayList<>();
|
|
|
for (int i = 1; i < 1011; i++) {
|
|
|
AlarmSnap snap = alarmSnapMapper.selectById(i);
|
|
@@ -398,12 +404,65 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
|
|
|
if (num > 2000)
|
|
|
num = 2000;
|
|
|
|
|
|
- return alarmSnapMapper.getTopNumAlarm(category1, num);
|
|
|
+ List<AlarmSnap> topNumAlarm = alarmSnapMapper.getTopNumAlarm(category1, num);
|
|
|
+
|
|
|
+ if (!syz_kg_relieve_show) {
|
|
|
+ ///region 数据处理 场景描述:对于河北升压站中开关类报警,业主要求首页只展示合位触发,开位触发等流水,不展示合位解除,开位解除等流水
|
|
|
+ if (category1.equals("SYZ")) {
|
|
|
+ //如果查询内容为升压站,筛选出报警内容包含字符串"开关",且包含字符串"合位"或"开位" (即筛选出开关类互斥点报警快照),且已经解除了的报警
|
|
|
+ List<AlarmSnap> collect = topNumAlarm.stream().filter(s -> s.getAlertText().contains("开关") && (s.getAlertText().contains("开位") || s.getAlertText().contains("合位") || s.getAlertText().contains("分位")) && s.getIsOpened() == 0).collect(Collectors.toList());
|
|
|
+ if (collect.size() > 0) {
|
|
|
+ List<AlarmHistory> list = new ArrayList<>();
|
|
|
+
|
|
|
+ //以当前时间向前推14天
|
|
|
+ Date dtEnd = new Date();
|
|
|
+ Date dtStart = DateUtil.addDays(dtEnd, -14);
|
|
|
+ List<String> yearMonthList = tableNameService.getYearAndMonthList(dtStart, dtEnd);
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < collect.size(); i++) {
|
|
|
+ if (yearMonthList.size() > 1) {
|
|
|
+ {
|
|
|
+ for (int j = 0; j < yearMonthList.size(); j++) {
|
|
|
+ //获取表名 alarmhistory_mhs_02
|
|
|
+ String tbName = "ALARMHISTORY_" + collect.get(i).getStationId().split("_")[0] + "_" + yearMonthList.get(j);
|
|
|
+ AlarmHistory alarmHistory = alarmHisotryMapper.getlatestAlarmHistory(tbName, collect.get(i).getId(), "3", dtStart, dtEnd);
|
|
|
+ //如果从当前月已经查到数据,则结束循环查询
|
|
|
+ if (alarmHistory != null) {
|
|
|
+ list.add(alarmHistory);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ String tbName = "ALARMHISTORY_" + collect.get(i).getStationId().split("_")[0] + "_" + yearMonthList.get(0);
|
|
|
+ AlarmHistory alarmHistory = alarmHisotryMapper.getlatestAlarmHistory(tbName, collect.get(i).getId(), "3", dtStart, dtEnd);
|
|
|
+ if (alarmHistory != null) {
|
|
|
+ list.add(alarmHistory);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (AlarmHistory history :
|
|
|
+ list) {
|
|
|
+ Optional<AlarmSnap> first = topNumAlarm.stream().filter(s -> s.getId().equals(history.getSnapId())).findFirst();
|
|
|
+ if (first.isPresent()) {
|
|
|
+ first.get().setLastUpdateTime(history.getAlertTime());
|
|
|
+ first.get().setIsOpened(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ///endregion
|
|
|
+ }
|
|
|
+
|
|
|
+ return topNumAlarm;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- public List<AlarmSnap> getRecentAlarm(String category1,
|
|
|
- Date lastUpdateTime) {
|
|
|
- return alarmSnapMapper.getRecentAlarm(category1, lastUpdateTime);
|
|
|
+ public List<AlarmSnap> getRecentAlarm(String category1,
|
|
|
+ Date lastUpdateTime) {
|
|
|
+ return alarmSnapMapper.getRecentAlarm(category1, lastUpdateTime);
|
|
|
}
|
|
|
|
|
|
}
|