动态决定是否进行相角差校验、角型接线是否使用相别的指标进行正式检测、数模脚本与映射校验时动态补充相角的测试项

This commit is contained in:
caozehui
2025-08-26 18:49:35 +08:00
parent d0f6cc46ad
commit 6ae9037a47
22 changed files with 434 additions and 259 deletions

View File

@@ -130,10 +130,6 @@ public class SocketContrastResponseService {
@Value("${log.homeDir}")
private String alignDataFilePath;
@Value("${phaseAngle.isEnable}")
private Boolean isPhaseAngle;
private static final Map<String, List<String>> testItemCodeMap = new HashMap() {{
put("FREQ", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.FREQ.getCode()));
put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
@@ -275,7 +271,8 @@ public class SocketContrastResponseService {
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
Map<String, Integer> numMap = getContrastTestNum(param.getPairs().keySet().stream().collect(Collectors.toList()));
param.setNumMap(numMap);
FormalTestManager.numMap.clear();
FormalTestManager.numMap.putAll(numMap);
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
if (param.getTestItemList().get(2)) {
numMap.forEach((devMonitorId, num) -> {
@@ -463,8 +460,8 @@ public class SocketContrastResponseService {
if (successComm.size() == FormalTestManager.monitorMap.size()) {
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1));
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1)) && modelCheckResult;
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true);
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult;
if (!modelCheckResult) {
this.clearData();
@@ -606,60 +603,70 @@ public class SocketContrastResponseService {
// 进行单个监测点的对齐校验
if (!successPair.containsKey(devMonitorId)) {
if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) {
successPair.put(devMonitorId, standardDevMonitorId);
if (FormalTestManager.devDataMap.get(devMonitorId).size() >= 5 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= 5) {
List<List<DevData>> singleMonitorAlignData = this.getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 5);
//向前端推送实时数据对齐成功的配对
SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
// if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) {
if (singleMonitorAlignData.get(0).size() >= 5 && singleMonitorAlignData.get(1).size() >= 5) {
successPair.put(devMonitorId, standardDevMonitorId);
FormalTestManager.devDataMap.get(devMonitorId).clear();
FormalTestManager.devDataMap.get(devMonitorId).addAll(singleMonitorAlignData.get(0));
// 若成功的配对项等于总的配对项,则判定为成功
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
checkResult = true;
scheduledFuture.cancel(true);
scheduler.shutdown();
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).clear();
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).addAll(singleMonitorAlignData.get(1));
// 将数据推送给前端
this.sendAlignDataToWeb(param.getUserPageId());
this.saveAlignData();
//向前端推送实时数据对齐成功的配对
SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
this.clearData();
// 若成功的配对项等于总的配对项,则判定为成功
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
checkResult = true;
scheduledFuture.cancel(true);
scheduler.shutdown();
SocketDataMsg webSend1 = new SocketDataMsg();
webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1));
// 将数据推送给前端
this.sendAlignDataToWeb(param.getUserPageId());
this.saveAlignData();
System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》");
this.clearData();
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
phaseSequenceParam.setDataType(Arrays.asList(
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketDataMsg webSend1 = new SocketDataMsg();
webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1));
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
// 实时数据开始计时
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》");
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
phaseSequenceParam.setDataType(Arrays.asList(
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
// 实时数据开始计时
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
}
}
}
}
@@ -909,14 +916,14 @@ public class SocketContrastResponseService {
adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
adPair.setDevMonitorId(key);
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
adPair.setNum(param.getNumMap().get(key));
adPair.setNum(FormalTestManager.numMap.get(key));
adPairList.add(adPair);
}
adPairService.saveBatch(adPairList);
// 原始数据入库
baseDataInsert(false, singleMonitorAlignData.get(0), param.getNumMap(), code);
baseDataInsert(true, singleMonitorAlignData.get(1), param.getNumMap(), code);
baseDataInsert(false, FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
baseDataInsert(true, FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
// 进行误差计算
List<DevLineTestResult> allResultList = detectionService.processing(
@@ -925,7 +932,7 @@ public class SocketContrastResponseService {
FormalTestManager.pairsIpMap,
FormalTestManager.devIdMapComm,
FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()),
errorSysId, FormalTestManager.dataRule, param.getNumMap(), code);
errorSysId, FormalTestManager.dataRule, FormalTestManager.numMap, code);
this.clearData();
@@ -1245,10 +1252,11 @@ public class SocketContrastResponseService {
/**
* 模型一致性校验
*
* @param param
* @param dataMap
* @param param 预检测参数
* @param dataMap 收到的数据
* @param isDev 是否是被检设备
*/
private boolean modelCheck(PreDetectionParam param, Map<String, List<DevData>> dataMap, PreDetection.MonitorListDTO monitorListDTO) {
private boolean modelCheck(PreDetectionParam param, Map<String, List<DevData>> dataMap, PreDetection.MonitorListDTO monitorListDTO, boolean isDev) {
AtomicBoolean flag = new AtomicBoolean(true);
dataMap.forEach((k, v) -> {
v.stream().forEach(devData1 -> {
@@ -1274,25 +1282,42 @@ public class SocketContrastResponseService {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode());
// 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())) {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode());
String ip = k.split(CnSocketUtil.SPLIT_TAG)[0];
PreDetection preDetection = null;
if (isDev) {
preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null);
} else {
preDetection = FormalTestManager.standardDevList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null);
}
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode())) {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
if (ObjectUtil.isNotNull(preDetection)) {
if (preDetection.getUsePhaseIndex() == 1) {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
}
}
}
if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) {
// 成功信息
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
} else {
// 错误信息
allTestItem.removeAll(descList);
String appendMsg = allTestItem.stream().map(obj -> {
String s = obj.split(DetectionCodeEnum.REAL_PREFIX.getCode())[1];
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(s);
return anEnum.getMessage();
}).reduce((a, b) -> a + "" + b).get();
appendMsg += "测试项未通过!";
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
webSend.setData(MsgUtil.getMsg(k, FormalTestManager.devNameMapComm, appendMsg));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
flag.set(false);
}
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
});
});
@@ -1509,6 +1534,12 @@ public class SocketContrastResponseService {
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
}
boolean isPhaseAngle = false;
PreDetection preDetection = FormalTestManager.devList.stream().filter(dev -> dev.getDevId().equals(devMonitorId.split(CnSocketUtil.SPLIT_TAG)[0])).findFirst().orElse(null);
if (ObjectUtil.isNotNull(preDetection)) {
isPhaseAngle = preDetection.getAngle() == 1 ? true : false;
}
// 动态调控是否支持相角差校验
if (isPhaseAngle) {
// 获取被检设备的额定电流
@@ -1681,9 +1712,26 @@ public class SocketContrastResponseService {
if (Objects.nonNull(localDateTime)) {
String[] splitArr = data.getId().split(CnSocketUtil.SPLIT_TAG);
String temId = FormalTestManager.devIdMapComm.get(splitArr[0]) + CnSocketUtil.SPLIT_TAG + splitArr[1];
String devId = FormalTestManager.devIdMapComm.get(splitArr[0]);
String temId = devId + CnSocketUtil.SPLIT_TAG + splitArr[1];
List<PreDetection> devInfo = null;
if (isStdDev) {
devInfo = pqStandardDevService.listStandardDevPreDetection(Collections.singletonList(devId));
} else {
devInfo = pqDevService.getDevInfo(Collections.singletonList(devId));
}
for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) {
if (devInfo.get(0).getUsePhaseIndex().equals(1)) {
if (DetectionCodeEnum.PVRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PV2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PSV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc())) {
continue;
}
} else {
if (DetectionCodeEnum.VRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.V2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.SV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc())) {
continue;
}
}
if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) {
DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList();
ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult();

View File

@@ -37,14 +37,11 @@ import com.njcn.gather.storage.pojo.po.SimAndDigHarmonicResult;
import com.njcn.gather.storage.pojo.po.SimAndDigNonHarmonicResult;
import com.njcn.gather.storage.service.DetectionDataDealService;
import com.njcn.gather.storage.service.SimAndDigHarmonicService;
import com.njcn.gather.system.cfg.service.ISysTestConfigService;
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
import com.njcn.gather.system.dictionary.pojo.po.DictData;
import com.njcn.gather.system.dictionary.service.IDictDataService;
import com.njcn.gather.system.pojo.enums.DicDataEnum;
import com.njcn.gather.system.reg.service.ISysRegResService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
@@ -62,13 +59,11 @@ import java.util.stream.Stream;
@RequiredArgsConstructor
public class SocketDevResponseService {
private List<String> dataTypeList;
private Set<String> dataTypeList;
private List<String> icdTypeList;
private final List<String> nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(), DicDataEnum.V.getCode(), DicDataEnum.I.getCode(), DicDataEnum.IMBV.getCode(), DicDataEnum.IMBA.getCode(), DicDataEnum.VOLTAGE.getCode(), DicDataEnum.F.getCode()).collect(Collectors.toList());
private final List<String> harmonicList = Stream.of(DicDataEnum.HV.getCode(), DicDataEnum.HI.getCode(), DicDataEnum.HP.getCode(), DicDataEnum.HSV.getCode(), DicDataEnum.HSI.getCode()).collect(Collectors.toList());
private final IPqDevService iPqDevService;
private final IPqDevSubService iPqDevSubService;
@@ -76,24 +71,16 @@ public class SocketDevResponseService {
private final IPqScriptDtlsService pqScriptDtlsService;
private final DetectionServiceImpl detectionServiceImpl;
private final DetectionDataDealService detectionDataDealService;
private final ISysRegResService iSysRegResService;
private final IPqScriptCheckDataService iPqScriptCheckDataService;
private final ISysTestConfigService sysTestConfigService;
private final SimAndDigHarmonicService adHarmonicService;
private final IAdPlanService adPlanService;
private final IPqScriptCheckDataService pqScriptCheckDataService;
private final IDictDataService dictDataService;
@Value("${phaseAngle.isEnable}")
private Boolean isPhaseAngle;
/**
* 存储的装置相序数据
*/
List<DevData> devInfo = new ArrayList<>();
//Map<String, DevData> devDataMap = new HashMap<>();
/**
* 成功结束的测点
*/
@@ -825,12 +812,24 @@ public class SocketDevResponseService {
icdCheckDataMap.clear();
dataTypeList = pqScriptDtlsService.getScriptToIcdCheckInfo(param);
icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).distinct().collect(Collectors.toList());
icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).collect(Collectors.toList());
PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdTypeList.get(0))).findFirst().orElse(null);
boolean angleCheck = false;
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
if (angleCheck) {
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
} else {
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
}
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
Map<String, Object> map = new HashMap<>(2);
map.put("dataType", dataTypeList);
map.put("dataType", new ArrayList<>(dataTypeList));
map.put("icdType", icdTypeList.get(0));
socketMsg.setData(JSON.toJSONString(map));
System.out.println("开始脚本与icd校验:++++++++++");
@@ -841,28 +840,40 @@ public class SocketDevResponseService {
String data = socketDataMsg.getData();
IcdCheckData icdCheckData = JSON.parseObject(data, IcdCheckData.class);
boolean isContinue = true;
for (int i = 0; i < icdCheckData.getResultData().size(); i++) {
IcdCheckData.ResultData item = icdCheckData.getResultData().get(i);
Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult());
// 校验脚本与icd校验失败
if (errorType.equals(0)) {
isContinue = false;
Map<String, Object> map = new HashMap<>(2);
map.put("icdType", icdCheckData.getIcdType());
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc());
map.put("dataType", anEnum.getMessage());
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setData(JSON.toJSONString(map));
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
CnSocketUtil.quitSend(param);
break;
List<String> descList = icdCheckData.getResultData().stream().map(
obj -> {
if(DetectionCodeEnum.MAG.getCode().equals(obj.getDesc()) || DetectionCodeEnum.DUR.getCode().equals(obj.getDesc())){
return DetectionCodeEnum.AVG_PREFIX.getCode() + obj.getDesc();
}else{
return DetectionCodeEnum.REAL_PREFIX.getCode() + obj.getDesc();
}
}
).collect(Collectors.toList());
if (descList.containsAll(dataTypeList)) {
for (int i = 0; i < icdCheckData.getResultData().size(); i++) {
IcdCheckData.ResultData item = icdCheckData.getResultData().get(i);
Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult());
// 校验脚本与icd校验失败
if (errorType.equals(0)) {
isContinue = false;
Map<String, Object> map = new HashMap<>(2);
map.put("icdType", icdCheckData.getIcdType());
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc());
map.put("dataType", anEnum.getMessage());
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setData(JSON.toJSONString(map));
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
} else {
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
}
}
} else {
isContinue = false;
}
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
if (isContinue) {
//System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size());
if (icdCheckDataMap.size() == icdTypeList.size()) {
@@ -940,8 +951,21 @@ public class SocketDevResponseService {
// 发送下一个脚本与icd校验
String icdType = icdTypeList.stream().filter(it -> !icdCheckDataMap.containsKey(it)).findFirst().orElse(null);
if (ObjectUtil.isNotNull(icdType)) {
PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdType)).findFirst().orElse(null);
boolean angleCheck = false;
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
if (angleCheck) {
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
} else {
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
}
Map<String, Object> map = new HashMap<>(2);
map.put("dataType", dataTypeList);
map.put("dataType", new ArrayList<>(dataTypeList));
map.put("icdType", icdType);
socketMsg.setData(JSON.toJSONString(map));
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
@@ -950,6 +974,23 @@ public class SocketDevResponseService {
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
}
}
} else {
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
dataTypeList.removeAll(descList);
for (String dataType : dataTypeList) {
Map<String, Object> map = new HashMap<>(2);
map.put("icdType", icdCheckData.getIcdType());
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(dataType.replace(DetectionCodeEnum.REAL_PREFIX.getCode(), ""));
map.put("dataType", anEnum.getMessage());
webSocketVO.setData(JSON.toJSONString(map));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
CnSocketUtil.quitSend(param);
}
}
break;
@@ -1299,7 +1340,7 @@ public class SocketDevResponseService {
checkDataParam.setIsValueTypeName(false);
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
iPqDevService.updateResult(false,param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
iPqDevService.updateResult(false, param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
CnSocketUtil.quitSend(param);
}
successComm.clear();
@@ -1505,9 +1546,10 @@ public class SocketDevResponseService {
private String devMessage(String type,
List<DevData.SqlDataDTO> data,
List<DevData.SqlDataDTO> dataPhase) {
List<DevData.SqlDataDTO> dataPhase,
boolean angleCheck) {
StringBuffer str = new StringBuffer();
if (isPhaseAngle) {
if (angleCheck) {
if (CollUtil.isNotEmpty(data) && CollUtil.isNotEmpty(dataPhase)) {
if (data.size() == dataPhase.size()) {
DevData.SqlDataDTO.ListDTO dto = data.get(0).getList();
@@ -1572,7 +1614,13 @@ public class SocketDevResponseService {
}
compareDev.setDevName(devName);
compareDev.setLineNum(split[1]);
getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4));
boolean angleCheck = false;
PreDetection preDetection = FormalTestManager.devList.stream().filter(x -> x.getDevIP().equals(split[0])).findFirst().orElse(null);
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4), angleCheck);
info.add(compareDev);
}
@@ -1591,20 +1639,19 @@ public class SocketDevResponseService {
SourceCompareDev compareDev,
String desc,
List<SourceIssue.ChannelListDTO> channelList,
String name
) {
String name,
boolean angleCheck) {
//源信息
Map<String, SourceIssue.ChannelListDTO> sourceMap = channelList.stream()
.collect(Collectors.toMap(x -> x.getChannelType(), Function.identity()));
Boolean a = getaBoolean(sourceMap.get(type + "a"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getA() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null);
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null, angleCheck);
Boolean b = getaBoolean(sourceMap.get(type + "b"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getB() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null);
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null, angleCheck);
Boolean c = getaBoolean(sourceMap.get(type + "c"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getC() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null);
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null, angleCheck);
compareDev.setIsQualified(a && b && c);
compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase));
compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase, angleCheck));
return compareDev;
}
@@ -1616,7 +1663,7 @@ public class SocketDevResponseService {
* @param devPhase 装置返回相角数据
* @return
*/
private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase) {
private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase, boolean angleCheck) {
Boolean isDev = false;
Boolean isPhase = false;
@@ -1625,7 +1672,7 @@ public class SocketDevResponseService {
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
}
if (isPhaseAngle) {
if (angleCheck) {
if (ObjectUtil.isNotNull(devPhase)) {
isPhase = phaseBoolean(channelListDTO, devPhase);
}

View File

@@ -43,7 +43,8 @@ public enum DetectionCodeEnum {
STAR("Star","星型接线"),
DELTA("Delta","角型接线"),
REAL_PREFIX("real$", "实时数据前缀");
REAL_PREFIX("real$", "实时数据前缀"),
AVG_PREFIX("avg$", "统计数据前缀");
private final String code;
private final String message;

View File

@@ -42,10 +42,5 @@ public class ContrastDetectionParam {
*/
private List<Boolean> testItemList;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
private Map<String,Integer> numMap;
private String userId;
}

View File

@@ -74,9 +74,4 @@ public class PreDetectionParam {
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
*/
private List<Boolean> testItemList;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
private Map<String, Integer> numMap;
}

View File

@@ -57,5 +57,7 @@ public class AlignDataVO {
private Double ucStdDev;
private Double utStdDev;
private String unit;
}
}

View File

@@ -16,6 +16,8 @@ import com.njcn.gather.detection.pojo.vo.DetectionData;
import com.njcn.gather.detection.pojo.vo.DevLineTestResult;
import com.njcn.gather.detection.util.DetectionUtil;
import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.device.pojo.vo.PreDetection;
import com.njcn.gather.device.service.IPqDevService;
import com.njcn.gather.err.pojo.param.PqErrSysParam;
import com.njcn.gather.err.pojo.po.PqErrSysDtls;
import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO;
@@ -62,6 +64,7 @@ public class DetectionServiceImpl {
private final DetectionDataDealService detectionDataDealService;
private final ISysTestConfigService sysTestConfigService;
private final IPqMonitorService pqMonitorService;
private final IPqDevService pqDevService;
public static final String TYPE_A = "A";
public static final String TYPE_B = "B";
@@ -119,6 +122,8 @@ public class DetectionServiceImpl {
*/
case FREQ:
return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code, oneConfig.getScale());
case P:
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
/**
* 电压
*/
@@ -193,8 +198,6 @@ public class DetectionServiceImpl {
case VOLTAGE_MAG:
case VOLTAGE_DUR:
return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
case P:
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
default:
return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
}
@@ -1127,6 +1130,7 @@ public class DetectionServiceImpl {
}
map.forEach((typeKey, typeValue) -> {
typeValue.remove(0.0);
typeValue.forEach((key, value) -> {
value.sort(Comparator.comparing(Double::doubleValue).reversed());
if (CollUtil.isNotEmpty(value)) {
@@ -1568,7 +1572,8 @@ public class DetectionServiceImpl {
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection());
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection());
Double fUn = pqMonitorService.getRatedVoltage(devMonitorId);
if (isStar) {
boolean isExitDelta = this.isExitDeltaIndex(devIdMapComm.get(split1[0]), devDataList);
if (isStar || !isExitDelta) {
fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
}
Double fIn = pqMonitorService.getRatedCurrent(devMonitorId);
@@ -1599,7 +1604,8 @@ public class DetectionServiceImpl {
break;
case VRMS:
case PVRMS:
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isStar ? DetectionCodeEnum.VRMS.getCode() : DetectionCodeEnum.PVRMS.getCode()), dataRule, num, code, oneConfig.getScale()));
// 如果是角型接法且存在角型接法的一些指标,则不进行使用角型接线的指标。反之,则使用相别的指标。
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isDelta && isExitDelta ? DetectionCodeEnum.PVRMS.getCode() : DetectionCodeEnum.VRMS.getCode()), dataRule, num, code, oneConfig.getScale()));
break;
case IRMS:
resultMap.put(PowerIndexEnum.I.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale()));
@@ -1615,20 +1621,20 @@ public class DetectionServiceImpl {
break;
case V2_50:
case PV2_50:
resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break;
case I2_50:
resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break;
case P2_50:
resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn * fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, HP, fUn * fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break;
case SV_1_49:
case PSV_1_49:
resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break;
case SI_1_49:
resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale()));
resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break;
case UNKNOWN_ERROR:
break;
@@ -1638,6 +1644,37 @@ public class DetectionServiceImpl {
return resultMap;
}
/**
* 判断是否存在角型接法的一些线电压指标
*
* @param devId 设备id
* @param devDataList 监测点数据
* @return
*/
private boolean isExitDeltaIndex(String devId, List<DevData> devDataList) {
if (CollUtil.isNotEmpty(devDataList)) {
List<String> deltaIndex = Arrays.asList(DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.PV2_50.getCode(),
DetectionCodeEnum.PSV_1_49.getCode(),
DetectionCodeEnum.PU1.getCode());
DevData devData = devDataList.get(0);
List<DevData.SqlDataDTO> sqlData = devData.getSqlData();
List<DevData.SqlDataHarmDTO> sqlDataHarm = devData.getSqlDataHarm();
if (CollUtil.isNotEmpty(sqlData) && CollUtil.isNotEmpty(sqlDataHarm)) {
List<String> descList = sqlData.stream().map(DevData.SqlDataDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList());
descList.addAll(sqlDataHarm.stream().map(DevData.SqlDataHarmDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList()));
if (descList.containsAll(deltaIndex)) {
List<PreDetection> devInfo = pqDevService.getDevInfo(Collections.singletonList(devId));
if (devInfo.get(0).getUsePhaseIndex() == 1) {
return true;
}
}
}
}
return false;
}
/**
* 处理非谐波数据
@@ -1724,7 +1761,7 @@ public class DetectionServiceImpl {
* @param fData 额定值
* @param type U或I、用来区分电压或电流
* @param harmonicFlag 1间谐波2谐波
* @param isDelta 是否角型接法
* @param isUseDelta 是否使用角型接线的一些指标
* @param dataRule 数据处理原则
* @param num 第几次检测
* @param code 结果表code
@@ -1738,7 +1775,7 @@ public class DetectionServiceImpl {
String type,
Double fData,
Integer harmonicFlag,
boolean isDelta,
boolean isUseDelta,
DictDataEnum dataRule,
Integer num,
String code,
@@ -1749,17 +1786,17 @@ public class DetectionServiceImpl {
String harmCode = "";
if (U.equals(type)) {
fundCode = DetectionCodeEnum.U1.getCode();
if (isDelta) {
if (isUseDelta) {
fundCode = DetectionCodeEnum.PU1.getCode();
}
if (harmonicFlag == 1) {
harmCode = DetectionCodeEnum.SV_1_49.getCode();
if (isDelta) {
if (isUseDelta) {
harmCode = DetectionCodeEnum.PSV_1_49.getCode();
}
} else {
harmCode = DetectionCodeEnum.V2_50.getCode();
if (isDelta) {
if (isUseDelta) {
harmCode = DetectionCodeEnum.PV2_50.getCode();
}
}
@@ -1831,25 +1868,12 @@ public class DetectionServiceImpl {
List<DevData.SqlDataDTO> devSqlData = dev.get(i).getSqlData();
List<DevData.SqlDataDTO> standardDevSqlData = standardDev.get(i).getSqlData();
List<DevData.SqlDataDTO.ListDTO> devList = devSqlData.stream().filter(j -> desc.equals(j.getDesc()))
String finalDesc = desc;
List<DevData.SqlDataDTO.ListDTO> devList = devSqlData.stream().filter(j -> finalDesc.equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> desc.equals(j.getDesc()))
List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> finalDesc.equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
// 如果角型接法中,不存在线电压有效值,则取相电压有效值进行计算
if (CollUtil.isEmpty(devList)) {
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
devList = devSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
}
}
if (CollUtil.isEmpty(standardDevList)) {
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
standardDevList = standardDevSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
}
}
aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
.map(x -> x.getA().doubleValue())
.collect(Collectors.toList()));
@@ -1993,31 +2017,32 @@ public class DetectionServiceImpl {
Optional<DevData.SqlDataDTO> first1 = Optional.empty();
Optional<DevData.SqlDataDTO> first2 = Optional.empty();
if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) {
first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
}
// 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
if (!first1.isPresent()) {
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
}
} else {
// 防止出现有PU1而没有PV2_50、SV_1_49的情况
if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
}
}
if (!first2.isPresent()) {
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
}
} else {
// 防止出现有PU1而没有PV2_50、SV_1_49的情况
if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
}
}
// // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
// if (!first1.isPresent()) {
// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
// }
// } else {
// // 防止出现有PU1而没有PV2_50、SV_1_49的情况
// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
// }
// }
// if (!first2.isPresent()) {
// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
// }
// } else {
// // 防止出现有PU1而没有PV2_50、SV_1_49的情况
// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
// }
// }
DevData.SqlDataDTO fund1 = null;
DevData.SqlDataDTO fund2 = null;
@@ -2031,23 +2056,23 @@ public class DetectionServiceImpl {
List<DevData.SqlDataHarmDTO> devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
List<DevData.SqlDataHarmDTO> stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
// 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
if (CollUtil.isEmpty(devHarmList)) {
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
}
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
}
}
if (CollUtil.isEmpty(stdDevHarmList)) {
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
}
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
}
}
// // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
// if (CollUtil.isEmpty(devHarmList)) {
// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
// }
// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
// }
// }
// if (CollUtil.isEmpty(stdDevHarmList)) {
// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
// }
// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
// }
// }
if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) {
DevData.SqlDataHarmDTO devHarm = devHarmList.get(0);

View File

@@ -385,7 +385,6 @@ public class PreDetectionServiceImpl implements PreDetectionService {
PreDetectionParam preDetectionParam = new PreDetectionParam();
preDetectionParam.setUserPageId(param.getLoginName());
preDetectionParam.setTestItemList(param.getTestItemList());
preDetectionParam.setNumMap(param.getNumMap());
preDetectionParam.setDevIds(param.getDevIds());
preDetectionParam.setUserId(param.getUserId());
WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam);

View File

@@ -90,7 +90,7 @@ public class FormalTestManager {
public static PatternEnum patternEnum;
/**
* 比对式检测-检测项。key为检测项id,value为检测项code
* 比对式检测-检测项。key为检测项code,value为检测项id
*/
public static Map<String, String> testItemMap = new HashMap<>();
@@ -123,4 +123,9 @@ public class FormalTestManager {
* 是否要移除和通信模块的socket连接
*/
public static Boolean isRemoveSocket = true;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
public static Map<String, Integer> numMap = new HashMap<>();
}

View File

@@ -83,4 +83,17 @@ public class MsgUtil {
return "被检设备\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "\"" + " -> 标准设备\"" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "\"";
}
}
/**
* 获取消息
*
* @param monitorId 监测点id
* @param devMap key为设备ipvalue为设备名称
* @param appendMsg 附加的消息
* @return
*/
public static String getMsg(String monitorId, Map<String, String> devMap, String appendMsg) {
String[] split1 = monitorId.split("_");
return "\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + "" + split1[1] + "\"" + appendMsg;
}
}

View File

@@ -126,7 +126,6 @@ public class NettyClient {
PreDetectionParam preDetectionParam = new PreDetectionParam();
preDetectionParam.setUserPageId(param.getLoginName());
preDetectionParam.setTestItemList(param.getTestItemList());
preDetectionParam.setNumMap(param.getNumMap());
preDetectionParam.setDevIds(param.getDevIds());
preDetectionParam.setUserId(param.getUserId());
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);

View File

@@ -15,6 +15,8 @@
<result column="Dev_Chns" property="devChns"/>
<result column="Dev_Volt" property="devVolt"/>
<result column="Dev_Curr" property="devCurr"/>
<result column="Angle" property="angle"/>
<result column="Use_Phase_Index" property="usePhaseIndex"/>
<collection
property="monitorList"
@@ -35,7 +37,9 @@
p.name as icdType,
t.Dev_Chns,
t.Dev_Volt,
t.Dev_Curr
t.Dev_Curr,
p.Angle,
p.Use_Phase_Index
FROM
pq_dev d
inner join pq_dev_type t on d.Dev_Type = t.id

View File

@@ -15,13 +15,8 @@
<result column="Dev_Chns" property="devChns"/>
<result column="Dev_Volt" property="devVolt"/>
<result column="Dev_Curr" property="devCurr"/>
<!-- <collection-->
<!-- property="monitorList"-->
<!-- column="{ devId = Id}"-->
<!-- select="com.njcn.gather.monitor.mapper.PqMonitorMapper.selectMonitorInfo"-->
<!-- >-->
<!-- </collection>-->
<result column="Angle" property="angle"/>
<result column="Use_Phase_Index" property="usePhaseIndex"/>
</resultMap>
<select id="listStandardDevPreDetection" resultMap="standardDevResultMap">
@@ -36,7 +31,9 @@
icd_path.Name as icdType,
dev_type.Dev_Chns,
dev_type.Dev_Volt,
dev_type.Dev_Curr
dev_type.Dev_Curr,
icd_path.Angle,
icd_path.Use_Phase_Index
from pq_standard_dev standard_dev
inner join pq_dev_type dev_type on standard_dev.Dev_Type = dev_type.id
inner join pq_icd_path icd_path on dev_type.icd = icd_path.id

View File

@@ -54,6 +54,18 @@ public class PreDetection {
@JSONField(name = "icdType")
private String icdType;
/**
* 是否支持相角。0不支持1支持
*/
@JSONField(name = "angle")
private Integer angle;
/**
* 角型接线时是否使用相别的指标来进行检测0表示否1表示是
*/
@JSONField(name = "usePhaseIndex")
private Integer usePhaseIndex;
/**
* 装置识别码3ds加密
*/

View File

@@ -144,10 +144,10 @@ public class PqErrSysController extends BaseController {
@GetMapping("/getTestItems")
@ApiOperation("根据误差体系id获取测试项")
@ApiImplicitParam(name = "id", value = "误差体系id", required = true)
public HttpResult<List<Map<String, String>>> getTestItems(@RequestParam("id") String id) {
public HttpResult<Map<String, String>> getTestItems(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getTestItems");
LogUtil.njcnDebug(log, "{}获取测试项ID为{}", methodDescribe, id);
List<Map<String, String>> result = pqErrSysService.getTestItems(id);
Map<String, String> result = pqErrSysService.getTestItems(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -86,5 +86,5 @@ public interface IPqErrSysService extends IService<PqErrSys> {
* @param id 误差体系id
* @return
*/
List<Map<String, String>> getTestItems(String id);
Map<String, String> getTestItems(String id);
}

View File

@@ -1,6 +1,7 @@
package com.njcn.gather.err.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -128,7 +129,7 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
@Override
public List<Map<String, Object>> listAllPqErrSys() {
List<PqErrSys> pqErrSysList = this.lambdaQuery()
.eq(PqErrSys::getEnable,DataStateEnum.ENABLE.getCode())
.eq(PqErrSys::getEnable, DataStateEnum.ENABLE.getCode())
.eq(PqErrSys::getState, DataStateEnum.ENABLE.getCode()).list();
List<Map<String, Object>> result = pqErrSysList.stream().map(pqErrSys -> {
Map<String, Object> map = new HashMap<>();
@@ -209,24 +210,36 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
}
@Override
public List<Map<String, String>> getTestItems(String id) {
public Map<String, String> getTestItems(String id) {
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysId(id);
List<String> scriptTypeList = pqErrSysDtls.stream().map(PqErrSysDtls::getScriptType).distinct().collect(Collectors.toList());
List<DictTree> dictTreeList = dictTreeService.lambdaQuery().in(CollUtil.isNotEmpty(scriptTypeList), DictTree::getId, scriptTypeList).list();
if (CollUtil.isNotEmpty(dictTreeList)) {
List<String> pids = dictTreeList.stream().map(DictTree::getPid).collect(Collectors.toList());
List<DictTree> parentDictTreeList = dictTreeService.listByIds(pids);
Map<String, String> map = new HashMap<>();
parentDictTreeList.forEach(dictTree -> {
map.put(dictTree.getId(), dictTree.getName());
});
return map;
}
return null;
}
/**
* 检查重复
*
* @param param 检测参数
* @param param 检测参数
* @param isExcludeSelf 是否排除自己
*/
private void checkRepeat(PqErrSysParam param, boolean isExcludeSelf) {
QueryWrapper<PqErrSys> wrapper = new QueryWrapper<>();
wrapper.eq("Standard_Name", param.getStandardName())
.eq("Standard_Time",param.getStandardTime()+"-01-01")
.eq("Dev_Level",param.getDevLevel())
.eq("Standard_Time", param.getStandardTime() + "-01-01")
.eq("Dev_Level", param.getDevLevel())
.eq("state", DataStateEnum.ENABLE.getCode());
if (isExcludeSelf) {
if(param instanceof PqErrSysParam.UpdateParam){
if (param instanceof PqErrSysParam.UpdateParam) {
wrapper.ne("Id", ((PqErrSysParam.UpdateParam) param).getId());
}
}

View File

@@ -1523,21 +1523,28 @@ public class ResultServiceImpl implements IResultService {
allResultList.addAll(contrastHarmonicResults);
allResultList.addAll(contrastNonHarmonicResults);
Map<String, List<Integer>> chnMap = new HashMap<>();
Map<String, List<Integer>> chnMap = new TreeMap<>();
Map<String, List<ContrastBaseResult>> devMonitorIdMap = allResultList.stream().collect(Collectors.groupingBy(ContrastBaseResult::getDevMonitorId));
devMonitorIdMap.forEach((devMonitorId, resultList) -> {
Integer maxNum = resultList.stream().map(ContrastBaseResult::getNum).max(Comparator.comparing(Integer::valueOf)).orElse(1);
List<Integer> numList = Stream.iterate(1, n -> n + 1).limit(maxNum).collect(Collectors.toList());
String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG);
chnMap.put(split[1], numList);
if (ObjectUtil.isNull(queryParam.getNum())) {
formContentVO.setCheckNum(maxNum);
} else {
formContentVO.setCheckNum(queryParam.getNum());
}
});
if (ObjectUtil.isNull(queryParam.getNum())) {
if (StrUtil.isNotBlank(queryParam.getChnNum())) {
List<Integer> integers = chnMap.get(queryParam.getChnNum());
formContentVO.setCheckNum(integers.get(integers.size() - 1));
} else {
List<String> keyList = chnMap.keySet().stream().collect(Collectors.toList());
List<Integer> integers = chnMap.get(keyList.get(0));
formContentVO.setCheckNum(integers.get(integers.size() - 1));
}
} else {
formContentVO.setCheckNum(queryParam.getNum());
}
formContentVO.setChnMap(chnMap);
return formContentVO;
}
@@ -1553,19 +1560,31 @@ public class ResultServiceImpl implements IResultService {
List<String> adTypeList = childDictTreeList.stream().map(DictTree::getId).collect(Collectors.toList());
DictTree dictTree = dictTreeList.get(0);
contrastResultVO.setResultMap(this.getResultMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode())));
contrastResultVO.setRawDataMap(this.getRawDataMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode())));
String unit = StorageUtil.unit(dictTree.getCode());
if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "%";
if (DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "%";
if (DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
contrastResultVO.setResultMap(this.getResultMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), unit, queryParam.getNum(), String.valueOf(plan.getCode())));
contrastResultVO.setRawDataMap(this.getRawDataMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), unit, queryParam.getNum(), String.valueOf(plan.getCode())));
return contrastResultVO;
}
private Map<String, List<RawResultDataVO>> getResultMap(DictTree dictTree, List<String> adTypeList, String monitorId, Integer num, String code) {
private Map<String, List<RawResultDataVO>> getResultMap(DictTree dictTree, List<String> adTypeList, String monitorId, String unit, Integer num, String code) {
Map<String, List<RawResultDataVO>> resultMap = new LinkedHashMap<>();
List<ContrastNonHarmonicResult> contrastNonHarmonicResults = contrastNonHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
List<ContrastHarmonicResult> contrastHarmonicResults = contrastHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
String unit = StorageUtil.unit(dictTree.getCode());
if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) {
ContrastNonHarmonicResult contrastNonHarmonicResult = contrastNonHarmonicResults.get(0);
List<RawResultDataVO.DetectionData> aList = JSON.parseArray(contrastNonHarmonicResult.getAValue() + "", RawResultDataVO.DetectionData.class);
@@ -1612,22 +1631,13 @@ public class ResultServiceImpl implements IResultService {
List<Double> harmonicNum = null;
if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
harmonicNum = Stream.iterate(2.0, n -> n + 1).limit(49).collect(Collectors.toList());
unit = "%";
if (DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
harmonicNum = Stream.iterate(0.5, n -> n + 1).limit(50).collect(Collectors.toList());
unit = "%";
if (DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
for (Double n : harmonicNum) {
try {
int i = StorageUtil.isHarmOrInHarm(n).intValue();
String finalUnit = unit;
Field fieldA = contrastHarmonicResult.getClass().getDeclaredField("aValue" + i);
fieldA.setAccessible(true);
@@ -1645,7 +1655,7 @@ public class ResultServiceImpl implements IResultService {
for (int j = 0; j < aList.size(); j++) {
RawResultDataVO dataVO = new RawResultDataVO();
dataVO.setHarmNum(n);
dataVO.setUnit(finalUnit);
dataVO.setUnit(unit);
dataVO.setDataA(aList.get(j));
dataVO.setDataB(bList.get(j));
dataVO.setDataC(cList.get(j));
@@ -1664,35 +1674,41 @@ public class ResultServiceImpl implements IResultService {
return resultMap;
}
private Map<String, List<AlignDataVO.RawData>> getRawDataMap(DictTree dictTree, List<String> adTypeList, String monitorId, Integer num, String code) {
Map<String, List<AlignDataVO.RawData>> resultMap = new LinkedHashMap<>();
private Map<String, List<AlignDataVO.RawData>> getRawDataMap(DictTree dictTree, List<String> adTypeList, String monitorId, String unit, Integer num, String code) {
Map<String, List<AlignDataVO.RawData>> rawMap = new LinkedHashMap<>();
List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList);
List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList);
List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList);
List<ContrastHarmonicResult> stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
List<AlignDataVO.RawData> rawDataVOList = new ArrayList<>();
for (int i = 0; i < devNonHarmonicRawDataList.size(); i++) {
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
rawDataVO.setUnit(unit);
ContrastNonHarmonicResult contrastNonHarmonicResult = devNonHarmonicRawDataList.get(i);
rawDataVO.setTimeDev(String.valueOf(contrastNonHarmonicResult.getTimeId()));
rawDataVO.setUaDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setTimeDev(contrastNonHarmonicResult.getTimeId().format(dtf));
rawDataVO.setUbDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUcDev(getValue(contrastNonHarmonicResult.getCValue()));
rawDataVO.setUtDev(getValue(contrastNonHarmonicResult.getTValue()));
contrastNonHarmonicResult = stdDevNonHarmonicRawDataList.get(i);
rawDataVO.setTimeStdDev(String.valueOf(contrastNonHarmonicResult.getTimeId()));
rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setTimeStdDev(contrastNonHarmonicResult.getTimeId().format(dtf));
if (!DicDataEnum.IMBV.getCode().equals(dictTree.getCode()) && !DicDataEnum.IMBA.getCode().equals(dictTree.getCode())) {
rawDataVO.setUaDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setUcDev(getValue(contrastNonHarmonicResult.getCValue()));
rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue()));
}
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue()));
rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResult.getTValue()));
rawDataVOList.add(rawDataVO);
}
if (CollUtil.isNotEmpty(rawDataVOList)) {
resultMap.put(dictTree.getName(), rawDataVOList);
rawMap.put(dictTree.getName(), rawDataVOList);
}
if (CollUtil.isNotEmpty(devHarmonicRawDataList) && CollUtil.isNotEmpty(stdDevHarmonicRawDataList)) {
@@ -1708,11 +1724,12 @@ public class ResultServiceImpl implements IResultService {
int i = StorageUtil.isHarmOrInHarm(n).intValue();
for (int j = 0; j < devHarmonicRawDataList.size(); j++) {
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
rawDataVO.setUnit(unit);
ContrastHarmonicResult devHarmonicResult = devHarmonicRawDataList.get(j);
ContrastHarmonicResult stdDevHarmonicResult = stdDevHarmonicRawDataList.get(j);
rawDataVO.setTimeDev(String.valueOf(devHarmonicResult.getTimeId()));
rawDataVO.setTimeStdDev(String.valueOf(stdDevHarmonicResult.getTimeId()));
rawDataVO.setTimeDev(devHarmonicResult.getTimeId().format(dtf));
rawDataVO.setTimeStdDev(stdDevHarmonicResult.getTimeId().format(dtf));
try {
Field fieldA = devHarmonicResult.getClass().getDeclaredField("aValue" + i);
@@ -1751,11 +1768,11 @@ public class ResultServiceImpl implements IResultService {
}
rawDataVOList1.add(rawDataVO);
}
resultMap.put(String.valueOf(n), rawDataVOList1);
rawMap.put(String.valueOf(n), rawDataVOList1);
}
}
return resultMap;
return rawMap;
}
private Double getValue(String value) {

View File

@@ -11,6 +11,7 @@ import com.njcn.gather.script.pojo.po.SourceIssue;
import com.njcn.gather.script.pojo.vo.PqScriptDtlDataVO;
import java.util.List;
import java.util.Set;
/**
* @author caozehui
@@ -130,9 +131,11 @@ public interface IPqScriptDtlsService extends IService<PqScriptDtls> {
* @param param
* @return
*/
List<String> getScriptToIcdCheckInfo(PreDetectionParam param);
Set<String> getScriptToIcdCheckInfo(PreDetectionParam param);
/**
* 根据脚本id获取脚本详情数据
*
* @param scriptId 脚本id
*/
List<PqScriptDtlDataVO> getScriptDtlsDataList(String scriptId);

View File

@@ -719,7 +719,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
}
@Override
public List<String> getScriptToIcdCheckInfo(PreDetectionParam param) {
public Set<String> getScriptToIcdCheckInfo(PreDetectionParam param) {
PqScriptIssueParam issueParam = new PqScriptIssueParam();
issueParam.setSourceId(param.getSourceId());
issueParam.setDevIds(param.getDevIds());
@@ -730,7 +730,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
sourceIssues.forEach(x -> {
dataTypeSet.addAll(x.getDevValueTypeList());
});
return new ArrayList<>(dataTypeSet);
return dataTypeSet;
}
@Override