From 062034291f6a6c8613f84d0cfc8f55f49005eb16 Mon Sep 17 00:00:00 2001 From: yinq Date: Mon, 26 Jan 2026 13:14:07 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E6=8C=AF=E5=8A=A8=E4=BC=A0?= =?UTF-8?q?=E6=84=9F=E5=99=A8=E6=8A=A5=E8=AD=A6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/quartz/task/RyTask.java | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index c251161..06ad5db 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -4,11 +4,13 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.TArraytemperaturedata; import com.ruoyi.system.domain.TSetmonitorthresholdvalue; 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.dto.T_Alarm_DataDTO; import com.ruoyi.system.mapper.TArraytemperaturedataMapper; import com.ruoyi.system.mapper.TSetmonitorthresholdvalueMapper; import com.ruoyi.system.mapper.T_Alarm_DataMapper; +import com.ruoyi.system.mapper.TVibrationsensorDataMapper; import com.ruoyi.system.mapper.T_W_TemperturedataMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +22,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -45,6 +48,9 @@ public class RyTask { @Autowired private T_Alarm_DataMapper tAlarmDataMapper; + @Autowired + private TVibrationsensorDataMapper tVibrationsensorDataMapper; + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer 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 timeMap = new HashMap<>(); + timeMap.put("beginCollectTime", beginTime); + timeMap.put("endCollectTime", nowTime); + query.setParams(timeMap); + List dataList = tVibrationsensorDataMapper.selectTVibrationsensorDataList(query); + + // 每个 sensorId 只保留最新一条(列表已按 collectTime desc) + HashMap 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 existing = tAlarmDataMapper.selectT_Alarm_DataList(alarmQuery); + List alarmMonitorIds = existing.stream().map(T_Alarm_DataDTO::getMonitorId).collect(Collectors.toList()); + + TSetmonitorthresholdvalue thQuery = new TSetmonitorthresholdvalue(); + thQuery.setMonitorType(20); + List thresholds = setmonitorthresholdvalueMapper.selectTSetmonitorthresholdvalueList(thQuery); + + for (TVibrationsensorData data : latestMap.values()) { + String sensorId = data.getSensorId(); + if (sensorId == null || alarmMonitorIds.contains(sensorId)) { + continue; + } + Optional 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); + } + } + } + } + }