|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.hnac.hzims.scheduled.service.operation.home.impl; |
|
|
|
package com.hnac.hzims.scheduled.service.operation.home.impl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.alibaba.fastjson.TypeReference; |
|
|
|
import com.alibaba.fastjson.TypeReference; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
@ -39,6 +40,7 @@ import com.hnac.hzinfo.sdk.core.response.Result; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.DeviceDataClient; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.DeviceDataClient; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.dto.ReductionDataDTO; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.dto.ReductionDataDTO; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.vo.ReductionDataVO; |
|
|
|
import com.hnac.hzinfo.sdk.v5.device.vo.ReductionDataVO; |
|
|
|
|
|
|
|
import com.xxl.job.core.log.XxlJobLogger; |
|
|
|
import io.undertow.util.CopyOnWriteMap; |
|
|
|
import io.undertow.util.CopyOnWriteMap; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -546,59 +548,52 @@ public class RealTargetServiceImpl implements RealTargetService { |
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(modelList.size()); |
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(modelList.size()); |
|
|
|
for(HzimsAnalyzeModelStationEntity item : modelList){ |
|
|
|
for(HzimsAnalyzeModelStationEntity item : modelList){ |
|
|
|
pool.execute(() -> { |
|
|
|
pool.execute(() -> { |
|
|
|
this.queryWaterLeve(list,item); |
|
|
|
try{ |
|
|
|
countDownLatch.countDown(); |
|
|
|
List<MultiAnalyzeCodePO> multiAnalyzeCodePOList = new ArrayList<>(); |
|
|
|
|
|
|
|
MultiAnalyzeCodePO multiAnalyzeCodePO = new MultiAnalyzeCodePO(); |
|
|
|
|
|
|
|
multiAnalyzeCodePO.setDeviceCode(item.getInstanceCode()); |
|
|
|
|
|
|
|
multiAnalyzeCodePO.setSignages(Collections.singletonList(HomePageConstant.FRONT_WATER_LEVEL)); |
|
|
|
|
|
|
|
multiAnalyzeCodePOList.add(multiAnalyzeCodePO); |
|
|
|
|
|
|
|
R<List<AnalyzeCodeBySignagesVO>> result = analyseDataSearchClient.getAnalyzeCodeBySignages(multiAnalyzeCodePOList); |
|
|
|
|
|
|
|
if(result.isSuccess() && CollectionUtil.isNotEmpty(result.getData())){ |
|
|
|
|
|
|
|
WaterLevelVo waterLevelVo=new WaterLevelVo(); |
|
|
|
|
|
|
|
waterLevelVo.setStationCode(item.getStationId()); |
|
|
|
|
|
|
|
// 前水位
|
|
|
|
|
|
|
|
double frontWaterLevel=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.FRONT_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setFrontWaterLevel(frontWaterLevel); |
|
|
|
|
|
|
|
// 后水位
|
|
|
|
|
|
|
|
double rearWaterLevel=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.REAR_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setRearWaterLevel(rearWaterLevel); |
|
|
|
|
|
|
|
// 下泄流量
|
|
|
|
|
|
|
|
double dischargeFlow=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.DISCHARGE_FLOW); |
|
|
|
|
|
|
|
waterLevelVo.setDischargeFlow(dischargeFlow); |
|
|
|
|
|
|
|
// 前水位当日曲线
|
|
|
|
|
|
|
|
Map<Integer, String> frontCurveMap=this.getWaterLevelMap(item.getInstanceCode(),HomePageConstant.FRONT_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setFrontCurveMap(frontCurveMap); |
|
|
|
|
|
|
|
// 后水位当日曲线
|
|
|
|
|
|
|
|
Map<Integer, String> rearCurveMap=this.getWaterLevelMap(item.getInstanceCode(),HomePageConstant.REAR_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setRearCurveMap(rearCurveMap); |
|
|
|
|
|
|
|
list.add(waterLevelVo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
countDownLatch.countDown(); |
|
|
|
|
|
|
|
XxlJobLogger.log("load_water_level : 子线程执行完成 {}", item.getInstanceCode()); |
|
|
|
|
|
|
|
} catch (Exception exception) { |
|
|
|
|
|
|
|
countDownLatch.countDown(); |
|
|
|
|
|
|
|
XxlJobLogger.log("load_water_level_error : 子线程执行失败 {}", exception.getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
try { |
|
|
|
try { |
|
|
|
log.error("load_water_level :等待线程执行"); |
|
|
|
XxlJobLogger.log("load_water_level :等待线程执行"); |
|
|
|
countDownLatch.await(); |
|
|
|
countDownLatch.await(); |
|
|
|
} catch (InterruptedException e) { |
|
|
|
} catch (InterruptedException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
e.printStackTrace(); |
|
|
|
Thread.currentThread().interrupt(); |
|
|
|
Thread.currentThread().interrupt(); |
|
|
|
} |
|
|
|
} |
|
|
|
log.error("load_water_level :线程执行结束"); |
|
|
|
XxlJobLogger.log("load_water_level :线程执行结束"); |
|
|
|
redisTemplate.opsForValue().set(loadwater_level_key,list); |
|
|
|
redisTemplate.opsForValue().set(loadwater_level_key,list); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 水位数据查询 |
|
|
|
|
|
|
|
* @param list |
|
|
|
|
|
|
|
* @param item |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private void queryWaterLeve(List<WaterLevelVo> list,HzimsAnalyzeModelStationEntity item) { |
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
List<MultiAnalyzeCodePO> multiAnalyzeCodePOList=new ArrayList<>(); |
|
|
|
|
|
|
|
MultiAnalyzeCodePO multiAnalyzeCodePO=new MultiAnalyzeCodePO(); |
|
|
|
|
|
|
|
multiAnalyzeCodePO.setDeviceCode(item.getInstanceCode()); |
|
|
|
|
|
|
|
multiAnalyzeCodePO.setSignages(Collections.singletonList(HomePageConstant.FRONT_WATER_LEVEL)); |
|
|
|
|
|
|
|
multiAnalyzeCodePOList.add(multiAnalyzeCodePO); |
|
|
|
|
|
|
|
R<List<AnalyzeCodeBySignagesVO>>result=analyseDataSearchClient.getAnalyzeCodeBySignages(multiAnalyzeCodePOList); |
|
|
|
|
|
|
|
if(result.isSuccess() && CollectionUtil.isNotEmpty(result.getData())){ |
|
|
|
|
|
|
|
WaterLevelVo waterLevelVo=new WaterLevelVo(); |
|
|
|
|
|
|
|
waterLevelVo.setStationCode(item.getStationId()); |
|
|
|
|
|
|
|
// 前水位
|
|
|
|
|
|
|
|
double frontWaterLevel=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.FRONT_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setFrontWaterLevel(frontWaterLevel); |
|
|
|
|
|
|
|
// 后水位
|
|
|
|
|
|
|
|
double rearWaterLevel=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.REAR_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setRearWaterLevel(rearWaterLevel); |
|
|
|
|
|
|
|
// 下泄流量
|
|
|
|
|
|
|
|
double dischargeFlow=this.getWaterLevel(item.getInstanceCode(),HomePageConstant.DISCHARGE_FLOW); |
|
|
|
|
|
|
|
waterLevelVo.setDischargeFlow(dischargeFlow); |
|
|
|
|
|
|
|
// 前水位当日曲线
|
|
|
|
|
|
|
|
Map<Integer, String> frontCurveMap=this.getWaterLevelMap(item.getInstanceCode(),HomePageConstant.FRONT_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setFrontCurveMap(frontCurveMap); |
|
|
|
|
|
|
|
// 后水位当日曲线
|
|
|
|
|
|
|
|
Map<Integer, String> rearCurveMap=this.getWaterLevelMap(item.getInstanceCode(),HomePageConstant.REAR_WATER_LEVEL); |
|
|
|
|
|
|
|
waterLevelVo.setRearCurveMap(rearCurveMap); |
|
|
|
|
|
|
|
list.add(waterLevelVo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.error("load_water_level : 小节线程执行完成 {}", item.getInstanceCode()); |
|
|
|
|
|
|
|
} catch (Exception exception) { |
|
|
|
|
|
|
|
log.error("load_water_level_error : 线程执行失败 {}", exception.getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 光伏站-逆变器实时加载 |
|
|
|
* 光伏站-逆变器实时加载 |
|
|
|