package com.moral.util; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.dom4j.Element; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import org.springframework.web.client.RestTemplate; import com.moral.entity.AreaNames; import com.moral.entity.Organization; import com.moral.service.OrganizationService; @Component public class WeatherUtil { @Resource private OrganizationService organizationService; public List> getWeatherByMac(Map parameters) { String areaName = "昆山市"; String parentName = ""; Organization organization = organizationService.getOrganizationByMac(parameters); 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 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 map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=forecast24hours", Map.class, cityID); List> mapList = new ArrayList<>(); if (!map.isEmpty()) { if ((Collection>) ((Map) map.get("data")).get("hourly") != null) { mapList.addAll((Collection>) ((Map) map.get("data")).get("hourly")); } } return mapList; } }