package com.moral.api.service.impl; import com.alibaba.fastjson.JSONObject; import com.moral.api.entity.CityAqiConfig; import com.moral.api.entity.HistoryAqi; import com.moral.api.mapper.HistoryAqiMapper; import com.moral.api.service.CityAqiConfigService; import com.moral.api.service.HistoryAqiService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.RedisConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; 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; /** *

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

* * @author moral * @since 2021-06-15 */ @Service @Slf4j public class HistoryAqiServiceImpl extends ServiceImpl implements HistoryAqiService { @Autowired private HistoryAqiMapper historyAqiMapper; @Autowired private CityAqiConfigService cityAqiConfigService; @Autowired private RedisTemplate redisTemplate; @Override public void insertHistoryAqi() { RestTemplate restTemplate = new RestTemplate(); //获取aqi城市配置 List cityAqiConfigs = cityAqiConfigService.getCityAqiConfigs(); for (CityAqiConfig cityAqiConfig : cityAqiConfigs) { Map mjMap = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=aqi", Map.class, cityAqiConfig.getCityId()); if (ObjectUtils.isEmpty(mjMap)) { continue; } HistoryAqi historyAqi = new HistoryAqi(); //city_code String cityCode = cityAqiConfig.getCityCode(); historyAqi.setCityCode(cityCode); Map value = new HashMap<>(); Map data = (Map) ((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)); //数据存入数据库 historyAqiMapper.insert(historyAqi); //存入redis redisTemplate.opsForHash().putAll(RedisConstants.AQI_DATA + cityCode, value); } } }