package com.moral.service.impl; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; 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 getWeatherDataByRegion(Map 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 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=aqi", Map.class,cityID); Map result = (Map) ((Map)map.get("data")).get("aqi"); map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=condition", Map.class,cityID); result.putAll((Map) ((Map)map.get("data")).get("condition")); return result; } @Override public Map get15DayWeatherDataByRegion(Map 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 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=aqi", Map.class,cityID); List> result = new ArrayList<>(); map = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=forecast15days", Map.class,cityID); result.addAll((Collection>) ((Map)map.get("data")).get("forecast")); for (Map map2 : result) { Map returnMap = new HashMap<>(); String predictDate = map2.get("predictDate").toString(); String time = parameters.get("time").toString(); if (predictDate.equals(time)) { returnMap = map2; return returnMap; } } return null; } }