src/main/java/com/moral/entity/Area.java
New file @@ -0,0 +1,15 @@ package com.moral.entity; import lombok.Data; import javax.persistence.Id; @Data public class Area { @Id private Integer areaCode; private String areaName; private Integer cityCode; } src/main/java/com/moral/entity/City.java
New file @@ -0,0 +1,16 @@ package com.moral.entity; import lombok.Data; import javax.persistence.Id; @Data public class City { @Id private Integer cityCode; private String cityName; private Integer provinceCode; } src/main/java/com/moral/entity/Province.java
New file @@ -0,0 +1,13 @@ package com.moral.entity; import lombok.Data; import javax.persistence.Id; @Data public class Province { @Id private Integer provinceCode; private String provinceName; } src/main/java/com/moral/mapper/AreaMapper.java
New file @@ -0,0 +1,8 @@ package com.moral.mapper; import com.moral.entity.Area; public interface AreaMapper { Area getAreaByAreaCode(int areaCode); } src/main/java/com/moral/mapper/CityMapper.java
New file @@ -0,0 +1,8 @@ package com.moral.mapper; import com.moral.entity.City; public interface CityMapper { City getCityByCityCode(int cityCode); } src/main/java/com/moral/mapper/MonitorPointMapper.java
New file @@ -0,0 +1,10 @@ package com.moral.mapper; import java.util.List; import com.moral.entity.MonitorPoint; public interface MonitorPointMapper { List<MonitorPoint> getMonitorPointList(); } src/main/java/com/moral/mapper/ProvinceMapper.java
New file @@ -0,0 +1,8 @@ package com.moral.mapper; import com.moral.entity.Province; public interface ProvinceMapper { Province getProvinceByProvinceCode(int provinceCode); } src/main/java/com/moral/mapper/RealTimeWeatherMapper.java
New file @@ -0,0 +1,9 @@ package com.moral.mapper; import java.util.List; import java.util.Map; public interface RealTimeWeatherMapper { void insertRealTimeWeather(List<Map<String,Object>> list); } src/main/java/com/moral/service/RealTimeWeatherService.java
New file @@ -0,0 +1,9 @@ package com.moral.service; import java.text.ParseException; public interface RealTimeWeatherService { void insertRealTimeWeather() throws ParseException; } src/main/java/com/moral/service/impl/RealTimeWeatherServiceImpl.java
New file @@ -0,0 +1,139 @@ package com.moral.service.impl; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import org.dom4j.Element; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import com.alibaba.fastjson.JSONObject; import com.moral.entity.Area; import com.moral.entity.City; import com.moral.entity.MonitorPoint; import com.moral.mapper.AreaMapper; import com.moral.mapper.CityMapper; import com.moral.mapper.MonitorPointMapper; import com.moral.mapper.ProvinceMapper; import com.moral.mapper.RealTimeWeatherMapper; import com.moral.service.RealTimeWeatherService; import com.moral.util.Dom4jUtils; @Service public class RealTimeWeatherServiceImpl implements RealTimeWeatherService { @Resource private RealTimeWeatherMapper realTimeWeatherMapper; @Resource private MonitorPointMapper monitorPointMapper; @Resource private AreaMapper areaMapper; @Resource private CityMapper cityMapper; @Resource private ProvinceMapper provinceMapper; @Override public void insertRealTimeWeather() throws ParseException { RestTemplate restTemplate = new RestTemplate(); List<MonitorPoint> monitorPointList = monitorPointMapper.getMonitorPointList(); List<Map<String, Object>> list = new ArrayList<>(); Set<Map<String, Object>> hashSet = new HashSet<>(); List<Map<String, Object>> resultList = new ArrayList<>(); for (MonitorPoint monitorPoint : monitorPointList) { Map<String, Object> hashMap1 = new HashMap<>(); Map<String, Object> hashMap = new HashMap<>(); Integer areaCode = monitorPoint.getAreaCode(); Integer cityCode = monitorPoint.getCityCode(); Integer provinceCode = monitorPoint.getProvinceCode(); String parentName = ""; String name1 = ""; if (areaCode != null) { Area area = areaMapper.getAreaByAreaCode(areaCode); City city = cityMapper.getCityByCityCode(cityCode); name1 = area.getAreaName(); parentName = city.getCityName(); if ("市辖区".equals(name1)) { name1 = parentName; parentName = provinceMapper.getProvinceByProvinceCode(provinceCode).getProvinceName(); } } else { City city = cityMapper.getCityByCityCode(cityCode); name1 = city.getCityName(); parentName = provinceMapper.getProvinceByProvinceCode(provinceCode).getProvinceName(); } hashMap.put("name1", name1); hashMap.put("parentName", parentName); hashSet.add(hashMap); hashMap1.put("monitorPointId", monitorPoint.getId()); hashMap1.put("name", name1); resultList.add(hashMap1); } List<Element> elements = Dom4jUtils.readDocument(); String cityID = "101190404"; for (Map<String, Object> map : hashSet) { String name1 = map.get("name1").toString(); for (Element element : elements) { String name2 = element.element("name").getText(); String parentName = map.get("parentName").toString(); if (name1.equals(name2)) { cityID = element.element("Fid").getText(); break; } if (name2.endsWith(name1)) { if (name2.startsWith(parentName)) { cityID = element.element("Fid").getText(); break; } } } Map<String, Object> map1 = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=condition", Map.class, cityID); Map<String, Object> dateMap = (Map<String, Object>) map1.get("data"); Map<String, Object> conditionMap = (Map<String, Object>) dateMap.get("condition"); conditionMap.put("name", name1); list.add(conditionMap); } List<Map<String, Object>> insertList = new ArrayList<>(); for (Map<String, Object> resultMap : resultList) { Map<String, Object> map = new HashMap<>(); String monitorPointId = resultMap.get("monitorPointId").toString(); map.put("monitorPointId", Integer.valueOf(monitorPointId)); for (Map<String, Object> listMap : list) { if (resultMap.get("name").equals(listMap.get("name"))) { String json = JSONObject.toJSONString(listMap); String[] strings = listMap.get("updatetime").toString().split(" "); String time = strings[0] + " " + strings[1].split(":")[0] + ":00:00"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time); map.put("json", json); map.put("time", date); } } insertList.add(map); } for (Map<String, Object> map : insertList) { String json = map.get("json").toString(); Map<String, Object> parse = (Map<String, Object>) JSONObject.parse(json); parse.remove("name"); parse.remove("icon"); parse.remove("conditionId"); map.put("json", JSONObject.toJSONString(parse)); } realTimeWeatherMapper.insertRealTimeWeather(insertList); } } src/main/java/com/moral/task/RealTimeWeatherInsertTask.java
New file @@ -0,0 +1,25 @@ package com.moral.task; import java.text.ParseException; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.moral.service.RealTimeWeatherService; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; public class RealTimeWeatherInsertTask { private static transient Logger logger = LoggerFactory.getLogger(AlarmTableInsertTask.class); @Resource private RealTimeWeatherService realTimeWeatherService; @XxlJob("realtimeWeatherHour") public ReturnT insertRealTimeWeather(String param) throws ParseException { realTimeWeatherService.insertRealTimeWeather(); return new ReturnT(200, "插入天表成功"); } } src/main/resources/application.yml
@@ -62,3 +62,4 @@ min-idle: 0 mybatis: mapper-locations: classpath*:/mapper/*Mapper.xml config-location: classpath:/mapper/mybatis-config.xml src/main/resources/mapper/AreaMapper.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.mapper.AreaMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.Area"> <id column="area_code" property="areaCode" jdbcType="INTEGER"/> <result column="area_name" property="areaName" jdbcType="VARCHAR"/> <result column="city_code" property="cityCode" jdbcType="INTEGER"/> </resultMap> <select id="getAreaByAreaCode" resultType="com.moral.entity.Area"> select * from area where area_code=#{areaCode} </select> </mapper> src/main/resources/mapper/CityMapper.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.mapper.CityMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.City" > <id column="city_code" property="cityCode" jdbcType="INTEGER" /> <result column="city_name" property="cityName" jdbcType="VARCHAR" /> <result column="province_code" property="provinceCode" jdbcType="INTEGER" /> </resultMap> <select id="getCityByCityCode" resultType="com.moral.entity.City"> select * from city where city_code=#{cityCode} </select> </mapper> src/main/resources/mapper/MonitorPointMapper.xml
New file @@ -0,0 +1,7 @@ <?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.mapper.MonitorPointMapper"> <select id="getMonitorPointList" resultType="com.moral.entity.MonitorPoint"> select * from monitor_point </select> </mapper> src/main/resources/mapper/ProvinceMapper.xml
New file @@ -0,0 +1,11 @@ <?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.mapper.ProvinceMapper"> <resultMap id="BaseResultMap" type="com.moral.entity.Province" > <id column="province_code" property="provinceCode" jdbcType="INTEGER" /> <result column="province_name" property="provinceName" jdbcType="VARCHAR" /> </resultMap> <select id="getProvinceByProvinceCode" resultType="com.moral.entity.Province"> select * from province where province_code=#{provinceCode} </select> </mapper> src/main/resources/mapper/RealTimeWeatherMapper.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.mapper.RealTimeWeatherMapper"> <insert id="insertRealTimeWeather"> insert into realtime_weather values <foreach collection="list" item="item" separator=","> (#{item.monitorPointId},#{item.time},#{item.json}) </foreach> </insert> </mapper> src/main/resources/mapper/mybatis-config.xml
New file @@ -0,0 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <typeAliases> <package name="com.moral.entity" /> </typeAliases> </configuration>