lizijie
2022-01-07 8ba6add88e9d5c408110dfcf80bf14e8d8df7c79
修改污染警报定时任务,实现数据分表
3 files modified
112 ■■■■■ changed files
screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java 5 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/task/AlarmTask.java 101 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/AlarmInfoMapper.xml 6 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java
@@ -2,6 +2,9 @@
import com.moral.api.entity.AlarmInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
 * <p>
@@ -15,4 +18,6 @@
    void createTable(String timeUnits);
    void insertAlarmInfo(@Param("timeUnits") String timeUnits, @Param("map")Map<String,Object> map);
}
screen-job/src/main/java/com/moral/api/task/AlarmTask.java
@@ -114,9 +114,14 @@
                    }
                    for (Device device:devices) {
                        AlarmInfo alarmInfo = new AlarmInfo();
                        Map<String,Object> alarmInfoMap = new HashMap<>();
                        alarmInfo.setAlarmTime(alarmDate);
                        alarmInfoMap.put("alarmTime",alarmTime);
                        int deviceId = device.getId();
                        alarmInfo.setDeviceId(deviceId);
                        alarmInfoMap.put("deviceId",deviceId);
                        String timeUtils = alarmTime.replace("-","");
                        timeUtils = timeUtils.substring(0,6);
                        String mac = device.getMac();
                        List<HistoryHourly> historyHourlys = null;
                        historyHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), nearDate, nearDate);
@@ -162,6 +167,10 @@
                                String alarmInformation = "站点["+device.getName()+"][PM2.5]浓度值["+PM2_5+"]超过限定的标准值[75]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","PM2_5");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousPM2_5 = null;
@@ -187,6 +196,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][PM2.5]浓度值["+PM2_5+"]超过上小时的浓度["+previousPM2_5+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","PM2_5");
                                    alarmInfoMap.put("alarmType","突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -218,6 +231,10 @@
                                        String alarmInformation = "["+device.getName()+"][PM2.5]浓度值["+PM2_5+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiPM2_5+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","PM2_5");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -255,6 +272,10 @@
                                        String alarmInformation = "["+device.getName()+"][PM2.5]浓度值["+PM2_5+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointPM2_5+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","PM2_5");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -267,6 +288,10 @@
                                String alarmInformation = "站点["+device.getName()+"][PM10]浓度值["+PM10+"]超过限定的标准值[150]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","PM10");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousPM10 = null;
@@ -292,6 +317,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][PM10]浓度值["+PM10+"]超过上小时的浓度["+previousPM10+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","PM10");
                                    alarmInfoMap.put("alarmType","突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -323,6 +352,10 @@
                                        String alarmInformation = "["+device.getName()+"][PM10]浓度值["+PM10+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiPM10+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","PM10");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -360,6 +393,10 @@
                                        String alarmInformation = "["+device.getName()+"][PM10]浓度值["+PM10+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointPM10+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","PM10");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -372,6 +409,10 @@
                                String alarmInformation = "站点["+device.getName()+"][SO2]浓度值["+SO2+"]超过限定的标准值[75]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","SO2");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousSO2 = null;
@@ -397,6 +438,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][SO2]浓度值["+SO2+"]超过上小时的浓度["+previousSO2+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","SO2");
                                    alarmInfoMap.put("alarmType","超突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -428,6 +473,10 @@
                                        String alarmInformation = "["+device.getName()+"][SO2]浓度值["+SO2+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiSO2+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","SO2");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -465,6 +514,10 @@
                                        String alarmInformation = "["+device.getName()+"][SO2]浓度值["+SO2+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointSO2+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","SO2");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -477,6 +530,10 @@
                                String alarmInformation = "站点["+device.getName()+"][NO2]浓度值["+NO2+"]超过限定的标准值[75]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","NO2");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousNO2 = null;
@@ -502,6 +559,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][NO2]浓度值["+NO2+"]超过上小时的浓度["+previousNO2+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","NO2");
                                    alarmInfoMap.put("alarmType","突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -533,6 +594,10 @@
                                        String alarmInformation = "["+device.getName()+"][NO2]浓度值["+NO2+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiNO2+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","NO2");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -570,6 +635,10 @@
                                        String alarmInformation = "["+device.getName()+"][NO2]浓度值["+NO2+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointNO2+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","NO2");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -582,6 +651,10 @@
                                String alarmInformation = "站点["+device.getName()+"][CO]浓度值["+CO+"]超过限定的标准值[75]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","CO");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousCO = null;
@@ -607,6 +680,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][CO]浓度值["+CO+"]超过上小时的浓度["+previousCO+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","CO");
                                    alarmInfoMap.put("alarmType","突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -638,6 +715,10 @@
                                        String alarmInformation = "["+device.getName()+"][CO]浓度值["+CO+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiCO+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","CO");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -675,6 +756,10 @@
                                        String alarmInformation = "["+device.getName()+"][CO]浓度值["+CO+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointCO+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","CO");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -687,6 +772,10 @@
                                String alarmInformation = "站点["+device.getName()+"][O3]浓度值["+O3+"]超过限定的标准值[75]";
                                alarmInfo.setAlarmInformation(alarmInformation);
                                alarmInfoMapper.insert(alarmInfo);
                                alarmInfoMap.put("index","O3");
                                alarmInfoMap.put("alarmType","超限");
                                alarmInfoMap.put("alarmInformation",alarmInformation);
                                alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                continue;
                            }
                            Double previousO3 = null;
@@ -712,6 +801,10 @@
                                    String alarmInformation = "["+device.getName()+"]["+beforTime+"][O3]浓度值["+O3+"]超过上小时的浓度["+previousO3+"]的"+multiple+"倍";
                                    alarmInfo.setAlarmInformation(alarmInformation);
                                    alarmInfoMapper.insert(alarmInfo);
                                    alarmInfoMap.put("index","O3");
                                    alarmInfoMap.put("alarmType","突然高");
                                    alarmInfoMap.put("alarmInformation",alarmInformation);
                                    alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                    continue;
                                }
                            }
@@ -743,6 +836,10 @@
                                        String alarmInformation = "["+device.getName()+"][O3]浓度值["+O3+"]超过["+sysArea.getAreaName()+"]均值["+cityAqiO3+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","O3");
                                        alarmInfoMap.put("alarmType","超过市区均值"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
@@ -780,6 +877,10 @@
                                        String alarmInformation = "["+device.getName()+"][O3]浓度值["+O3+"]超过["+govMonitorPoint.getName()+"]均值["+govMonitorPointO3+"]的"+percentage+"%";
                                        alarmInfo.setAlarmInformation(alarmInformation);
                                        alarmInfoMapper.insert(alarmInfo);
                                        alarmInfoMap.put("index","O3");
                                        alarmInfoMap.put("alarmType","超过国控站"+percentage+"%");
                                        alarmInfoMap.put("alarmInformation",alarmInformation);
                                        alarmInfoMapper.insertAlarmInfo(timeUtils, alarmInfoMap);
                                        continue;
                                    }
                                }
screen-job/src/main/resources/mapper/AlarmInfoMapper.xml
@@ -26,4 +26,10 @@
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '报警信息小时表';
    </update>
    <insert id="insertAlarmInfo">
        insert into alarm_info_${timeUnits}
        (alarm_time,`index`,device_id,alarm_type,alarm_information)
        values (#{map.alarmTime},#{map.index},#{map.deviceId},#{map.alarmType},#{map.alarmInformation})
    </insert>
</mapper>