Merge remote-tracking branch 'origin/master'

worktree-temp-progress-bar-color
suixy 5 days ago
commit 9785ff7cc0

@ -220,12 +220,13 @@ public class T_Alarm_DataController extends BaseController
calendar.add(Calendar.MINUTE,-720);
Long userId = ShiroUtils.getSysUser().getUserId();
List<AlarmPromptDTO> alarmPromptDTOList = t_Alarm_DataService.selectAlarmPromptDataList(userId.toString(), simpleDateFormat.format(calendar.getTime()), resolveAlarmDeptId());
int alarmCount = 0;
if(alarmPromptDTOList.size() > 0){
alarmCount = alarmPromptDTOList.size();
}
return alarmCount;
// 按测控点去重统计与弹窗「X个点位」语义一致
long alarmCount = alarmPromptDTOList.stream()
.map(AlarmPromptDTO::getMonitorId)
.filter(Objects::nonNull)
.distinct()
.count();
return (int) alarmCount;
}
/**
@ -239,7 +240,7 @@ public class T_Alarm_DataController extends BaseController
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.MINUTE,-1);
calendar.add(Calendar.MINUTE, -720);
Long userId = ShiroUtils.getSysUser().getUserId();
List<AlarmPromptDTO> alarmPromptDTOS = t_Alarm_DataService.selectAlarmPromptList(userId.toString(), simpleDateFormat.format(calendar.getTime()), resolveAlarmDeptId());
return JSONArray.toJSONString(alarmPromptDTOS);

@ -93,19 +93,20 @@
exportExcel(document.getElementById("bootstrap-table").outerHTML, "测控点整点报表.xls")
}
function newSearh(){
let dateList= getHoursBetween($("#laydate-demo-3").val(),$("#laydate-demo-4").val());
function reloadTable() {
let startTime = $("#laydate-demo-3").val();
let endTime = $("#laydate-demo-4").val();
if (!startTime || !endTime) {
return;
}
let dateList = getHoursBetween(startTime, endTime);
$('#bootstrap-table').bootstrapTable('destroy');
initTable(dateList);
// $.table.search();
}
$(function () {
const formattedDate = new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai', hour12: false }).slice(0, 13) + ':00:00';
let dateList = getHoursBetween(formattedDate, formattedDate)
initTable(dateList);
});
function newSearh(){
reloadTable();
}
function initTable(columns){
let timeList = [];
@ -172,7 +173,7 @@
function zOnClick(event, treeId, treeNode) {
$("#monitorId").val(treeNode.id);
$.table.search();
reloadTable();
}
}
@ -230,6 +231,8 @@
trigger: 'click',
value: formattedEnd // 为第二个选择器设置默认值为今天
});
reloadTable();
});
/* 测控点信息 */

@ -21,9 +21,12 @@ import com.ruoyi.common.utils.StringUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@ -36,6 +39,9 @@ import java.util.stream.Collectors;
public class RyTask {
private static final Logger log = LoggerFactory.getLogger(RyTask.class);
/** 温度连续超阈达到该分钟数后才写入报警 */
private static final int TEMPERATURE_ALARM_CONTINUOUS_MINUTES = 3;
@Autowired
private TArraytemperaturedataMapper tArraytemperaturedataMapper;
@ -113,20 +119,25 @@ public class RyTask {
}
/**
*
* {@link #TEMPERATURE_ALARM_CONTINUOUS_MINUTES}
*/
public void temperatureAlarm() {
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"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.parse(nowTime, formatter);
// 多查几分钟历史,用于回溯连续超阈起点
String beginTime = now.plusMinutes(-(TEMPERATURE_ALARM_CONTINUOUS_MINUTES + 2))
.format(formatter);
T_W_Temperturedata selectData = new T_W_Temperturedata();
HashMap<String, Object> selectMap = new HashMap<>();
selectMap.put("beginTime", beginTime);
selectMap.put("endTime", nowTime);
selectMap.put("beginCollectTime", beginTime);
selectMap.put("endCollectTime", nowTime);
selectData.setParams(selectMap);
List<T_W_Temperturedata> dataList = tWTemperturedataMapper.selectT_W_Max_dataList(selectData);
List<T_W_Temperturedata> windowDataList = tWTemperturedataMapper.selectTemperatureAlarmWindowList(selectData);
Map<String, List<T_W_Temperturedata>> monitorDataMap = windowDataList.stream()
.filter(d -> d.getMonitorId() != null)
.collect(Collectors.groupingBy(T_W_Temperturedata::getMonitorId));
T_Alarm_Data alarmData = new T_Alarm_Data();
alarmData.setAlarmStatus(1); //0-已处理 1-未处理
@ -136,44 +147,92 @@ public class RyTask {
TSetmonitorthresholdvalue selectValue = new TSetmonitorthresholdvalue();
selectValue.setMonitorType(16);
List<TSetmonitorthresholdvalue> thresholdlist = setmonitorthresholdvalueMapper.selectTSetmonitorthresholdvalueList(selectValue);
for (T_W_Temperturedata data : dataList) {
String monitorId = data.getMonitorId();
if (alarmList.contains(monitorId)){
for (TSetmonitorthresholdvalue value : thresholdlist) {
String monitorId = value.getMonitorId();
if (monitorId == null || alarmList.contains(monitorId)) {
continue;
}
List<TSetmonitorthresholdvalue> collect = thresholdlist.stream().filter(e -> e.getMonitorId().equals(monitorId)).collect(Collectors.toList());
if (collect.size() > 0){
TSetmonitorthresholdvalue value = collect.get(0);
if (value.getMonitorId().equals(monitorId)){
BigDecimal temperatureMax = value.getTemperatureMax();
BigDecimal temperatureMin = value.getTemperatureMin();
System.out.println("temperatureAlarm:monitorId" + monitorId + "|temperatureMax" + temperatureMax + "|Tempreture" + data.getTempreture());
if (StringUtils.isNotNull(temperatureMax) && data.getTempreture().compareTo(temperatureMax) > 0){
T_Alarm_Data insertData = new T_Alarm_Data();
insertData.setMonitorId(data.getMonitorId());
insertData.setCollectTime(DateUtils.getNowDate());
insertData.setAlarmType(0);//0-过高报警 1-过低报警
insertData.setMonitorType(16);
insertData.setAlarmStatus(1);
insertData.setAlarmData(data.getTempreture());
insertData.setCause(value.gettMaxIdea() != null ? value.gettMaxIdea() : "温度过高");
tAlarmDataMapper.insertT_Alarm_Data(insertData);
} else if (StringUtils.isNotNull(temperatureMin) && temperatureMin.compareTo(data.getTempreture()) > 0){
T_Alarm_Data insertData = new T_Alarm_Data();
insertData.setMonitorId(data.getMonitorId());
insertData.setCollectTime(DateUtils.getNowDate());
insertData.setAlarmType(1);//0-过高报警 1-过低报警
insertData.setMonitorType(16);
insertData.setAlarmStatus(1);
insertData.setAlarmData(data.getTempreture());
insertData.setCause(value.gettMinIdea() != null ? value.gettMinIdea() : "温度过底");
tAlarmDataMapper.insertT_Alarm_Data(insertData);
}
}
List<T_W_Temperturedata> records = monitorDataMap.getOrDefault(monitorId, new ArrayList<>());
if (records.isEmpty()) {
continue;
}
T_W_Temperturedata latest = records.get(records.size() - 1);
BigDecimal temperatureMax = value.getTemperatureMax();
BigDecimal temperatureMin = value.getTemperatureMin();
if (StringUtils.isNotNull(temperatureMax)
&& isContinuousHighTemperatureAlarm(records, temperatureMax)) {
log.info("temperatureAlarm: monitorId={}, temperatureMax={}, tempreture={}, continuousMinutes={}",
monitorId, temperatureMax, latest.getTempreture(), TEMPERATURE_ALARM_CONTINUOUS_MINUTES);
T_Alarm_Data insertData = new T_Alarm_Data();
insertData.setMonitorId(monitorId);
insertData.setCollectTime(DateUtils.getNowDate());
insertData.setAlarmType(0);//0-过高报警 1-过低报警
insertData.setMonitorType(16);
insertData.setAlarmStatus(1);
insertData.setAlarmData(latest.getTempreture());
insertData.setCause(value.gettMaxIdea() != null ? value.gettMaxIdea() : "温度过高");
tAlarmDataMapper.insertT_Alarm_Data(insertData);
} else if (StringUtils.isNotNull(temperatureMin)
&& isContinuousLowTemperatureAlarm(records, temperatureMin)) {
log.info("temperatureAlarm: monitorId={}, temperatureMin={}, tempreture={}, continuousMinutes={}",
monitorId, temperatureMin, latest.getTempreture(), TEMPERATURE_ALARM_CONTINUOUS_MINUTES);
T_Alarm_Data insertData = new T_Alarm_Data();
insertData.setMonitorId(monitorId);
insertData.setCollectTime(DateUtils.getNowDate());
insertData.setAlarmType(1);//0-过高报警 1-过低报警
insertData.setMonitorType(16);
insertData.setAlarmStatus(1);
insertData.setAlarmData(latest.getTempreture());
insertData.setCause(value.gettMinIdea() != null ? value.gettMinIdea() : "温度过底");
tAlarmDataMapper.insertT_Alarm_Data(insertData);
}
}
}
/**
*
*/
private boolean isContinuousHighTemperatureAlarm(List<T_W_Temperturedata> records, BigDecimal temperatureMax) {
T_W_Temperturedata latest = records.get(records.size() - 1);
if (latest.getTempreture() == null || latest.getCollectTime() == null
|| latest.getTempreture().compareTo(temperatureMax) <= 0) {
return false;
}
Date streakStart = latest.getCollectTime();
for (int i = records.size() - 2; i >= 0; i--) {
T_W_Temperturedata record = records.get(i);
if (record.getTempreture() == null || record.getCollectTime() == null
|| record.getTempreture().compareTo(temperatureMax) <= 0) {
break;
}
streakStart = record.getCollectTime();
}
return latest.getCollectTime().getTime() - streakStart.getTime()
>= TEMPERATURE_ALARM_CONTINUOUS_MINUTES * 60_000L;
}
/**
*
*/
private boolean isContinuousLowTemperatureAlarm(List<T_W_Temperturedata> records, BigDecimal temperatureMin) {
T_W_Temperturedata latest = records.get(records.size() - 1);
if (latest.getTempreture() == null || latest.getCollectTime() == null
|| temperatureMin.compareTo(latest.getTempreture()) <= 0) {
return false;
}
Date streakStart = latest.getCollectTime();
for (int i = records.size() - 2; i >= 0; i--) {
T_W_Temperturedata record = records.get(i);
if (record.getTempreture() == null || record.getCollectTime() == null
|| temperatureMin.compareTo(record.getTempreture()) <= 0) {
break;
}
streakStart = record.getCollectTime();
}
return latest.getCollectTime().getTime() - streakStart.getTime()
>= TEMPERATURE_ALARM_CONTINUOUS_MINUTES * 60_000L;
}
/**
*
* TSetmonitorthresholdvalue monitorType=20

@ -86,6 +86,12 @@ public interface T_W_TemperturedataMapper
public List<T_W_Temperturedata> selectT_W_illdataFirstList(T_W_Temperturedata t_W_Temperturedata);
public List<T_W_Temperturedata> selectT_W_illdataList(T_W_Temperturedata t_W_Temperturedata);
public List<T_W_Temperturedata> selectT_W_Max_dataList(T_W_Temperturedata t_W_Temperturedata);
/**
* 湿
*/
public List<T_W_Temperturedata> selectTemperatureAlarmWindowList(T_W_Temperturedata t_W_Temperturedata);
public List<T_W_Temperturedata> selectill_max_min_avg(T_W_Temperturedata t_W_Temperturedata);
/**

@ -208,20 +208,26 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
@Override
public List<Map<String, String>> pointTimeSiteReport(Map map) {
List<Map<String, String>> resultList = new ArrayList<>();
if (String.valueOf(map.get("startTime")).equals("") || String.valueOf(map.get("endTime")).equals("")){
Object startTime = map.get("startTime");
Object endTime = map.get("endTime");
if (startTime == null || endTime == null
|| StringUtils.isEmpty(String.valueOf(startTime))
|| StringUtils.isEmpty(String.valueOf(endTime))) {
return resultList;
}
String monitorId = String.valueOf(map.get("monitorId"));
T_Monitor tMonitor = new T_Monitor();
tMonitor.setpMonitorid(monitorId);
List<T_Monitor> tMonitors = t_MonitorMapper.selectT_MonitorList(tMonitor);
if (!tMonitors.isEmpty()) {
List<String> monitorIdList = tMonitors.stream().map(T_Monitor::getMonitorId).collect(Collectors.toList());
map.put("monitorIdList", monitorIdList);
map.remove(("monitorId"));
String monitorId = map.get("monitorId") == null ? "" : String.valueOf(map.get("monitorId")).trim();
if (StringUtils.isNotEmpty(monitorId) && !"null".equalsIgnoreCase(monitorId)) {
T_Monitor tMonitor = new T_Monitor();
tMonitor.setpMonitorid(monitorId);
List<T_Monitor> tMonitors = t_MonitorMapper.selectT_MonitorList(tMonitor);
if (!tMonitors.isEmpty()) {
List<String> monitorIdList = tMonitors.stream().map(T_Monitor::getMonitorId).collect(Collectors.toList());
map.put("monitorIdList", monitorIdList);
map.remove("monitorId");
}
}
List<Map<String, String>> repPointTempertures = repPointTempertureMapper.selectpointTimeSiteReport(map);
resultList = transform(repPointTempertures);
resultList = transform(repPointTempertures);
return resultList;
}
@ -240,7 +246,8 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
String monitorId = originalMap.get("monitorId");
String monitorName = originalMap.get("monitorName");
String pointTime = String.valueOf(originalMap.get("pointTime"));
String expend = String.valueOf(originalMap.get("expend"));
Object expendValue = originalMap.get("expend");
String expend = expendValue == null ? "" : String.valueOf(expendValue);
resultMap.put("monitorId",monitorId);
resultMap.put("monitorName",monitorName);
resultMap.put("expend"+ pointTime,expend);

@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select TM.monitorName monitorName,
pt.MonitorID monitorId,
pt.Tempreture expend,
CONVERT(varchar(16), pt.beginTime, 120) + ':00' pointTime
CONVERT(varchar(13), pt.beginTime, 120) + ':00:00' pointTime
from Rep_Point_Temperture pt
left join T_Monitor TM on pt.MonitorID = TM.monitorId
WHERE TM.monitorId IS NOT NULL
@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{monitorId}
</foreach>
</if>
order by pt.MonitorID
order by pt.MonitorID, pt.beginTime
<!-- SELECT t1.unitId monitorId,-->
<!-- t2.unitName monitorName,-->
<!-- isnull(t1.expend, 0) expend,-->

@ -83,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
group by a.unitName,a.unitId
-->
<select id="selectAlarmPromptList" parameterType="AlarmPromptDTO" resultMap="AlarmPromptDTOResult">
SELECT COUNT(1) AS alarmCount
SELECT COUNT(DISTINCT t4.monitorId) AS alarmCount
FROM T_Alarm_Data t4
LEFT JOIN T_Monitor t5 ON t4.monitorId = t5.monitorId
WHERE t4.alarmStatus = 1

@ -295,4 +295,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<select id="selectTemperatureAlarmWindowList" parameterType="T_W_Temperturedata" resultMap="T_W_TemperturedataResult">
select t1.objid, t1.monitorId, t1.collectTime, t1.tempreture
from T_W_TempertureData t1
<where>
<if test="monitorId != null and monitorId != ''">and t1.monitorId = #{monitorId}</if>
<if test="params.beginCollectTime != null and params.beginCollectTime != '' and params.endCollectTime != null and params.endCollectTime != ''">
and t1.collectTime between #{params.beginCollectTime} and #{params.endCollectTime}
</if>
</where>
order by t1.monitorId, t1.collectTime asc
</select>
</mapper>

Loading…
Cancel
Save