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;
|
|
/**
|
* <p>
|
* 国控aqi数据表 服务实现类
|
* </p>
|
*
|
* @author moral
|
* @since 2021-06-15
|
*/
|
@Service
|
@Slf4j
|
public class HistoryAqiServiceImpl extends ServiceImpl<HistoryAqiMapper, HistoryAqi> implements HistoryAqiService {
|
|
@Autowired
|
private HistoryAqiMapper historyAqiMapper;
|
|
@Autowired
|
private CityAqiConfigService cityAqiConfigService;
|
|
@Autowired
|
private RedisTemplate redisTemplate;
|
|
@Override
|
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)) {
|
continue;
|
}
|
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));
|
//数据存入数据库
|
historyAqiMapper.insert(historyAqi);
|
//存入redis
|
redisTemplate.opsForHash().putAll(RedisConstants.AQI_DATA + cityCode, value);
|
}
|
}
|
}
|