From 6c90be39beb1d8c2300cd22e1338dcbbf9775ac7 Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Thu, 18 Nov 2021 09:46:34 +0800 Subject: [PATCH] 污染报警信息定时任务 --- screen-job/src/main/resources/mapper/SysAreaMapper.xml | 12 screen-job/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java | 20 + screen-job/src/main/resources/mapper/AlarmInfoMapper.xml | 16 screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java | 40 ++ screen-job/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java | 20 + screen-job/src/main/java/com/moral/api/entity/AlarmInfo.java | 71 +++ screen-job/src/main/java/com/moral/api/task/AlarmTask.java | 794 +++++++++++++++++++++++++++++++++++++++++ screen-job/src/main/java/com/moral/api/service/AlarmInfoService.java | 16 screen-job/src/main/java/com/moral/api/entity/SysArea.java | 43 ++ screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java | 16 screen-job/src/main/java/com/moral/api/service/SysAreaService.java | 16 screen-job/src/main/java/com/moral/api/service/OrganizationService.java | 11 screen-job/src/main/java/com/moral/api/mapper/SysAreaMapper.java | 16 13 files changed, 1,091 insertions(+), 0 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/entity/AlarmInfo.java b/screen-job/src/main/java/com/moral/api/entity/AlarmInfo.java new file mode 100644 index 0000000..f17ac51 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/entity/AlarmInfo.java @@ -0,0 +1,71 @@ +package com.moral.api.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * + * </p> + * + * @author moral + * @since 2021-11-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class AlarmInfo extends Model<AlarmInfo> { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * ������������ + */ + private Date alarmTime; + + /** + * ������������������ + */ + @TableField("`index`") + private String index; + + /** + * ������������������ + */ + private Integer deviceId; + + /** + * ������������ + */ + private String alarmType; + + /** + * ������������ + */ + private String alarmInformation; + + /** + * ������������ + */ + private LocalDateTime createTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/screen-job/src/main/java/com/moral/api/entity/SysArea.java b/screen-job/src/main/java/com/moral/api/entity/SysArea.java new file mode 100644 index 0000000..ed2dde3 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/entity/SysArea.java @@ -0,0 +1,43 @@ +package com.moral.api.entity; + +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * ��������������� + * </p> + * + * @author moral + * @since 2021-11-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysArea extends Model<SysArea> { + + private static final long serialVersionUID = 1L; + + /** + * ������������ + */ + private Integer areaCode; + + /** + * ������������ + */ + private String areaName; + + /** + * ������������ + */ + private Integer parentCode; + + + @Override + protected Serializable pkVal() { + return this.areaCode; + } + +} diff --git a/screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java b/screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java new file mode 100644 index 0000000..3918cc5 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java @@ -0,0 +1,16 @@ +package com.moral.api.mapper; + +import com.moral.api.entity.AlarmInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * Mapper ������ + * </p> + * + * @author moral + * @since 2021-11-12 + */ +public interface AlarmInfoMapper extends BaseMapper<AlarmInfo> { + +} diff --git a/screen-job/src/main/java/com/moral/api/mapper/SysAreaMapper.java b/screen-job/src/main/java/com/moral/api/mapper/SysAreaMapper.java new file mode 100644 index 0000000..ed51a43 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/mapper/SysAreaMapper.java @@ -0,0 +1,16 @@ +package com.moral.api.mapper; + +import com.moral.api.entity.SysArea; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * ��������������� Mapper ������ + * </p> + * + * @author moral + * @since 2021-11-15 + */ +public interface SysAreaMapper extends BaseMapper<SysArea> { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/AlarmInfoService.java b/screen-job/src/main/java/com/moral/api/service/AlarmInfoService.java new file mode 100644 index 0000000..1422563 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/AlarmInfoService.java @@ -0,0 +1,16 @@ +package com.moral.api.service; + +import com.moral.api.entity.AlarmInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * ��������� + * </p> + * + * @author moral + * @since 2021-11-12 + */ +public interface AlarmInfoService extends IService<AlarmInfo> { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/OrganizationService.java b/screen-job/src/main/java/com/moral/api/service/OrganizationService.java index e92210b..e5cb484 100644 --- a/screen-job/src/main/java/com/moral/api/service/OrganizationService.java +++ b/screen-job/src/main/java/com/moral/api/service/OrganizationService.java @@ -3,6 +3,8 @@ import com.moral.api.entity.Organization; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * <p> * ��������� ��������� @@ -15,4 +17,13 @@ Organization getOrganizationById(int id); + /** + *@Description: ������������������������������������ + *@Param: [parentId] + *@return: java.util.List<com.moral.api.entity.Organization> + *@Author: lizijie + *@Date: 2021/11/9 16:48 + **/ + List<Organization> getAllChildrenOrganization(Integer parentId); + } diff --git a/screen-job/src/main/java/com/moral/api/service/SysAreaService.java b/screen-job/src/main/java/com/moral/api/service/SysAreaService.java new file mode 100644 index 0000000..0c8cb4a --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/SysAreaService.java @@ -0,0 +1,16 @@ +package com.moral.api.service; + +import com.moral.api.entity.SysArea; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * ��������������� ��������� + * </p> + * + * @author moral + * @since 2021-11-15 + */ +public interface SysAreaService extends IService<SysArea> { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java new file mode 100644 index 0000000..d42f834 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.moral.api.service.impl; + +import com.moral.api.entity.AlarmInfo; +import com.moral.api.mapper.AlarmInfoMapper; +import com.moral.api.service.AlarmInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * ��������������� + * </p> + * + * @author moral + * @since 2021-11-12 + */ +@Service +public class AlarmInfoServiceImpl extends ServiceImpl<AlarmInfoMapper, AlarmInfo> implements AlarmInfoService { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java index c4ffa83..a3f40e0 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java @@ -8,6 +8,10 @@ import com.moral.constant.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.ArrayList; +import java.util.List; /** * <p> @@ -31,4 +35,40 @@ Organization organization = organizationMapper.selectOne(wrapper_organization); return organization; } + + /** + * @Description: ������������������������������������ + * @Param: [] + * @return: java.util.List<com.moral.api.entity.Organization> + * @Author: ��������� + * @Date: 2021/4/14 + */ + @Override + public List<Organization> getAllChildrenOrganization(Integer parentId) { + List<Organization> children = new ArrayList<>(); + recursionQueryChildren(parentId, children); + return children; + } + + /** + * @Description: ���������������������������������������������������children��� + * @Param: [parent, children] + * @return: void + * @Author: ��������� + * @Date: 2021/4/14 + */ + private void recursionQueryChildren(Integer parentId, List<Organization> children) { + QueryWrapper<Organization> queryWrapper = new QueryWrapper(); + queryWrapper.eq("is_delete", Constants.NOT_DELETE); + queryWrapper.eq("parent_id", parentId); + List<Organization> organizations = organizationMapper.selectList(queryWrapper); + if (!ObjectUtils.isEmpty(organizations)) { + children.addAll(organizations); + for (Organization organization : organizations) { + recursionQueryChildren(organization.getId(), children); + } + } else { + return; + } + } } diff --git a/screen-job/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java new file mode 100644 index 0000000..bb3c36e --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java @@ -0,0 +1,20 @@ +package com.moral.api.service.impl; + +import com.moral.api.entity.SysArea; +import com.moral.api.mapper.SysAreaMapper; +import com.moral.api.service.SysAreaService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * ��������������� ��������������� + * </p> + * + * @author moral + * @since 2021-11-15 + */ +@Service +public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService { + +} diff --git a/screen-job/src/main/java/com/moral/api/task/AlarmTask.java b/screen-job/src/main/java/com/moral/api/task/AlarmTask.java new file mode 100644 index 0000000..31bc955 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/task/AlarmTask.java @@ -0,0 +1,794 @@ +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 informationInsert(){ + String params = XxlJobHelper.getJobParam(); + 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(); + alarmInfo.setAlarmTime(alarmDate); + int deviceId = device.getId(); + alarmInfo.setDeviceId(deviceId); + 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); + 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); + 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("������������������"+multiple+"%"); + String alarmInformation = "["+device.getName()+"][PM2.5]���������["+PM2_5+"]������["+sysArea.getAreaName()+"]������["+cityAqiPM2_5+"]���"+percentage+"%"; + alarmInfo.setAlarmInformation(alarmInformation); + alarmInfoMapper.insert(alarmInfo); + 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("���������������"+multiple+"%"); + String alarmInformation = "["+device.getName()+"][PM2.5]���������["+PM2_5+"]������["+govMonitorPoint.getName()+"]������["+govMonitorPointPM2_5+"]���"+percentage+"%"; + alarmInfo.setAlarmInformation(alarmInformation); + alarmInfoMapper.insert(alarmInfo); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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); + continue; + } + } + } + } + } + } + } + return ReturnT.SUCCESS; + } + + +} diff --git a/screen-job/src/main/resources/mapper/AlarmInfoMapper.xml b/screen-job/src/main/resources/mapper/AlarmInfoMapper.xml new file mode 100644 index 0000000..7cf5bc0 --- /dev/null +++ b/screen-job/src/main/resources/mapper/AlarmInfoMapper.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.moral.api.mapper.AlarmInfoMapper"> + + <!-- ������������������������ --> + <resultMap id="BaseResultMap" type="com.moral.api.entity.AlarmInfo"> + <id column="id" property="id" /> + <result column="alarm_time" property="alarmTime" /> + <result column="index" property="index" /> + <result column="device_id" property="deviceId" /> + <result column="alarm_type" property="alarmType" /> + <result column="alarm_information" property="alarmInformation" /> + <result column="create_time" property="createTime" /> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/screen-job/src/main/resources/mapper/SysAreaMapper.xml b/screen-job/src/main/resources/mapper/SysAreaMapper.xml new file mode 100644 index 0000000..97e12e8 --- /dev/null +++ b/screen-job/src/main/resources/mapper/SysAreaMapper.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.moral.api.mapper.SysAreaMapper"> + + <!-- ������������������������ --> + <resultMap id="BaseResultMap" type="com.moral.api.entity.SysArea"> + <id column="area_code" property="areaCode" /> + <result column="area_name" property="areaName" /> + <result column="parent_code" property="parentCode" /> + </resultMap> + +</mapper> \ No newline at end of file -- Gitblit v1.8.0