package com.moral.api.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.CityAqiConfig; 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.web.client.RestTemplate; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 国控aqi数据表 服务实现类 *

* * @author moral * @since 2021-06-15 */ @Service @Slf4j public class HistoryAqiServiceImpl extends ServiceImpl implements HistoryAqiService { @Autowired private HistoryAqiMapper historyAqiMapper; @Autowired private RestTemplate restTemplate; @Autowired private GovMonitorPointService govMonitorPointService; @Autowired private RedisTemplate redisTemplate; @Override @Transactional public void insertHistoryAqi() { //设置请求头 HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", "APPCODE 31b6ea8f804a4472be3b633cfee44849"); HttpEntity requestEntity = new HttpEntity<>(headers); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("guid").eq("is_delete", Constants.NOT_DELETE); //获取所有国控,省控,县控站点 List govMonitorPoints = govMonitorPointService.list(queryWrapper); for (GovMonitorPoint govMonitorPoint : govMonitorPoints) { String guid = govMonitorPoint.getGuid(); ResponseEntity 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 data = JSONObject.parseObject(body, Map.class); Map map = (Map) data.get("data"); HistoryAqi historyAqi = new HistoryAqi(); 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); Map value = new HashMap<>(); value.put(Constants.SENSOR_CODE_PM25, map.get("pm2_5")); value.put(Constants.SENSOR_CODE_PM10, map.get("pm10")); value.put(Constants.SENSOR_CODE_SO2, map.get("so2")); value.put(Constants.SENSOR_CODE_NO2, map.get("no2")); value.put(Constants.SENSOR_CODE_CO, Double.parseDouble(map.get("co").toString())); value.put(Constants.SENSOR_CODE_O3, map.get("o3")); //aqi数据存入redis redisTemplate.opsForHash().put(RedisConstants.AQI_DATA, guid, value); } } }