jinpengyong
2021-12-23 3d593b39648ff583a255765f76760768d6ba5f55
正式库city_aqi,city_weather,history_aqi第三方数据存入开发库
17 files added
6 files modified
528 ■■■■■ changed files
screen-job/src/main/java/com/moral/api/service/CityAqiService.java 5 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/CityWeatherService.java 19 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java 5 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/task/DataReplicationTask.java 86 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/DataReplicationController.java 62 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/CityAqi.java 45 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/CityWeather.java 45 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/HistoryAqi.java 45 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/CityAqiMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/CityWeatherMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/CityAqiService.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/CityWeatherService.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/HistoryAqiService.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/CityAqiMapper.xml 12 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/CityWeatherMapper.xml 12 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/HistoryAqiMapper.xml 12 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/CityAqiService.java
@@ -1,5 +1,7 @@
package com.moral.api.service;
import java.util.List;
import com.moral.api.entity.CityAqi;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -16,4 +18,7 @@
    //aqi数据按城市insert
    void insertCityAqi();
    //获取最新city_aqi数据
    List<CityAqi> getCityAqi();
}
screen-job/src/main/java/com/moral/api/service/CityWeatherService.java
@@ -1,5 +1,7 @@
package com.moral.api.service;
import java.util.List;
import com.moral.api.entity.CityWeather;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -15,14 +17,17 @@
    //实时城市气象数据insert
    void insertCityWeather();
    /**
      *@Description: 通过city_code和time获取数据
      *@Param: [cityCode, time]
      *@return: com.moral.api.entity.CityWeather
      *@Author: lizijie
      *@Date: 2021/10/14 16:52
     * @Description: 通过city_code和time获取数据
     * @Param: [cityCode, time]
     * @return: com.moral.api.entity.CityWeather
     * @Author: lizijie
     * @Date: 2021/10/14 16:52
     **/
    CityWeather getDataByCityCodeAndTime(String cityCode,String time);
    CityWeather getDataByCityCodeAndTime(String cityCode, String time);
    //获取最新city_weather数据
    List<CityWeather> getCityWeather();
}
screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
@@ -1,5 +1,7 @@
package com.moral.api.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.entity.HistoryAqi;
@@ -10,4 +12,7 @@
    HistoryAqi getHistoryApiByTimeAndGuid(String guid,String time);
    //获取最新history_aqi数据
    List<HistoryAqi> getHistoryAqi();
}
screen-job/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java
@@ -151,4 +151,12 @@
            redisTemplate.opsForHash().put(RedisConstants.CITY_AQI, cityCode.toString(), aqi);
        }
    }
    @Override
    public List<CityAqi> getCityAqi() {
        String time = DateUtils.getDateStringOfHour(-1, DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
        QueryWrapper<CityAqi> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("time", time);
        return cityAqiMapper.selectList(queryWrapper);
    }
}
screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
@@ -83,4 +83,12 @@
        }
        return cityWeather;
    }
    @Override
    public List<CityWeather> getCityWeather() {
        String time = DateUtils.getDateStringOfHour(-1, DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
        QueryWrapper<CityWeather> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("time", time);
        return cityWeatherMapper.selectList(queryWrapper);
    }
}
screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
@@ -137,4 +137,12 @@
        }
        return historyAqi;
    }
    @Override
    public List<HistoryAqi> getHistoryAqi() {
        String time = DateUtils.getDateStringOfHour(-1, DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
        QueryWrapper<HistoryAqi> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("time", time);
        return historyAqiMapper.selectList(queryWrapper);
    }
}
screen-job/src/main/java/com/moral/api/task/DataReplicationTask.java
New file
@@ -0,0 +1,86 @@
package com.moral.api.task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.Map;
import com.moral.api.entity.CityAqi;
import com.moral.api.entity.CityWeather;
import com.moral.api.entity.HistoryAqi;
import com.moral.api.service.CityAqiService;
import com.moral.api.service.CityWeatherService;
import com.moral.api.service.HistoryAqiService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
/*
 * 从正式坏境数据库获取第三方接口数据,调用开发环境的manager接口,将数据传给manager,由manager存入数据库
 * 包括的表数据:
 * city_aqi 城市aqi数据
 * city_weather 城市气象数据
 * history_aqi 国控站aqi数据
 * */
@Component
public class DataReplicationTask {
    @Autowired
    private CityAqiService cityAqiService;
    @Autowired
    private CityWeatherService cityWeatherService;
    @Autowired
    private HistoryAqiService historyAqiService;
    @Autowired
    private RestTemplate restTemplate;
    //city_aqi数据复制
    @XxlJob("cityAqiReplication")
    public ReturnT cityAqiReplication() {
        try {
            List<CityAqi> cityAqi = cityAqiService.getCityAqi();
            HttpEntity<List<CityAqi>> requestEntity = new HttpEntity<>(cityAqi);
            restTemplate.exchange("http://47.99.64.149:8082/dataReplication/insertCityAqi", HttpMethod.POST, requestEntity, Map.class);
        } catch (Exception e) {
            XxlJobHelper.log(e.getMessage());
            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
        }
        return ReturnT.SUCCESS;
    }
    //city_weather数据复制
    @XxlJob("cityWeatherReplication")
    public ReturnT cityWeatherReplication() {
        try {
            List<CityWeather> cityWeather = cityWeatherService.getCityWeather();
            HttpEntity<List<CityWeather>> requestEntity = new HttpEntity<>(cityWeather);
            restTemplate.exchange("http://47.99.64.149:8082/dataReplication/insertCityWeather", HttpMethod.POST, requestEntity, Map.class);
        } catch (Exception e) {
            XxlJobHelper.log(e.getMessage());
            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
        }
        return ReturnT.SUCCESS;
    }
    //history_aqi数据复制
    @XxlJob("historyAqiReplication")
    public ReturnT historyAqiReplication() {
        try {
            List<HistoryAqi> historyAqi = historyAqiService.getHistoryAqi();
            HttpEntity<List<HistoryAqi>> requestEntity = new HttpEntity<>(historyAqi);
            restTemplate.exchange("http://47.99.64.149:8082/dataReplication/insertHistoryAqi", HttpMethod.POST, requestEntity, Map.class);
        } catch (Exception e) {
            XxlJobHelper.log(e.getMessage());
            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
        }
        return ReturnT.SUCCESS;
    }
}
screen-manage/src/main/java/com/moral/api/controller/DataReplicationController.java
New file
@@ -0,0 +1,62 @@
package com.moral.api.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import com.moral.api.entity.CityAqi;
import com.moral.api.entity.CityWeather;
import com.moral.api.entity.HistoryAqi;
import com.moral.api.service.CityAqiService;
import com.moral.api.service.CityWeatherService;
import com.moral.api.service.HistoryAqiService;
import com.moral.constant.ResultMessage;
@Slf4j
@Api(tags = {"接收job返回的正式库第三方数据"})
@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("/dataReplication")
public class DataReplicationController {
    @Autowired
    private CityAqiService cityAqiService;
    @Autowired
    private CityWeatherService cityWeatherService;
    @Autowired
    private HistoryAqiService historyAqiService;
    @ApiOperation(value = "城市aqi数据处理", notes = "城市aqi数据处理")
    @PostMapping("insertCityAqi")
    public ResultMessage insertCityAqi(@RequestBody List<CityAqi> cityAqis) {
        cityAqis.forEach(cityAqi -> cityAqiService.save(cityAqi));
        return ResultMessage.ok();
    }
    @ApiOperation(value = "城市气象数据处理", notes = "城市气象数据处理")
    @PostMapping("insertCityWeather")
    public ResultMessage insertCityWeather(@RequestBody List<CityWeather> cityWeathers) {
        cityWeathers.forEach(cityWeather -> cityWeatherService.save(cityWeather));
        return ResultMessage.ok();
    }
    @ApiOperation(value = "国控站aqi数据处理", notes = "国控站aqi数据处理")
    @PostMapping("insertHistory")
    public ResultMessage insertHistory(@RequestBody List<HistoryAqi> historyAqis) {
        historyAqis.forEach(historyAqi -> historyAqiService.save(historyAqi));
        return ResultMessage.ok();
    }
}
screen-manage/src/main/java/com/moral/api/entity/CityAqi.java
New file
@@ -0,0 +1,45 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 城市aqi实测小时数据表
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class CityAqi extends Model<CityAqi> {
    private static final long serialVersionUID = 1L;
    /**
     * 城市id
     */
    private Integer cityCode;
    /**
     * 时间
     */
    private Date time;
    /**
     * 数据
     */
    private String value;
    @Override
    protected Serializable pkVal() {
        return null;
    }
}
screen-manage/src/main/java/com/moral/api/entity/CityWeather.java
New file
@@ -0,0 +1,45 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 城市实测小时气象数据表
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class CityWeather extends Model<CityWeather> {
    private static final long serialVersionUID = 1L;
    /**
     * 城市code
     */
    private Integer cityCode;
    /**
     * 时间
     */
    private Date time;
    /**
     * 数据
     */
    private String value;
    @Override
    protected Serializable pkVal() {
        return null;
    }
}
screen-manage/src/main/java/com/moral/api/entity/HistoryAqi.java
New file
@@ -0,0 +1,45 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 国控aqi数据表
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class HistoryAqi extends Model<HistoryAqi> {
    private static final long serialVersionUID = 1L;
    /**
     * 国控/省控/县控站点id
     */
    private String guid;
    /**
     * 时间
     */
    private Date time;
    /**
     * 数据
     */
    private String value;
    @Override
    protected Serializable pkVal() {
        return null;
    }
}
screen-manage/src/main/java/com/moral/api/mapper/CityAqiMapper.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.mapper;
import com.moral.api.entity.CityAqi;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 城市aqi实测小时数据表 Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface CityAqiMapper extends BaseMapper<CityAqi> {
}
screen-manage/src/main/java/com/moral/api/mapper/CityWeatherMapper.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.mapper;
import com.moral.api.entity.CityWeather;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 城市实测小时气象数据表 Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface CityWeatherMapper extends BaseMapper<CityWeather> {
}
screen-manage/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.mapper;
import com.moral.api.entity.HistoryAqi;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 国控aqi数据表 Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface HistoryAqiMapper extends BaseMapper<HistoryAqi> {
}
screen-manage/src/main/java/com/moral/api/service/CityAqiService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.CityAqi;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 城市aqi实测小时数据表 服务类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface CityAqiService extends IService<CityAqi> {
}
screen-manage/src/main/java/com/moral/api/service/CityWeatherService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.CityWeather;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 城市实测小时气象数据表 服务类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface CityWeatherService extends IService<CityWeather> {
}
screen-manage/src/main/java/com/moral/api/service/HistoryAqiService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.HistoryAqi;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 国控aqi数据表 服务类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
public interface HistoryAqiService extends IService<HistoryAqi> {
}
screen-manage/src/main/java/com/moral/api/service/impl/CityAqiServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.CityAqi;
import com.moral.api.mapper.CityAqiMapper;
import com.moral.api.service.CityAqiService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 城市aqi实测小时数据表 服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Service
public class CityAqiServiceImpl extends ServiceImpl<CityAqiMapper, CityAqi> implements CityAqiService {
}
screen-manage/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.CityWeather;
import com.moral.api.mapper.CityWeatherMapper;
import com.moral.api.service.CityWeatherService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 城市实测小时气象数据表 服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Service
public class CityWeatherServiceImpl extends ServiceImpl<CityWeatherMapper, CityWeather> implements CityWeatherService {
}
screen-manage/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.HistoryAqi;
import com.moral.api.mapper.HistoryAqiMapper;
import com.moral.api.service.HistoryAqiService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 国控aqi数据表 服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-12-23
 */
@Service
public class HistoryAqiServiceImpl extends ServiceImpl<HistoryAqiMapper, HistoryAqi> implements HistoryAqiService {
}
screen-manage/src/main/resources/mapper/CityAqiMapper.xml
New file
@@ -0,0 +1,12 @@
<?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.CityAqiMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.CityAqi">
        <result column="city_code" property="cityCode"/>
        <result column="time" property="time"/>
        <result column="value" property="value"/>
    </resultMap>
</mapper>
screen-manage/src/main/resources/mapper/CityWeatherMapper.xml
New file
@@ -0,0 +1,12 @@
<?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.CityWeatherMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.CityWeather">
        <result column="city_code" property="cityCode"/>
        <result column="time" property="time"/>
        <result column="value" property="value"/>
    </resultMap>
</mapper>
screen-manage/src/main/resources/mapper/HistoryAqiMapper.xml
New file
@@ -0,0 +1,12 @@
<?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.HistoryAqiMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryAqi">
        <result column="guid" property="guid"/>
        <result column="time" property="time"/>
        <result column="value" property="value"/>
    </resultMap>
</mapper>