Compare commits

...

2 Commits

  1. 144
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/station/service/impl/StationVideoTypeServiceImpl.java
  2. 87
      hzims-service/weather/src/main/java/com/hnac/hzims/weather/schedule/StationWeatherSchedule.java

144
hzims-service/operational/src/main/java/com/hnac/hzims/operational/station/service/impl/StationVideoTypeServiceImpl.java

@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hnac.hzims.operational.config.HikPathConfiguration; import com.hnac.hzims.operational.config.HikPathConfiguration;
import com.hnac.hzims.operational.station.StationConstants; import com.hnac.hzims.operational.station.StationConstants;
@ -57,30 +56,35 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
private String videoLoginUrl; private String videoLoginUrl;
@Value("${hzims.video.random-code}") @Value("${hzims.video.random-code}")
private String definitionCode; private String definitionCode;
@Value("${url.video.left}")
private List<String> videoLeft;
@Value("${url.video.right}")
private List<String> videoRight;
/** /**
* 获取海康视频接口 * 获取海康视频接口
*
* @return * @return
*/ */
@Override @Override
public String getHikVideo(){ public String getHikVideo() {
List<StationVideoTypeEntity> stationVideoTypeEntityList = this.list(); List<StationVideoTypeEntity> stationVideoTypeEntityList = this.list();
List<Long> ids = new ArrayList<>(); List<Long> ids = new ArrayList<>();
stationVideoTypeEntityList.forEach(stationVideoTypeEntity -> { stationVideoTypeEntityList.forEach(stationVideoTypeEntity -> {
if(ObjectUtil.isNotEmpty(stationVideoTypeEntity.getIsHikvideo()) && stationVideoTypeEntity.getIsHikvideo() == 1){ if (ObjectUtil.isNotEmpty(stationVideoTypeEntity.getIsHikvideo()) && stationVideoTypeEntity.getIsHikvideo() == 1) {
try{ try {
stationVideoTypeEntity.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewURL(stationVideoTypeEntity.getVideoHost(), stationVideoTypeEntity.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewURL(stationVideoTypeEntity.getVideoHost(),
stationVideoTypeEntity.getAppKey(),stationVideoTypeEntity.getAppSecret() stationVideoTypeEntity.getAppKey(), stationVideoTypeEntity.getAppSecret()
,stationVideoTypeEntity.getPointCode(), DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE, , stationVideoTypeEntity.getPointCode(), DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE,
stationVideoTypeEntity.getType()),0)); stationVideoTypeEntity.getType()), 0));
ids.add(stationVideoTypeEntity.getId()); ids.add(stationVideoTypeEntity.getId());
} } catch (Exception e) {
catch (Exception e){
stationVideoTypeEntity.setLiveSourceAddress(null); stationVideoTypeEntity.setLiveSourceAddress(null);
} }
} }
}); });
String result = ids.stream().map(id -> { String result = ids.stream().map(id -> {
return id+""; return id + "";
}).collect(Collectors.joining(",")); }).collect(Collectors.joining(","));
return result; return result;
} }
@ -92,15 +96,15 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
@Override @Override
public IPage<StationVideoTypeVO> getStationVideoOrderBySort(StationVideoTypeDTO req, Query query) { public IPage<StationVideoTypeVO> getStationVideoOrderBySort(StationVideoTypeDTO req, Query query) {
StationVideoTypeEntity stationVideoTypeEntity = BeanUtil.copy(req,StationVideoTypeEntity.class); StationVideoTypeEntity stationVideoTypeEntity = BeanUtil.copy(req, StationVideoTypeEntity.class);
QueryWrapper<StationVideoTypeEntity> queryWrapper = com.hnac.hzims.common.utils.Condition.getQueryWrapper(new StationVideoTypeEntity(),stationVideoTypeEntity,false, "vt"); QueryWrapper<StationVideoTypeEntity> queryWrapper = com.hnac.hzims.common.utils.Condition.getQueryWrapper(new StationVideoTypeEntity(), stationVideoTypeEntity, false, "vt");
IPage<StationVideoTypeVO> result = this.baseMapper.getStationVideoOrderBySort(queryWrapper,Condition.getPage(query)); IPage<StationVideoTypeVO> result = this.baseMapper.getStationVideoOrderBySort(queryWrapper, Condition.getPage(query));
return result; return result;
} }
@Override @Override
public IPage<StationVideoTypeEntity> getStationVideoOrderByName(StationVideoTypeVO req, Query query) { public IPage<StationVideoTypeEntity> getStationVideoOrderByName(StationVideoTypeVO req, Query query) {
if (ObjectUtil.isNotEmpty(req.getVideoOwerType())&&req.getVideoOwerType().equals(1)) { if (ObjectUtil.isNotEmpty(req.getVideoOwerType()) && req.getVideoOwerType().equals(1)) {
req.setVideoType("6"); req.setVideoType("6");
} }
Wrapper<StationVideoTypeEntity> queryWrapper = new LambdaQueryWrapper<StationVideoTypeEntity>() {{ Wrapper<StationVideoTypeEntity> queryWrapper = new LambdaQueryWrapper<StationVideoTypeEntity>() {{
@ -122,33 +126,33 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
if (ObjectUtil.isNotEmpty(req.getName())) { if (ObjectUtil.isNotEmpty(req.getName())) {
eq(StationVideoTypeEntity::getName, req.getName()); eq(StationVideoTypeEntity::getName, req.getName());
} }
if (ObjectUtil.isNotEmpty(req.getStationId())&&ObjectUtil.isEmpty(req.getVideoType())&&ObjectUtil.isNotEmpty(req.getVideoOwerType())&&req.getVideoOwerType().equals(2)) { if (ObjectUtil.isNotEmpty(req.getStationId()) && ObjectUtil.isEmpty(req.getVideoType()) && ObjectUtil.isNotEmpty(req.getVideoOwerType()) && req.getVideoOwerType().equals(2)) {
List<String> stringList = Arrays.asList("1", "2", "3", "4", "5"); List<String> stringList = Arrays.asList("1", "2", "3", "4", "5");
in(StationVideoTypeEntity::getVideoType,stringList); in(StationVideoTypeEntity::getVideoType, stringList);
} }
eq(StationVideoTypeEntity::getIsDeleted, 0); eq(StationVideoTypeEntity::getIsDeleted, 0);
orderBy(true,true,StationVideoTypeEntity::getStationSort); orderBy(true, true, StationVideoTypeEntity::getStationSort);
orderBy(true,true,StationVideoTypeEntity::getSort); orderBy(true, true, StationVideoTypeEntity::getSort);
}}; }};
IPage<StationVideoTypeEntity> result = this.page(Condition.getPage(query),queryWrapper); IPage<StationVideoTypeEntity> result = this.page(Condition.getPage(query), queryWrapper);
if (CollectionUtil.isNotEmpty(result.getRecords())){ if (CollectionUtil.isNotEmpty(result.getRecords())) {
for (StationVideoTypeEntity video : result.getRecords()) { for (StationVideoTypeEntity video : result.getRecords()) {
try { try {
video.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(video.getVideoHost(), video.getAppKey(), video.getAppSecret(), video.getPointCode(), 1)); video.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(video.getVideoHost(), video.getAppKey(), video.getAppSecret(), video.getPointCode(), 1));
} } catch (Exception e) {
catch(Exception e) { log.error("视频点位【" + video.getName() + "】获取地址失败");
log.error("视频点位【"+video.getName()+"】获取地址失败");
} }
} }
} }
return result; return result;
} }
@Override @Override
public List<StationVideoTypeEntity> getVideoByIdsAndType(String ids,String type) { public List<StationVideoTypeEntity> getVideoByIdsAndType(String ids, String type) {
List<Long> idList = Func.toLongList(",",ids); List<Long> idList = Func.toLongList(",", ids);
List<StationVideoTypeEntity> result = idList.stream().parallel().map(id -> this.getById(id)).filter(ObjectUtil::isNotEmpty).filter(entity -> entity.getIsHikvideo() == 1) List<StationVideoTypeEntity> result = idList.stream().parallel().map(id -> this.getById(id)).filter(ObjectUtil::isNotEmpty).filter(entity -> entity.getIsHikvideo() == 1)
.map(entity -> { .map(entity -> {
String address = null; String address = null;
@ -166,11 +170,11 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
} }
@Override @Override
public List<StationVideoTypeEntity> getVideoByIds(String ids,String randomCode) { public List<StationVideoTypeEntity> getVideoByIds(String ids, String randomCode) {
Assert.isTrue(StringUtil.isNoneBlank(randomCode) && randomCode.equals(definitionCode),()->{ Assert.isTrue(StringUtil.isNoneBlank(randomCode) && randomCode.equals(definitionCode), () -> {
throw new ServiceException("视频随机码为空或不正确"); throw new ServiceException("视频随机码为空或不正确");
}); });
Assert.isTrue(StringUtil.isNoneBlank(ids),()->{ Assert.isTrue(StringUtil.isNoneBlank(ids), () -> {
throw new ServiceException("视频配置ID不能为空"); throw new ServiceException("视频配置ID不能为空");
}); });
List<StationVideoTypeEntity> result = Arrays.stream(ids.split(",")).filter(ObjectUtil::isNotEmpty).map(id -> this.getById(id)).map(entity -> { List<StationVideoTypeEntity> result = Arrays.stream(ids.split(",")).filter(ObjectUtil::isNotEmpty).map(id -> this.getById(id)).map(entity -> {
@ -181,7 +185,7 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
entity.getAppKey(), entity.getAppKey(),
entity.getAppSecret(), entity.getAppSecret(),
entity.getPointCode(), entity.getPointCode(),
DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE,entity.getType()), 0 DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE, entity.getType()), 0
); );
entity.setLiveSourceAddress(address); entity.setLiveSourceAddress(address);
} catch (Exception e) { } catch (Exception e) {
@ -198,52 +202,50 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
JSONObject resultObject = JSONObject.parseObject(result); JSONObject resultObject = JSONObject.parseObject(result);
String data = resultObject.getString("data"); String data = resultObject.getString("data");
String access_token = JSONObject.parseObject(data).getString("access_token"); String access_token = JSONObject.parseObject(data).getString("access_token");
log.info("视频查看人员登陆token为:{}",access_token); log.info("视频查看人员登陆token为:{}", access_token);
return access_token; return access_token;
} }
@Override @Override
public List<JSONObject> getHikVisionStations() { public List<JSONObject> getHikVisionStations() {
Assert.isTrue(StringUtil.isNotBlank(pathConfiguration.getStationsPath()),()->{ Assert.isTrue(StringUtil.isNotBlank(pathConfiguration.getStationsPath()), () -> {
throw new ServiceException("nacos中未配置海康威视请求地址!"); throw new ServiceException("nacos中未配置海康威视请求地址!");
}); });
HttpResponse response; HttpResponse response;
try { try {
response = HttpUtil.createGet(pathConfiguration.getStationsPath()).execute(); response = HttpUtil.createGet(pathConfiguration.getStationsPath()).execute();
} } catch (Exception e) {
catch(Exception e) { logger.error("getHikVisionStations", e.getMessage());
logger.error("getHikVisionStations",e.getMessage());
return Lists.newArrayList(); return Lists.newArrayList();
// throw new ServiceException(e.getMessage()); // throw new ServiceException(e.getMessage());
} }
if(HttpServletResponse.SC_OK == response.getStatus()) { if (HttpServletResponse.SC_OK == response.getStatus()) {
return JSONArray.parseArray(response.body(),JSONObject.class); return JSONArray.parseArray(response.body(), JSONObject.class);
} }
return Lists.newArrayList(); return Lists.newArrayList();
} }
@Override @Override
public Map<HikDeviceResp, List<HikMonitorResp>> getMonitorsByStation(String stationId) { public Map<HikDeviceResp, List<HikMonitorResp>> getMonitorsByStation(String stationId) {
Assert.isTrue(StringUtil.isNotBlank(pathConfiguration.getMonitorsPath()),()->{ Assert.isTrue(StringUtil.isNotBlank(pathConfiguration.getMonitorsPath()), () -> {
throw new ServiceException("nacos中未配置海康威视请求地址!"); throw new ServiceException("nacos中未配置海康威视请求地址!");
}); });
HttpResponse response; HttpResponse response;
try{ try {
response = HttpUtil.createGet(pathConfiguration.getMonitorsPath()+"/"+stationId).execute(); response = HttpUtil.createGet(pathConfiguration.getMonitorsPath() + "/" + stationId).execute();
} } catch (RuntimeException e) {
catch (RuntimeException e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());
} }
Assert.isTrue(HttpServletResponse.SC_OK == response.getStatus(),()->{ Assert.isTrue(HttpServletResponse.SC_OK == response.getStatus(), () -> {
throw new ServiceException("调用获取海康威视站点下监测点列表接口失败!"); throw new ServiceException("调用获取海康威视站点下监测点列表接口失败!");
}); });
List<HikMonitorResp> monitorList = JSONArray.parseArray(response.body(), HikMonitorResp.class); List<HikMonitorResp> monitorList = JSONArray.parseArray(response.body(), HikMonitorResp.class);
logger.info("HikVideo:monitor:info",JSON.toJSONString(monitorList)); logger.info("HikVideo:monitor:info", JSON.toJSONString(monitorList));
return monitorList.stream().collect(Collectors.groupingBy(HikMonitorResp::getDevice)); return monitorList.stream().collect(Collectors.groupingBy(HikMonitorResp::getDevice));
} }
@Override @Override
public List<StationVideoTypeEntity> getVideoCount(String code,List<String> videoType,String videoOwerType) { public List<StationVideoTypeEntity> getVideoCount(String code, List<String> videoType, String videoOwerType) {
LambdaQueryWrapper<StationVideoTypeEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<StationVideoTypeEntity> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtil.isNotBlank(code)) { if (StringUtil.isNotBlank(code)) {
queryWrapper.eq(StationVideoTypeEntity::getStationId, code); queryWrapper.eq(StationVideoTypeEntity::getStationId, code);
@ -254,30 +256,29 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
if (StringUtil.isNotBlank(videoOwerType)) { if (StringUtil.isNotBlank(videoOwerType)) {
queryWrapper.eq(StationVideoTypeEntity::getVideoOwerType, videoOwerType); queryWrapper.eq(StationVideoTypeEntity::getVideoOwerType, videoOwerType);
} }
if (ObjectUtil.isNotEmpty(this.baseMapper.selectCount(queryWrapper))){ if (ObjectUtil.isNotEmpty(this.baseMapper.selectCount(queryWrapper))) {
List<StationVideoTypeEntity> stationVideoTypeEntities = this.baseMapper.selectList(queryWrapper); List<StationVideoTypeEntity> stationVideoTypeEntities = this.baseMapper.selectList(queryWrapper);
return stationVideoTypeEntities; return stationVideoTypeEntities;
}else { } else {
return new ArrayList<>(); return new ArrayList<>();
} }
} }
@Override @Override
public StationVideoTypeEntity getById(Long id,int streamType){ public StationVideoTypeEntity getById(Long id, int streamType) {
StationVideoTypeEntity stationVideoTypeEntity = this.getById(id); StationVideoTypeEntity stationVideoTypeEntity = this.getById(id);
if(ObjectUtil.isNotEmpty(stationVideoTypeEntity.getIsHikvideo()) && stationVideoTypeEntity.getIsHikvideo() == 1){ if (ObjectUtil.isNotEmpty(stationVideoTypeEntity.getIsHikvideo()) && stationVideoTypeEntity.getIsHikvideo() == 1) {
try{ try {
/**视频监控秘钥**/ /**视频监控秘钥**/
stationVideoTypeEntity.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewURL( stationVideoTypeEntity.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewURL(
stationVideoTypeEntity.getVideoHost() stationVideoTypeEntity.getVideoHost()
, stationVideoTypeEntity.getAppKey() , stationVideoTypeEntity.getAppKey()
, stationVideoTypeEntity.getAppSecret() , stationVideoTypeEntity.getAppSecret()
, stationVideoTypeEntity.getPointCode() , stationVideoTypeEntity.getPointCode()
, DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE,stationVideoTypeEntity.getType()) , DictCache.getValue(StationConstants.STATION_VIDEO_TYPE_CODE, stationVideoTypeEntity.getType())
, streamType , streamType
)); ));
} } catch (Exception e) {
catch (Exception e){
stationVideoTypeEntity.setLiveSourceAddress(null); stationVideoTypeEntity.setLiveSourceAddress(null);
} }
} }
@ -287,11 +288,11 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
@Override @Override
public List<VideoMonitorVO> getVideoMonitor() { public List<VideoMonitorVO> getVideoMonitor() {
List<VideoMonitorVO> videoMonitorVOList = this.baseMapper.getVideoMonitor(); List<VideoMonitorVO> videoMonitorVOList = this.baseMapper.getVideoMonitor();
if(CollectionUtil.isEmpty(videoMonitorVOList)){ if (CollectionUtil.isEmpty(videoMonitorVOList)) {
return new ArrayList<>(); return new ArrayList<>();
} }
return videoMonitorVOList.stream().map(item->{ return videoMonitorVOList.stream().map(item -> {
if(CollectionUtil.isEmpty(item.getChildren())){ if (CollectionUtil.isEmpty(item.getChildren())) {
return item; return item;
} }
item.setChildren(item.getChildren().stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StationVideoTypeVO::getName))), ArrayList::new))); item.setChildren(item.getChildren().stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(StationVideoTypeVO::getName))), ArrayList::new)));
@ -302,19 +303,19 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
@Override @Override
public List<VideoMonitorVO> getVideoMonitor(String type) { public List<VideoMonitorVO> getVideoMonitor(String type) {
List<StationEntity> agencyStationList = this.baseMapper.getAgencyStationsByVideo(type); List<StationEntity> agencyStationList = this.baseMapper.getAgencyStationsByVideo(type);
if(CollectionUtil.isEmpty(agencyStationList)) { if (CollectionUtil.isEmpty(agencyStationList)) {
return null; return null;
} }
return agencyStationList.stream() return agencyStationList.stream()
.map(stationEntity -> BeanUtil.copy(stationEntity,VideoMonitorVO.class)) .map(stationEntity -> BeanUtil.copy(stationEntity, VideoMonitorVO.class))
.map(videoMonitorVO -> { .map(videoMonitorVO -> {
LambdaQueryWrapper<StationVideoTypeEntity> qw = Wrappers.<StationVideoTypeEntity>lambdaQuery() LambdaQueryWrapper<StationVideoTypeEntity> qw = Wrappers.<StationVideoTypeEntity>lambdaQuery()
.eq(StationVideoTypeEntity::getStationId, videoMonitorVO.getCode()) .eq(StationVideoTypeEntity::getStationId, videoMonitorVO.getCode())
.orderByAsc(StationVideoTypeEntity::getSort); .orderByAsc(StationVideoTypeEntity::getSort);
if(StringUtil.isNotBlank(type)) { if (StringUtil.isNotBlank(type)) {
qw.eq(StationVideoTypeEntity::getVideoType,type); qw.eq(StationVideoTypeEntity::getVideoType, type);
} }
List<StationVideoTypeVO> children = JSONArray.parseArray(JSONArray.toJSONString(this.list(qw)),StationVideoTypeVO.class); List<StationVideoTypeVO> children = JSONArray.parseArray(JSONArray.toJSONString(this.list(qw)), StationVideoTypeVO.class);
videoMonitorVO.setChildren(children); videoMonitorVO.setChildren(children);
return videoMonitorVO; return videoMonitorVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -322,33 +323,32 @@ public class StationVideoTypeServiceImpl extends BaseServiceImpl<StationVideoTyp
/** /**
* 水利监控视频 * 水利监控视频
*
* @return * @return
*/ */
@Override @Override
public WaterMonitorVideoVo waterMonitorVideo() { public WaterMonitorVideoVo waterMonitorVideo() {
WaterMonitorVideoVo video = new WaterMonitorVideoVo(); WaterMonitorVideoVo video = new WaterMonitorVideoVo();
List<StationVideoTypeEntity> left = this.list(Wrappers.<StationVideoTypeEntity>lambdaQuery(). List<StationVideoTypeEntity> left = this.list(Wrappers.<StationVideoTypeEntity>lambdaQuery().
in(StationVideoTypeEntity::getId,Arrays.asList(28483776900235440L,28483776900235463L, 28483776900235466L))); in(StationVideoTypeEntity::getId, videoLeft));
if(CollectionUtil.isNotEmpty(left)){ if (CollectionUtil.isNotEmpty(left)) {
video.setLeft(left.stream().peek(item->{ video.setLeft(left.stream().peek(item -> {
try { try {
item.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(item.getVideoHost(), item.getAppKey(), item.getAppSecret(), item.getPointCode(), 1)); item.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(item.getVideoHost(), item.getAppKey(), item.getAppSecret(), item.getPointCode(), 1));
} } catch (Exception e) {
catch(Exception e) { log.error("视频点位【" + item.getPointCode() + "】获取地址失败");
log.error("视频点位【"+item.getPointCode()+"】获取地址失败");
} }
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }
List<StationVideoTypeEntity> right = this.list(Wrappers.<StationVideoTypeEntity>lambdaQuery(). List<StationVideoTypeEntity> right = this.list(Wrappers.<StationVideoTypeEntity>lambdaQuery().
in(StationVideoTypeEntity::getId,Arrays.asList(28483776900235468L,28483776900235467L,28483776900235472L))); in(StationVideoTypeEntity::getId, videoRight));
if(CollectionUtil.isNotEmpty(right)){ if (CollectionUtil.isNotEmpty(right)) {
video.setRight(right.stream().peek(item->{ video.setRight(right.stream().peek(item -> {
try { try {
item.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(item.getVideoHost(), item.getAppKey(), item.getAppSecret(), item.getPointCode(), 1)); item.setLiveSourceAddress(ArtemisPostUtils.getCameraPreviewFlvURL(item.getVideoHost(), item.getAppKey(), item.getAppSecret(), item.getPointCode(), 1));
} } catch (Exception e) {
catch(Exception e) { log.error("视频点位【" + item.getPointCode() + "】获取地址失败");
log.error("视频点位【"+item.getPointCode()+"】获取地址失败");
} }
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }

87
hzims-service/weather/src/main/java/com/hnac/hzims/weather/schedule/StationWeatherSchedule.java

@ -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();
} }
})); }));

Loading…
Cancel
Save