package com.moral.api.task;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.moral.api.entity.*;
|
import com.moral.api.mapper.*;
|
import com.moral.api.service.HistoryHourlyService;
|
import com.moral.api.service.OrganizationService;
|
import com.moral.constant.Constants;
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.context.XxlJobHelper;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.ObjectUtils;
|
|
import javax.annotation.Resource;
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @program: screen
|
* @description: 警报定时任务
|
* @author: lizijie
|
* @create: 2021-11-09 11:07
|
**/
|
@Component
|
public class AlarmTask {
|
|
@Resource
|
private OrganizationService organizationService;
|
|
@Resource
|
private HistoryHourlyService historyHourlyService;
|
|
@Autowired(required = false)
|
private DeviceMapper deviceMapper;
|
|
@Autowired(required = false)
|
private AlarmInfoMapper alarmInfoMapper;
|
|
@Autowired(required = false)
|
private OrganizationMapper organizationMapper;
|
|
@Autowired(required = false)
|
private CityAqiMapper cityAqiMapper;
|
|
@Autowired(required = false)
|
private SysAreaMapper sysAreaMapper;
|
|
@Autowired(required = false)
|
private HistoryAqiMapper historyAqiMapper;
|
|
@Autowired(required = false)
|
private GovMonitorPointMapper govMonitorPointMapper;
|
|
@XxlJob("alarmInfoInsert")
|
public ReturnT alarmInfoInsert(){
|
String params = XxlJobHelper.getJobParam();
|
try {
|
Map organizationIdMap = JSON.parseObject(params);
|
List<Integer> orgIdList = (List<Integer>) organizationIdMap.get("orgId");
|
//获取时间
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
|
Calendar calendar = Calendar.getInstance();
|
String alarmTime = df.format(calendar.getTime())+":00:00";
|
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
|
//Date nearData = calendar.getTime();
|
String beforTime = df.format(calendar.getTime())+":00:00";
|
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
|
//Date previousData = calendar.getTime();
|
String previousTime = df.format(calendar.getTime())+":00:00";
|
//定义一个集合,存放所有id
|
List<Integer> allOrgId = new ArrayList<>();
|
allOrgId.addAll(orgIdList);
|
//循环集合
|
for (Integer orgId:orgIdList) {
|
//所有子组织
|
List<Organization> allChildrenOrganization = organizationService.getAllChildrenOrganization(orgId);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(allChildrenOrganization) || allChildrenOrganization.size() < 1){
|
for (Organization organization:allChildrenOrganization) {
|
allOrgId.add(organization.getId());
|
}
|
}
|
}
|
//集合去重
|
List<Integer> allOrgIdWithoutDuplicates = allOrgId.stream().distinct().collect(Collectors.toList());
|
for (Integer orgId:allOrgIdWithoutDuplicates) {
|
//根据id查询所属设备
|
QueryWrapper<Organization> wrapper_organization = new QueryWrapper<>();
|
wrapper_organization.eq("is_delete",Constants.NOT_DELETE).eq("id",orgId);
|
Organization organization = new Organization();
|
organization = organizationMapper.selectOne(wrapper_organization);
|
//根据id查询所属设备
|
QueryWrapper<Device> wrapper_device = new QueryWrapper<>();
|
wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId);
|
List<Device> devices = new ArrayList<>();
|
devices = deviceMapper.selectList(wrapper_device);
|
if (devices.size()>0){
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
Date alarmDate = new Date();
|
Date nearDate = new Date();
|
Date previousDate = new Date();
|
try {
|
alarmDate = dateFormat.parse(alarmTime);
|
nearDate = dateFormat.parse(beforTime);
|
previousDate = dateFormat.parse(previousTime);
|
}catch (ParseException e){
|
e.printStackTrace();
|
}
|
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);
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyHourlys) || historyHourlys.size()<1){
|
continue;
|
}
|
HistoryHourly historyHourly = new HistoryHourly();
|
historyHourly = historyHourlys.get(0);
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyHourly)){
|
continue;
|
}
|
Double PM2_5 = null;
|
Double PM10 = null;
|
Double SO2 = null;
|
Double NO2 = null;
|
Double CO = null;
|
Double O3 = null;
|
String value = historyHourly.getValue();
|
JSONObject jsonObject = new JSONObject();
|
jsonObject = JSONObject.parseObject(value);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a34004"))){
|
PM2_5=(Double.parseDouble(jsonObject.get("a34004").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a34002"))){
|
PM10=(Double.parseDouble(jsonObject.get("a34002").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a21026"))){
|
SO2=(Double.parseDouble(jsonObject.get("a21026").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a21004"))){
|
NO2=(Double.parseDouble(jsonObject.get("a21004").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a21005"))){
|
CO=(Double.parseDouble(jsonObject.get("a21005").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(jsonObject.get("a05024"))){
|
O3=(Double.parseDouble(jsonObject.get("a05024").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(PM2_5)){
|
if (PM2_5>75){
|
alarmInfo.setIndex("PM2_5");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a34004"))){
|
previousPM2_5=(Double.parseDouble(previousJsonObject.get("a34004").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousPM2_5) && previousPM2_5!=0){
|
if (PM2_5/previousPM2_5 > 2 || PM2_5/previousPM2_5 == 2){
|
String multiple = String.format("%.2f",PM2_5/previousPM2_5);
|
alarmInfo.setIndex("PM2_5");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiPM2_5 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
if (PM2_5/cityAqiPM2_5 >=1.5){
|
double multiple = PM2_5/cityAqiPM2_5;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("PM2_5");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointPM2_5 = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointPM2_5 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointPM2_5) && PM2_5/govMonitorPointPM2_5 >=1){
|
double multiple = PM2_5/govMonitorPointPM2_5;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("PM2_5");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(PM10)){
|
if (PM10>75150){
|
alarmInfo.setIndex("PM10");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a34002"))){
|
previousPM10=(Double.parseDouble(previousJsonObject.get("a34002").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousPM10) && previousPM10!=0){
|
if (PM10/previousPM10 > 2 || PM10/previousPM10 == 2){
|
String multiple = String.format("%.2f",PM10/previousPM10);
|
alarmInfo.setIndex("PM10");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiPM10 = (Double.parseDouble(previousJsonObject.get("PM10").toString()));
|
if (PM10/cityAqiPM10 >=1.5){
|
double multiple = PM10/cityAqiPM10;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("PM10");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointPM10 = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointPM10 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointPM10) && PM10/govMonitorPointPM10 >=1){
|
double multiple = PM10/govMonitorPointPM10;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("PM10");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(SO2)){
|
if (SO2>500){
|
alarmInfo.setIndex("SO2");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a21026"))){
|
previousSO2=(Double.parseDouble(previousJsonObject.get("a21026").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousSO2) && previousSO2!=0){
|
if (SO2/previousSO2 > 2 || SO2/previousSO2 == 2){
|
String multiple = String.format("%.2f",SO2/previousSO2);
|
alarmInfo.setIndex("SO2");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiSO2 = (Double.parseDouble(previousJsonObject.get("SO2").toString()));
|
if (SO2/cityAqiSO2 >=1.5){
|
double multiple = SO2/cityAqiSO2;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("SO2");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointSO2 = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointSO2 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointSO2) && SO2/govMonitorPointSO2 >=1){
|
double multiple = SO2/govMonitorPointSO2;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("SO2");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(NO2)){
|
if (NO2>200){
|
alarmInfo.setIndex("NO2");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a21004"))){
|
previousNO2=(Double.parseDouble(previousJsonObject.get("a21004").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousNO2) && previousNO2!=0){
|
if (NO2/previousNO2 > 2 || NO2/previousNO2 == 2){
|
String multiple = String.format("%.2f",NO2/previousNO2);
|
alarmInfo.setIndex("NO2");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiNO2 = (Double.parseDouble(previousJsonObject.get("NO2").toString()));
|
if (NO2/cityAqiNO2 >=1.5){
|
double multiple = NO2/cityAqiNO2;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("NO2");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointNO2 = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointNO2 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointNO2) && NO2/govMonitorPointNO2 >=1){
|
double multiple = NO2/govMonitorPointNO2;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("NO2");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(CO)){
|
if (CO>10){
|
alarmInfo.setIndex("CO");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a21005"))){
|
previousCO=(Double.parseDouble(previousJsonObject.get("a21005").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousCO) && previousCO!=0){
|
if (CO/previousCO > 2 || CO/previousCO == 2){
|
String multiple = String.format("%.2f",CO/previousCO);
|
alarmInfo.setIndex("CO");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiCO = (Double.parseDouble(previousJsonObject.get("CO").toString()));
|
if (CO/cityAqiCO >=1.5){
|
double multiple = CO/cityAqiCO;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("CO");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointCO = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointCO = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointCO) && CO/govMonitorPointCO >=1){
|
double multiple = CO/govMonitorPointCO;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("CO");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(O3)){
|
if (O3>200){
|
alarmInfo.setIndex("O3");
|
alarmInfo.setAlarmType("超限");
|
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;
|
List<HistoryHourly> previoushistoryHourlys = null;
|
previoushistoryHourlys = historyHourlyService.getValueByMacAndTime(device.getMac(), previousDate, previousDate);
|
HistoryHourly previousHistoryHourly = new HistoryHourly();
|
if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previoushistoryHourlys) || historyHourlys.size()<1){
|
previousHistoryHourly = previoushistoryHourlys.get(0);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousHistoryHourly)){
|
String previousValue = previousHistoryHourly.getValue();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(previousValue);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("a05024"))){
|
previousO3=(Double.parseDouble(previousJsonObject.get("a05024").toString()));
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousO3) && previousO3!=0){
|
if (O3/previousO3 > 2 || O3/previousO3 == 2){
|
String multiple = String.format("%.2f",O3/previousO3);
|
alarmInfo.setIndex("O3");
|
alarmInfo.setAlarmType("突然高");
|
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;
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(organization)){
|
int cityCode = organization.getCityCode();
|
QueryWrapper<CityAqi> wrapper_cityAqi = new QueryWrapper<>();
|
wrapper_cityAqi.eq("city_code",cityCode).eq("time",previousTime);
|
CityAqi cityAqi = null;
|
cityAqi = cityAqiMapper.selectOne(wrapper_cityAqi);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(cityAqi)){
|
String cityAqiValue = cityAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double cityAqiO3 = (Double.parseDouble(previousJsonObject.get("O3").toString()));
|
if (O3/cityAqiO3 >=1.5){
|
double multiple = O3/cityAqiO3;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}
|
QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("area_code",cityCode);
|
SysArea sysArea = sysAreaMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("O3");
|
alarmInfo.setAlarmType("超过市区均值"+percentage+"%");
|
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;
|
}
|
}
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(device.getGuid())){
|
String guid = device.getGuid();
|
QueryWrapper<HistoryAqi> historyAqiQueryWrapper = new QueryWrapper<>();
|
historyAqiQueryWrapper.eq("guid",guid).eq("time",previousTime);
|
HistoryAqi historyAqi = null;
|
historyAqi = historyAqiMapper.selectOne(historyAqiQueryWrapper);
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(historyAqi)){
|
String cityAqiValue = historyAqi.getValue();
|
JSONObject JsonObject = new JSONObject();
|
JSONObject previousJsonObject = new JSONObject();
|
previousJsonObject = JSONObject.parseObject(cityAqiValue);
|
Double govMonitorPointO3 = null;
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(previousJsonObject.get("PM2_5"))){
|
govMonitorPointO3 = (Double.parseDouble(previousJsonObject.get("PM2_5").toString()));
|
}
|
if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(govMonitorPointO3) && O3/govMonitorPointO3 >=1){
|
double multiple = O3/govMonitorPointO3;
|
int percentage = 0;
|
if (multiple >= 2.5){
|
percentage = 250;
|
}else if (multiple >= 1.5){
|
percentage = 150;
|
}else if (multiple >= 1){
|
percentage = 100;
|
}
|
QueryWrapper<GovMonitorPoint> sysAreaQueryWrapper = new QueryWrapper<>();
|
sysAreaQueryWrapper.eq("guid",guid);
|
GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(sysAreaQueryWrapper);
|
alarmInfo.setIndex("O3");
|
alarmInfo.setAlarmType("超过国控站"+percentage+"%");
|
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;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}catch (Exception e){
|
XxlJobHelper.log(e.getMessage());
|
return new ReturnT(ReturnT.FAIL_CODE,e.getMessage());
|
}
|
return ReturnT.SUCCESS;
|
}
|
|
|
}
|