change - 振动传感器报警逻辑

master
yinq 1 week ago
parent bc439749a1
commit 062034291f

@ -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);
}
}
}
}
} }

Loading…
Cancel
Save