package com.whyc.service;
|
|
import com.whyc.dto.AlarmDaoFactory;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.CommonMapper;
|
import com.whyc.mapper.CustomMapper;
|
import com.whyc.pojo.BattalarmDataHistory;
|
import com.whyc.pojo.DevalarmDataHistory;
|
import com.whyc.pojo.PwrdevAlarmHistory;
|
import com.whyc.util.DateUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.text.ParseException;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class AlarmHistoryService {
|
|
@Autowired
|
private BattalarmDataHistoryService battAlarmService;
|
@Autowired
|
private DevalarmDataHistoryService deviceAlarmService;
|
@Autowired
|
private PwrdevAlarmHistoryService powerAlarmService;
|
|
@Resource
|
private CommonMapper commonMapper;
|
|
public Response getAlarmStatistics(Date startTime, Date endTime, String stationId) throws ParseException {
|
Map<String,Object> resMap = new HashMap<>();
|
|
Map<String, List<Date>> tableMap = DateUtil.getQueryTimeForSubTablesDesc(startTime, endTime);
|
Set<String> yearSet = tableMap.keySet();
|
List<BattalarmDataHistory> battList = new LinkedList<>();
|
List<DevalarmDataHistory> deviceList = new LinkedList<>();
|
List<PwrdevAlarmHistory> powerList = new LinkedList<>();
|
for (String year : yearSet) {
|
String battTableName;
|
String deviceTableName;
|
String powerTableName;
|
if(year.equals("default")){
|
battTableName = "tb_battalarm_data_history";
|
deviceTableName = "tb_devalarm_data_history";
|
powerTableName = "tb_pwrdev_alarm_history";
|
}else{
|
battTableName = "tb_battalarm_data_history_"+year;
|
deviceTableName = "tb_devalarm_data_history_"+year;
|
powerTableName = "tb_pwrdev_alarm_history_"+year;
|
}
|
List<Date> dates = tableMap.get(year);
|
String existTableNameBatt = commonMapper.existTable("db_alarm", battTableName);
|
if(existTableNameBatt != null){
|
List<BattalarmDataHistory> battTemp = battAlarmService.getListByStationId(dates.get(0),dates.get(1),stationId,battTableName);
|
battList.addAll(battTemp);
|
}
|
String existTableNameDevice = commonMapper.existTable("db_alarm", deviceTableName);
|
if(existTableNameDevice != null){
|
List<DevalarmDataHistory> deviceTemp = deviceAlarmService.getListByStationId(dates.get(0),dates.get(1),stationId,deviceTableName);
|
deviceList.addAll(deviceTemp);
|
}
|
String existTableNamePower= commonMapper.existTable("db_pwrdev_alarm", powerTableName);
|
if(existTableNamePower != null){
|
List<PwrdevAlarmHistory> powerTemp = powerAlarmService.getListByStationId(dates.get(0),dates.get(1),stationId,powerTableName);
|
powerList.addAll(powerTemp);
|
}
|
|
}
|
|
if(battList.size()!=0) {
|
Map<String, BattalarmDataHistory> battResMap = new HashMap<>();
|
Map<Integer, List<BattalarmDataHistory>> battMap = battList.stream().collect(Collectors.groupingBy(BattalarmDataHistory::getAlmSignalId));
|
Set<Integer> battAlarmSignalIdSet = battMap.keySet();
|
for (Integer battAlarmSignalId : battAlarmSignalIdSet) {
|
List<BattalarmDataHistory> temp = battMap.get(battAlarmSignalId);
|
int size = temp.size();
|
Integer almLevel = temp.get(0).getAlmLevel();
|
Integer almSeverity = temp.get(0).getAlmSeverity();
|
|
BattalarmDataHistory history = new BattalarmDataHistory();
|
history.setAlmLevel(almLevel);
|
history.setAlmSeverity(almSeverity);
|
history.setNum((long) size);
|
|
battResMap.put(AlarmDaoFactory.getAllAlarmName(battAlarmSignalId), history);
|
|
}
|
|
resMap.put("batt", battResMap);
|
}else{
|
resMap.put("batt",null);
|
}
|
|
if(deviceList.size()!=0) {
|
Map<String, DevalarmDataHistory> deviceResMap = new HashMap<>();
|
Map<Integer, List<DevalarmDataHistory>> deviceMap = deviceList.stream().collect(Collectors.groupingBy(DevalarmDataHistory::getAlmType));
|
Set<Integer> deviceAlarmTypeSet = deviceMap.keySet();
|
for (Integer deviceAlarmType : deviceAlarmTypeSet) {
|
List<DevalarmDataHistory> temp = deviceMap.get(deviceAlarmType);
|
int size = temp.size();
|
Integer almLevel = temp.get(0).getAlmLevel();
|
Integer almSeverity = temp.get(0).getAlmSeverity();
|
|
DevalarmDataHistory history = new DevalarmDataHistory();
|
history.setAlmLevel(almLevel);
|
history.setAlmSeverity(almSeverity);
|
history.setNum((long) size);
|
|
deviceResMap.put(AlarmDaoFactory.getAllAlarmName(deviceAlarmType), history);
|
|
}
|
|
resMap.put("device", deviceResMap);
|
}else{
|
resMap.put("device",null);
|
}
|
|
if(powerList.size()!=0) {
|
Map<String, PwrdevAlarmHistory> powerResMap = new HashMap<>();
|
Map<Integer, List<PwrdevAlarmHistory>> powerMap = powerList.stream().collect(Collectors.groupingBy(PwrdevAlarmHistory::getAlmType));
|
Set<Integer> powerAlarmTypeSet = powerMap.keySet();
|
for (Integer powerAlarmType : powerAlarmTypeSet) {
|
List<PwrdevAlarmHistory> temp = powerMap.get(powerAlarmType);
|
int size = temp.size();
|
Integer almLevel = temp.get(0).getAlmLevel();
|
Integer almSeverity = temp.get(0).getAlmSeverity();
|
|
PwrdevAlarmHistory history = new PwrdevAlarmHistory();
|
history.setAlmLevel(almLevel);
|
history.setAlmSeverity(almSeverity);
|
history.setNum((long) size);
|
|
powerResMap.put(AlarmDaoFactory.getAllAlarmName(powerAlarmType), history);
|
|
}
|
|
resMap.put("power", powerResMap);
|
}else{
|
resMap.put("power",null);
|
}
|
return new Response().set(1,resMap);
|
|
}
|
}
|