|
@@ -62,7 +62,7 @@ public class AlarmCountService extends ServiceImpl<AlarmCountMapper, AlarmCount>
|
|
|
@Value("${homestat.alertIds}")
|
|
|
private String alertIds;
|
|
|
|
|
|
- public List<AlarmSnap> getAllSnap(){
|
|
|
+ public List<Integer> getEdnValue(){
|
|
|
//分解规则id
|
|
|
String[] split = alertIds.split(",");
|
|
|
List<Alertrule2> alertrule2s = new ArrayList<>();
|
|
@@ -72,29 +72,37 @@ public class AlarmCountService extends ServiceImpl<AlarmCountMapper, AlarmCount>
|
|
|
alertrule2s.add(alertrule2);
|
|
|
}
|
|
|
}
|
|
|
- //根据alertrule2的alertvalue得到alarmsnap
|
|
|
- List<AlarmSnap> alarmSnaps = new ArrayList<>();
|
|
|
+ List<Integer> list = new ArrayList<>();
|
|
|
for (Alertrule2 alertrule2 :alertrule2s){
|
|
|
- alarmSnaps.addAll(alarmSnapService.selectByAlertValue(alertrule2.getEdnaValue()));
|
|
|
+ list.add(alertrule2.getEdnaValue());
|
|
|
}
|
|
|
- return alarmSnaps;
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
public Map<String,Double> hiddeDanger(){
|
|
|
try {
|
|
|
+ List<Integer> list = getEdnValue();
|
|
|
Map<String,Double> doubleMap =new HashMap<>();
|
|
|
- List<AlarmSnap> alarmSnaps = getAllSnap();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
String strDate = sdf.format(DateUtil.addDays(new Date(),-1));
|
|
|
Date dtStart = sdf.parse(strDate);
|
|
|
Date dtEnd = DateUtil.addDays(dtStart, 1);
|
|
|
- Map<String,List<AlarmSnap>> map = alarmSnaps.stream().collect(Collectors.groupingBy(AlarmSnap::getCategory3));
|
|
|
- for (Map.Entry<String,List<AlarmSnap>> stringListMap : map.entrySet()){
|
|
|
+ List<AlarmStat> alarmStats = alarmCountMapper.selectAlarmCountBydate(dtStart, dtEnd);
|
|
|
+ List<AlarmStat> alarmStatList = new ArrayList<>();
|
|
|
+ for (AlarmStat alarmStat : alarmStats){
|
|
|
+ for (Integer s : list){
|
|
|
+ if (alarmStat.getAlertvalue() != null &&(alarmStat.getAlertvalue().equals(s))){
|
|
|
+ alarmStatList.add(alarmStat);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //根据部件分组
|
|
|
+ Map<String,List<AlarmStat>> map = alarmStatList.stream().collect(Collectors.groupingBy(AlarmStat::getParts));
|
|
|
+ for (Map.Entry<String,List<AlarmStat>> stringListMap : map.entrySet()){
|
|
|
double time = 0;
|
|
|
- for (AlarmSnap alarmSnap : stringListMap.getValue()){
|
|
|
- AlarmCount alarmCount = alarmCountMapper.selectBySnapId(alarmSnap.getId(), dtStart, dtEnd);
|
|
|
- if (alarmCount != null){
|
|
|
- time = time + alarmCount.getTime();
|
|
|
+ for (AlarmStat alarmStat : stringListMap.getValue()){
|
|
|
+ if (alarmStat != null){
|
|
|
+ time = time + alarmStat.getTimes();
|
|
|
}
|
|
|
}
|
|
|
doubleMap.put(stringListMap.getKey(),time);
|
|
@@ -109,56 +117,51 @@ public class AlarmCountService extends ServiceImpl<AlarmCountMapper, AlarmCount>
|
|
|
|
|
|
public List<AlarmCountStat> selectTotalDuration() {
|
|
|
try {
|
|
|
- List<AlarmSnap> alarmSnaps = getAllSnap();
|
|
|
+ List<Integer> integers = getEdnValue();
|
|
|
+ List<AlarmCountStat> alarmCountStatList = new ArrayList<>();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
String strDate = sdf.format(DateUtil.addDays(new Date(),-1));
|
|
|
Date dtStart = sdf.parse(strDate);
|
|
|
Date dtEnd = DateUtil.addDays(dtStart, 1);
|
|
|
- List<AlarmCountStat> oldList = new ArrayList<>();
|
|
|
- for (AlarmSnap alarmSnap : alarmSnaps){
|
|
|
- AlarmCount alarmCount = selectBySnapId(alarmSnap.getId(), dtStart, dtEnd);
|
|
|
- if (alarmCount != null){
|
|
|
- AlarmCountStat alarmCountStat = new AlarmCountStat();
|
|
|
- alarmCountStat.setWindturbineId(alarmSnap.getWindturbineId());
|
|
|
- alarmCountStat.setWindturbineName(alarmSnap.getWindturbineName());
|
|
|
- alarmCountStat.setCount(alarmCount.getCount());
|
|
|
- alarmCountStat.setTime(alarmCount.getTime());
|
|
|
- oldList.add(alarmCountStat);
|
|
|
+ List<AlarmStat> alarmStats = alarmCountMapper.selectAlarmCountBydate(dtStart, dtEnd);
|
|
|
+ List<AlarmStat> alarmStatList = new ArrayList<>();
|
|
|
+ for (AlarmStat alarmStat : alarmStats){
|
|
|
+ for (Integer s : integers){
|
|
|
+ if (alarmStat.getAlertvalue() != null &&(alarmStat.getAlertvalue().equals(s))){
|
|
|
+ alarmStatList.add(alarmStat);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- //对重复的风机号进行合并
|
|
|
- List<AlarmCountStat> newList = new ArrayList<>();
|
|
|
- for (AlarmCountStat oldAlarmCountStat : oldList) {
|
|
|
- // 遍历新的List,看是否存在,存在则相加,不存在则放入新的List
|
|
|
- boolean flag = false;
|
|
|
- if (newList.size() > 0){
|
|
|
- for (AlarmCountStat newAlarmCountStat : newList) {
|
|
|
- if (newAlarmCountStat.getWindturbineId().equals(oldAlarmCountStat.getWindturbineId())) {
|
|
|
- newAlarmCountStat.setCount(newAlarmCountStat.getCount()+oldAlarmCountStat.getCount());
|
|
|
- newAlarmCountStat.setTime(newAlarmCountStat.getTime()+oldAlarmCountStat.getTime());
|
|
|
- flag = true;
|
|
|
- }
|
|
|
+ //根据风机号分组
|
|
|
+ Map<String,List<AlarmStat>> map = alarmStatList.stream().collect(Collectors.groupingBy(AlarmStat::getWtnum));
|
|
|
+ for (Map.Entry<String,List<AlarmStat>> stringListMap : map.entrySet()){
|
|
|
+ double time = 0;
|
|
|
+ int count = 0 ;
|
|
|
+ String wname = null;
|
|
|
+ for (AlarmStat alarmStat : stringListMap.getValue()){
|
|
|
+ if (alarmStat != null){
|
|
|
+ time = time + alarmStat.getTimes();
|
|
|
+ count = count + alarmStat.getSum();
|
|
|
+ wname = alarmStat.getWname();
|
|
|
}
|
|
|
}
|
|
|
- if (!flag){
|
|
|
- AlarmCountStat alarmCountStat = new AlarmCountStat();
|
|
|
- alarmCountStat.setWindturbineId(oldAlarmCountStat.getWindturbineId());
|
|
|
- alarmCountStat.setWindturbineName(oldAlarmCountStat.getWindturbineName());
|
|
|
- alarmCountStat.setCount(oldAlarmCountStat.getCount());
|
|
|
- alarmCountStat.setTime(oldAlarmCountStat.getTime());
|
|
|
- newList.add(alarmCountStat);
|
|
|
- }
|
|
|
+ AlarmCountStat alarmCountStat = new AlarmCountStat();
|
|
|
+ alarmCountStat.setCount(count);
|
|
|
+ alarmCountStat.setTime(time);
|
|
|
+ alarmCountStat.setWindturbineId(stringListMap.getKey());
|
|
|
+ alarmCountStat.setWindturbineName(wname);
|
|
|
+ alarmCountStatList.add(alarmCountStat);
|
|
|
}
|
|
|
+
|
|
|
//对集合进行降序排序,取前十个
|
|
|
- Collections.sort(newList,new Comparator<AlarmCountStat>(){
|
|
|
+ Collections.sort(alarmCountStatList,new Comparator<AlarmCountStat>(){
|
|
|
@Override
|
|
|
public int compare(AlarmCountStat o1, AlarmCountStat o2) {
|
|
|
//会把集合里面的对象两两传进方法里面比较,这里比较age,降序就O2-O1,升序就O1-O2
|
|
|
return (int) (o2.getTime()-o1.getTime());
|
|
|
}
|
|
|
});
|
|
|
- List<AlarmCountStat> limitlist = newList.stream().limit(10).collect(Collectors.toList());
|
|
|
+ List<AlarmCountStat> limitlist = alarmCountStatList.stream().limit(10).collect(Collectors.toList());
|
|
|
return limitlist;
|
|
|
}catch (Exception ex) {
|
|
|
log.error(ex.getMessage());
|