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