| | |
| | | package com.moral.api.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.moral.api.entity.Device; |
| | | import com.moral.api.entity.GovMonitorPoint; |
| | | import com.moral.api.entity.HistoryHourly; |
| | | import com.moral.api.entity.Organization; |
| | | import com.moral.api.mapper.DeviceMapper; |
| | | import com.moral.api.mapper.GovMonitorPointMapper; |
| | | import com.moral.api.service.GovMonitorPointService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.moral.api.service.OrganizationService; |
| | | import com.moral.constant.Constants; |
| | | import com.moral.constant.RedisConstants; |
| | | import com.moral.pojo.AQI; |
| | | import com.moral.util.AQIUtils; |
| | | import com.moral.util.RegionCodeUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Service |
| | | public class GovMonitorPointServiceImpl extends ServiceImpl<GovMonitorPointMapper, GovMonitorPoint> implements GovMonitorPointService { |
| | | |
| | | @Autowired |
| | | GovMonitorPointMapper govMonitorPointMapper; |
| | | @Autowired |
| | | RedisTemplate redisTemplate; |
| | | |
| | | @Resource |
| | | private OrganizationService organizationService; |
| | | |
| | | @Autowired(required = false) |
| | | private DeviceMapper deviceMapper; |
| | | |
| | | @Resource |
| | | private HistoryHourlyServiceImpl historyHourlyService; |
| | | |
| | | @Override |
| | | public List<GovMonitorPoint> queryGovMonitorPointAndDataByRegionCode(Integer regionCode,String sensorCode) { |
| | | String regionCodeStr = RegionCodeUtils.regionCodeConvertToName(regionCode); |
| | | QueryWrapper<GovMonitorPoint> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq(regionCodeStr,regionCode); |
| | | wrapper.eq("is_delete", Constants.NOT_DELETE); |
| | | wrapper.select("guid","name","longitude","latitude","station_level"); |
| | | List<GovMonitorPoint> govMonitorPoints = govMonitorPointMapper.selectList(wrapper); |
| | | for (GovMonitorPoint govMonitorPoint : govMonitorPoints) { |
| | | Object data = redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, govMonitorPoint.getGuid()); |
| | | Map<String,Object> dataMap = (Map<String, Object>) data; |
| | | if(data!=null&&dataMap.get(sensorCode)!=null) |
| | | govMonitorPoint.setData(String.valueOf(dataMap.get(sensorCode))); |
| | | } |
| | | return govMonitorPoints; |
| | | } |
| | | |
| | | @Override |
| | | public List<GovMonitorPoint> selectGovMonitorPointsByOrgid(Map map) { |
| | | //根据组织id获取子组织 |
| | | List<Organization> organizations = organizationService.getChildrenOrganizationsById(Integer.parseInt(map.get("organization_id").toString())); |
| | | Set<Integer> organization_ids = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toSet()); |
| | | organization_ids.add(Integer.parseInt(map.get("organization_id").toString())); |
| | | //先获取组织下所有设备 |
| | | QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); |
| | | wrapper_device.in("organization_id",organization_ids).eq("is_delete",Constants.NOT_DELETE); |
| | | List<Device> devices = deviceMapper.selectList(wrapper_device); |
| | | //用集合存放所有设备的id |
| | | Set<String> guids = devices.stream().map(device -> device.getGuid()).collect(Collectors.toSet()); |
| | | //获取所有政府站点信息 |
| | | QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); |
| | | wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).in("guid",guids); |
| | | List<GovMonitorPoint> govMonitorPointList = govMonitorPointMapper.selectList(wrapper_govMonitorPoint); |
| | | return govMonitorPointList; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(Map map) { |
| | | String[] guids = map.get("guids").toString().split(","); |
| | | Integer orgId = Integer.parseInt(map.get("organization_id").toString()); |
| | | String date = map.get("date").toString(); |
| | | String startTime = date+" 00:00:00"; |
| | | String endTime = date+" 23:00:01"; |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//注意月份是MM |
| | | try { |
| | | Date startDate = simpleDateFormat.parse(startTime); |
| | | Date endDate = simpleDateFormat.parse(endTime); |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | List govMonitorPointList = new ArrayList(); |
| | | //声明一个国控站点,存放最后的平均值信息 |
| | | GovMonitorPoint govMonitorPoint_avg = new GovMonitorPoint(); |
| | | govMonitorPoint_avg.setId(0); |
| | | govMonitorPoint_avg.setName(""); |
| | | govMonitorPoint_avg.setGuid(""); |
| | | List<Map<String,Object>> data = new ArrayList<>(); |
| | | Map<String,Object> hour_1 = new HashMap<>(); |
| | | Map<String,Object> hour_2 = new HashMap<>(); |
| | | Map<String,Object> hour_3 = new HashMap<>(); |
| | | Map<String,Object> hour_4 = new HashMap<>(); |
| | | Map<String,Object> hour_5 = new HashMap<>(); |
| | | Map<String,Object> hour_6 = new HashMap<>(); |
| | | Map<String,Object> hour_7 = new HashMap<>(); |
| | | Map<String,Object> hour_8 = new HashMap<>(); |
| | | Map<String,Object> hour_9 = new HashMap<>(); |
| | | Map<String,Object> hour_10 = new HashMap<>(); |
| | | Map<String,Object> hour_11 = new HashMap<>(); |
| | | Map<String,Object> hour_12 = new HashMap<>(); |
| | | Map<String,Object> hour_13 = new HashMap<>(); |
| | | Map<String,Object> hour_14 = new HashMap<>(); |
| | | Map<String,Object> hour_15 = new HashMap<>(); |
| | | Map<String,Object> hour_16 = new HashMap<>(); |
| | | Map<String,Object> hour_17 = new HashMap<>(); |
| | | Map<String,Object> hour_18 = new HashMap<>(); |
| | | Map<String,Object> hour_19 = new HashMap<>(); |
| | | Map<String,Object> hour_20 = new HashMap<>(); |
| | | Map<String,Object> hour_21 = new HashMap<>(); |
| | | Map<String,Object> hour_22 = new HashMap<>(); |
| | | Map<String,Object> hour_23 = new HashMap<>(); |
| | | Map<String,Object> hour_24 = new HashMap<>(); |
| | | Map<String,Object> hour_AVG = new HashMap<>(); |
| | | for (String guid:guids) { |
| | | //获取政府站点信息 |
| | | QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); |
| | | wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).eq("guid",guid); |
| | | GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(wrapper_govMonitorPoint); |
| | | if (!ObjectUtils.isEmpty(govMonitorPoint)){ |
| | | govMonitorPointList.add(govMonitorPoint); |
| | | }else { |
| | | continue; |
| | | } |
| | | int govMonitorPointId = govMonitorPoint.getId(); |
| | | QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); |
| | | wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId).eq("guid",guid); |
| | | List<Device> devices = deviceMapper.selectList(wrapper_device); |
| | | List<String> macs = devices.stream().map(device -> device.getMac()).collect(Collectors.toList()); |
| | | List<List<HistoryHourly>> oneGovMonitorPointDevicesValue = new ArrayList(); |
| | | for (String mac:macs) { |
| | | List<HistoryHourly> valueByMacAndTime = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate); |
| | | oneGovMonitorPointDevicesValue.add(valueByMacAndTime); |
| | | } |
| | | List<Double> PM2_5List_daliy = new ArrayList<>(); |
| | | List<Double> PM10List_daliy = new ArrayList<>(); |
| | | List<Double> SO2List_daliy = new ArrayList<>(); |
| | | List<Double> NO2List_daliy = new ArrayList<>(); |
| | | List<Double> COList_daliy = new ArrayList<>(); |
| | | List<Double> O3_1hList_daliy = new ArrayList<>(); |
| | | List<Double> O3_8hList_daliy = new ArrayList<>(); |
| | | Map<Integer,Double> O3_1hMap = new HashMap<>(); |
| | | for (int i=0; i<24; i++){ |
| | | //声明一个Map,存放当前政府站点的六参和臭氧八小时滑动平均值数据 |
| | | Map<String,Object> oneGovMonitorPointOneHourData = new HashMap<>(); |
| | | String time_hourly = ""; |
| | | if (i<10){ |
| | | time_hourly = date+" 0"+i+":00:00"; |
| | | }else { |
| | | time_hourly = date+" "+i+":00:00"; |
| | | } |
| | | List<Double> PM2_5List = new ArrayList<>(); |
| | | List<Double> PM10List = new ArrayList<>(); |
| | | List<Double> SO2List = new ArrayList<>(); |
| | | List<Double> NO2List = new ArrayList<>(); |
| | | List<Double> COList = new ArrayList<>(); |
| | | List<Double> O3_1hList = new ArrayList<>(); |
| | | for (List<HistoryHourly> valueByMacAndTime:oneGovMonitorPointDevicesValue) { |
| | | for (HistoryHourly historyHourly:valueByMacAndTime) { |
| | | if (simpleDateFormat.format(historyHourly.getTime()).equals(time_hourly)){ |
| | | JSONObject value = JSONObject.parseObject(historyHourly.getValue()); |
| | | if (!ObjectUtils.isEmpty(value.get("a34004"))){ |
| | | PM2_5List.add(Double.parseDouble(value.get("a34004").toString())); |
| | | } |
| | | if (!ObjectUtils.isEmpty(value.get("a34002"))){ |
| | | PM10List.add(Double.parseDouble(value.get("a34002").toString())); |
| | | } |
| | | if (!ObjectUtils.isEmpty(value.get("a21026"))){ |
| | | SO2List.add(Double.parseDouble(value.get("a21026").toString())); |
| | | } |
| | | if (!ObjectUtils.isEmpty(value.get("a21004"))){ |
| | | NO2List.add(Double.parseDouble(value.get("a21004").toString())); |
| | | } |
| | | if (!ObjectUtils.isEmpty(value.get("a21005"))){ |
| | | COList.add(Double.parseDouble(value.get("a21005").toString())); |
| | | } |
| | | if (!ObjectUtils.isEmpty(value.get("a05024"))){ |
| | | O3_1hList.add(Double.parseDouble(value.get("a05024").toString())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | Double PM2_5Avg = null; |
| | | Double PM10Avg = null; |
| | | Double SO2Avg = null; |
| | | Double NO2Avg = null; |
| | | Double COAvg = null; |
| | | Double O3_1hAvg = null; |
| | | if (PM2_5List.size()>0){ |
| | | PM2_5Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (PM10List.size()>0){ |
| | | PM10Avg = (double)Math.round(PM10List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (SO2List.size()>0){ |
| | | SO2Avg = (double)Math.round(SO2List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (NO2List.size()>0){ |
| | | NO2Avg = (double)Math.round(NO2List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (COList.size()>0){ |
| | | COAvg = new BigDecimal(COList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | if (O3_1hList.size()>0){ |
| | | O3_1hAvg = (double)Math.round(O3_1hList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5Avg)){ |
| | | PM2_5List_daliy.add(PM2_5Avg); |
| | | oneGovMonitorPointOneHourData.put("a34004_"+govMonitorPointId,PM2_5Avg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a34004_"+govMonitorPointId,null); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM10Avg)){ |
| | | PM10List_daliy.add(PM10Avg); |
| | | oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,PM10Avg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,null); |
| | | } |
| | | if (!ObjectUtils.isEmpty(SO2Avg)){ |
| | | SO2List_daliy.add(SO2Avg); |
| | | oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,SO2Avg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,null); |
| | | } |
| | | if (!ObjectUtils.isEmpty(NO2Avg)){ |
| | | NO2List_daliy.add(NO2Avg); |
| | | oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,NO2Avg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,null); |
| | | } |
| | | if (!ObjectUtils.isEmpty(COAvg)){ |
| | | COList_daliy.add(COAvg); |
| | | oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,COAvg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,null); |
| | | } |
| | | if (!ObjectUtils.isEmpty(O3_1hAvg)){ |
| | | O3_1hList_daliy.add(O3_1hAvg); |
| | | oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,O3_1hAvg); |
| | | O3_1hMap.put(i,O3_1hAvg); |
| | | }else { |
| | | oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,null); |
| | | } |
| | | Double O3_8h = null; |
| | | //当前时间 |
| | | Date now = new Date(); |
| | | SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | //获取今天的日期 |
| | | String nowDay = sf.format(now); |
| | | //对比的时间 |
| | | //String day = sf.format(date); |
| | | int curHour24 = 25; |
| | | if (date.equals(nowDay)){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | curHour24 = calendar.get(calendar.HOUR_OF_DAY); |
| | | } |
| | | if (i>=7){ |
| | | List<Double> O3_8hList = new ArrayList<>(); |
| | | for (Integer key:O3_1hMap.keySet()){ |
| | | if (i-8<key && key<i+1){ |
| | | O3_8hList.add(O3_1hMap.get(key)); |
| | | O3_8hList_daliy.add(O3_1hMap.get(key)); |
| | | } |
| | | } |
| | | if (i<curHour24){ |
| | | if (O3_8hList.size()>0){ |
| | | O3_8h = (double)Math.round(O3_8hList.stream().mapToDouble(aDouble ->aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | } |
| | | } |
| | | oneGovMonitorPointOneHourData.put("O3_8h_"+govMonitorPointId,O3_8h); |
| | | switch (i){ |
| | | case 0:hour_1.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 1:hour_2.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 2:hour_3.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 3:hour_4.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 4:hour_5.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 5:hour_6.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 6:hour_7.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 7:hour_8.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 8:hour_9.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 9:hour_10.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 10:hour_11.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 11:hour_12.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 12:hour_13.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 13:hour_14.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 14:hour_15.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 15:hour_16.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 16:hour_17.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 17:hour_18.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 18:hour_19.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 19:hour_20.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 20:hour_21.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 21:hour_22.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 22:hour_23.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | case 23:hour_24.putAll(oneGovMonitorPointOneHourData); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | Double PM2_5Avg_daliy = null; |
| | | Double PM10Avg_daliy = null; |
| | | Double SO2Avg_daliy = null; |
| | | Double NO2Avg_daliy = null; |
| | | Double COAvg_daliy = null; |
| | | Double O3_1hAvg_daliy = null; |
| | | Double O3_8hAvg_daliy = null; |
| | | if (PM2_5List_daliy.size()>0){ |
| | | PM2_5Avg_daliy = (double)Math.round(PM2_5List_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (PM10List_daliy.size()>0){ |
| | | PM10Avg_daliy = (double)Math.round(PM10List_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (SO2List_daliy.size()>0){ |
| | | SO2Avg_daliy = (double)Math.round(SO2List_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (NO2List_daliy.size()>0){ |
| | | NO2Avg_daliy = (double)Math.round(NO2List_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (COList_daliy.size()>0){ |
| | | COAvg_daliy = new BigDecimal(COList_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | if (O3_1hList_daliy.size()>0){ |
| | | O3_1hAvg_daliy = (double)Math.round(O3_1hList_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (O3_8hList_daliy.size()>0){ |
| | | O3_8hAvg_daliy = (double)Math.round(O3_8hList_daliy.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | hour_AVG.put("a34004_"+govMonitorPointId,PM2_5Avg_daliy); |
| | | hour_AVG.put("a34002_"+govMonitorPointId,PM10Avg_daliy); |
| | | hour_AVG.put("a21026_"+govMonitorPointId,SO2Avg_daliy); |
| | | hour_AVG.put("a21004_"+govMonitorPointId,NO2Avg_daliy); |
| | | hour_AVG.put("a21005_"+govMonitorPointId,COAvg_daliy); |
| | | hour_AVG.put("a05024_"+govMonitorPointId,O3_1hAvg_daliy); |
| | | hour_AVG.put("O3_8h_"+govMonitorPointId,O3_8hAvg_daliy); |
| | | } |
| | | Map<Integer,Map<String,Object>> replaceDataMap = new HashMap<>(); |
| | | replaceDataMap.put(0,hour_1); |
| | | replaceDataMap.put(1,hour_2); |
| | | replaceDataMap.put(2,hour_3); |
| | | replaceDataMap.put(3,hour_4); |
| | | replaceDataMap.put(4,hour_5); |
| | | replaceDataMap.put(5,hour_6); |
| | | replaceDataMap.put(6,hour_7); |
| | | replaceDataMap.put(7,hour_8); |
| | | replaceDataMap.put(8,hour_9); |
| | | replaceDataMap.put(9,hour_10); |
| | | replaceDataMap.put(10,hour_11); |
| | | replaceDataMap.put(11,hour_12); |
| | | replaceDataMap.put(12,hour_13); |
| | | replaceDataMap.put(13,hour_14); |
| | | replaceDataMap.put(14,hour_15); |
| | | replaceDataMap.put(15,hour_16); |
| | | replaceDataMap.put(16,hour_17); |
| | | replaceDataMap.put(17,hour_18); |
| | | replaceDataMap.put(18,hour_19); |
| | | replaceDataMap.put(19,hour_20); |
| | | replaceDataMap.put(20,hour_21); |
| | | replaceDataMap.put(21,hour_22); |
| | | replaceDataMap.put(22,hour_23); |
| | | replaceDataMap.put(23,hour_24); |
| | | replaceDataMap.put(24,hour_AVG); |
| | | for (int i=0;i<25;i++){ |
| | | List<Double> PM2_5AllList = new ArrayList<>(); |
| | | List<Double> PM10AllList = new ArrayList<>(); |
| | | List<Double> SO2AllList = new ArrayList<>(); |
| | | List<Double> NO2AllList = new ArrayList<>(); |
| | | List<Double> COAllList = new ArrayList<>(); |
| | | List<Double> O3_1hAllList = new ArrayList<>(); |
| | | List<Double> O3_8hAllList = new ArrayList<>(); |
| | | for (String guid:guids) { |
| | | //获取政府站点信息 |
| | | QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); |
| | | wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).eq("guid",guid); |
| | | GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(wrapper_govMonitorPoint); |
| | | if (ObjectUtils.isEmpty(govMonitorPoint)){ |
| | | continue; |
| | | } |
| | | int govMonitorPointId = govMonitorPoint.getId(); |
| | | |
| | | Map<String,Object> replaceMap = new HashMap<>(); |
| | | replaceMap = replaceDataMap.get(i); |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a34004_"+govMonitorPointId))){ |
| | | PM2_5AllList.add((double)replaceMap.get("a34004_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a34002_"+govMonitorPointId))){ |
| | | PM10AllList.add((double)replaceMap.get("a34002_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a21026_"+govMonitorPointId))){ |
| | | SO2AllList.add((double)replaceMap.get("a21026_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a21004_"+govMonitorPointId))){ |
| | | NO2AllList.add((double)replaceMap.get("a21004_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a21005_"+govMonitorPointId))){ |
| | | COAllList.add((double)replaceMap.get("a21005_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("a05024_"+govMonitorPointId))){ |
| | | O3_1hAllList.add((double)replaceMap.get("a05024_"+govMonitorPointId)); |
| | | } |
| | | if (!ObjectUtils.isEmpty(replaceMap.get("O3_8h_"+govMonitorPointId))){ |
| | | O3_8hAllList.add((double)replaceMap.get("O3_8h_"+govMonitorPointId)); |
| | | } |
| | | } |
| | | Double PM2_5 = null; |
| | | Double PM10 = null; |
| | | Double SO2 = null; |
| | | Double NO2 = null; |
| | | Double CO = null; |
| | | Double O3_1h = null; |
| | | Double O3_8h = null; |
| | | if (PM2_5AllList.size()>0){ |
| | | PM2_5 = (double)Math.round(PM2_5AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (PM10AllList.size()>0){ |
| | | PM10 = (double)Math.round(PM10AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (SO2AllList.size()>0){ |
| | | SO2 = (double)Math.round(SO2AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (NO2AllList.size()>0){ |
| | | NO2 = (double)Math.round(NO2AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (COAllList.size()>0){ |
| | | CO = new BigDecimal(COAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | } |
| | | if (O3_1hAllList.size()>0){ |
| | | O3_1h = (double)Math.round(O3_1hAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | if (O3_8hAllList.size()>0){ |
| | | O3_8h = (double)Math.round(O3_8hAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()); |
| | | } |
| | | Map<String,Object> AQIMap = new HashMap<>(); |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a34004",PM2_5); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a34002",PM10); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a21026",SO2); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a21004",NO2); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a21005",CO); |
| | | } |
| | | if (!ObjectUtils.isEmpty(PM2_5)){ |
| | | AQIMap.put("a05024",O3_1h); |
| | | } |
| | | AQI aqi = new AQI(); |
| | | if (AQIMap.size()!=0){ |
| | | aqi = AQIUtils.hourlyAQI(AQIMap); |
| | | } |
| | | Map<String,Object> avgMap = new HashMap<>(); |
| | | avgMap.put("a34004_"+"0",PM2_5); |
| | | avgMap.put("a34002_"+"0",PM10); |
| | | avgMap.put("a21026_"+"0",SO2); |
| | | avgMap.put("a21004_"+"0",NO2); |
| | | avgMap.put("a21005_"+"0",CO); |
| | | avgMap.put("a05024_"+"0",O3_1h); |
| | | avgMap.put("O3_8h_"+"0",O3_8h); |
| | | if (!ObjectUtils.isEmpty(aqi.getAQIValue())){ |
| | | avgMap.put("aqi",aqi.getAQIValue()); |
| | | }else { |
| | | avgMap.put("aqi",""); |
| | | } |
| | | if (!ObjectUtils.isEmpty(aqi.getPrimaryPollutantNames())){ |
| | | if (Integer.parseInt(aqi.getAQIValue().toString())>50){ |
| | | String pollutant = aqi.getPrimaryPollutantNames().toString(); |
| | | pollutant = pollutant.replace("[",""); |
| | | pollutant = pollutant.replace("]",""); |
| | | avgMap.put("pollutant",pollutant); |
| | | }else { |
| | | avgMap.put("pollutant","-"); |
| | | } |
| | | }else { |
| | | avgMap.put("aqi",""); |
| | | } |
| | | switch (i){ |
| | | case 0:hour_1.putAll(avgMap); |
| | | break; |
| | | case 1:hour_2.putAll(avgMap); |
| | | break; |
| | | case 2:hour_3.putAll(avgMap); |
| | | break; |
| | | case 3:hour_4.putAll(avgMap); |
| | | break; |
| | | case 4:hour_5.putAll(avgMap); |
| | | break; |
| | | case 5:hour_6.putAll(avgMap); |
| | | break; |
| | | case 6:hour_7.putAll(avgMap); |
| | | break; |
| | | case 7:hour_8.putAll(avgMap); |
| | | break; |
| | | case 8:hour_9.putAll(avgMap); |
| | | break; |
| | | case 9:hour_10.putAll(avgMap); |
| | | break; |
| | | case 10:hour_11.putAll(avgMap); |
| | | break; |
| | | case 11:hour_12.putAll(avgMap); |
| | | break; |
| | | case 12:hour_13.putAll(avgMap); |
| | | break; |
| | | case 13:hour_14.putAll(avgMap); |
| | | break; |
| | | case 14:hour_15.putAll(avgMap); |
| | | break; |
| | | case 15:hour_16.putAll(avgMap); |
| | | break; |
| | | case 16:hour_17.putAll(avgMap); |
| | | break; |
| | | case 17:hour_18.putAll(avgMap); |
| | | break; |
| | | case 18:hour_19.putAll(avgMap); |
| | | break; |
| | | case 19:hour_20.putAll(avgMap); |
| | | break; |
| | | case 20:hour_21.putAll(avgMap); |
| | | break; |
| | | case 21:hour_22.putAll(avgMap); |
| | | break; |
| | | case 22:hour_23.putAll(avgMap); |
| | | break; |
| | | case 23:hour_24.putAll(avgMap); |
| | | break; |
| | | case 24:hour_AVG.putAll(avgMap); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | hour_1.put("time","1时"); |
| | | hour_2.put("time","2时"); |
| | | hour_3.put("time","3时"); |
| | | hour_4.put("time","4时"); |
| | | hour_5.put("time","5时"); |
| | | hour_6.put("time","6时"); |
| | | hour_7.put("time","7时"); |
| | | hour_8.put("time","8时"); |
| | | hour_9.put("time","9时"); |
| | | hour_10.put("time","10时"); |
| | | hour_11.put("time","11时"); |
| | | hour_12.put("time","12时"); |
| | | hour_13.put("time","13时"); |
| | | hour_14.put("time","14时"); |
| | | hour_15.put("time","15时"); |
| | | hour_16.put("time","16时"); |
| | | hour_17.put("time","17时"); |
| | | hour_18.put("time","18时"); |
| | | hour_19.put("time","19时"); |
| | | hour_20.put("time","20时"); |
| | | hour_21.put("time","21时"); |
| | | hour_22.put("time","22时"); |
| | | hour_23.put("time","23时"); |
| | | hour_24.put("time","0时"); |
| | | hour_AVG.put("time","均值"); |
| | | data.add(hour_1); |
| | | data.add(hour_2); |
| | | data.add(hour_3); |
| | | data.add(hour_4); |
| | | data.add(hour_5); |
| | | data.add(hour_6); |
| | | data.add(hour_7); |
| | | data.add(hour_8); |
| | | data.add(hour_9); |
| | | data.add(hour_10); |
| | | data.add(hour_11); |
| | | data.add(hour_12); |
| | | data.add(hour_13); |
| | | data.add(hour_14); |
| | | data.add(hour_15); |
| | | data.add(hour_16); |
| | | data.add(hour_17); |
| | | data.add(hour_18); |
| | | data.add(hour_19); |
| | | data.add(hour_20); |
| | | data.add(hour_21); |
| | | data.add(hour_22); |
| | | data.add(hour_23); |
| | | data.add(hour_24); |
| | | data.add(hour_AVG); |
| | | resultMap.put("title",date+"月报"); |
| | | resultMap.put("data",data); |
| | | govMonitorPointList.add(govMonitorPoint_avg); |
| | | resultMap.put("govMonitorPoint",govMonitorPointList); |
| | | return resultMap; |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | } |