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>