From 016ede312448bae12c8f42724afb5a295f42935e Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Fri, 18 Mar 2022 17:39:22 +0800 Subject: [PATCH] 县市区数据接口 --- screen-api/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java | 122 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 122 insertions(+), 0 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..2075a95 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,6 +9,7 @@ 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; @@ -30,6 +31,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 +83,9 @@ @Autowired private HistoryHourlyService historyHourlyService; + + @Autowired + private SysAreaMapper sysAreaMapper; @Override public List<Map<String, Object>> measuredCompareForecastOfO3(Map<String, Object> params) { @@ -1041,6 +1046,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] -- Gitblit v1.8.0