|
|
|
@ -4,11 +4,13 @@ import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.system.domain.TArraytemperaturedata;
|
|
|
|
import com.ruoyi.system.domain.TArraytemperaturedata;
|
|
|
|
import com.ruoyi.system.domain.TSetmonitorthresholdvalue;
|
|
|
|
import com.ruoyi.system.domain.TSetmonitorthresholdvalue;
|
|
|
|
import com.ruoyi.system.domain.T_Alarm_Data;
|
|
|
|
import com.ruoyi.system.domain.T_Alarm_Data;
|
|
|
|
|
|
|
|
import com.ruoyi.system.domain.TVibrationsensorData;
|
|
|
|
import com.ruoyi.system.domain.T_W_Temperturedata;
|
|
|
|
import com.ruoyi.system.domain.T_W_Temperturedata;
|
|
|
|
import com.ruoyi.system.domain.dto.T_Alarm_DataDTO;
|
|
|
|
import com.ruoyi.system.domain.dto.T_Alarm_DataDTO;
|
|
|
|
import com.ruoyi.system.mapper.TArraytemperaturedataMapper;
|
|
|
|
import com.ruoyi.system.mapper.TArraytemperaturedataMapper;
|
|
|
|
import com.ruoyi.system.mapper.TSetmonitorthresholdvalueMapper;
|
|
|
|
import com.ruoyi.system.mapper.TSetmonitorthresholdvalueMapper;
|
|
|
|
import com.ruoyi.system.mapper.T_Alarm_DataMapper;
|
|
|
|
import com.ruoyi.system.mapper.T_Alarm_DataMapper;
|
|
|
|
|
|
|
|
import com.ruoyi.system.mapper.TVibrationsensorDataMapper;
|
|
|
|
import com.ruoyi.system.mapper.T_W_TemperturedataMapper;
|
|
|
|
import com.ruoyi.system.mapper.T_W_TemperturedataMapper;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
@ -20,6 +22,7 @@ import java.math.BigDecimal;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
@ -45,6 +48,9 @@ public class RyTask {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private T_Alarm_DataMapper tAlarmDataMapper;
|
|
|
|
private T_Alarm_DataMapper tAlarmDataMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private TVibrationsensorDataMapper tVibrationsensorDataMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
|
|
|
|
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
|
|
|
|
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
|
|
|
|
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
|
|
|
|
@ -168,4 +174,129 @@ public class RyTask {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 振动传感器报警:温度、速度、位移
|
|
|
|
|
|
|
|
* 阈值来源:TSetmonitorthresholdvalue monitorType=20
|
|
|
|
|
|
|
|
* 温度 -> temperatureMax/Min,tMaxIdea/tMinIdea;速度 -> humidityMax/Min,hMaxIdea/hMinIdea;位移 -> illuminanceMax/Min,iMaxIdea/iMinIdea
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void vibrationAlarm() {
|
|
|
|
|
|
|
|
String nowTime = DateUtils.getTime();
|
|
|
|
|
|
|
|
String beginTime = LocalDateTime
|
|
|
|
|
|
|
|
.parse(nowTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
|
|
|
|
|
|
|
.plusMinutes(-30)
|
|
|
|
|
|
|
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
|
|
TVibrationsensorData query = new TVibrationsensorData();
|
|
|
|
|
|
|
|
HashMap<String, Object> timeMap = new HashMap<>();
|
|
|
|
|
|
|
|
timeMap.put("beginCollectTime", beginTime);
|
|
|
|
|
|
|
|
timeMap.put("endCollectTime", nowTime);
|
|
|
|
|
|
|
|
query.setParams(timeMap);
|
|
|
|
|
|
|
|
List<TVibrationsensorData> dataList = tVibrationsensorDataMapper.selectTVibrationsensorDataList(query);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 每个 sensorId 只保留最新一条(列表已按 collectTime desc)
|
|
|
|
|
|
|
|
HashMap<String, TVibrationsensorData> latestMap = new LinkedHashMap<>();
|
|
|
|
|
|
|
|
for (TVibrationsensorData d : dataList) {
|
|
|
|
|
|
|
|
if (d.getSensorId() != null) {
|
|
|
|
|
|
|
|
latestMap.putIfAbsent(d.getSensorId(), d);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T_Alarm_Data alarmQuery = new T_Alarm_Data();
|
|
|
|
|
|
|
|
alarmQuery.setAlarmStatus(1);
|
|
|
|
|
|
|
|
List<T_Alarm_DataDTO> existing = tAlarmDataMapper.selectT_Alarm_DataList(alarmQuery);
|
|
|
|
|
|
|
|
List<String> alarmMonitorIds = existing.stream().map(T_Alarm_DataDTO::getMonitorId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TSetmonitorthresholdvalue thQuery = new TSetmonitorthresholdvalue();
|
|
|
|
|
|
|
|
thQuery.setMonitorType(20);
|
|
|
|
|
|
|
|
List<TSetmonitorthresholdvalue> thresholds = setmonitorthresholdvalueMapper.selectTSetmonitorthresholdvalueList(thQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (TVibrationsensorData data : latestMap.values()) {
|
|
|
|
|
|
|
|
String sensorId = data.getSensorId();
|
|
|
|
|
|
|
|
if (sensorId == null || alarmMonitorIds.contains(sensorId)) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Optional<TSetmonitorthresholdvalue> opt = thresholds.stream().filter(t -> sensorId.equals(t.getMonitorId())).findFirst();
|
|
|
|
|
|
|
|
if (!opt.isPresent()) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
TSetmonitorthresholdvalue th = opt.get();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 温度:过高/过低
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(data.getTemperature())) {
|
|
|
|
|
|
|
|
BigDecimal temperature = data.getTemperature();
|
|
|
|
|
|
|
|
BigDecimal temperatureMax = th.getTemperatureMax();
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(th.getTemperatureMax()) && data.getTemperature().compareTo(th.getTemperatureMax()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(0);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getTemperature());
|
|
|
|
|
|
|
|
insertData.setCause(th.gettMaxIdea() != null ? th.gettMaxIdea() : "温度过高");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
} else if (StringUtils.isNotNull(th.getTemperatureMin()) && th.getTemperatureMin().compareTo(data.getTemperature()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(1);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getTemperature());
|
|
|
|
|
|
|
|
insertData.setCause(th.gettMinIdea() != null ? th.gettMinIdea() : "温度过低");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 速度:过高/过低(阈值字段 humidityMax/Min)
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(data.getSpeed())) {
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(th.getHumidityMax()) && data.getSpeed().compareTo(th.getHumidityMax()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(0);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getSpeed());
|
|
|
|
|
|
|
|
insertData.setCause(th.gethMaxIdea() != null ? th.gethMaxIdea() : "速度过高");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
} else if (StringUtils.isNotNull(th.getHumidityMin()) && th.getHumidityMin().compareTo(data.getSpeed()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(1);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getSpeed());
|
|
|
|
|
|
|
|
insertData.setCause(th.gethMinIdea() != null ? th.gethMinIdea() : "速度过低");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 位移:过高/过低(阈值字段 illuminanceMax/Min)
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(data.getDisplacement())) {
|
|
|
|
|
|
|
|
if (StringUtils.isNotNull(th.getIlluminanceMax()) && data.getDisplacement().compareTo(th.getIlluminanceMax()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(0);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getDisplacement());
|
|
|
|
|
|
|
|
insertData.setCause(th.getiMaxIdea() != null ? th.getiMaxIdea() : "位移过高");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
} else if (StringUtils.isNotNull(th.getIlluminanceMin()) && th.getIlluminanceMin().compareTo(data.getDisplacement()) > 0) {
|
|
|
|
|
|
|
|
T_Alarm_Data insertData = new T_Alarm_Data();
|
|
|
|
|
|
|
|
insertData.setMonitorId(sensorId);
|
|
|
|
|
|
|
|
insertData.setCollectTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
insertData.setAlarmType(1);
|
|
|
|
|
|
|
|
insertData.setMonitorType(20);
|
|
|
|
|
|
|
|
insertData.setAlarmStatus(1);
|
|
|
|
|
|
|
|
insertData.setAlarmData(data.getDisplacement());
|
|
|
|
|
|
|
|
insertData.setCause(th.getiMinIdea() != null ? th.getiMinIdea() : "位移过低");
|
|
|
|
|
|
|
|
tAlarmDataMapper.insertT_Alarm_Data(insertData);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|