无线系统实时数据功能

This commit is contained in:
xy
2024-10-11 18:17:38 +08:00
parent 3a60a05ea2
commit 306b426573
17 changed files with 322 additions and 13 deletions

View File

@@ -0,0 +1,20 @@
package com.njcn.csharmonic.service;
/**
* @author xuyang
*/
public interface RealDataService {
/**
* 获取装置基础实时数据
* @param lineId
*/
boolean getBaseRealData(String lineId);
/**
* 获取装置谐波实时数据
* @param lineId
*/
boolean getHarmRealData(String lineId,Integer target);
}

View File

@@ -15,7 +15,9 @@ import com.njcn.access.utils.MqttUtil;
import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.DeviceFtpFeignClient;
import com.njcn.csdevice.api.EquipmentFeignClient;
import com.njcn.csdevice.api.PortableOffLogFeignClient;
import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO;
import com.njcn.csharmonic.enums.CsHarmonicResponseEnum;
import com.njcn.csharmonic.offline.constant.OfflineConstant;
import com.njcn.csharmonic.offline.log.Log;
@@ -74,6 +76,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
private final FileStorageUtil fileStorageUtil;
private final GeneralInfo generalInfo;
private final PortableOffLogFeignClient portableOffLogFeignClient;
private final EquipmentFeignClient equipmentFeignClient;
@Override
@@ -263,6 +266,8 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
}
if (CollectionUtil.isNotEmpty(map)) {
System.out.println("map==:" + map);
//获取装置信息
CsEquipmentDeliveryVO vo = equipmentFeignClient.queryEquipmentByndid(param.getNDid()).getData();
map.forEach((k,v)->{
String proName = k.replace("/bd0/cmn/",OssPath.DEV_MAKE_UP_PATH + param.getNDid() + "/");
String key = AppRedisKey.PROJECT_INFO + param.getNDid();
@@ -291,7 +296,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService {
}
});
//下载完成,调用解析接口
portableOffLogFeignClient.dataOnlineRecruitment(param.getNDid(),param.getLineId(),proName);
portableOffLogFeignClient.dataOnlineRecruitment(vo.getId(),param.getLineId(),proName);
});
}
}

View File

@@ -0,0 +1,83 @@
package com.njcn.csharmonic.service.impl;
import com.njcn.access.api.AskDeviceDataFeignClient;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.api.DataSetFeignClient;
import com.njcn.csdevice.pojo.po.CsDataSet;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csharmonic.service.RealDataService;
import com.njcn.redis.utils.RedisUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @author xuyang
*/
@Service
@RequiredArgsConstructor
public class RealDataServiceImpl implements RealDataService {
private final CsLineFeignClient csLineFeignClient;
private final DataSetFeignClient dataSetFeignClient;
private final AskDeviceDataFeignClient askDeviceDataFeignClient;
private final RedisUtil redisUtil;
@Override
public boolean getBaseRealData(String lineId) {
boolean result = true;
try {
String nDid = lineId.substring(0, lineId.length() - 1);
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();
askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid);
//等待装置响应,获取询问结果
Thread.sleep(2000);
Object object = redisUtil.getObjectByKey("devResponse");
if (Objects.isNull(object)) {
result = false;
} else {
int code = (Integer) object;
if (code != 200) {
result = false;
}
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result;
}
@Override
public boolean getHarmRealData(String lineId, Integer target) {
boolean result = true;
try {
String nDid = lineId.substring(0, lineId.length() - 1);
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);
//等待装置响应,获取询问结果
Thread.sleep(2000);
Object object = redisUtil.getObjectByKey("devResponse");
if (Objects.isNull(object)) {
result = false;
} else {
int code = (Integer) object;
if (code != 200) {
result = false;
}
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result;
}
}