From fc8fe626f222e024c1c4b45759ef0102174e5b9c Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 12 Apr 2023 09:11:58 +0800 Subject: [PATCH] 添加风场历史小时数据显示 --- screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java | 143 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 134 insertions(+), 9 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java index 8c87541..68f32c2 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java @@ -9,10 +9,12 @@ import com.moral.api.mapper.CityAqiMapper; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.ForecastMapper; +import com.moral.api.mapper.SysAreaMapper; import com.moral.api.pojo.dto.cityAQI.CityPollutionLevel; import com.moral.api.pojo.dto.cityAQI.ConcentrationAndPercent; import com.moral.api.pojo.form.aqi.AirQualityComparisonForm; import com.moral.api.pojo.vo.cityAQI.AirQualityComparisonVO; +import com.moral.api.pojo.vo.cityAQI.CityAreaRangeVO; import com.moral.api.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; @@ -30,6 +32,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -81,6 +84,12 @@ @Autowired private HistoryHourlyService historyHourlyService; + + @Autowired + SpecialCitiesProperties citiesProperties; + + @Autowired + private SysAreaMapper sysAreaMapper; @Override public List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params) { @@ -367,7 +376,7 @@ } }); - //������������O3_8H������,������������O3_8H��������� + //������������O3_8H������,������������O3������8H��������� if (!ObjectUtils.isEmpty(doubles)) { dataMap.put("O3_8H", Collections.max(doubles)); } @@ -629,7 +638,7 @@ /** * @Description: ������������������������ * @Param: [regionCode] - * @return: java.util.Map<java.lang.String, java.lang.Object> + * @return: java.util.Map<java.lang.String , java.lang.Object> * @Author: ��������� * @Date: 2021/10/28 */ @@ -1041,6 +1050,123 @@ return result; } + @Override + public Map<String, Object> countyData(Integer regionCode) { + Map<String,Object> resultMap = new HashMap<>(); + //������������ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH"); + Calendar calendar = Calendar.getInstance(); + int minute = calendar.get(Calendar.MINUTE); + if (minute >= 45){ + calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1); + }else { + calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-2); + } + String time = df.format(calendar.getTime())+":00:00"; + QueryWrapper<CityAqi> cityAqiQueryWrapper = new QueryWrapper<>(); + cityAqiQueryWrapper.likeRight("city_code",regionCode.toString().substring(0,4)); + cityAqiQueryWrapper.ne("city_code",regionCode); + cityAqiQueryWrapper.eq("time",time); + List<CityAqi> cityAqis = cityAqiMapper.selectList(cityAqiQueryWrapper); + QueryWrapper<SysArea> sysAreaQueryWrapper = new QueryWrapper<>(); + sysAreaQueryWrapper.eq("parent_code",regionCode); + List<SysArea> sysAreas = sysAreaMapper.selectList(sysAreaQueryWrapper); + Map<Integer, Object> sysAreaMap = new HashMap<>(); + for (SysArea sysarea:sysAreas) { + sysAreaMap.put(sysarea.getAreaCode(),sysarea.getAreaName()); + } + List<Map<String,Object>> resultList = new ArrayList<>(); + for (CityAqi cityAqi:cityAqis) { + if (!ObjectUtils.isEmpty(cityAqi.getValue())){ + Map<String, Object> cityAqiMap = new HashMap<>(); + String cityAqiValue = cityAqi.getValue(); + JSONObject jsonObject = JSONObject.parseObject(cityAqiValue); + String AQI = "--"; + String PM10 = "--"; + String PM2_5 = "--"; + String SO2 = "--"; + String NO2 = "--"; + String CO = "--"; + String O3 = "--"; + String thirty = "--"; + String forty = "--"; + String fifty = "--"; + String city_name = "--"; + if (!ObjectUtils.isEmpty(jsonObject.get("AQI"))){ + AQI = jsonObject.get("AQI").toString(); + BigDecimal AQI_base = BigDecimal.valueOf(Double.parseDouble(AQI)); + BigDecimal thirty_percent = BigDecimal.valueOf(1.3); + BigDecimal forty_percent = BigDecimal.valueOf(1.4); + BigDecimal fifty_percent = BigDecimal.valueOf(1.5); + Double AQI_thirty = AQI_base.multiply(thirty_percent).doubleValue(); + Double AQI_forty = AQI_base.multiply(forty_percent).doubleValue(); + Double AQI_fifty = AQI_base.multiply(fifty_percent).doubleValue(); + thirty = String.valueOf(Math.round(AQI_thirty)); + forty = String.valueOf(Math.round(AQI_forty)); + fifty = String.valueOf(Math.round(AQI_fifty)); + } + if (!ObjectUtils.isEmpty(jsonObject.get("PM10"))){ + PM10 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("PM10").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("PM2_5"))){ + PM2_5 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("PM2_5").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("SO2"))){ + SO2 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("SO2").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("NO2"))){ + NO2 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("NO2").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("CO"))){ + CO = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("CO").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("O3"))){ + O3 = String.valueOf(Math.round(Double.parseDouble(jsonObject.get("O3").toString()))); + } + if (!ObjectUtils.isEmpty(jsonObject.get("cityName"))){ + city_name = jsonObject.get("cityName").toString(); + } + cityAqiMap.put("AQI",AQI); + cityAqiMap.put("PM10",PM10); + cityAqiMap.put("PM2_5",PM2_5); + cityAqiMap.put("SO2",SO2); + cityAqiMap.put("NO2",NO2); + cityAqiMap.put("CO",CO); + cityAqiMap.put("O3",O3); + cityAqiMap.put("thirty",thirty); + cityAqiMap.put("forty",forty); + cityAqiMap.put("fifty",fifty); + cityAqiMap.put("city_name",city_name); + resultList.add(cityAqiMap); + } + sysAreaMap.remove(cityAqi.getCityCode()); + } + if (sysAreaMap.size()>0){ + for(Integer key:sysAreaMap.keySet()){ + Map<String,Object> nullMap = new HashMap<>(); + nullMap.put("AQI","--"); + nullMap.put("PM10","--"); + nullMap.put("PM2_5","--"); + nullMap.put("SO2","--"); + nullMap.put("NO2","--"); + nullMap.put("CO","--"); + nullMap.put("O3","--"); + nullMap.put("thirty","--"); + nullMap.put("forty","--"); + nullMap.put("fifty","--"); + nullMap.put("city_name",sysAreaMap.get(key)); + resultList.add(nullMap); + } + } + resultMap.put("resultList",resultList); + resultMap.put("time",time); + QueryWrapper<SysArea> areaQueryWrapper = new QueryWrapper<>(); + areaQueryWrapper.eq("area_code",regionCode); + SysArea sysArea = sysAreaMapper.selectOne(areaQueryWrapper); + resultMap.put("areaName",sysArea.getAreaName()); + return resultMap; + } + /** * @Description: ������6������������������������������������ * @Param: [data, comparisonData] @@ -1069,15 +1195,15 @@ */ private ConcentrationAndPercent contrastParam(Double data, Double comparisonData, String sensor) { double percentD = MathUtils.division(data - comparisonData, comparisonData, 4); - String percent = MathUtils.mul(percentD, 100d) + "%"; + String percent = MathUtils.mul(percentD,100d) + "%"; ConcentrationAndPercent concentrationAndPercent = new ConcentrationAndPercent(); concentrationAndPercent.setPercent(percent); if (sensor.equals("CO")) {//CO��������������������� Double CO = AmendUtils.sciCal(data, 1); concentrationAndPercent.setConcentration(CO.toString()); - } else if (sensor.equals("compositeIndex")) { + }else if (sensor.equals("compositeIndex")){ concentrationAndPercent.setConcentration(data.toString()); - } else { + }else{ Double sensorD = AmendUtils.sciCal(data, 0); Integer sensorI = new Double(sensorD).intValue(); concentrationAndPercent.setConcentration(sensorI.toString()); @@ -1103,7 +1229,7 @@ /** * @Description: ���������������������������������6������������������������������������������������������������������������ * @Param: [comparisonType, startDate, endDate, regionCode] - * @return: java.util.Map<java.lang.String, java.lang.Object> + * @return: java.util.Map<java.lang.String , java.lang.Object> * @Author: ��������� * @Date: 2022/1/17 */ @@ -1187,8 +1313,7 @@ private List<SysArea> getSysAreasByRegionType(String regionType, Integer regionCode) { List<SysArea> areas; if (regionType.equals(Constants.TWENTY_EIGHT_CITIES)) { - SpecialCitiesProperties properties = new SpecialCitiesProperties(); - areas = properties.getTwentyEightCities(); + areas = citiesProperties.getTwentyEightCities(); } else { areas = sysAreaService.getChildren(regionCode); } @@ -1198,7 +1323,7 @@ /** * @Description: ������6������������ * @Param: [cityAqiList] - * @return: java.util.Map<java.lang.String, java.lang.Double> + * @return: java.util.Map<java.lang.String , java.lang.Double> * ���������key���sensorCode,value������ * @Author: ��������� * @Date: 2021/11/2 -- Gitblit v1.8.0