| 
						
						
						
					 | 
					 | 
					@ -1,16 +1,13 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					package com.hnac.hzims.weather.schedule; | 
					 | 
					 | 
					 | 
					package com.hnac.hzims.weather.schedule; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.alibaba.fastjson.JSON; | 
					 | 
					 | 
					 | 
					import com.alibaba.fastjson.JSON; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.alibaba.fastjson.JSONArray; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.alibaba.fastjson.JSONObject; | 
					 | 
					 | 
					 | 
					import com.alibaba.fastjson.JSONObject; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
					 | 
					 | 
					 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.google.common.collect.Lists; | 
					 | 
					 | 
					 | 
					import com.google.common.collect.Lists; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.constants.WeatherConstant; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.entity.DailyHeWeatherEntity; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.entity.DailyHeWeatherEntity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.entity.VStationEntity; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.entity.VStationEntity; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.response.weather.Daily; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.response.weather.Daily; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherDailyResponse; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherDailyResponse; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.HeWeatherHistoricalService; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.HeWeatherWeatherService; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.HeWeatherWeatherService; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.IDailyHeWeatherService; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.IDailyHeWeatherService; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.IStationService; | 
					 | 
					 | 
					 | 
					import com.hnac.hzims.weather.service.IStationService; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -19,23 +16,13 @@ import com.xxl.job.core.handler.annotation.XxlJob; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import com.xxl.job.core.log.XxlJobLogger; | 
					 | 
					 | 
					 | 
					import com.xxl.job.core.log.XxlJobLogger; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import lombok.AllArgsConstructor; | 
					 | 
					 | 
					 | 
					import lombok.AllArgsConstructor; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
					 | 
					 | 
					 | 
					import lombok.extern.slf4j.Slf4j; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.log.exception.ServiceException; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.log.logger.BladeLogger; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.api.R; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.CollectionUtil; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springblade.core.tool.utils.SpringUtil; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springframework.data.redis.core.RedisTemplate; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springframework.stereotype.Component; | 
					 | 
					 | 
					 | 
					import org.springframework.stereotype.Component; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import org.springframework.util.Assert; | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import java.lang.reflect.Method; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import java.util.List; | 
					 | 
					 | 
					 | 
					import java.util.List; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import java.util.concurrent.*; | 
					 | 
					 | 
					 | 
					import java.util.concurrent.*; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import static com.hnac.hzims.hzimsweather.constants.XxlJobConstant.STATION_DAILY_WEATHER; | 
					 | 
					 | 
					 | 
					import static com.hnac.hzims.hzimsweather.constants.XxlJobConstant.*; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import static com.hnac.hzims.hzimsweather.constants.XxlJobConstant.STATION_3D_WEATHER; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import static com.hnac.hzims.hzimsweather.constants.XxlJobConstant.STATION_NOW_WEATHER; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import static com.hnac.hzims.hzimsweather.constants.XxlJobConstant.STATION_7D_WEATHER; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/** | 
					 | 
					 | 
					 | 
					/** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * @author hx | 
					 | 
					 | 
					 | 
					 * @author hx | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -51,35 +38,35 @@ public class StationWeatherSchedule { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /** | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * 获取各站点下七日内天气 存入缓存 | 
					 | 
					 | 
					 | 
					     * 获取各站点下七日内天气 存入缓存 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						 * @Scheduled(cron = "0 10 0/12 * * ?") | 
					 | 
					 | 
					 | 
					     * | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @return | 
					 | 
					 | 
					 | 
					     * @return | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     * @Scheduled(cron = "0 10 0/12 * * ?") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    @XxlJob(STATION_7D_WEATHER) | 
					 | 
					 | 
					 | 
					    @XxlJob(STATION_7D_WEATHER) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public ReturnT<String> save7dWeather(String param) throws InterruptedException { | 
					 | 
					 | 
					 | 
					    public ReturnT<String> save7dWeather(String param) throws InterruptedException { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ExecutorService executorService = new ThreadPoolExecutor(10,stationEntityList.size(),0,TimeUnit.SECONDS,new LinkedBlockingDeque<>()); | 
					 | 
					 | 
					 | 
					        ExecutorService executorService = new ThreadPoolExecutor(10, stationEntityList.size(), 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							executorService.execute(()->stationEntityList.forEach(vStationEntity -> { | 
					 | 
					 | 
					 | 
					        executorService.execute(() -> stationEntityList.forEach(vStationEntity -> { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								try{ | 
					 | 
					 | 
					 | 
					            try { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取七日天气开始,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取七日天气开始,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                HeWeatherWeatherDailyResponse weatherDailyResponse = weatherService.getWeather7d(location); | 
					 | 
					 | 
					 | 
					                HeWeatherWeatherDailyResponse weatherDailyResponse = weatherService.getWeather7d(location); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									if(weatherDailyResponse.getCode().isOk()) { | 
					 | 
					 | 
					 | 
					                if (weatherDailyResponse.getCode().isOk()) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    List<Daily> dailyList = weatherDailyResponse.getDaily(); | 
					 | 
					 | 
					 | 
					                    List<Daily> dailyList = weatherDailyResponse.getDaily(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    List<DailyHeWeatherEntity> weatherEntityList = Lists.newArrayList(); | 
					 | 
					 | 
					 | 
					                    List<DailyHeWeatherEntity> weatherEntityList = Lists.newArrayList(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    for (Daily daily : dailyList) { | 
					 | 
					 | 
					 | 
					                    for (Daily daily : dailyList) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //查询数据库内是否存在这天的天气
 | 
					 | 
					 | 
					 | 
					                        //查询数据库内是否存在这天的天气
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											DailyHeWeatherEntity entity = JSONObject.parseObject(JSON.toJSONString(daily),DailyHeWeatherEntity.class); | 
					 | 
					 | 
					 | 
					                        DailyHeWeatherEntity entity = JSONObject.parseObject(JSON.toJSONString(daily), DailyHeWeatherEntity.class); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        DailyHeWeatherEntity dailyHeWeatherEntity = dailyHeWeatherService.getOne(Wrappers.<DailyHeWeatherEntity>lambdaQuery() | 
					 | 
					 | 
					 | 
					                        DailyHeWeatherEntity dailyHeWeatherEntity = dailyHeWeatherService.getOne(Wrappers.<DailyHeWeatherEntity>lambdaQuery() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
												.eq(DailyHeWeatherEntity::getStationCode,vStationEntity.getCode()) | 
					 | 
					 | 
					 | 
					                                .eq(DailyHeWeatherEntity::getStationCode, vStationEntity.getCode()) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
												.eq(DailyHeWeatherEntity::getFxDate,entity.getFxDate()) | 
					 | 
					 | 
					 | 
					                                .eq(DailyHeWeatherEntity::getFxDate, entity.getFxDate()) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                .last("limit 1;") | 
					 | 
					 | 
					 | 
					                                .last("limit 1;") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        ); | 
					 | 
					 | 
					 | 
					                        ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											if(ObjectUtil.isNotEmpty(dailyHeWeatherEntity)) { | 
					 | 
					 | 
					 | 
					                        if (ObjectUtil.isNotEmpty(dailyHeWeatherEntity)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            entity.setId(dailyHeWeatherEntity.getId()); | 
					 | 
					 | 
					 | 
					                            entity.setId(dailyHeWeatherEntity.getId()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											} | 
					 | 
					 | 
					 | 
					                        } else { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											else { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            entity.setStationCode(vStationEntity.getCode()); | 
					 | 
					 | 
					 | 
					                            entity.setStationCode(vStationEntity.getCode()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            entity.setDeptId(vStationEntity.getRefDept()); | 
					 | 
					 | 
					 | 
					                            entity.setDeptId(vStationEntity.getRefDept()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            entity.setTenantId(vStationEntity.getTenantId()); | 
					 | 
					 | 
					 | 
					                            entity.setTenantId(vStationEntity.getTenantId()); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -90,12 +77,11 @@ public class StationWeatherSchedule { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    dailyHeWeatherService.saveOrUpdateBatch(weatherEntityList); | 
					 | 
					 | 
					 | 
					                    dailyHeWeatherService.saveOrUpdateBatch(weatherEntityList); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					            } catch (Exception e) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								catch (Exception e) { | 
					 | 
					 | 
					 | 
					                log.error("{}获取七日天气失败,位置信息为:{},{}", vStationEntity.getName(), vStationEntity.getLgtd(), vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									e.printStackTrace(); | 
					 | 
					 | 
					 | 
					                log.error("获取七日天气失败", e); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取七日天气失败,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取七日天气失败,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					            } finally { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								finally { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        })); | 
					 | 
					 | 
					 | 
					        })); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -106,25 +92,25 @@ public class StationWeatherSchedule { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /** | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * 获取各站点下三日内天气 存入缓存  @Scheduled(cron = "0 5 0/1 * * ?") | 
					 | 
					 | 
					 | 
					     * 获取各站点下三日内天气 存入缓存  @Scheduled(cron = "0 5 0/1 * * ?") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     * | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @return | 
					 | 
					 | 
					 | 
					     * @return | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    @XxlJob(STATION_3D_WEATHER) | 
					 | 
					 | 
					 | 
					    @XxlJob(STATION_3D_WEATHER) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public ReturnT<String> save3dWeather(String param) throws InterruptedException { | 
					 | 
					 | 
					 | 
					    public ReturnT<String> save3dWeather(String param) throws InterruptedException { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ExecutorService executorService = new ThreadPoolExecutor(10,stationEntityList.size(),0,TimeUnit.SECONDS,new LinkedBlockingDeque<>()); | 
					 | 
					 | 
					 | 
					        ExecutorService executorService = new ThreadPoolExecutor(10, stationEntityList.size(), 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							executorService.execute(()->stationEntityList.forEach(vStationEntity -> { | 
					 | 
					 | 
					 | 
					        executorService.execute(() -> stationEntityList.forEach(vStationEntity -> { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            try { | 
					 | 
					 | 
					 | 
					            try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取三日天气开始,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取三日天气开始,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                weatherService.getWeather3d(location); | 
					 | 
					 | 
					 | 
					                weatherService.getWeather3d(location); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					            } catch (Exception e) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								catch (Exception e) { | 
					 | 
					 | 
					 | 
					                log.error("{}获取三日天气失败,位置信息为:{},{}", vStationEntity.getName(), vStationEntity.getLgtd(), vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									e.printStackTrace(); | 
					 | 
					 | 
					 | 
					                log.error("获取三日天气失败", e); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取三日天气失败,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取三日天气失败,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					            } finally { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								finally { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        })); | 
					 | 
					 | 
					 | 
					        })); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -135,25 +121,24 @@ public class StationWeatherSchedule { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    /** | 
					 | 
					 | 
					 | 
					    /** | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * 获取各站点下实况天气 存入缓存  @Scheduled(cron = "0 0 0/1 * * ?") | 
					 | 
					 | 
					 | 
					     * 获取各站点下实况天气 存入缓存  @Scheduled(cron = "0 0 0/1 * * ?") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					     * | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @return | 
					 | 
					 | 
					 | 
					     * @return | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
					 | 
					 | 
					 | 
					     * @throws InterruptedException | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					     */ | 
					 | 
					 | 
					 | 
					     */ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    @XxlJob(STATION_NOW_WEATHER) | 
					 | 
					 | 
					 | 
					    @XxlJob(STATION_NOW_WEATHER) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public ReturnT<String> saveNowWeather(String param) throws InterruptedException { | 
					 | 
					 | 
					 | 
					    public ReturnT<String> saveNowWeather(String param) throws InterruptedException { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
					 | 
					 | 
					 | 
					        List<VStationEntity> stationEntityList = stationService.getStationWithLocation(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ExecutorService executorService = new ThreadPoolExecutor(10,stationEntityList.size(),0,TimeUnit.SECONDS,new LinkedBlockingDeque<>()); | 
					 | 
					 | 
					 | 
					        ExecutorService executorService = new ThreadPoolExecutor(10, stationEntityList.size(), 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
					 | 
					 | 
					 | 
					        CountDownLatch downLatch = new CountDownLatch(stationEntityList.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							executorService.execute(()->stationEntityList.forEach(vStationEntity -> { | 
					 | 
					 | 
					 | 
					        executorService.execute(() -> stationEntityList.forEach(vStationEntity -> { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            try { | 
					 | 
					 | 
					 | 
					            try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取实时天气开始,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取实时天气开始,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
					 | 
					 | 
					 | 
					                String location = vStationEntity.getLgtd() + "," + vStationEntity.getLttd(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                weatherService.getWeatherNow(location); | 
					 | 
					 | 
					 | 
					                weatherService.getWeatherNow(location); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					            } catch (Exception e) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								catch(Exception e) { | 
					 | 
					 | 
					 | 
					                log.error("获取实时天气失败", e); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									e.printStackTrace(); | 
					 | 
					 | 
					 | 
					                XxlJobLogger.log(vStationEntity.getName() + "获取实时天气失败,位置信息为:" + vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									XxlJobLogger.log(vStationEntity.getName()+"获取实时天气失败,位置信息为:"+ vStationEntity.getLgtd() + "," + vStationEntity.getLttd()); | 
					 | 
					 | 
					 | 
					            } finally { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								finally { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
					 | 
					 | 
					 | 
					                downLatch.countDown(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        })); | 
					 | 
					 | 
					 | 
					        })); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |