package com.moral.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.moral.mapper.AQIMapper;
|
import com.moral.service.AQIService;
|
import com.moral.util.HttpUtils;
|
|
import org.apache.http.HttpResponse;
|
import org.apache.http.util.EntityUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import javax.annotation.Resource;
|
|
import java.text.DateFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class AQIServiceImpl implements AQIService {
|
@Resource
|
private AQIMapper aqiMapper;
|
|
@Override
|
public List<Map<String, Object>> getCityAqiConfig() {
|
return aqiMapper.getCityAqiConfig();
|
}
|
|
@Override
|
public int insertAQIData(Map<String, Object> parameters) {
|
return aqiMapper.insertAQIData(parameters);
|
}
|
|
@Override
|
public int insertStationData() {
|
int state = 500;
|
List<Map<String, Object>> stationCodes = aqiMapper.getStationConfig();
|
String host = "https://api.epmap.org";
|
String path = "/api/v1/air/station";
|
String method = "GET";
|
String appcode = "31b6ea8f804a4472be3b633cfee44849";
|
Map<String, String> headers = new HashMap<String, String>();
|
headers.put("Authorization", "APPCODE " + appcode);
|
Map<String, String> querys = new HashMap<String, String>();
|
Date date = new Date();
|
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
|
String pubtime = df.format(date) + ":00:00";
|
querys.put("pubtime", pubtime);
|
List<Map<String, Object>> insertList = new ArrayList<>();
|
for (Map<String, Object> stationMap : stationCodes) {
|
String stationCode = stationMap.get("station_code").toString();
|
String cityCode = stationMap.get("city_code").toString();
|
Map<String, Object> map = new HashMap<>();
|
querys.put("station_code", stationCode);
|
try {
|
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
|
JSONObject json = JSON.parseObject(EntityUtils.toString(response.getEntity()));
|
Map<String, Object> data = (Map<String, Object>) json.get("data");
|
if (!ObjectUtils.isEmpty(data)) {
|
pubtime = data.get("pubtime").toString();
|
map.put("time", pubtime);
|
map.put("json", JSON.toJSONString(data));
|
map.put("stationCode", stationCode);
|
map.put("cityCode", cityCode);
|
insertList.add(map);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
if (!insertList.isEmpty()) {
|
aqiMapper.insertStationData(insertList);
|
state = 200;
|
}
|
return state;
|
}
|
}
|