From 3cda5b8c0618bcf4d81c0792e25563f77fa71d24 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Fri, 10 Sep 2021 15:08:44 +0800 Subject: [PATCH] 国控站aqi数据接入 --- screen-job/src/main/resources/mapper/GovMonitorPointMapper.xml | 22 ++++ screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java | 16 +++ screen-job/src/main/java/com/moral/api/config/rest/RestConfig.java | 14 ++ screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java | 20 ++++ screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java | 98 +++++++++++++++++++ screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java | 76 +++++++++----- screen-job/src/main/java/com/moral/api/mapper/GovMonitorPointMapper.java | 16 +++ screen-job/src/main/resources/mapper/HistoryAqiMapper.xml | 2 screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java | 2 9 files changed, 236 insertions(+), 30 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/config/rest/RestConfig.java b/screen-job/src/main/java/com/moral/api/config/rest/RestConfig.java new file mode 100644 index 0000000..d2f0735 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/config/rest/RestConfig.java @@ -0,0 +1,14 @@ +package com.moral.api.config.rest; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestConfig { + + @Bean + public RestTemplate getRestTemplate() { + return new RestTemplate(); + } +} diff --git a/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java b/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java new file mode 100644 index 0000000..ed6284b --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java @@ -0,0 +1,98 @@ +package com.moral.api.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * <p> + * + * </p> + * + * @author moral + * @since 2021-09-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class GovMonitorPoint extends Model<GovMonitorPoint> { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * ������������code + */ + private String guid; + + /** + * ������ + */ + private String name; + + /** + * ������ + */ + private Double longitude; + + /** + * ������ + */ + private Double latitude; + + /** + * ��������� + */ + private Integer provinceCode; + + /** + * ��������� + */ + private Integer cityCode; + + /** + * ���/��������� + */ + private Integer areaCode; + + /** + * ��������������������������������������������� + */ + private String stationLevel; + + /** + * ������������ + */ + private Date createTime; + + /** + * ������������ + */ + private Date updateTime; + + /** + * ������������ + */ + private String isDelete; + + /** + * ������ + */ + private String desc; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java b/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java index 95327da..14998b6 100644 --- a/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java +++ b/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java @@ -24,7 +24,7 @@ /** * ������code */ - private String cityCode; + private String guid; /** * ������ diff --git a/screen-job/src/main/java/com/moral/api/mapper/GovMonitorPointMapper.java b/screen-job/src/main/java/com/moral/api/mapper/GovMonitorPointMapper.java new file mode 100644 index 0000000..a2b072b --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/mapper/GovMonitorPointMapper.java @@ -0,0 +1,16 @@ +package com.moral.api.mapper; + +import com.moral.api.entity.GovMonitorPoint; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * Mapper ������ + * </p> + * + * @author moral + * @since 2021-09-10 + */ +public interface GovMonitorPointMapper extends BaseMapper<GovMonitorPoint> { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java b/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java new file mode 100644 index 0000000..5d650b4 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java @@ -0,0 +1,16 @@ +package com.moral.api.service; + +import com.moral.api.entity.GovMonitorPoint; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * <p> + * ��������� + * </p> + * + * @author moral + * @since 2021-09-10 + */ +public interface GovMonitorPointService extends IService<GovMonitorPoint> { + +} diff --git a/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java new file mode 100644 index 0000000..80333d0 --- /dev/null +++ b/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java @@ -0,0 +1,20 @@ +package com.moral.api.service.impl; + +import com.moral.api.entity.GovMonitorPoint; +import com.moral.api.mapper.GovMonitorPointMapper; +import com.moral.api.service.GovMonitorPointService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * ��������������� + * </p> + * + * @author moral + * @since 2021-09-10 + */ +@Service +public class GovMonitorPointServiceImpl extends ServiceImpl<GovMonitorPointMapper, GovMonitorPoint> implements GovMonitorPointService { + +} 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 bb4287b..3a8312e 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,23 +1,31 @@ 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.util.ObjectUtils; + import org.springframework.web.client.RestTemplate; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,7 +46,10 @@ private HistoryAqiMapper historyAqiMapper; @Autowired - private CityAqiConfigService cityAqiConfigService; + private RestTemplate restTemplate; + + @Autowired + private GovMonitorPointService govMonitorPointService; @Autowired private RedisTemplate redisTemplate; @@ -46,35 +57,44 @@ @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().put(RedisConstants.AQI_DATA, cityCode, value); + + Map<String, Object> 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); } } } diff --git a/screen-job/src/main/resources/mapper/GovMonitorPointMapper.xml b/screen-job/src/main/resources/mapper/GovMonitorPointMapper.xml new file mode 100644 index 0000000..90ee6cd --- /dev/null +++ b/screen-job/src/main/resources/mapper/GovMonitorPointMapper.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.moral.api.mapper.GovMonitorPointMapper"> + + <!-- ������������������������ --> + <resultMap id="BaseResultMap" type="com.moral.api.entity.GovMonitorPoint"> + <id column="id" property="id"/> + <result column="guid" property="guid"/> + <result column="name" property="name"/> + <result column="longitude" property="longitude"/> + <result column="latitude" property="latitude"/> + <result column="province_code" property="provinceCode"/> + <result column="city_code" property="cityCode"/> + <result column="area_code" property="areaCode"/> + <result column="station_level" property="stationLevel"/> + <result column="create_time" property="createTime"/> + <result column="update_time" property="updateTime"/> + <result column="is_delete" property="isDelete"/> + <result column="desc" property="desc"/> + </resultMap> + +</mapper> \ No newline at end of file diff --git a/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml index 989a8f5..24404de 100644 --- a/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml +++ b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml @@ -4,7 +4,7 @@ <!-- ������������������������ --> <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryAqi"> - <result column="city_code" property="cityCode"/> + <result column="guid" property="guid"/> <result column="time" property="time"/> <result column="value" property="value"/> </resultMap> -- Gitblit v1.8.0