From 81d31a0f9449943dcd78c1d0358443366a998201 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Mon, 11 Oct 2021 17:30:10 +0800 Subject: [PATCH] 接入城市气象数据定时任务 --- screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java | 103 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 74 insertions(+), 29 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java index ee1f372..7f337ff 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java @@ -1,22 +1,30 @@ package com.moral.api.service.impl; import com.alibaba.fastjson.JSONObject; -import com.moral.api.entity.CityAqiConfig; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.moral.api.entity.GovMonitorPoint; import com.moral.api.entity.HistoryAqi; import com.moral.api.mapper.HistoryAqiMapper; -import com.moral.api.service.CityAqiConfigService; +import com.moral.api.service.GovMonitorPointService; import com.moral.api.service.HistoryAqiService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.constant.Constants; import com.moral.constant.RedisConstants; +import com.moral.util.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import org.springframework.util.ObjectUtils; import org.springframework.web.client.RestTemplate; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -37,42 +45,79 @@ private HistoryAqiMapper historyAqiMapper; @Autowired - private CityAqiConfigService cityAqiConfigService; + private RestTemplate restTemplate; + + @Autowired + private GovMonitorPointService govMonitorPointService; @Autowired private RedisTemplate redisTemplate; @Override + @Transactional public void insertHistoryAqi() { - RestTemplate restTemplate = new RestTemplate(); - //������aqi������������ - List<CityAqiConfig> cityAqiConfigs = cityAqiConfigService.getCityAqiConfigs(); - for (CityAqiConfig cityAqiConfig : cityAqiConfigs) { - Map<String, Object> mjMap = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=aqi", Map.class, cityAqiConfig.getCityId()); - if (ObjectUtils.isEmpty(mjMap)) { + //��������������� + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", "APPCODE 31b6ea8f804a4472be3b633cfee44849"); + + HttpEntity requestEntity = new HttpEntity<>(headers); + + QueryWrapper<GovMonitorPoint> queryWrapper = new QueryWrapper<>(); + queryWrapper.select("guid").eq("is_delete", Constants.NOT_DELETE); + //������������������������������������������ + List<GovMonitorPoint> govMonitorPoints = govMonitorPointService.list(queryWrapper); + for (GovMonitorPoint govMonitorPoint : govMonitorPoints) { + String guid = govMonitorPoint.getGuid(); + ResponseEntity<String> response; + try { + //������������������������������ + response = restTemplate.exchange("http://chinair.market.alicloudapi.com/api/v1/air_all/station_realtime?guid={1}", HttpMethod.GET, requestEntity, String.class, guid); + } catch (Exception e) { continue; } + String body = response.getBody(); + Map<String, Object> data = JSONObject.parseObject(body, Map.class); + Map<String, Object> map = (Map<String, Object>) data.get("data"); HistoryAqi historyAqi = new HistoryAqi(); - //city_code - String cityCode = cityAqiConfig.getCityCode(); - historyAqi.setCityCode(cityCode); - Map<String, Object> value = new HashMap<>(); - Map<String, Object> data = (Map<String, Object>) ((Map) mjMap.get("data")).get("aqi"); - //������������ - historyAqi.setTime(new Date(Long.parseLong(data.get("pubtime").toString()))); - value.put("PM25", data.get("pm25C")); - value.put("PM10", data.get("pm10C")); - value.put("SO2", data.get("so2C")); - value.put("NO2", data.get("no2C")); - value.put("CO", data.get("coC")); - value.put("O3", data.get("o3C")); - value.put("AQI", data.get("value")); - //������ - historyAqi.setValue(JSONObject.toJSONString(value)); - //��������������������� + historyAqi.setGuid(guid); + historyAqi.setTime(DateUtils.getDate(map.get("pubtime").toString(), DateUtils.yyyy_MM_dd_HH_mm_ss_EN)); + //��������������� + historyAqi.setValue(JSONObject.toJSONString(map)); historyAqiMapper.insert(historyAqi); - //������redis - redisTemplate.opsForHash().putAll(RedisConstants.AQI_DATA + cityCode, value); + + Map<String, Object> value = new HashMap<>(); + Object pm2_5 = map.get("pm2_5"); + Object pm10 = map.get("pm10"); + Object so2 = map.get("so2"); + Object no2 = map.get("no2"); + Object co = map.get("co"); + Object o3 = map.get("o3"); + if (!ObjectUtils.isEmpty(pm2_5)) { + value.put(Constants.SENSOR_CODE_PM25, pm2_5); + } + + if (!ObjectUtils.isEmpty(pm10)) { + value.put(Constants.SENSOR_CODE_PM10, pm10); + } + + if (!ObjectUtils.isEmpty(so2)) { + value.put(Constants.SENSOR_CODE_SO2, so2); + } + + if (!ObjectUtils.isEmpty(no2)) { + value.put(Constants.SENSOR_CODE_NO2, no2); + } + + if (!ObjectUtils.isEmpty(co)) { + value.put(Constants.SENSOR_CODE_CO, Double.parseDouble(co.toString())); + } + + if (!ObjectUtils.isEmpty(o3)) { + value.put(Constants.SENSOR_CODE_O3, o3); + } + + //aqi������������redis + redisTemplate.opsForHash().put(RedisConstants.AQI_DATA, guid, value); } } } -- Gitblit v1.8.0