From 866520f60e83c8632a712de22d5c40df0af2c2fa Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Tue, 28 Aug 2018 14:17:15 +0800 Subject: [PATCH] 获取 天气情况 --- src/main/java/com/moral/common/util/Dom4jUtils.java | 6 ++++-- src/main/java/com/moral/service/impl/WeatherServiceImpl.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/moral/common/util/Dom4jUtils.java b/src/main/java/com/moral/common/util/Dom4jUtils.java index 466dfa8..f3cb73d 100644 --- a/src/main/java/com/moral/common/util/Dom4jUtils.java +++ b/src/main/java/com/moral/common/util/Dom4jUtils.java @@ -1,6 +1,7 @@ package com.moral.common.util; import java.io.File; +import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -18,10 +19,11 @@ public static List<Element> readDocument() { try { - Document document = new SAXReader().read(new File("src/main/resources/system/city.xml")); + URL url = Dom4jUtils.class.getClassLoader().getResource("system" + File.separator + "city.xml"); + Document document = new SAXReader().read(url); Element rootElement = document.getRootElement(); elements = (ArrayList<Element>) rootElement.elements(); - System.out.println(elements.size()); + // System.out.println(elements.size()); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/com/moral/service/impl/WeatherServiceImpl.java b/src/main/java/com/moral/service/impl/WeatherServiceImpl.java index 4d7a0fd..2b0b4ae 100644 --- a/src/main/java/com/moral/service/impl/WeatherServiceImpl.java +++ b/src/main/java/com/moral/service/impl/WeatherServiceImpl.java @@ -1,21 +1,70 @@ package com.moral.service.impl; +import java.util.List; import java.util.Map; +import javax.annotation.Resource; + +import org.dom4j.Element; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import org.springframework.web.client.RestTemplate; +import com.moral.common.util.Dom4jUtils; +import com.moral.common.util.ValidateUtil; +import com.moral.entity.AreaNames; +import com.moral.entity.Organization; +import com.moral.service.OrganizationService; import com.moral.service.WeatherService; @Service public class WeatherServiceImpl implements WeatherService { + @Resource + private OrganizationService organizationService; + @Override public Map<String, Object> getWeatherDataByRegion(Map<String, Object> parameters) { + Object organizationId = parameters.get("organizationId"); + ValidateUtil.notNull(organizationId, "param.is.null"); + String areaName = "���������"; + String parentName = ""; + Organization organization = organizationService.getOrganizationById(Integer.valueOf(parameters.get("organizationId").toString())); + if(organization.getAreaNames()!=null){ + AreaNames areaNames = organization.getAreaNames(); + if (ObjectUtils.isEmpty(areaNames.getAreaName())) { + if (ObjectUtils.isEmpty(areaNames.getCityName())) { + areaName = areaNames.getProvinceName(); + } else { + areaName = areaNames.getCityName(); + } + } else { + areaName = areaNames.getAreaName(); + parentName = areaNames.getCityName(); + if ("���������".equals(areaName)) { + areaName = parentName; + } + } + } + List<Element> elements = Dom4jUtils.readDocument(); + String cityID = "1102"; + for (Element element : elements) { + String name = element.element("name").getText(); + if (areaName.equals(name)) { + cityID = element.element("Fid").getText(); + break; + } + if (name.endsWith(areaName)) { + if (name.startsWith(parentName)) { + cityID = element.element("Fid").getText(); + break; + } + } + } RestTemplate restTemplate = new RestTemplate(); - Map<String, Object> map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=aqi", Map.class); + Map<String, Object> map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=aqi", Map.class,cityID); Map<String, Object> result = (Map<String, Object>) ((Map)map.get("data")).get("aqi"); - map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=condition", Map.class); + map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=condition", Map.class,cityID); result.putAll((Map<? extends String, ? extends Object>) ((Map)map.get("data")).get("condition")); return result; } -- Gitblit v1.8.0