From 5586964c3e63f95c9e460a6a3d85d7dca408e096 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Mon, 18 Oct 2021 14:35:39 +0800 Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev --- screen-job/src/main/java/com/moral/api/task/InformationTask.java | 269 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 269 insertions(+), 0 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/task/InformationTask.java b/screen-job/src/main/java/com/moral/api/task/InformationTask.java new file mode 100644 index 0000000..d4d931a --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/task/InformationTask.java @@ -0,0 +1,269 @@ +package com.moral.api.task; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.moral.api.entity.*; +import com.moral.api.service.*; +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 java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @program: screen + * @description: ������������������������������ + * @author: lizijie + * @create: 2021-10-12 08:53 + **/ +@Component +public class InformationTask { + + @Autowired + private OrganizationService organizationService; + + @Autowired + private GovMonitorPointService govMonitorPointService; + + @Autowired + private HistoryAqiService historyAqiService; + + @Autowired + private DeviceService deviceService; + + @Autowired + private HistoryHourlyService historyHourlyService; + + @Autowired + private CityWeatherService cityWeatherService; + + @Autowired + private InformationService informationService; + + @XxlJob("informationInsert") + public ReturnT informationInsert(){ + String params = XxlJobHelper.getJobParam(); + Map organizationIdMap = JSON.parseObject(params); + List<Integer> orgIdList = (List<Integer>) organizationIdMap.get("orgId"); + Calendar nowCalendar = Calendar.getInstance(); + Calendar beforeCalendar = Calendar.getInstance(); + /* HOUR_OF_DAY ������������������������ */ + nowCalendar.set(Calendar.HOUR_OF_DAY, nowCalendar.get(Calendar.HOUR_OF_DAY) - 1); + beforeCalendar.set(Calendar.HOUR_OF_DAY, beforeCalendar.get(Calendar.HOUR_OF_DAY) - 2); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH"); + String nowTime = df.format(nowCalendar.getTime())+":00:00"; + String beforeTime = df.format(beforeCalendar.getTime())+":00:00"; + String realTime = df.format(new Date())+":00:00"; + for (Integer orgId:orgIdList) { + if (!ObjectUtils.isEmpty(organizationService.getOrganizationById(orgId))){ + Organization organization = organizationService.getOrganizationById(orgId); + Integer locationLevelCode = organization.getLocationLevelCode(); + List<GovMonitorPoint> govMonitorPoints = govMonitorPointService.getGovMonitorPointByRegionCode(locationLevelCode); + Double PM2_5AvgBefore = null; + Double PM10AvgBefore = null; + Double O3AvgBefore = null; + Double PM2_5AvgNow = null; + Double PM10AvgNow = null; + Double O3AvgNow = null; + Double AQIAvgNow = null; + Double TVOCAvgNow = null; + Double TVOCAvgBefore = null; + if (govMonitorPoints.size()>0){ + List<Double> PM2_5ListBefore = new ArrayList<>(); + List<Double> PM10ListBefore = new ArrayList<>(); + List<Double> O3ListBefore = new ArrayList<>(); + List<Double> PM2_5ListNow = new ArrayList<>(); + List<Double> PM10ListNow = new ArrayList<>(); + List<Double> O3ListNow = new ArrayList<>(); + List<Double> AQIListNow = new ArrayList<>(); + for (GovMonitorPoint govMonitorPoint:govMonitorPoints) { + String guid = govMonitorPoint.getGuid(); + HistoryAqi beforeHistoryAqi = new HistoryAqi(); + beforeHistoryAqi = historyAqiService.getHistoryApiByTimeAndGuid(guid,beforeTime); + if (!ObjectUtils.isEmpty(beforeHistoryAqi)){ + String value = beforeHistoryAqi.getValue(); + if (!ObjectUtils.isEmpty(value)){ + JSONObject jsonObject = new JSONObject(); + jsonObject = JSONObject.parseObject(value); + if (!ObjectUtils.isEmpty(jsonObject.get("pm2_5"))){ + PM2_5ListBefore.add(Double.parseDouble(jsonObject.get("pm2_5").toString())); + } + if (!ObjectUtils.isEmpty(jsonObject.get("pm10"))){ + PM10ListBefore.add(Double.parseDouble(jsonObject.get("pm10").toString())); + } + if (!ObjectUtils.isEmpty(jsonObject.get("o3"))){ + O3ListBefore.add(Double.parseDouble(jsonObject.get("o3").toString())); + } + } + } + HistoryAqi nowHistoryAqi = new HistoryAqi(); + nowHistoryAqi = historyAqiService.getHistoryApiByTimeAndGuid(guid,nowTime); + if (!ObjectUtils.isEmpty(nowHistoryAqi)){ + String value = nowHistoryAqi.getValue(); + if (!ObjectUtils.isEmpty(value)){ + JSONObject jsonObject = JSONObject.parseObject(value); + if (!ObjectUtils.isEmpty(jsonObject.get("pm2_5"))){ + PM2_5ListNow.add(Double.parseDouble(jsonObject.get("pm2_5").toString())); + } + if (!ObjectUtils.isEmpty(jsonObject.get("pm10"))){ + PM10ListNow.add(Double.parseDouble(jsonObject.get("pm10").toString())); + } + if (!ObjectUtils.isEmpty(jsonObject.get("o3"))){ + O3ListNow.add(Double.parseDouble(jsonObject.get("o3").toString())); + } + if (!ObjectUtils.isEmpty(jsonObject.get("aqi"))){ + AQIListNow.add(Double.parseDouble(jsonObject.get("aqi").toString())); + } + } + } + } + if (PM2_5ListBefore.size()>0){ + PM2_5AvgBefore = (double)Math.round(PM2_5ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (PM10ListBefore.size()>0){ + PM10AvgBefore = (double)Math.round(PM10ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (O3ListBefore.size()>0){ + O3AvgBefore = (double)Math.round(O3ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (PM2_5ListNow.size()>0){ + PM2_5AvgNow = (double)Math.round(PM2_5ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (PM10ListNow.size()>0){ + PM10AvgNow = (double)Math.round(PM10ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (O3ListNow.size()>0){ + O3AvgNow = (double)Math.round(O3ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (AQIListNow.size()>0){ + AQIAvgNow = (double)Math.round(AQIListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + List<Device> devices = new ArrayList<>(); + devices = deviceService.getDateByOrgId(orgId); + List<Double> TVOCListNow = new ArrayList<>(); + List<Double> TVOCListBefore = new ArrayList<>(); + SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + for (Device device:devices) { + String mac = device.getMac(); + List<HistoryHourly> historyHourliesNow = new ArrayList<>(); + historyHourliesNow = historyHourlyService.getValueByMacAndTime(mac, df1.parse(nowTime), df1.parse(df.format(nowCalendar.getTime()) + ":00:01")); + if (!ObjectUtils.isEmpty(historyHourliesNow) && historyHourliesNow.size()>0){ + String value = historyHourliesNow.get(0).getValue(); + JSONObject jsonObject = JSONObject.parseObject(value); + TVOCListNow.add(Double.parseDouble(jsonObject.get("a99054").toString())); + } + List<HistoryHourly> historyHourliesBefore = new ArrayList<>(); + historyHourliesBefore = historyHourlyService.getValueByMacAndTime("p5dnd7a0392252", df1.parse(beforeTime), df1.parse(df.format(beforeCalendar.getTime()) + ":00:01")); + if (!ObjectUtils.isEmpty(historyHourliesBefore) && historyHourliesBefore.size()>0){ + String value = historyHourliesBefore.get(0).getValue(); + JSONObject jsonObject = JSONObject.parseObject(value); + TVOCListBefore.add(Double.parseDouble(jsonObject.get("a99054").toString())); + } + } + }catch (ParseException e){ + e.printStackTrace(); + } + if (TVOCListNow.size()>0){ + TVOCAvgNow = (double)Math.round(TVOCListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + if (TVOCListBefore.size()>0){ + TVOCAvgBefore = (double)Math.round(TVOCListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); + } + } + String temp = ""; + String humidity = ""; + String windDir = ""; + String windScale = ""; + CityWeather cityWeather = new CityWeather(); + cityWeather = cityWeatherService.getDataByCityCodeAndTime(locationLevelCode.toString(),nowTime); + if (!ObjectUtils.isEmpty(cityWeather)){ + String value = cityWeather.getValue(); + if (!ObjectUtils.isEmpty(value)){ + JSONObject jsonObject = JSONObject.parseObject(value); + if (!ObjectUtils.isEmpty(jsonObject.get("temp"))){ + temp = jsonObject.getString("temp"); + } + if (!ObjectUtils.isEmpty(jsonObject.get("humidity"))){ + humidity = jsonObject.getString("humidity"); + } + if (!ObjectUtils.isEmpty(jsonObject.get("windDir"))){ + windDir = jsonObject.getString("windDir"); + } + if (!ObjectUtils.isEmpty(jsonObject.get("windScale "))){ + windScale = jsonObject.getString("windScale"); + } + } + } + Information information = new Information(); + JSONObject jsonObject = new JSONObject(); + String realHour = realTime.substring(11,13); + String nowHour = nowTime.substring(11,13); + String beforeHour = beforeTime.substring(11,13); + String title = "���"+realHour+"������������������"; + String airInfo = nowHour+"������"; + String AQILevel = ""; + if (!ObjectUtils.isEmpty(AQIAvgNow)){ + airInfo = airInfo + "������AQI���"+AQIAvgNow+"������������"; + if (AQIAvgNow<50 || AQIAvgNow==50){ + AQILevel = "���"; + }else if (AQIAvgNow<100 || AQIAvgNow==100){ + AQILevel = "������"; + }else if (AQIAvgNow<200 || AQIAvgNow==200){ + AQILevel = "������������"; + }else if (AQIAvgNow<300 || AQIAvgNow==300){ + AQILevel = "������������"; + }else{ + AQILevel = "������������"; + } + }else { + airInfo = airInfo + "������AQI���"+"������������"; + } + airInfo = airInfo+AQILevel+"���"; + String PM10Info = ""; + PM10Info = PM10Info+"PM10���"+PM10AvgNow+"������/������������"; + if (!ObjectUtils.isEmpty(PM10AvgBefore) && !ObjectUtils.isEmpty(PM10AvgNow)){ + String upOrDown = (PM10AvgBefore<PM10AvgNow)?"������":"������"; + PM10Info = PM10Info + upOrDown+Math.abs(PM10AvgNow-PM10AvgBefore)+"���"; + } + String PM2_5Info = ""; + PM2_5Info = PM2_5Info+"PM10���"+PM2_5AvgNow+"������/������������"; + if (!ObjectUtils.isEmpty(PM2_5AvgBefore) && !ObjectUtils.isEmpty(PM2_5AvgNow)){ + String upOrDown = (PM2_5AvgBefore<PM2_5AvgNow)?"������":"������"; + PM2_5Info = PM2_5Info + upOrDown+Math.abs(PM2_5AvgNow-PM2_5AvgBefore)+"���"; + } + String O3Info = ""; + O3Info = O3Info+"O3���"+O3AvgNow+"������/������������"; + if (!ObjectUtils.isEmpty(O3AvgBefore) && !ObjectUtils.isEmpty(O3AvgNow)){ + String upOrDown = (O3AvgBefore<PM10AvgNow)?"������":"������"; + O3Info = O3Info + upOrDown+Math.abs(O3AvgNow-O3AvgBefore)+"���"; + } + String TVOCInfo = ""; + TVOCInfo = TVOCInfo+"TVOC���������"+TVOCAvgNow+"������/������������"; + String cityWeatherInfo = ""; + cityWeatherInfo = cityWeatherInfo + "���������������������������"+temp+"������������"+humidity+"%,"+windDir+windScale+"������"; + airInfo = airInfo+"���"+beforeHour+"���������"+PM10Info+PM2_5Info+O3Info+TVOCInfo; + airInfo = airInfo.replace("null",""); + cityWeatherInfo = cityWeatherInfo.replace("null",""); + List info = new ArrayList(); + info.add(airInfo); + info.add(cityWeatherInfo); + String author = "���������������������������"; + jsonObject.put("title",title); + jsonObject.put("info",info); + jsonObject.put("author",author); + + information.setInfo(jsonObject.toString()); + information.setOrganizationId(orgId); + information.setType("0"); + informationService.insert(information); + } + } + return ReturnT.SUCCESS; + } +} -- Gitblit v1.8.0