云前置改造-台账相关功能
This commit is contained in:
@@ -8,9 +8,11 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.csharmonic.service.CsEventUserPOService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -76,6 +78,16 @@ public class EventUserController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/frontWarnInfo")
|
||||
@ApiOperation("前置告警信息")
|
||||
@ApiImplicitParam(name = "baseParam", value = "基础查询数据", required = true)
|
||||
public HttpResult<Page<CsEventPO>> frontWarnInfo(@RequestBody BaseParam baseParam) {
|
||||
String methodDescribe = getMethodDescribe("frontWarnInfo");
|
||||
Page<CsEventPO> list = csEventUserPOService.getFrontWarnInfo(baseParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateStatus")
|
||||
@ApiOperation("已读事件")
|
||||
@@ -86,5 +98,4 @@ public class EventUserController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ public class RealDataController extends BaseController {
|
||||
public HttpResult<Boolean> getRealData(@RequestParam("lineId") String lineId) {
|
||||
String methodDescribe = getMethodDescribe("getRealData");
|
||||
boolean result = realDataService.getBaseRealData(lineId);
|
||||
redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, RequestUtil.getUserIndex(),600L);
|
||||
if (result) {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
} else {
|
||||
@@ -69,15 +68,4 @@ public class RealDataController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getCldBaseRealData")
|
||||
@ApiOperation("获取云前置基础实时数据")
|
||||
@ApiImplicitParam(name = "lineId", value = "监测点id")
|
||||
public HttpResult<String> getCldBaseRealData(@RequestParam("lineId") String lineId) {
|
||||
String methodDescribe = getMethodDescribe("getCldBaseRealData");
|
||||
realDataService.getCldBaseRealData(lineId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "平台下发指令成功", methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.njcn.csharmonic.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventUserPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -29,4 +31,6 @@ public interface CsEventUserPOService extends IService<CsEventUserPO>{
|
||||
Page<EventDetailVO> queryEventpage(CsEventUserQueryPage csEventUserQueryPage);
|
||||
|
||||
Page<EventDetailVO> queryEventPageWeb(CsEventUserQueryPage csEventUserQueryPage);
|
||||
|
||||
Page<CsEventPO> getFrontWarnInfo(BaseParam baseParam);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,4 @@ public interface RealDataService {
|
||||
* @param lineId
|
||||
*/
|
||||
boolean getHarmRealData(String lineId,Integer target);
|
||||
|
||||
void getCldBaseRealData(String lineId);
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.DataGroupEventVO;
|
||||
import com.njcn.csharmonic.enums.CsHarmonicResponseEnum;
|
||||
import com.njcn.csharmonic.mapper.CsEventPOMapper;
|
||||
import com.njcn.csharmonic.param.CldEventParam;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
@@ -41,7 +40,9 @@ import com.njcn.influx.pojo.dto.EventDataSetDTO;
|
||||
import com.njcn.influx.service.EvtDataService;
|
||||
import com.njcn.influx.utils.InfluxDbUtils;
|
||||
import com.njcn.minioss.config.MinIossProperties;
|
||||
import com.njcn.minioss.util.MinIoUtils;
|
||||
import com.njcn.oss.constant.GeneralConstant;
|
||||
import com.njcn.oss.constant.OssPath;
|
||||
import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.system.api.EleEvtFeignClient;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
@@ -61,6 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
@@ -95,6 +97,7 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
private final WavePicComponent wavePicComponent;
|
||||
private final MinIossProperties minIossProperties;
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
private final MinIoUtils minIoUtils;
|
||||
|
||||
@Override
|
||||
public List<EventDetailVO> queryEventList(CsEventUserQueryParam csEventUserQueryParam) {
|
||||
@@ -291,18 +294,13 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
influxDbUtils.batchInsert(influxDbUtils.getDbName(), "", InfluxDB.ConsistencyLevel.ALL, TimeUnit.MILLISECONDS, records);
|
||||
}
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(param.getWavePathCfg()) && StrUtil.isNotBlank(param.getWavePathDat())) {
|
||||
if (StrUtil.isNotBlank(param.getWavePath())) {
|
||||
//更新文件信息
|
||||
//先校验两份文件的名称是否一致
|
||||
String cfgFileName = param.getWavePathCfg().split("\\.")[0];
|
||||
String datFileName = param.getWavePathDat().split("\\.")[0];
|
||||
if (!Objects.equals(cfgFileName, datFileName)) {
|
||||
throw new BusinessException(CsHarmonicResponseEnum.EVENT_FILE_NOT_SAME);
|
||||
}
|
||||
this.lambdaUpdate()
|
||||
.eq(CsEventPO::getLineId,param.getMonitorId())
|
||||
.eq(CsEventPO::getStartTime,param.getStartTime())
|
||||
.set(CsEventPO::getWavePath,cfgFileName)
|
||||
.set(CsEventPO::getWavePath,param.getWavePath())
|
||||
.update();
|
||||
}
|
||||
}
|
||||
@@ -351,6 +349,16 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
throw new BusinessException(WaveFileResponseEnum.ANALYSE_WAVE_NOT_FOUND);
|
||||
}
|
||||
String cfgPath = waveName.concat(GeneralConstant.CFG), datPath = waveName.concat(GeneralConstant.DAT);
|
||||
//不同设备,波形文件后缀大小写不一致,针对大小写判断文件是否存在
|
||||
boolean result1 = minIoUtils.checkFileIsExist(minIossProperties.getBucket(), cfgPath);
|
||||
if (!result1) {
|
||||
cfgPath = waveName.concat(GeneralConstant.CFG_LOWER);
|
||||
}
|
||||
boolean result2 = minIoUtils.checkFileIsExist(minIossProperties.getBucket(), datPath);
|
||||
if (!result2) {
|
||||
datPath = waveName.concat(GeneralConstant.DAT_LOWER);
|
||||
}
|
||||
|
||||
System.out.println("波形路径-------------------" + cfgPath);
|
||||
try (
|
||||
InputStream cfgStream = fileStorageUtil.getFileStream(cfgPath);
|
||||
|
||||
@@ -1,19 +1,26 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.csp.sentinel.util.StringUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.constant.LogInfo;
|
||||
import com.njcn.csdevice.api.CsLedgerFeignClient;
|
||||
import com.njcn.csdevice.api.NodeFeignClient;
|
||||
import com.njcn.csdevice.constant.DataParam;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.po.Node;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import com.njcn.csharmonic.mapper.CsEventPOMapper;
|
||||
import com.njcn.csharmonic.mapper.CsEventUserPOMapper;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryPage;
|
||||
import com.njcn.csharmonic.param.CsEventUserQueryParam;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventPO;
|
||||
import com.njcn.csharmonic.pojo.po.CsEventUserPO;
|
||||
import com.njcn.csharmonic.pojo.vo.EventDetailVO;
|
||||
import com.njcn.csharmonic.service.CsEventUserPOService;
|
||||
@@ -25,6 +32,7 @@ import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import com.njcn.system.pojo.po.EleEvtParm;
|
||||
import com.njcn.user.enums.AppRoleEnum;
|
||||
import com.njcn.web.pojo.param.BaseParam;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -33,6 +41,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -53,6 +62,7 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
|
||||
private final EpdFeignClient epdFeignClient;
|
||||
private final EleEvtFeignClient eleEvtFeignClient;
|
||||
private final CsEventPOMapper csEventPOMapper;
|
||||
private final NodeFeignClient nodeFeignClient;
|
||||
|
||||
@Override
|
||||
public Integer queryEventCount(CsEventUserQueryParam csEventUserQueryParam) {
|
||||
@@ -504,4 +514,36 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
|
||||
return returnpage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<CsEventPO> getFrontWarnInfo(BaseParam baseParam) {
|
||||
Page<CsEventPO> page = new Page<>(baseParam.getPageNum(), baseParam.getPageSize());
|
||||
List<Node> nodeList = nodeFeignClient.nodeAllList().getData();
|
||||
Map<String, Node> nodeMap = nodeList.stream().collect(Collectors.toMap(Node::getId, Function.identity()));
|
||||
|
||||
if (CollectionUtil.isNotEmpty(nodeList)) {
|
||||
if (ObjectUtil.isNotNull(baseParam.getSearchValue()) || StringUtil.isNotBlank(baseParam.getSearchValue())) {
|
||||
nodeList = nodeList.stream().filter(item-> item.getName().contains(baseParam.getSearchValue()) || item.getIp().contains(baseParam.getSearchValue())).collect(Collectors.toList());
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(nodeList)) {
|
||||
List<String> nodeIds = nodeList.stream().map(Node::getId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<CsEventPO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(CsEventPO::getDeviceId, nodeIds)
|
||||
.between(CsEventPO::getStartTime,
|
||||
DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())).toString())
|
||||
.eq(CsEventPO::getType, 4)
|
||||
.orderByDesc(CsEventPO::getStartTime);
|
||||
page = csEventPOMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
}
|
||||
List<CsEventPO> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
page.getRecords().forEach(item->{
|
||||
//这边将前置名称放进lineId字段;将前置IP放进wavePath字段;进程号使用clDid
|
||||
item.setLineId(nodeMap.get(item.getDeviceId()).getName());
|
||||
item.setWavePath(nodeMap.get(item.getDeviceId()).getIp());
|
||||
});
|
||||
}
|
||||
return page;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
@@ -21,7 +22,9 @@ import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import dm.jdbc.util.StringUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -109,20 +112,20 @@ public class LineTargetServiceImpl implements ILineTargetService {
|
||||
String path = csPagePOService.queryById(id).getPath();
|
||||
InputStream inputStream = fileStorageUtil.getFileStream(path);
|
||||
ZuTaiDTO zuTaiDto = analysisJson(inputStream);
|
||||
zuTaiDto.getDoneJson().forEach(item->{
|
||||
if (!Objects.isNull(item.getTarget())){
|
||||
zuTaiDto.getJson().forEach(item->{
|
||||
if (!Objects.isNull(item.getTarget()) && StringUtils.isNotBlank(item.getTarget())){
|
||||
String targetTag = item.getTarget().split("\\$")[0];
|
||||
String phasic = item.getTarget().split("\\$")[1];
|
||||
String dataType = item.getTarget().split("\\$")[2];
|
||||
if (CollectionUtils.isEmpty(item.getUId()) || CollectionUtils.isEmpty(item.getLineId())){
|
||||
if (CollectionUtils.isEmpty(item.getUId()) || ObjectUtil.isNull(item.getLineId())){
|
||||
throw new BusinessException(CsHarmonicResponseEnum.BIND_TARGET_ERROR);
|
||||
}
|
||||
CsDataArray dataArray = dataArrayFeignClient.getDataArrayById(item.getUId().get(0),targetTag).getData().get(0);
|
||||
String targetName = dataArray.getAnotherName();
|
||||
String dataId = dataArray.getDataId();
|
||||
String classId = epdFeignClient.selectById(dataId).getData().getClassId();
|
||||
String clDid = influxDbParamUtil.getClDidByLineId(item.getLineId().get(3));
|
||||
result.add(getLineRtData(item.getId(),item.getLineId().get(3),classId,targetTag,phasic,dataType,targetName,clDid));
|
||||
String clDid = influxDbParamUtil.getClDidByLineId(item.getLineId());
|
||||
result.add(getLineRtData(item.getId(),item.getLineId(),influxDbParamUtil.getTableNameByClassId(classId),targetTag,phasic,dataType,targetName,clDid));
|
||||
}
|
||||
});
|
||||
return result;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.njcn.csharmonic.service.impl;
|
||||
|
||||
import com.alibaba.cloud.commons.lang.StringUtils;
|
||||
import com.njcn.access.api.AskDeviceDataFeignClient;
|
||||
import com.njcn.access.utils.MqttUtil;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
@@ -10,7 +9,6 @@ import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.pojo.po.CsDataSet;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
|
||||
import com.njcn.csharmonic.service.RealDataService;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.api.DictTreeFeignClient;
|
||||
@@ -50,36 +48,47 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
//判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态
|
||||
CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData();
|
||||
String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode();
|
||||
// if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
// if (dev.getRunStatus() == 1) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// } else {
|
||||
// String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
// boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
// if (!mqttClient) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// }
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
if (dev.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
} else {
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
}
|
||||
Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1));
|
||||
//获取装置所用模板
|
||||
CsLinePO po = csLineFeignClient.getById(lineId).getData();
|
||||
String modelId = po.getDataModelId();
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,clDid).getData();
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId());
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,1).getData();
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId(),csDataSet.getIdx());
|
||||
updateRedisUserSet("rtDataUserId:" + lineId, RequestUtil.getUserIndex(), 600L);
|
||||
updateRedisUserSet("cldRtDataOverTime:" + lineId, RequestUtil.getUserIndex(), 5L);
|
||||
} else {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,clDid).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, RequestUtil.getUserIndex(),600L);
|
||||
}
|
||||
//等待装置响应,获取询问结果
|
||||
Thread.sleep(2000);
|
||||
Object object = redisUtil.getObjectByKey("devResponse");
|
||||
Object object;
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
object = redisUtil.getObjectByKey("devResponse:" + lineId);
|
||||
} else {
|
||||
object = redisUtil.getObjectByKey("devResponse");
|
||||
}
|
||||
if (Objects.isNull(object)) {
|
||||
result = false;
|
||||
//throw new BusinessException("数据获取失败,设备无响应");
|
||||
} else {
|
||||
int code = (Integer) object;
|
||||
if (code != 200) {
|
||||
result = false;
|
||||
//throw new BusinessException("数据获取失败,设备无响应");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -93,21 +102,40 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
boolean result = true;
|
||||
try {
|
||||
String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
//判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态
|
||||
CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData();
|
||||
String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode();
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
if (dev.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
} else {
|
||||
String clientName = "NJCN-" + nDid.substring(nDid.length() - 6);
|
||||
boolean mqttClient = mqttUtil.judgeClientOnline(clientName);
|
||||
if (!mqttClient) {
|
||||
throw new BusinessException("装置离线");
|
||||
}
|
||||
}
|
||||
Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1));
|
||||
//获取装置所用模板
|
||||
CsLinePO po = csLineFeignClient.getById(lineId).getData();
|
||||
String modelId = po.getDataModelId();
|
||||
//根据指标来获取不同的数据集
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,clDid,target).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,1,target).getData();
|
||||
askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId(),csDataSet.getIdx());
|
||||
} else {
|
||||
CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,clDid,target).getData();
|
||||
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
|
||||
}
|
||||
//等待装置响应,获取询问结果
|
||||
Thread.sleep(2000);
|
||||
Object object = redisUtil.getObjectByKey("devResponse");
|
||||
Object object;
|
||||
if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode)) {
|
||||
object = redisUtil.getObjectByKey("devResponse:" + lineId);
|
||||
} else {
|
||||
object = redisUtil.getObjectByKey("devResponse");
|
||||
}
|
||||
if (Objects.isNull(object)) {
|
||||
result = false;
|
||||
} else {
|
||||
@@ -122,36 +150,6 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCldBaseRealData(String lineId) {
|
||||
try {
|
||||
// 参数校验
|
||||
if (StringUtils.isBlank(lineId) || lineId.length() <= 1) {
|
||||
throw new BusinessException("线路ID格式错误");
|
||||
}
|
||||
String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(nDid).getData();
|
||||
if (Objects.isNull(csEquipmentDeliveryVO)) {
|
||||
log.warn("未找到对应的设备信息,nDid: {}", nDid);
|
||||
return;
|
||||
}
|
||||
// 检查设备运行状态
|
||||
if (csEquipmentDeliveryVO.getRunStatus() == 1) {
|
||||
throw new BusinessException("装置离线,无法获取实时数据");
|
||||
}
|
||||
// 请求设备数据
|
||||
askDeviceDataFeignClient.askCldRealData(csEquipmentDeliveryVO.getId(),lineId,csEquipmentDeliveryVO.getNodeId());
|
||||
// 更新Redis中的用户集合 - 使用工具方法消除重复代码
|
||||
updateRedisUserSet("rtDataUserId:" + lineId, RequestUtil.getUserIndex(), 600L);
|
||||
updateRedisUserSet("cldRtDataOverTime:" + lineId, RequestUtil.getUserIndex(), 5L);
|
||||
} catch (BusinessException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error("获取CLD基础实时数据失败,lineId: {}", lineId, e);
|
||||
throw new BusinessException("获取实时数据失败,请稍后重试");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新Redis中的用户集合
|
||||
*/
|
||||
@@ -191,46 +189,4 @@ public class RealDataServiceImpl implements RealDataService {
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void getCldBaseRealData(String lineId) {
|
||||
// String nDid = lineId.substring(0, lineId.length() - 1);
|
||||
// CsEquipmentDeliveryVO csEquipmentDeliveryVO = equipmentFeignClient.queryEquipmentByndid(nDid).getData();
|
||||
// if (Objects.nonNull(csEquipmentDeliveryVO)) {
|
||||
// if (csEquipmentDeliveryVO.getRunStatus() == 1) {
|
||||
// throw new BusinessException("装置离线");
|
||||
// }
|
||||
// askDeviceDataFeignClient.askCldRealData(csEquipmentDeliveryVO.getId(),lineId);
|
||||
//
|
||||
// Object object1 = redisUtil.getObjectByKey("rtDataUserId:"+lineId);
|
||||
// Set<String> users1;
|
||||
// if (Objects.isNull(object1)) {
|
||||
// users1 = new HashSet<>();
|
||||
// } else {
|
||||
// users1 = convertObjectToSet(object1);
|
||||
// }
|
||||
// users1.add(RequestUtil.getUserIndex());
|
||||
// redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, users1,600L);
|
||||
//
|
||||
// Object object2 = redisUtil.getObjectByKey("cldRtDataOverTime:"+lineId);
|
||||
// Set<String> users2;
|
||||
// if (Objects.isNull(object2)) {
|
||||
// users2 = new HashSet<>();
|
||||
// } else {
|
||||
// users2 = convertObjectToSet(object2);
|
||||
// }
|
||||
// users2.add(RequestUtil.getUserIndex());
|
||||
// redisUtil.saveByKeyWithExpire("cldRtDataOverTime:"+lineId, users2,5L);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public Set<String> convertObjectToSet(Object obj) {
|
||||
// if (obj instanceof Collection) {
|
||||
// return ((Collection<?>) obj).stream()
|
||||
// .filter(Objects::nonNull)
|
||||
// .map(Object::toString)
|
||||
// .collect(Collectors.toSet());
|
||||
// }
|
||||
// return Collections.emptySet();
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user