比对预检测-完善
This commit is contained in:
@@ -97,7 +97,7 @@ public class SocketContrastResponseService {
|
|||||||
private boolean alignCheckResult = false;
|
private boolean alignCheckResult = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 成功的配对
|
* 成功的配对 key:被检设备ip_通道号,value:配对设备ip_通道号
|
||||||
*/
|
*/
|
||||||
private Map<String, String> successPair = HashBiMap.create();
|
private Map<String, String> successPair = HashBiMap.create();
|
||||||
|
|
||||||
@@ -125,7 +125,6 @@ public class SocketContrastResponseService {
|
|||||||
put("I", Arrays.asList("real$IRMS"));
|
put("I", Arrays.asList("real$IRMS"));
|
||||||
put("IMBV", Arrays.asList("real$V_UNBAN"));
|
put("IMBV", Arrays.asList("real$V_UNBAN"));
|
||||||
put("IMBA", Arrays.asList("real$I_UNBAN"));
|
put("IMBA", Arrays.asList("real$I_UNBAN"));
|
||||||
put("F", Arrays.asList("avg$PST"));
|
|
||||||
put("P", Arrays.asList("real$P_FUND"));
|
put("P", Arrays.asList("real$P_FUND"));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -143,12 +142,14 @@ public class SocketContrastResponseService {
|
|||||||
* @param param
|
* @param param
|
||||||
*/
|
*/
|
||||||
public void init(ContrastDetectionParam param) {
|
public void init(ContrastDetectionParam param) {
|
||||||
|
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||||
SocketManager.contrastClockMap.clear();
|
SocketManager.contrastClockMap.clear();
|
||||||
successComm.clear();
|
successComm.clear();
|
||||||
failComm.clear();
|
failComm.clear();
|
||||||
|
successPair.clear();
|
||||||
|
FormalTestManager.isRemoveSocket = true;
|
||||||
|
|
||||||
FormalTestManager.pairsMap.clear();
|
HashBiMap<String, String> hashBiMap = HashBiMap.create(param.getPairs());
|
||||||
FormalTestManager.pairsMap.putAll(param.getPairs());
|
|
||||||
|
|
||||||
FormalTestManager.currentTestPlan = adPlanService.getById(param.getPlanId());
|
FormalTestManager.currentTestPlan = adPlanService.getById(param.getPlanId());
|
||||||
DictData pattern = dictDataService.getById(FormalTestManager.currentTestPlan.getPattern());
|
DictData pattern = dictDataService.getById(FormalTestManager.currentTestPlan.getPattern());
|
||||||
@@ -160,7 +161,7 @@ public class SocketContrastResponseService {
|
|||||||
pqDevList.forEach(x -> {
|
pqDevList.forEach(x -> {
|
||||||
List<PreDetection.MonitorListDTO> monitorList = x.getMonitorList();
|
List<PreDetection.MonitorListDTO> monitorList = x.getMonitorList();
|
||||||
//移除不做检测的监测点
|
//移除不做检测的监测点
|
||||||
monitorList.removeIf(y -> !FormalTestManager.pairsMap.containsKey(x.getDevId() + CnSocketUtil.SPLIT_TAG + y.getLine()));
|
monitorList.removeIf(y -> !hashBiMap.containsKey(x.getDevId() + CnSocketUtil.SPLIT_TAG + y.getLine()));
|
||||||
monitorList.forEach(y -> {
|
monitorList.forEach(y -> {
|
||||||
devMonitorMap.put(x.getDevId() + CnSocketUtil.SPLIT_TAG + y.getLine(), y);
|
devMonitorMap.put(x.getDevId() + CnSocketUtil.SPLIT_TAG + y.getLine(), y);
|
||||||
});
|
});
|
||||||
@@ -170,7 +171,7 @@ public class SocketContrastResponseService {
|
|||||||
|
|
||||||
// key为标准设备id,value为标准设备下的监测点列表(Id_通道号)
|
// key为标准设备id,value为标准设备下的监测点列表(Id_通道号)
|
||||||
Map<String, List<String>> pairsMap = new HashMap<>();
|
Map<String, List<String>> pairsMap = new HashMap<>();
|
||||||
FormalTestManager.pairsMap.forEach((key, value) -> {
|
hashBiMap.forEach((key, value) -> {
|
||||||
String[] split = value.split(CnSocketUtil.SPLIT_TAG);
|
String[] split = value.split(CnSocketUtil.SPLIT_TAG);
|
||||||
List<String> monitorIdList = pairsMap.getOrDefault(split[0], new ArrayList<>());
|
List<String> monitorIdList = pairsMap.getOrDefault(split[0], new ArrayList<>());
|
||||||
monitorIdList.add(value);
|
monitorIdList.add(value);
|
||||||
@@ -178,9 +179,10 @@ public class SocketContrastResponseService {
|
|||||||
});
|
});
|
||||||
|
|
||||||
FormalTestManager.standardDevList.clear();
|
FormalTestManager.standardDevList.clear();
|
||||||
List<String> standardDevIds = FormalTestManager.pairsMap.values().stream().map(key -> key.split(CnSocketUtil.SPLIT_TAG)[0]).distinct().collect(Collectors.toList());
|
List<String> standardDevIds = hashBiMap.values().stream().map(key -> key.split(CnSocketUtil.SPLIT_TAG)[0]).distinct().collect(Collectors.toList());
|
||||||
FormalTestManager.standardDevList.addAll(pqStandardDevService.listStandardDevPreDetection(standardDevIds));
|
FormalTestManager.standardDevList.addAll(pqStandardDevService.listStandardDevPreDetection(standardDevIds));
|
||||||
|
|
||||||
|
FormalTestManager.pairsMap.clear();
|
||||||
// 标准设备根据配对关系设置监测点
|
// 标准设备根据配对关系设置监测点
|
||||||
FormalTestManager.standardDevList.stream().forEach(x -> {
|
FormalTestManager.standardDevList.stream().forEach(x -> {
|
||||||
List<PreDetection.MonitorListDTO> monitorList = new ArrayList<>();
|
List<PreDetection.MonitorListDTO> monitorList = new ArrayList<>();
|
||||||
@@ -191,12 +193,13 @@ public class SocketContrastResponseService {
|
|||||||
monitorListDTO.setLineId(x.getDevIP() + CnSocketUtil.SPLIT_TAG + split[1]);
|
monitorListDTO.setLineId(x.getDevIP() + CnSocketUtil.SPLIT_TAG + split[1]);
|
||||||
monitorListDTO.setLine(Integer.valueOf(split[1]));
|
monitorListDTO.setLine(Integer.valueOf(split[1]));
|
||||||
|
|
||||||
PreDetection.MonitorListDTO monitorListDTO1 = devMonitorMap.get(FormalTestManager.pairsMap.inverse().get(y));
|
PreDetection.MonitorListDTO monitorListDTO1 = devMonitorMap.get(hashBiMap.inverse().get(y));
|
||||||
|
|
||||||
monitorListDTO.setConnection(monitorListDTO1.getConnection());
|
monitorListDTO.setConnection(monitorListDTO1.getConnection());
|
||||||
monitorListDTO.setPtStr(monitorListDTO1.getPtStr());
|
monitorListDTO.setPtStr(monitorListDTO1.getPtStr());
|
||||||
monitorListDTO.setCtStr(monitorListDTO1.getCtStr());
|
monitorListDTO.setCtStr(monitorListDTO1.getCtStr());
|
||||||
monitorListDTO.setStatInterval(monitorListDTO1.getStatInterval());
|
monitorListDTO.setStatInterval(monitorListDTO1.getStatInterval());
|
||||||
|
FormalTestManager.pairsMap.put(monitorListDTO1.getLineId(), monitorListDTO.getLineId());
|
||||||
monitorList.add(monitorListDTO);
|
monitorList.add(monitorListDTO);
|
||||||
});
|
});
|
||||||
x.setMonitorList(monitorList);
|
x.setMonitorList(monitorList);
|
||||||
@@ -239,6 +242,7 @@ public class SocketContrastResponseService {
|
|||||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
FormalTestManager.devIdMapComm.putAll(FormalTestManager.devList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||||
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||||
|
|
||||||
|
|
||||||
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_SBTXJY;
|
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_SBTXJY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,7 +302,7 @@ public class SocketContrastResponseService {
|
|||||||
// 通知前端整个装置通讯检测过程成功
|
// 通知前端整个装置通讯检测过程成功
|
||||||
SocketDataMsg temMsg = new SocketDataMsg();
|
SocketDataMsg temMsg = new SocketDataMsg();
|
||||||
temMsg.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());
|
temMsg.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());
|
||||||
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
|
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
|
||||||
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
|
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(temMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(temMsg));
|
||||||
|
|
||||||
@@ -311,7 +315,7 @@ public class SocketContrastResponseService {
|
|||||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||||
phaseSequenceParam.setDataType(FormalTestManager.testItemCodeList);
|
phaseSequenceParam.setDataType(FormalTestManager.testItemCodeList);
|
||||||
phaseSequenceParam.setReadCount(1);
|
phaseSequenceParam.setReadCount(1);
|
||||||
phaseSequenceParam.setIgnoreCount(0);
|
phaseSequenceParam.setIgnoreCount(1); // 刚一开始实时数据申请后,第一组数据为空数据,忽略掉
|
||||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||||
|
|
||||||
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_MXYZXJY;
|
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_MXYZXJY;
|
||||||
@@ -336,10 +340,10 @@ public class SocketContrastResponseService {
|
|||||||
break;
|
break;
|
||||||
case RE_OPERATE:
|
case RE_OPERATE:
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
case NO_INIT_DEV:
|
case NO_INIT_DEV:
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
||||||
@@ -348,82 +352,6 @@ public class SocketContrastResponseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 协议检测
|
|
||||||
*/
|
|
||||||
// private void protocolDeal(SocketDataMsg socketDataMsg, PreDetectionParam param) {
|
|
||||||
// SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
|
|
||||||
// SocketMsg<String> socketMsg = new SocketMsg<>();
|
|
||||||
// String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
|
||||||
// switch (Objects.requireNonNull(dictDataEnumByCode)) {
|
|
||||||
// case SUCCESS:
|
|
||||||
// if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
|
|
||||||
// successComm.add(socketDataMsg.getData());
|
|
||||||
// // 推送前端单个测点协议校验成功
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
|
||||||
// if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
|
||||||
// for (String string : successComm) {
|
|
||||||
// //模拟统计协议校验,通讯校验已经校验过,模拟直接推送
|
|
||||||
// SocketDataMsg webSend = new SocketDataMsg();
|
|
||||||
// webSend.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
|
|
||||||
// webSend.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
|
|
||||||
// webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
|
||||||
// webSend.setData(string);
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
|
||||||
//
|
|
||||||
// SocketDataMsg webSend = new SocketDataMsg();
|
|
||||||
// webSend.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
|
|
||||||
// webSend.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
|
|
||||||
// webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
|
||||||
//
|
|
||||||
// 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(FormalTestManager.testItemCodeList);
|
|
||||||
// phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
|
|
||||||
// phaseSequenceParam.setIgnoreCount(0);
|
|
||||||
// socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
|
||||||
//
|
|
||||||
// FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_MXYZXJY;
|
|
||||||
// SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
|
||||||
// // 实时数据开始计时
|
|
||||||
// SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// completeJudgment(param);
|
|
||||||
// break;
|
|
||||||
// case UNPROCESSED_BUSINESS:
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
|
||||||
// break;
|
|
||||||
// case DEV_ERROR:
|
|
||||||
// failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
|
||||||
// completeJudgment(param);
|
|
||||||
// break;
|
|
||||||
// case DEV_TARGET:
|
|
||||||
// failComm.add(socketDataMsg.getData());
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
|
||||||
// completeJudgment(param);
|
|
||||||
// break;
|
|
||||||
// case RE_OPERATE:
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
|
||||||
// CnSocketUtil.contrastSendquit(param.getUserPageId());
|
|
||||||
// break;
|
|
||||||
// case ICD_NOT_FOUND:
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
|
||||||
// CnSocketUtil.contrastSendquit(param.getUserPageId());
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模型一致性校验
|
* 模型一致性校验
|
||||||
*/
|
*/
|
||||||
@@ -432,6 +360,7 @@ public class SocketContrastResponseService {
|
|||||||
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
||||||
SocketMsg<String> socketMsg = new SocketMsg<>();
|
SocketMsg<String> socketMsg = new SocketMsg<>();
|
||||||
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
||||||
|
socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
||||||
switch (dictDataEnumByCode) {
|
switch (dictDataEnumByCode) {
|
||||||
@@ -453,8 +382,10 @@ public class SocketContrastResponseService {
|
|||||||
if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
||||||
|
|
||||||
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap);
|
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap);
|
||||||
modelCheckResult = modelCheckResult && this.modelCheck(param, FormalTestManager.standardDevDataMap);
|
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap) && modelCheckResult;
|
||||||
if (!modelCheckResult) {
|
if (!modelCheckResult) {
|
||||||
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
|
|
||||||
SocketDataMsg webSend = new SocketDataMsg();
|
SocketDataMsg webSend = new SocketDataMsg();
|
||||||
webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
||||||
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||||
@@ -462,7 +393,7 @@ public class SocketContrastResponseService {
|
|||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
||||||
|
|
||||||
System.out.println("模型一致性校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》");
|
System.out.println("模型一致性校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》");
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
@@ -489,29 +420,27 @@ public class SocketContrastResponseService {
|
|||||||
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case UNPROCESSED_BUSINESS:
|
case UNPROCESSED_BUSINESS:
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
break;
|
break;
|
||||||
|
case NORMAL_RESPONSE:
|
||||||
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
|
break;
|
||||||
case DEV_ERROR:
|
case DEV_ERROR:
|
||||||
failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case DEV_TARGET:
|
case DEV_TARGET:
|
||||||
failComm.add(socketDataMsg.getData());
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case RE_OPERATE:
|
case RE_OPERATE:
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
case NO_INIT_DEV:
|
case NO_INIT_DEV:
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
||||||
@@ -531,6 +460,7 @@ public class SocketContrastResponseService {
|
|||||||
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
||||||
SocketMsg<String> socketMsg = new SocketMsg<>();
|
SocketMsg<String> socketMsg = new SocketMsg<>();
|
||||||
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
||||||
|
socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
||||||
switch (dictDataEnumByCode) {
|
switch (dictDataEnumByCode) {
|
||||||
@@ -545,10 +475,8 @@ public class SocketContrastResponseService {
|
|||||||
if (!alignCheckResult) {
|
if (!alignCheckResult) {
|
||||||
System.out.println("1minute内实时数据对齐校验失败!");
|
System.out.println("1minute内实时数据对齐校验失败!");
|
||||||
|
|
||||||
// 向通讯模块发送不再接收数据
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
this.sendNotReceiveData(s);
|
|
||||||
|
|
||||||
successPair.clear();
|
|
||||||
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
|
|
||||||
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsMap.keySet(), successPair.keySet());
|
Collection<String> disjunction = CollectionUtil.disjunction(FormalTestManager.pairsMap.keySet(), successPair.keySet());
|
||||||
@@ -568,7 +496,9 @@ public class SocketContrastResponseService {
|
|||||||
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送
|
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
||||||
|
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
// 将数据推送给前端
|
||||||
|
this.sendAlignDataToWeb(param.getUserPageId());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
scheduler.shutdown();
|
scheduler.shutdown();
|
||||||
@@ -611,10 +541,6 @@ public class SocketContrastResponseService {
|
|||||||
// 将数据推送给前端
|
// 将数据推送给前端
|
||||||
this.sendAlignDataToWeb(param.getUserPageId());
|
this.sendAlignDataToWeb(param.getUserPageId());
|
||||||
|
|
||||||
// 向通讯模块发送不再接收数据
|
|
||||||
this.sendNotReceiveData(s);
|
|
||||||
|
|
||||||
successPair.clear();
|
|
||||||
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
|
|
||||||
SocketDataMsg webSend1 = new SocketDataMsg();
|
SocketDataMsg webSend1 = new SocketDataMsg();
|
||||||
@@ -646,23 +572,19 @@ public class SocketContrastResponseService {
|
|||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
break;
|
break;
|
||||||
case DEV_ERROR:
|
case DEV_ERROR:
|
||||||
//failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
//completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case DEV_TARGET:
|
case DEV_TARGET:
|
||||||
//failComm.add(socketDataMsg.getData());
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
//completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case RE_OPERATE:
|
case RE_OPERATE:
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
case NO_INIT_DEV:
|
case NO_INIT_DEV:
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
||||||
@@ -680,6 +602,7 @@ public class SocketContrastResponseService {
|
|||||||
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
|
||||||
SocketMsg<String> socketMsg = new SocketMsg<>();
|
SocketMsg<String> socketMsg = new SocketMsg<>();
|
||||||
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
|
||||||
|
socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
|
||||||
switch (dictDataEnumByCode) {
|
switch (dictDataEnumByCode) {
|
||||||
@@ -705,7 +628,7 @@ public class SocketContrastResponseService {
|
|||||||
|
|
||||||
// 进行单个监测点的相序校验
|
// 进行单个监测点的相序校验
|
||||||
if (!successPair.containsKey(devMonitorId)) {
|
if (!successPair.containsKey(devMonitorId)) {
|
||||||
if (FormalTestManager.devDataMap.get(devMonitorId).size() > 1 + 5 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() > 1 + 5) { // 电压、电流误差校验至少需要1组数据。加5是为了避免数据在传输过程中因为网络波动导致的数据延时接收。
|
if (FormalTestManager.devDataMap.get(devMonitorId).size() > 1 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() > 1) {
|
||||||
successComm.add(standardDevMonitorId);
|
successComm.add(standardDevMonitorId);
|
||||||
successComm.add(devMonitorId);
|
successComm.add(devMonitorId);
|
||||||
// successComm.add(monitorId1);
|
// successComm.add(monitorId1);
|
||||||
@@ -714,9 +637,7 @@ public class SocketContrastResponseService {
|
|||||||
successPair.put(devMonitorId, standardDevMonitorId);
|
successPair.put(devMonitorId, standardDevMonitorId);
|
||||||
// 若成功的配对项等于总的配对项,则判定为成功
|
// 若成功的配对项等于总的配对项,则判定为成功
|
||||||
if (successPair.keySet().containsAll(FormalTestManager.pairsMap.keySet())) {
|
if (successPair.keySet().containsAll(FormalTestManager.pairsMap.keySet())) {
|
||||||
successPair.clear();
|
|
||||||
successComm.clear();
|
|
||||||
failComm.clear();
|
|
||||||
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
|
|
||||||
SocketDataMsg webSend = new SocketDataMsg();
|
SocketDataMsg webSend = new SocketDataMsg();
|
||||||
@@ -725,26 +646,29 @@ public class SocketContrastResponseService {
|
|||||||
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
|
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
||||||
|
|
||||||
System.out.println("相序校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始正式检测》》》》》》》》》》》》》》》》");
|
// 后续做正式检测
|
||||||
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
|
if (param.getTestItemList().get(2)) {
|
||||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
System.out.println("相序校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始正式检测》》》》》》》》》》》》》》》》");
|
||||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
|
||||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||||
phaseSequenceParam.setDataType(FormalTestManager.testItemCodeList);
|
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||||
//phaseSequenceParam.setReadCount(this.getMaxReadCount(6 + 5));
|
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||||
phaseSequenceParam.setIgnoreCount(0);
|
phaseSequenceParam.setDataType(FormalTestManager.testItemCodeList);
|
||||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
//phaseSequenceParam.setReadCount(this.getMaxReadCount(6 + 5));
|
||||||
|
phaseSequenceParam.setIgnoreCount(0);
|
||||||
|
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||||
|
|
||||||
FormalTestManager.currentStep = SourceOperateCodeEnum.FORMAL_REAL;
|
FormalTestManager.currentStep = SourceOperateCodeEnum.FORMAL_REAL;
|
||||||
//SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
//SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||||
// 实时数据开始计时
|
// 实时数据开始计时
|
||||||
//SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
//SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||||
|
} else {
|
||||||
|
// 断开与设备的连接,但是不要将Socket移除
|
||||||
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
} else if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
||||||
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
this.clearData(FormalTestManager.devDataMap, FormalTestManager.standardDevDataMap);
|
||||||
successComm.clear();
|
|
||||||
failComm.clear();
|
|
||||||
successPair.clear();
|
|
||||||
|
|
||||||
// 相序校验失败,最终向前端发送失败消息
|
// 相序校验失败,最终向前端发送失败消息
|
||||||
WebSocketVO<String> webSend = new WebSocketVO<>();
|
WebSocketVO<String> webSend = new WebSocketVO<>();
|
||||||
@@ -753,7 +677,7 @@ public class SocketContrastResponseService {
|
|||||||
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); //最终错误推送
|
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); //最终错误推送
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||||
|
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -763,17 +687,13 @@ public class SocketContrastResponseService {
|
|||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
|
||||||
break;
|
break;
|
||||||
case DEV_ERROR:
|
case DEV_ERROR:
|
||||||
failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
|
||||||
completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case DEV_TARGET:
|
case DEV_TARGET:
|
||||||
failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
|
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
|
||||||
completeJudgment(param);
|
|
||||||
break;
|
break;
|
||||||
case RE_OPERATE:
|
case RE_OPERATE:
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
WebServiceManager.sendUnknownErrorMessage(param.getUserPageId());
|
||||||
@@ -898,7 +818,7 @@ public class SocketContrastResponseService {
|
|||||||
// List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
// List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
|
||||||
//
|
//
|
||||||
// iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
// iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
|
||||||
// CnSocketUtil.contrastSendquit(param.getUserPageId());
|
// CnSocketUtil.contrastSendquit(param.getUserPageId(),false);
|
||||||
// }
|
// }
|
||||||
// successComm.clear();
|
// successComm.clear();
|
||||||
// FormalTestManager.realDataXiList.clear();
|
// FormalTestManager.realDataXiList.clear();
|
||||||
@@ -950,7 +870,9 @@ public class SocketContrastResponseService {
|
|||||||
case SUCCESS:
|
case SUCCESS:
|
||||||
switch (Objects.requireNonNull(operateCodeEnum)) {
|
switch (Objects.requireNonNull(operateCodeEnum)) {
|
||||||
case QUIT_INIT_02:
|
case QUIT_INIT_02:
|
||||||
SocketManager.removeUser(s);
|
if (FormalTestManager.isRemoveSocket) {
|
||||||
|
SocketManager.removeUser(s);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@@ -960,7 +882,9 @@ public class SocketContrastResponseService {
|
|||||||
case NO_INIT_DEV:
|
case NO_INIT_DEV:
|
||||||
switch (operateCodeEnum) {
|
switch (operateCodeEnum) {
|
||||||
case QUIT_INIT_02:
|
case QUIT_INIT_02:
|
||||||
SocketManager.removeUser(s);
|
if (FormalTestManager.isRemoveSocket) {
|
||||||
|
SocketManager.removeUser(s);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -976,7 +900,7 @@ public class SocketContrastResponseService {
|
|||||||
if (successComm.size() + failComm.size() == FormalTestManager.monitorMap.size()) {
|
if (successComm.size() + failComm.size() == FormalTestManager.monitorMap.size()) {
|
||||||
//全部装置返回
|
//全部装置返回
|
||||||
if (!failComm.isEmpty()) {
|
if (!failComm.isEmpty()) {
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
|
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
|
||||||
webSocketVO.setRequestId(SourceOperateCodeEnum.ERROR_FLOW_END.getValue());
|
webSocketVO.setRequestId(SourceOperateCodeEnum.ERROR_FLOW_END.getValue());
|
||||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
|
||||||
@@ -994,6 +918,9 @@ public class SocketContrastResponseService {
|
|||||||
* @param standardDevDataMap
|
* @param standardDevDataMap
|
||||||
*/
|
*/
|
||||||
private void clearData(Map<String, List<DevData>> devDataMap, Map<String, List<DevData>> standardDevDataMap) {
|
private void clearData(Map<String, List<DevData>> devDataMap, Map<String, List<DevData>> standardDevDataMap) {
|
||||||
|
successPair.clear();
|
||||||
|
successComm.clear();
|
||||||
|
failComm.clear();
|
||||||
standardDevDataMap.forEach((k, v) -> {
|
standardDevDataMap.forEach((k, v) -> {
|
||||||
v.clear();
|
v.clear();
|
||||||
});
|
});
|
||||||
@@ -1050,7 +977,7 @@ public class SocketContrastResponseService {
|
|||||||
|
|
||||||
List<AlignDataVO.ChannelData> channelDataList = new ArrayList<>();
|
List<AlignDataVO.ChannelData> channelDataList = new ArrayList<>();
|
||||||
channelDataMap.forEach((channel, channelDevDataList) -> {
|
channelDataMap.forEach((channel, channelDevDataList) -> {
|
||||||
String standardDevMonitorId = FormalTestManager.pairsMap.get(ip + channel);
|
String standardDevMonitorId = FormalTestManager.pairsMap.get(ip + CnSocketUtil.SPLIT_TAG + channel);
|
||||||
List<DevData> standarDevDataList = BeanUtil.copyToList(FormalTestManager.standardDevDataMap.get(standardDevMonitorId), DevData.class);
|
List<DevData> standarDevDataList = BeanUtil.copyToList(FormalTestManager.standardDevDataMap.get(standardDevMonitorId), DevData.class);
|
||||||
channelDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
channelDevDataList.sort(Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime())));
|
||||||
|
|
||||||
@@ -1115,7 +1042,8 @@ public class SocketContrastResponseService {
|
|||||||
webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
||||||
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||||
webSend.setData(k);
|
webSend.setData(k);
|
||||||
if (CollUtil.isNotEmpty(descList) && descList.containsAll(FormalTestManager.testItemCodeList)) {
|
List<String> collect = FormalTestManager.testItemCodeList.stream().map(obj -> obj.split("\\$")[1]).collect(Collectors.toList());
|
||||||
|
if (CollUtil.isNotEmpty(descList) && descList.containsAll(collect)) {
|
||||||
// 成功信息
|
// 成功信息
|
||||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||||
} else {
|
} else {
|
||||||
@@ -1127,25 +1055,6 @@ public class SocketContrastResponseService {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// devDataMap.forEach((k, v) -> {
|
|
||||||
// v.stream().forEach(devData1 -> {
|
|
||||||
// List<String> descList = devData1.getSqlData().stream().map(DevData.SqlDataDTO::getDesc).collect(Collectors.toList());
|
|
||||||
// descList.addAll(devData1.getSqlDataHarm().stream().map(DevData.SqlDataHarmDTO::getDesc).collect(Collectors.toList()));
|
|
||||||
// SocketDataMsg webSend = new SocketDataMsg();
|
|
||||||
// webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
|
|
||||||
// webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
|
||||||
// webSend.setData(k);
|
|
||||||
// if (FormalTestManager.testItemCodeList.containsAll(descList)) {
|
|
||||||
// // 成功信息
|
|
||||||
// webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
|
||||||
// } else {
|
|
||||||
// // 错误信息
|
|
||||||
// webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
|
||||||
// flag.set(false);
|
|
||||||
// }
|
|
||||||
// WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
return flag.get();
|
return flag.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1188,7 +1097,7 @@ public class SocketContrastResponseService {
|
|||||||
* @return true:对齐成功;false:对齐失败
|
* @return true:对齐成功;false:对齐失败
|
||||||
*/
|
*/
|
||||||
private boolean singleMonitorAlignCheck(List<DevData> devDataList, List<DevData> standardDevDataList) {
|
private boolean singleMonitorAlignCheck(List<DevData> devDataList, List<DevData> standardDevDataList) {
|
||||||
if (standardDevDataList.size() >= 5 + 5 && devDataList.size() >= 5 + 5) { //实时数据对齐需要至少对齐5组。为了防止网络波动,导致数据延迟接收,这里设置为5+5=10后再进行对齐
|
if (standardDevDataList.size() >= 5 && devDataList.size() >= 5) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
int jStart = 0;
|
int jStart = 0;
|
||||||
@@ -1225,7 +1134,6 @@ public class SocketContrastResponseService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private boolean singleMonitorXuCheck(String devMonitorId, String standardDevMonitorId, List<DevData> devData, List<DevData> stdData, Map<String, String> devNameMapComm, String userId) {
|
private boolean singleMonitorXuCheck(String devMonitorId, String standardDevMonitorId, List<DevData> devData, List<DevData> stdData, Map<String, String> devNameMapComm, String userId) {
|
||||||
// 首先确保,至少有6组数据
|
|
||||||
Boolean flag = true;
|
Boolean flag = true;
|
||||||
if (devData.size() < 1 || stdData.size() < 1) {
|
if (devData.size() < 1 || stdData.size() < 1) {
|
||||||
return false;
|
return false;
|
||||||
@@ -1253,6 +1161,7 @@ public class SocketContrastResponseService {
|
|||||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||||
webSend.setData(pairStr + ":电压校验成功!被检设备:Ua=" + uDevList.getA() + ",Ub=" + uDevList.getB() + ",Uc=" + uDevList.getC() + ",标准设备:Ua=" + uStdList.getA() + ",Ub=" + uStdList.getB() + ",Uc=" + uStdList.getC());
|
webSend.setData(pairStr + ":电压校验成功!被检设备:Ua=" + uDevList.getA() + ",Ub=" + uDevList.getB() + ",Uc=" + uDevList.getC() + ",标准设备:Ua=" + uStdList.getA() + ",Ub=" + uStdList.getB() + ",Uc=" + uStdList.getC());
|
||||||
}
|
}
|
||||||
|
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||||
if (!voltageOrCurrentCheck(iDevList.getA(), iDevList.getB(), iDevList.getC(), iStdList.getA(), iStdList.getB(), iStdList.getC(), false)) {
|
if (!voltageOrCurrentCheck(iDevList.getA(), iDevList.getB(), iDevList.getC(), iStdList.getA(), iStdList.getB(), iStdList.getC(), false)) {
|
||||||
// 单个检测点电流校验失败,推送失败消息
|
// 单个检测点电流校验失败,推送失败消息
|
||||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||||
@@ -1277,22 +1186,22 @@ public class SocketContrastResponseService {
|
|||||||
DevData.SqlDataDTO.ListDTO iUnblanceDevList = iUnblanceDev.get(0).getList();
|
DevData.SqlDataDTO.ListDTO iUnblanceDevList = iUnblanceDev.get(0).getList();
|
||||||
DevData.SqlDataDTO.ListDTO iUnblanceStdList = iUnblanceStd.get(0).getList();
|
DevData.SqlDataDTO.ListDTO iUnblanceStdList = iUnblanceStd.get(0).getList();
|
||||||
|
|
||||||
if (!unbalanceCheck(uUnblanceDevList.getT(), uUnblanceStdList.getT(), true)) {
|
if (!unbalanceCheck(uUnblanceDevList.getB(), uUnblanceStdList.getB(), true)) {
|
||||||
// 单个检测点三项电压不平衡校验失败,推送失败消息
|
// 单个检测点三项电压不平衡校验失败,推送失败消息
|
||||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||||
webSend.setData(pairStr + ":三项电压不平衡校验失败!被检设备:IMBV=" + uUnblanceDevList.getT() + ",标准设备:IMBV=" + uUnblanceStdList.getT());
|
webSend.setData(pairStr + ":三项电压不平衡校验失败!被检设备:IMBV=" + uUnblanceDevList.getB() + ",标准设备:IMBV=" + uUnblanceStdList.getB());
|
||||||
flag = false;
|
flag = false;
|
||||||
} else {
|
} else {
|
||||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||||
webSend.setData(pairStr + ":三项电压不平衡校验成功!被检设备:IMBV=" + uUnblanceDevList.getT() + ",标准设备:IMBV=" + uUnblanceStdList.getT());
|
webSend.setData(pairStr + ":三项电压不平衡校验成功!被检设备:IMBV=" + uUnblanceDevList.getB() + ",标准设备:IMBV=" + uUnblanceStdList.getB());
|
||||||
}
|
}
|
||||||
if (!unbalanceCheck(iUnblanceDevList.getT(), iUnblanceStdList.getT(), false)) {
|
if (!unbalanceCheck(iUnblanceDevList.getB(), iUnblanceStdList.getB(), false)) {
|
||||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||||
webSend.setData(pairStr + ":三项电流不平衡校验失败!被检设备:IMBA=" + iUnblanceDevList.getT() + ",标准设备:IMBA=" + iUnblanceStdList.getT());
|
webSend.setData(pairStr + ":三项电流不平衡校验失败!被检设备:IMBA=" + iUnblanceDevList.getB() + ",标准设备:IMBA=" + iUnblanceStdList.getB());
|
||||||
flag = false;
|
flag = false;
|
||||||
} else {
|
} else {
|
||||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||||
webSend.setData(pairStr + ":三项电流不平衡校验成功!被检设备:IMBA=" + iUnblanceDevList.getT() + ",标准设备:IMBA=" + iUnblanceStdList.getT());
|
webSend.setData(pairStr + ":三项电流不平衡校验成功!被检设备:IMBA=" + iUnblanceDevList.getB() + ",标准设备:IMBA=" + iUnblanceStdList.getB());
|
||||||
}
|
}
|
||||||
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||||
}
|
}
|
||||||
@@ -1316,11 +1225,11 @@ public class SocketContrastResponseService {
|
|||||||
if (!phaseCheck(vaUnblanceDevList, iaUnblanceDevList, vaUnblanceStdList, iaUnblanceStdList)) {
|
if (!phaseCheck(vaUnblanceDevList, iaUnblanceDevList, vaUnblanceStdList, iaUnblanceStdList)) {
|
||||||
// 单个检测点相角校验失败,推送失败消息
|
// 单个检测点相角校验失败,推送失败消息
|
||||||
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||||
webSend.setData(pairStr + "相角校验失败!被检设备:a=" + vaUnblanceDevList.getA() + "°,b=" + vaUnblanceDevList.getB() + "°,c=" + vaUnblanceDevList.getC() + ",标准设备:a=" + vaUnblanceStdList.getA() + "°,b=" + vaUnblanceStdList.getB() + "°,c=" + vaUnblanceStdList.getC());
|
webSend.setData(pairStr + ":相角校验失败!被检设备:a=" + vaUnblanceDevList.getA() + "°,b=" + vaUnblanceDevList.getB() + "°,c=" + vaUnblanceDevList.getC() + ",标准设备:a=" + vaUnblanceStdList.getA() + "°,b=" + vaUnblanceStdList.getB() + "°,c=" + vaUnblanceStdList.getC());
|
||||||
flag = false;
|
flag = false;
|
||||||
} else {
|
} else {
|
||||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||||
webSend.setData(pairStr + "相角校验成功!被检设备:a=" + vaUnblanceDevList.getA() + "°,b=" + vaUnblanceDevList.getB() + "°,c=" + vaUnblanceDevList.getC() + ",标准设备:a=" + vaUnblanceStdList.getA() + "°,b=" + vaUnblanceStdList.getB() + "°,c=" + vaUnblanceStdList.getC());
|
webSend.setData(pairStr + ":相角校验成功!被检设备:a=" + vaUnblanceDevList.getA() + "°,b=" + vaUnblanceDevList.getB() + "°,c=" + vaUnblanceDevList.getC() + ",标准设备:a=" + vaUnblanceStdList.getA() + "°,b=" + vaUnblanceStdList.getB() + "°,c=" + vaUnblanceStdList.getC());
|
||||||
}
|
}
|
||||||
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1692,7 +1692,8 @@ public class SocketDevResponseService {
|
|||||||
FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
|
FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
|
||||||
|
|
||||||
FormalTestManager.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
|
FormalTestManager.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
|
||||||
FormalTestManager.devIdMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId));
|
FormalTestManager.devIdMapComm.clear();
|
||||||
|
FormalTestManager.devIdMapComm.putAll(pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
|
||||||
|
|
||||||
//初始化有效数据数
|
//初始化有效数据数
|
||||||
//Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
|
//Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
|
||||||
|
|||||||
@@ -40,8 +40,7 @@ public enum SourceResponseCodeEnum {
|
|||||||
ALL_SUCCESS(25001,"校验成功"),
|
ALL_SUCCESS(25001,"校验成功"),
|
||||||
FAIL(25002,"失败"),
|
FAIL(25002,"失败"),
|
||||||
ALL_FAIL(25003,"校验失败"),
|
ALL_FAIL(25003,"校验失败"),
|
||||||
ALIGN_CHECK_FAIL(25007,"实时数据对齐校验未通过"),
|
RECEIVE_DATA_TIME_OUT(25004,"接收数据超时")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class ContrastDetectionParam {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty("配对关系")
|
@ApiModelProperty("配对关系")
|
||||||
@NotEmpty(message = DetectionValidMessage.PAIRS_NOT_EMPTY)
|
@NotEmpty(message = DetectionValidMessage.PAIRS_NOT_EMPTY)
|
||||||
private Map<String,String> pairs;
|
private Map<String, String> pairs;
|
||||||
/**
|
/**
|
||||||
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
|
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ public class DetectionServiceImpl {
|
|||||||
param.setErrorSysId(errorSysId);
|
param.setErrorSysId(errorSysId);
|
||||||
param.setUn(sourceIssue.getFUn());
|
param.setUn(sourceIssue.getFUn());
|
||||||
param.setIn(sourceIssue.getFIn());
|
param.setIn(sourceIssue.getFIn());
|
||||||
|
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||||
List<ErrDtlsCheckDataVO> errDtlsCheckData = pqErrSysDtlsService.listByPqErrSysIdAndTypes(param);
|
List<ErrDtlsCheckDataVO> errDtlsCheckData = pqErrSysDtlsService.listByPqErrSysIdAndTypes(param);
|
||||||
ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(sourceIssue.getType());
|
ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(sourceIssue.getType());
|
||||||
switch (resultUnitEnumByCode) {
|
switch (resultUnitEnumByCode) {
|
||||||
@@ -111,40 +112,40 @@ public class DetectionServiceImpl {
|
|||||||
* 频率
|
* 频率
|
||||||
*/
|
*/
|
||||||
case FREQ:
|
case FREQ:
|
||||||
return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code);
|
return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
/**
|
/**
|
||||||
* 电压
|
* 电压
|
||||||
*/
|
*/
|
||||||
case V_RELATIVE:
|
case V_RELATIVE:
|
||||||
case V_ABSOLUTELY:
|
case V_ABSOLUTELY:
|
||||||
return isQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, code);
|
return isQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
/**
|
/**
|
||||||
* 电流
|
* 电流
|
||||||
*/
|
*/
|
||||||
case I_RELATIVE:
|
case I_RELATIVE:
|
||||||
case I_ABSOLUTELY:
|
case I_ABSOLUTELY:
|
||||||
return isQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, code);
|
return isQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
/**
|
/**
|
||||||
* 谐波
|
* 谐波
|
||||||
*/
|
*/
|
||||||
case HV:
|
case HV:
|
||||||
case HI:
|
case HI:
|
||||||
SimAndDigHarmonicResult harmV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, HARMONIC_FLAG);
|
SimAndDigHarmonicResult harmV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, HARMONIC_FLAG, oneConfig.getScale());
|
||||||
SimAndDigHarmonicResult harmI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, HARMONIC_FLAG);
|
SimAndDigHarmonicResult harmI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, HARMONIC_FLAG, oneConfig.getScale());
|
||||||
return resultFlag(harmV, harmI, code);
|
return resultFlag(harmV, harmI, code);
|
||||||
/**
|
/**
|
||||||
* 间谐波
|
* 间谐波
|
||||||
*/
|
*/
|
||||||
case HSV:
|
case HSV:
|
||||||
case HSI:
|
case HSI:
|
||||||
SimAndDigHarmonicResult harmInV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, INHARMONIC_FLAG);
|
SimAndDigHarmonicResult harmInV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, INHARMONIC_FLAG, oneConfig.getScale());
|
||||||
SimAndDigHarmonicResult harmInI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, INHARMONIC_FLAG);
|
SimAndDigHarmonicResult harmInI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, INHARMONIC_FLAG, oneConfig.getScale());
|
||||||
return resultFlag(harmInV, harmInI, code);
|
return resultFlag(harmInV, harmInI, code);
|
||||||
/**
|
/**
|
||||||
* 三相电压不平衡度
|
* 三相电压不平衡度
|
||||||
*/
|
*/
|
||||||
case IMBV:
|
case IMBV:
|
||||||
SimAndDigNonHarmonicResult vUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, "V_UNBAN");
|
SimAndDigNonHarmonicResult vUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, "V_UNBAN", oneConfig.getScale());
|
||||||
if (ObjectUtil.isNotNull(vUnban)) {
|
if (ObjectUtil.isNotNull(vUnban)) {
|
||||||
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(vUnban), code);
|
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(vUnban), code);
|
||||||
return vUnban.getResultFlag();
|
return vUnban.getResultFlag();
|
||||||
@@ -154,7 +155,7 @@ public class DetectionServiceImpl {
|
|||||||
* 三相电流不平衡度
|
* 三相电流不平衡度
|
||||||
*/
|
*/
|
||||||
case IMBA:
|
case IMBA:
|
||||||
SimAndDigNonHarmonicResult iUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, "I_UNBAN");
|
SimAndDigNonHarmonicResult iUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, "I_UNBAN", oneConfig.getScale());
|
||||||
if (ObjectUtil.isNotNull(iUnban)) {
|
if (ObjectUtil.isNotNull(iUnban)) {
|
||||||
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(iUnban), code);
|
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(iUnban), code);
|
||||||
return iUnban.getResultFlag();
|
return iUnban.getResultFlag();
|
||||||
@@ -164,7 +165,7 @@ public class DetectionServiceImpl {
|
|||||||
* 谐波有功功率
|
* 谐波有功功率
|
||||||
*/
|
*/
|
||||||
case HP:
|
case HP:
|
||||||
SimAndDigHarmonicResult harmP = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, HP, sourceIssue, dataRule, 2);
|
SimAndDigHarmonicResult harmP = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, HP, sourceIssue, dataRule, 2, oneConfig.getScale());
|
||||||
if (ObjectUtil.isNotNull(harmP)) {
|
if (ObjectUtil.isNotNull(harmP)) {
|
||||||
detectionDataDealService.acceptHarmonicResult(Arrays.asList(harmP), code);
|
detectionDataDealService.acceptHarmonicResult(Arrays.asList(harmP), code);
|
||||||
return harmP.getResultFlag();
|
return harmP.getResultFlag();
|
||||||
@@ -174,7 +175,7 @@ public class DetectionServiceImpl {
|
|||||||
* 闪变
|
* 闪变
|
||||||
*/
|
*/
|
||||||
case F:
|
case F:
|
||||||
SimAndDigNonHarmonicResult pst = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, null, sourceIssue, dataRule, "PST");
|
SimAndDigNonHarmonicResult pst = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, null, sourceIssue, dataRule, "PST", oneConfig.getScale());
|
||||||
if (ObjectUtil.isNotNull(pst)) {
|
if (ObjectUtil.isNotNull(pst)) {
|
||||||
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(pst), code);
|
detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(pst), code);
|
||||||
return pst.getResultFlag();
|
return pst.getResultFlag();
|
||||||
@@ -185,11 +186,11 @@ public class DetectionServiceImpl {
|
|||||||
*/
|
*/
|
||||||
case VOLTAGE_MAG:
|
case VOLTAGE_MAG:
|
||||||
case VOLTAGE_DUR:
|
case VOLTAGE_DUR:
|
||||||
return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code);
|
return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
case P:
|
case P:
|
||||||
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code);
|
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
default:
|
default:
|
||||||
return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code);
|
return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,7 +214,7 @@ public class DetectionServiceImpl {
|
|||||||
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
String code) {
|
String code, Integer scale) {
|
||||||
List<SimAndDigNonHarmonicResult> info = new ArrayList<>();
|
List<SimAndDigNonHarmonicResult> info = new ArrayList<>();
|
||||||
List<SimAndDigHarmonicResult> harmonicResultList = new ArrayList<>();
|
List<SimAndDigHarmonicResult> harmonicResultList = new ArrayList<>();
|
||||||
List<String> devValueTypeList = sourceIssue.getDevValueTypeList();
|
List<String> devValueTypeList = sourceIssue.getDevValueTypeList();
|
||||||
@@ -247,9 +248,9 @@ public class DetectionServiceImpl {
|
|||||||
if (CollUtil.isNotEmpty(checkData)) {
|
if (CollUtil.isNotEmpty(checkData)) {
|
||||||
DetectionData detectionData;
|
DetectionData detectionData;
|
||||||
if (DUR.equals(devIndex)) {
|
if (DUR.equals(devIndex)) {
|
||||||
detectionData = rangeDURComparisonList(value, isQualified, new ArrayList<>(), sourceIssue.getFFreq(), checkData.get(0).getValue(), dataRule);
|
detectionData = rangeDURComparisonList(value, isQualified, new ArrayList<>(), sourceIssue.getFFreq(), checkData.get(0).getValue(), dataRule, scale);
|
||||||
} else {
|
} else {
|
||||||
detectionData = rangeComparisonList(value, isQualified, new ArrayList<>(), null, checkData.get(0).getValue(), dataRule);
|
detectionData = rangeComparisonList(value, isQualified, new ArrayList<>(), null, checkData.get(0).getValue(), dataRule, scale);
|
||||||
}
|
}
|
||||||
if (key.equals(TYPE_T)) {
|
if (key.equals(TYPE_T)) {
|
||||||
result.setTValue(JSON.toJSONString(detectionData));
|
result.setTValue(JSON.toJSONString(detectionData));
|
||||||
@@ -322,9 +323,9 @@ public class DetectionServiceImpl {
|
|||||||
isQualified = 4;
|
isQualified = 4;
|
||||||
}
|
}
|
||||||
//电压下百分比给百分比直接算 电流是是下百分比给的是幅值要转换算
|
//电压下百分比给百分比直接算 电流是是下百分比给的是幅值要转换算
|
||||||
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_A, sourceIssue, dataRule, devHarmMap.get(TYPE_A), fData, num);
|
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_A, sourceIssue, dataRule, devHarmMap.get(TYPE_A), fData, num, scale);
|
||||||
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_B, sourceIssue, dataRule, devHarmMap.get(TYPE_B), fData, num);
|
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_B, sourceIssue, dataRule, devHarmMap.get(TYPE_B), fData, num, scale);
|
||||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_C, sourceIssue, dataRule, devHarmMap.get(TYPE_C), fData, num);
|
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, new ArrayList<>(), type, TYPE_C, sourceIssue, dataRule, devHarmMap.get(TYPE_C), fData, num, scale);
|
||||||
harmonicResult.setDataType(sourceIssue.getDataType());
|
harmonicResult.setDataType(sourceIssue.getDataType());
|
||||||
reflectHarmonic("a", integerBooleanA, harmonicResult, num);
|
reflectHarmonic("a", integerBooleanA, harmonicResult, num);
|
||||||
reflectHarmonic("b", integerBooleanB, harmonicResult, num);
|
reflectHarmonic("b", integerBooleanB, harmonicResult, num);
|
||||||
@@ -367,7 +368,7 @@ public class DetectionServiceImpl {
|
|||||||
String type,
|
String type,
|
||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
String code) {
|
String code, Integer scale) {
|
||||||
List<SimAndDigNonHarmonicResult> info = new ArrayList<>();
|
List<SimAndDigNonHarmonicResult> info = new ArrayList<>();
|
||||||
List<String> devValueTypeList = sourceIssue.getDevValueTypeList();
|
List<String> devValueTypeList = sourceIssue.getDevValueTypeList();
|
||||||
for (String s : devValueTypeList) {
|
for (String s : devValueTypeList) {
|
||||||
@@ -407,7 +408,7 @@ public class DetectionServiceImpl {
|
|||||||
if (map.containsKey(TYPE_T)) {
|
if (map.containsKey(TYPE_T)) {
|
||||||
List<ErrDtlsCheckDataVO> checkDataT = dtlsCheckData.stream().filter(x -> TYPE_T.equals(x.getPhase())).collect(Collectors.toList());
|
List<ErrDtlsCheckDataVO> checkDataT = dtlsCheckData.stream().filter(x -> TYPE_T.equals(x.getPhase())).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(checkDataT)) {
|
if (CollUtil.isNotEmpty(checkDataT)) {
|
||||||
DetectionData t = rangeComparisonList(map.get(TYPE_T), isQualified, pqErrSysDtls, fData, checkDataT.get(0).getValue(), dataRule);
|
DetectionData t = rangeComparisonList(map.get(TYPE_T), isQualified, pqErrSysDtls, fData, checkDataT.get(0).getValue(), dataRule, scale);
|
||||||
result.setTValue(JSON.toJSONString(t));
|
result.setTValue(JSON.toJSONString(t));
|
||||||
result.setResultFlag(t.getIsData());
|
result.setResultFlag(t.getIsData());
|
||||||
}
|
}
|
||||||
@@ -426,7 +427,7 @@ public class DetectionServiceImpl {
|
|||||||
if (CollUtil.isNotEmpty(checkData)) {
|
if (CollUtil.isNotEmpty(checkData)) {
|
||||||
List<Double> phaseValue = map.get(phase);
|
List<Double> phaseValue = map.get(phase);
|
||||||
// 注意:如果map中不存在该phase的键,phaseValue可能为null,需确保map包含该键
|
// 注意:如果map中不存在该phase的键,phaseValue可能为null,需确保map包含该键
|
||||||
DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, pqErrSysDtls, fData, checkData.get(0).getValue(), dataRule);
|
DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, pqErrSysDtls, fData, checkData.get(0).getValue(), dataRule, scale);
|
||||||
resultFlag.add(detectionData);
|
resultFlag.add(detectionData);
|
||||||
BiConsumer<SimAndDigNonHarmonicResult, DetectionData> setter = setters.get(phase);
|
BiConsumer<SimAndDigNonHarmonicResult, DetectionData> setter = setters.get(phase);
|
||||||
if (setter != null) {
|
if (setter != null) {
|
||||||
@@ -467,7 +468,7 @@ public class DetectionServiceImpl {
|
|||||||
String type,
|
String type,
|
||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Integer num) {
|
Integer num, Integer scale) {
|
||||||
Double fData = 1.0;
|
Double fData = 1.0;
|
||||||
String fundCode = "";
|
String fundCode = "";
|
||||||
String harmCode = "";
|
String harmCode = "";
|
||||||
@@ -516,9 +517,9 @@ public class DetectionServiceImpl {
|
|||||||
pqErrSysDtls = adDtlsCheckData.get(0).getErrSysDtls();
|
pqErrSysDtls = adDtlsCheckData.get(0).getErrSysDtls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_A, sourceIssue, dataRule, devMap.get(TYPE_A), fData, num);
|
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_A, sourceIssue, dataRule, devMap.get(TYPE_A), fData, num, scale);
|
||||||
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_B, sourceIssue, dataRule, devMap.get(TYPE_B), fData, num);
|
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_B, sourceIssue, dataRule, devMap.get(TYPE_B), fData, num, scale);
|
||||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), fData, num);
|
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, type, TYPE_C, sourceIssue, dataRule, devMap.get(TYPE_C), fData, num, scale);
|
||||||
harmonicResult.setDataType(sourceIssue.getDataType());
|
harmonicResult.setDataType(sourceIssue.getDataType());
|
||||||
reflectHarmonic("a", integerBooleanA, harmonicResult, num);
|
reflectHarmonic("a", integerBooleanA, harmonicResult, num);
|
||||||
reflectHarmonic("b", integerBooleanB, harmonicResult, num);
|
reflectHarmonic("b", integerBooleanB, harmonicResult, num);
|
||||||
@@ -549,7 +550,7 @@ public class DetectionServiceImpl {
|
|||||||
String type,
|
String type,
|
||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
String code) {
|
String code, Integer scale) {
|
||||||
List<PqScriptCheckData> checkData = pqScriptCheckDataService.list(new MPJLambdaWrapper<PqScriptCheckData>()
|
List<PqScriptCheckData> checkData = pqScriptCheckDataService.list(new MPJLambdaWrapper<PqScriptCheckData>()
|
||||||
.eq(PqScriptCheckData::getScriptIndex, sourceIssue.getIndex())
|
.eq(PqScriptCheckData::getScriptIndex, sourceIssue.getIndex())
|
||||||
.eq(PqScriptCheckData::getScriptId, sourceIssue.getScriptId())
|
.eq(PqScriptCheckData::getScriptId, sourceIssue.getScriptId())
|
||||||
@@ -584,19 +585,19 @@ public class DetectionServiceImpl {
|
|||||||
List<PqScriptCheckData> channelTypeAList = checkData.stream()
|
List<PqScriptCheckData> channelTypeAList = checkData.stream()
|
||||||
.filter(x -> TYPE_A.equals(x.getPhase()))
|
.filter(x -> TYPE_A.equals(x.getPhase()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData a = rangeComparisonList(map.get(TYPE_A), isQualified, pqErrSysDtls, fData, channelTypeAList.get(0).getValue(), dataRule);
|
DetectionData a = rangeComparisonList(map.get(TYPE_A), isQualified, pqErrSysDtls, fData, channelTypeAList.get(0).getValue(), dataRule, scale);
|
||||||
result.setAValue(JSON.toJSONString(a));
|
result.setAValue(JSON.toJSONString(a));
|
||||||
|
|
||||||
List<PqScriptCheckData> channelTypeBList = checkData.stream()
|
List<PqScriptCheckData> channelTypeBList = checkData.stream()
|
||||||
.filter(x -> TYPE_B.equals(x.getPhase()))
|
.filter(x -> TYPE_B.equals(x.getPhase()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData b = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule);
|
DetectionData b = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule, scale);
|
||||||
result.setBValue(JSON.toJSONString(b));
|
result.setBValue(JSON.toJSONString(b));
|
||||||
|
|
||||||
List<PqScriptCheckData> channelTypeCList = checkData.stream()
|
List<PqScriptCheckData> channelTypeCList = checkData.stream()
|
||||||
.filter(x -> TYPE_C.equals(x.getPhase()))
|
.filter(x -> TYPE_C.equals(x.getPhase()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData c = rangeComparisonList(map.get(TYPE_C), isQualified, pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule);
|
DetectionData c = rangeComparisonList(map.get(TYPE_C), isQualified, pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule, scale);
|
||||||
result.setCValue(JSON.toJSONString(c));
|
result.setCValue(JSON.toJSONString(c));
|
||||||
|
|
||||||
result.setResultFlag(setResultFlag(Arrays.asList(a, b, c)));
|
result.setResultFlag(setResultFlag(Arrays.asList(a, b, c)));
|
||||||
@@ -604,7 +605,7 @@ public class DetectionServiceImpl {
|
|||||||
List<PqScriptCheckData> channelTypeBList = checkData.stream()
|
List<PqScriptCheckData> channelTypeBList = checkData.stream()
|
||||||
.filter(x -> TYPE_T.equals(x.getPhase()))
|
.filter(x -> TYPE_T.equals(x.getPhase()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData t = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule);
|
DetectionData t = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule, scale);
|
||||||
result.setTValue(JSON.toJSONString(t));
|
result.setTValue(JSON.toJSONString(t));
|
||||||
result.setResultFlag(setResultFlag(Arrays.asList(t)));
|
result.setResultFlag(setResultFlag(Arrays.asList(t)));
|
||||||
}
|
}
|
||||||
@@ -637,7 +638,8 @@ public class DetectionServiceImpl {
|
|||||||
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
String code
|
String code,
|
||||||
|
Integer scale
|
||||||
) {
|
) {
|
||||||
//电压幅值处理数据
|
//电压幅值处理数据
|
||||||
Map<String, List<Double>> mag = devListMap(dev, dataRule, MAG);
|
Map<String, List<Double>> mag = devListMap(dev, dataRule, MAG);
|
||||||
@@ -647,8 +649,8 @@ public class DetectionServiceImpl {
|
|||||||
//暂态电压下多少就是多少
|
//暂态电压下多少就是多少
|
||||||
List<ErrDtlsCheckDataVO> magErrList = errDtlsCheckData.stream().filter(x -> MAG.equals(x.getValueTypeCode())).collect(Collectors.toList());
|
List<ErrDtlsCheckDataVO> magErrList = errDtlsCheckData.stream().filter(x -> MAG.equals(x.getValueTypeCode())).collect(Collectors.toList());
|
||||||
List<ErrDtlsCheckDataVO> durErrList = errDtlsCheckData.stream().filter(x -> DUR.equals(x.getValueTypeCode())).collect(Collectors.toList());
|
List<ErrDtlsCheckDataVO> durErrList = errDtlsCheckData.stream().filter(x -> DUR.equals(x.getValueTypeCode())).collect(Collectors.toList());
|
||||||
SimAndDigNonHarmonicResult magResult = voltageResult(dev.get(0).getId(), devIdMapComm, sourceIssue, dataRule, mag, magErrList, sourceIssue.getFUn(), MAG);
|
SimAndDigNonHarmonicResult magResult = voltageResult(dev.get(0).getId(), devIdMapComm, sourceIssue, dataRule, mag, magErrList, sourceIssue.getFUn(), MAG, scale);
|
||||||
SimAndDigNonHarmonicResult durResult = voltageResult(dev.get(0).getId(), devIdMapComm, sourceIssue, dataRule, dur, durErrList, sourceIssue.getFFreq(), DUR);
|
SimAndDigNonHarmonicResult durResult = voltageResult(dev.get(0).getId(), devIdMapComm, sourceIssue, dataRule, dur, durErrList, sourceIssue.getFFreq(), DUR, scale);
|
||||||
if (CollUtil.isNotEmpty(mag.get(TYPE_B)) && CollUtil.isNotEmpty(mag.get(TYPE_C))) {
|
if (CollUtil.isNotEmpty(mag.get(TYPE_B)) && CollUtil.isNotEmpty(mag.get(TYPE_C))) {
|
||||||
conclusion(magResult, durResult);
|
conclusion(magResult, durResult);
|
||||||
}
|
}
|
||||||
@@ -741,7 +743,8 @@ public class DetectionServiceImpl {
|
|||||||
Map<String, List<Double>> mag,
|
Map<String, List<Double>> mag,
|
||||||
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
List<ErrDtlsCheckDataVO> errDtlsCheckData,
|
||||||
Double fData,
|
Double fData,
|
||||||
String dur
|
String dur,
|
||||||
|
Integer scale
|
||||||
) {
|
) {
|
||||||
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult();
|
||||||
String[] split = devId.split("_");
|
String[] split = devId.split("_");
|
||||||
@@ -763,13 +766,13 @@ public class DetectionServiceImpl {
|
|||||||
.filter(x -> ("Ub").equals(x.getChannelType()))
|
.filter(x -> ("Ub").equals(x.getChannelType()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
DetectionData b = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeBList, TYPE_B);
|
DetectionData b = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeBList, TYPE_B, scale);
|
||||||
result.setBValue(JSON.toJSONString(b));
|
result.setBValue(JSON.toJSONString(b));
|
||||||
|
|
||||||
List<SourceIssue.ChannelListDTO> channelTypeCList = sourceIssue.getChannelList().stream()
|
List<SourceIssue.ChannelListDTO> channelTypeCList = sourceIssue.getChannelList().stream()
|
||||||
.filter(x -> ("Uc").equals(x.getChannelType()))
|
.filter(x -> ("Uc").equals(x.getChannelType()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData c = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeCList, TYPE_C);
|
DetectionData c = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeCList, TYPE_C, scale);
|
||||||
result.setCValue(JSON.toJSONString(c));
|
result.setCValue(JSON.toJSONString(c));
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(mag.get(TYPE_B)) && CollUtil.isNotEmpty(mag.get(TYPE_C))) {
|
if (CollUtil.isNotEmpty(mag.get(TYPE_B)) && CollUtil.isNotEmpty(mag.get(TYPE_C))) {
|
||||||
@@ -777,7 +780,7 @@ public class DetectionServiceImpl {
|
|||||||
List<SourceIssue.ChannelListDTO> channelTypeAList = sourceIssue.getChannelList().stream()
|
List<SourceIssue.ChannelListDTO> channelTypeAList = sourceIssue.getChannelList().stream()
|
||||||
.filter(x -> ("Ua").equals(x.getChannelType()))
|
.filter(x -> ("Ua").equals(x.getChannelType()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData a = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeAList, TYPE_A);
|
DetectionData a = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeAList, TYPE_A, scale);
|
||||||
result.setAValue(JSON.toJSONString(a));
|
result.setAValue(JSON.toJSONString(a));
|
||||||
result.setResultFlag(setResultFlag(Arrays.asList(a, b, c)));
|
result.setResultFlag(setResultFlag(Arrays.asList(a, b, c)));
|
||||||
} else {
|
} else {
|
||||||
@@ -789,7 +792,7 @@ public class DetectionServiceImpl {
|
|||||||
.orElse(Double.NaN)
|
.orElse(Double.NaN)
|
||||||
))
|
))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
DetectionData a = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeAList, TYPE_A);
|
DetectionData a = setDetectionData(isQualified, dataRule, mag, fData, dur, magErrList, channelTypeAList, TYPE_A, scale);
|
||||||
result.setAValue(JSON.toJSONString(a));
|
result.setAValue(JSON.toJSONString(a));
|
||||||
result.setTValue(JSON.toJSONString(a));
|
result.setTValue(JSON.toJSONString(a));
|
||||||
result.setResultFlag(a.getIsData());
|
result.setResultFlag(a.getIsData());
|
||||||
@@ -804,12 +807,12 @@ public class DetectionServiceImpl {
|
|||||||
String dur,
|
String dur,
|
||||||
List<PqErrSysDtls> magErrList,
|
List<PqErrSysDtls> magErrList,
|
||||||
List<SourceIssue.ChannelListDTO> channelTypeCList,
|
List<SourceIssue.ChannelListDTO> channelTypeCList,
|
||||||
String type) {
|
String type, Integer scale) {
|
||||||
DetectionData data;
|
DetectionData data;
|
||||||
if (DUR.equals(dur)) {
|
if (DUR.equals(dur)) {
|
||||||
data = rangeDURComparisonList(mag.get(type), isQualified, magErrList, fData, channelTypeCList.get(0).getDipData().getRetainTime(), dataRule);
|
data = rangeDURComparisonList(mag.get(type), isQualified, magErrList, fData, channelTypeCList.get(0).getDipData().getRetainTime(), dataRule, scale);
|
||||||
} else {
|
} else {
|
||||||
data = rangeComparisonList(mag.get(type), isQualified, magErrList, fData, channelTypeCList.get(0).getDipData().getFTransValue(), dataRule);
|
data = rangeComparisonList(mag.get(type), isQualified, magErrList, fData, channelTypeCList.get(0).getDipData().getFTransValue(), dataRule, scale);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@@ -910,7 +913,7 @@ public class DetectionServiceImpl {
|
|||||||
try {
|
try {
|
||||||
// 设置 id 字段;
|
// 设置 id 字段;
|
||||||
Field idField = SimAndDigHarmonicResult.class.getDeclaredField(phase + "Value" + (num == 1 ? (int) (key + 0.5) : key.intValue()));
|
Field idField = SimAndDigHarmonicResult.class.getDeclaredField(phase + "Value" + (num == 1 ? (int) (key + 0.5) : key.intValue()));
|
||||||
if(harmonicResult instanceof ContrastNonHarmonicResult){
|
if (harmonicResult instanceof ContrastNonHarmonicResult) {
|
||||||
idField = ContrastNonHarmonicResult.class.getDeclaredField(phase + "Value" + (num == 1 ? (int) (key + 0.5) : key.intValue()));
|
idField = ContrastNonHarmonicResult.class.getDeclaredField(phase + "Value" + (num == 1 ? (int) (key + 0.5) : key.intValue()));
|
||||||
}
|
}
|
||||||
idField.setAccessible(true);
|
idField.setAccessible(true);
|
||||||
@@ -937,6 +940,7 @@ public class DetectionServiceImpl {
|
|||||||
* @param devMap
|
* @param devMap
|
||||||
* @param fData 额定值
|
* @param fData 额定值
|
||||||
* @param harmonicFlag 1:间谐波,2:谐波
|
* @param harmonicFlag 1:间谐波,2:谐波
|
||||||
|
* @param scale 小数点位数
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<DetectionData> harmRangeComparison(Integer isQualified,
|
public List<DetectionData> harmRangeComparison(Integer isQualified,
|
||||||
@@ -946,7 +950,7 @@ public class DetectionServiceImpl {
|
|||||||
SourceIssue sourceIssue,
|
SourceIssue sourceIssue,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Map<Double, List<Double>> devMap,
|
Map<Double, List<Double>> devMap,
|
||||||
Double fData, Integer harmonicFlag) {
|
Double fData, Integer harmonicFlag, Integer scale) {
|
||||||
List<DetectionData> info = new ArrayList<>();
|
List<DetectionData> info = new ArrayList<>();
|
||||||
//根据谐波几次相值/额定值
|
//根据谐波几次相值/额定值
|
||||||
Map<Double, Double> issueHarmMap;
|
Map<Double, Double> issueHarmMap;
|
||||||
@@ -981,9 +985,9 @@ public class DetectionServiceImpl {
|
|||||||
Map<Double, PqErrSysDtls> errSysDtlMap = new LinkedHashMap<>();
|
Map<Double, PqErrSysDtls> errSysDtlMap = new LinkedHashMap<>();
|
||||||
issueHarmMap.forEach((key, value) -> {
|
issueHarmMap.forEach((key, value) -> {
|
||||||
//获得误差体系
|
//获得误差体系
|
||||||
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, value, x.getConditionType()),
|
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, value, x.getConditionType(), scale),
|
||||||
x.getStartFlag(),
|
x.getStartFlag(),
|
||||||
startRadiusEnd(x.getEndValue(), fData, value, x.getConditionType()),
|
startRadiusEnd(x.getEndValue(), fData, value, x.getConditionType(), scale),
|
||||||
x.getEndFlag(),
|
x.getEndFlag(),
|
||||||
value)).collect(Collectors.toList());
|
value)).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(errSysDtls)) {
|
if (CollUtil.isNotEmpty(errSysDtls)) {
|
||||||
@@ -998,20 +1002,20 @@ public class DetectionServiceImpl {
|
|||||||
DetectionData data = new DetectionData();
|
DetectionData data = new DetectionData();
|
||||||
data.setIsData(isQualified);
|
data.setIsData(isQualified);
|
||||||
data.setNum(harm);
|
data.setNum(harm);
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
if (CollUtil.isNotEmpty(harmDataList)) {
|
if (CollUtil.isNotEmpty(harmDataList)) {
|
||||||
BigDecimal bd = BigDecimal.valueOf(harmDataList.get(0));
|
BigDecimal bd = BigDecimal.valueOf(harmDataList.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
data.setData(bd.doubleValue());
|
data.setData(bd.doubleValue());
|
||||||
}
|
}
|
||||||
Double channelData = issueHarmMap.get(harm);
|
Double channelData = issueHarmMap.get(harm);
|
||||||
data.setResultData(channelData);
|
data.setResultData(channelData);
|
||||||
if (ObjectUtil.isNotNull(errSysDtl)) {
|
if (ObjectUtil.isNotNull(errSysDtl)) {
|
||||||
PqErrSysDtls errSys = BeanUtil.copyProperties(errSysDtl, PqErrSysDtls.class);
|
PqErrSysDtls errSys = BeanUtil.copyProperties(errSysDtl, PqErrSysDtls.class);
|
||||||
errSys.setMaxErrorValue(maxErrorMultiply(errSys, fData, issueHarmMap.get(harm), oneConfig.getScale()));
|
errSys.setMaxErrorValue(maxErrorMultiply(errSys, fData, issueHarmMap.get(harm), scale));
|
||||||
data.setUnit(errSysDtl.getErrorUnit());
|
data.setUnit(errSysDtl.getErrorUnit());
|
||||||
data.setRadius(-errSys.getMaxErrorValue() + "~" + errSys.getMaxErrorValue());
|
data.setRadius(-errSys.getMaxErrorValue() + "~" + errSys.getMaxErrorValue());
|
||||||
setDetection(dataRule, harmDataList, errSys, data, channelData, fData, oneConfig.getScale());
|
setDetection(dataRule, harmDataList, errSys, data, channelData, fData, scale);
|
||||||
}
|
}
|
||||||
info.add(data);
|
info.add(data);
|
||||||
});
|
});
|
||||||
@@ -1019,11 +1023,10 @@ public class DetectionServiceImpl {
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void isData(DictDataEnum dataRule, List<Double> harmDataList, DetectionData data, List<Double> qualifiedList) {
|
private void isData(DictDataEnum dataRule, List<Double> harmDataList, DetectionData data, List<Double> qualifiedList, Integer scale) {
|
||||||
if (CollUtil.isNotEmpty(qualifiedList)) {
|
if (CollUtil.isNotEmpty(qualifiedList)) {
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
BigDecimal bd = BigDecimal.valueOf(qualifiedList.get(0));
|
BigDecimal bd = BigDecimal.valueOf(qualifiedList.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
data.setData(bd.doubleValue());
|
data.setData(bd.doubleValue());
|
||||||
switch (dataRule) {
|
switch (dataRule) {
|
||||||
case AT_WILL_VALUE:
|
case AT_WILL_VALUE:
|
||||||
@@ -1042,7 +1045,7 @@ public class DetectionServiceImpl {
|
|||||||
} else {
|
} else {
|
||||||
List<Double> subtract = CollectionUtils.subtract(harmDataList, qualifiedList).stream().collect(Collectors.toList());
|
List<Double> subtract = CollectionUtils.subtract(harmDataList, qualifiedList).stream().collect(Collectors.toList());
|
||||||
bd = BigDecimal.valueOf(subtract.get(0));
|
bd = BigDecimal.valueOf(subtract.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
data.setData(bd.doubleValue());
|
data.setData(bd.doubleValue());
|
||||||
data.setIsData(2);
|
data.setIsData(2);
|
||||||
}
|
}
|
||||||
@@ -1154,48 +1157,46 @@ public class DetectionServiceImpl {
|
|||||||
* @param dataRule 数据处理原则
|
* @param dataRule 数据处理原则
|
||||||
* @returnd
|
* @returnd
|
||||||
*/
|
*/
|
||||||
public DetectionData rangeComparisonList(List<Double> list, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double data, Double channelData, DictDataEnum dataRule) {
|
public DetectionData rangeComparisonList(List<Double> list, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double data, Double channelData, DictDataEnum dataRule, Integer scale) {
|
||||||
DetectionData detectionData = new DetectionData();
|
DetectionData detectionData = new DetectionData();
|
||||||
detectionData.setIsData(isQualified);
|
detectionData.setIsData(isQualified);
|
||||||
if (CollUtil.isNotEmpty(list)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
BigDecimal bd = BigDecimal.valueOf(list.get(0));
|
BigDecimal bd = BigDecimal.valueOf(list.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
detectionData.setData(bd.doubleValue());
|
detectionData.setData(bd.doubleValue());
|
||||||
detectionData.setResultData(channelData);
|
detectionData.setResultData(channelData);
|
||||||
//先根据源所下发的数据,是否在误差体系范围内在则可以进行误差体系判断
|
//先根据源所下发的数据,是否在误差体系范围内在则可以进行误差体系判断
|
||||||
//获得误差体系
|
//获得误差体系
|
||||||
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), data, channelData, x.getConditionType()),
|
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), data, channelData, x.getConditionType(), scale),
|
||||||
x.getStartFlag(),
|
x.getStartFlag(),
|
||||||
startRadiusEnd(x.getEndValue(), data, channelData, x.getConditionType()),
|
startRadiusEnd(x.getEndValue(), data, channelData, x.getConditionType(), scale),
|
||||||
x.getEndFlag(),
|
x.getEndFlag(),
|
||||||
channelData)).collect(Collectors.toList());
|
channelData)).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(errSysDtls)) {
|
if (CollUtil.isNotEmpty(errSysDtls)) {
|
||||||
PqErrSysDtls errSysDtl = BeanUtil.copyProperties(errSysDtls.get(0), PqErrSysDtls.class);
|
PqErrSysDtls errSysDtl = BeanUtil.copyProperties(errSysDtls.get(0), PqErrSysDtls.class);
|
||||||
detectionData.setUnit(errSysDtl.getErrorUnit());
|
detectionData.setUnit(errSysDtl.getErrorUnit());
|
||||||
errSysDtl.setMaxErrorValue(maxErrorMultiply(errSysDtl, data, channelData, oneConfig.getScale()));
|
errSysDtl.setMaxErrorValue(maxErrorMultiply(errSysDtl, data, channelData, scale));
|
||||||
detectionData.setRadius(-errSysDtl.getMaxErrorValue() + "~" + errSysDtl.getMaxErrorValue());
|
detectionData.setRadius(-errSysDtl.getMaxErrorValue() + "~" + errSysDtl.getMaxErrorValue());
|
||||||
setDetection(dataRule, list, errSysDtl, detectionData, channelData, data, oneConfig.getScale());
|
setDetection(dataRule, list, errSysDtl, detectionData, channelData, data, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return detectionData;
|
return detectionData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DetectionData rangeDURComparisonList(List<Double> list, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double data, Double channelData, DictDataEnum dataRule) {
|
public DetectionData rangeDURComparisonList(List<Double> list, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double data, Double channelData, DictDataEnum dataRule, Integer scale) {
|
||||||
DetectionData detectionData = new DetectionData();
|
DetectionData detectionData = new DetectionData();
|
||||||
detectionData.setIsData(isQualified);
|
detectionData.setIsData(isQualified);
|
||||||
if (CollUtil.isNotEmpty(list)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
BigDecimal bd = BigDecimal.valueOf(list.get(0));
|
BigDecimal bd = BigDecimal.valueOf(list.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
detectionData.setData(bd.doubleValue());
|
detectionData.setData(bd.doubleValue());
|
||||||
detectionData.setResultData(BigDecimal.valueOf(1.0 / data).doubleValue() * channelData);
|
detectionData.setResultData(BigDecimal.valueOf(1.0 / data).doubleValue() * channelData);
|
||||||
|
|
||||||
//先根据源所下发的数据,是否在误差体系范围内在则可以进行误差体系判断
|
//先根据源所下发的数据,是否在误差体系范围内在则可以进行误差体系判断
|
||||||
//获得误差体系
|
//获得误差体系
|
||||||
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), data, channelData, x.getConditionType()),
|
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), data, channelData, x.getConditionType(), scale),
|
||||||
x.getStartFlag(),
|
x.getStartFlag(),
|
||||||
startRadiusEnd(x.getEndValue(), data, channelData, x.getConditionType()),
|
startRadiusEnd(x.getEndValue(), data, channelData, x.getConditionType(), scale),
|
||||||
x.getEndFlag(),
|
x.getEndFlag(),
|
||||||
channelData)).collect(Collectors.toList());
|
channelData)).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(errSysDtls)) {
|
if (CollUtil.isNotEmpty(errSysDtls)) {
|
||||||
@@ -1213,14 +1214,14 @@ public class DetectionServiceImpl {
|
|||||||
).collect(Collectors.toList());
|
).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(qualifiedList)) {
|
if (CollUtil.isNotEmpty(qualifiedList)) {
|
||||||
BigDecimal subtract = BigDecimal.valueOf(qualifiedList.get(0))
|
BigDecimal subtract = BigDecimal.valueOf(qualifiedList.get(0))
|
||||||
.subtract(BigDecimal.valueOf(1.0 / data * (channelData))).setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
.subtract(BigDecimal.valueOf(1.0 / data * (channelData))).setScale(scale, RoundingMode.HALF_UP);
|
||||||
detectionData.setErrorData(subtract);
|
detectionData.setErrorData(subtract);
|
||||||
} else {
|
} else {
|
||||||
BigDecimal subtract = BigDecimal.valueOf(list.get(0))
|
BigDecimal subtract = BigDecimal.valueOf(list.get(0))
|
||||||
.subtract(BigDecimal.valueOf(1.0 / data * (channelData))).setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
.subtract(BigDecimal.valueOf(1.0 / data * (channelData))).setScale(scale, RoundingMode.HALF_UP);
|
||||||
detectionData.setErrorData(subtract);
|
detectionData.setErrorData(subtract);
|
||||||
}
|
}
|
||||||
isData(dataRule, list, detectionData, qualifiedList);
|
isData(dataRule, list, detectionData, qualifiedList, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return detectionData;
|
return detectionData;
|
||||||
@@ -1306,16 +1307,15 @@ public class DetectionServiceImpl {
|
|||||||
* @param type 误差值类型
|
* @param type 误差值类型
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Double startRadiusEnd(Double value, Double ratedData, Double harmData, Integer type) {
|
public Double startRadiusEnd(Double value, Double ratedData, Double harmData, Integer type, Integer scale) {
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
if (ObjectUtil.isNotNull(value)) {
|
if (ObjectUtil.isNotNull(value)) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0:
|
case 0:
|
||||||
return BigDecimal.valueOf(value).multiply(BigDecimal.valueOf(ratedData))
|
return BigDecimal.valueOf(value).multiply(BigDecimal.valueOf(ratedData))
|
||||||
.setScale(oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
|
.setScale(scale, RoundingMode.HALF_UP).doubleValue();
|
||||||
case 1: //无用
|
case 1:
|
||||||
return BigDecimal.valueOf(value).multiply(BigDecimal.valueOf(harmData))
|
return BigDecimal.valueOf(value).multiply(BigDecimal.valueOf(harmData))
|
||||||
.setScale(oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
|
.setScale(scale, RoundingMode.HALF_UP).doubleValue();
|
||||||
default:
|
default:
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@@ -1406,7 +1406,7 @@ public class DetectionServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Map<Double, List<Double>> integerListMap = new LinkedHashMap<>(5);
|
Map<Double, List<Double>> integerListMap = new LinkedHashMap<>(50);
|
||||||
for (Double i : harmNum) {
|
for (Double i : harmNum) {
|
||||||
List<Double> integerList = new ArrayList<>();
|
List<Double> integerList = new ArrayList<>();
|
||||||
if (i.equals(1.0) && num != 1) {
|
if (i.equals(1.0) && num != 1) {
|
||||||
@@ -1443,20 +1443,22 @@ public class DetectionServiceImpl {
|
|||||||
*
|
*
|
||||||
* @param devDataList 被检设备数据
|
* @param devDataList 被检设备数据
|
||||||
* @param standardDevDataList 与之对齐的标准设备数据
|
* @param standardDevDataList 与之对齐的标准设备数据
|
||||||
* @param pars 配对关系
|
* @param pars 配对关系 key为被检设备ip_通道号,value为标准设备ip_通道号
|
||||||
* @param devIdMapComm 设备id映射关系 key为被检设备ip,value为被检设备id
|
* @param devIdMapComm 设备id映射关系 key为被检设备ip,value为被检设备id
|
||||||
* @param monitorMap 监测器映射关系 key为被检设备ip_通道号,value为监测器信息
|
* @param monitorMap 监测器映射关系 key为被检设备ip_通道号,value为监测器信息
|
||||||
|
* @param testItemCodeList 检测项code列表
|
||||||
|
* @param errorSysId 误差体系id
|
||||||
* @param dataRule 数据处理原则
|
* @param dataRule 数据处理原则
|
||||||
* @param num 第几次检测
|
* @param num 第几次检测
|
||||||
* @param code 结果表code
|
* @param code 结果表code
|
||||||
* @return key为被检设备id、value为是否合格(1合格 2不合格 4无法处理)
|
* @return key为被检设备ip_通道号、value为是否合格(1合格 2不合格 4无法处理)
|
||||||
*/
|
*/
|
||||||
public Map<String, Integer> processing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> pars, Map<String, String> devIdMapComm, Map<String, PreDetection.MonitorListDTO> monitorMap, List<String> testItemCodeList, List<ErrDtlsCheckDataVO> dtlsCheckData, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
public Map<String, Integer> processing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> pars, Map<String, String> devIdMapComm, Map<String, PreDetection.MonitorListDTO> monitorMap, List<String> testItemCodeList, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
||||||
Map<String, List<DevData>> devDataMap = devDataList.stream().collect(Collectors.groupingBy(DevData::getId));
|
Map<String, List<DevData>> devDataMap = devDataList.stream().collect(Collectors.groupingBy(DevData::getId));
|
||||||
Map<String, List<DevData>> standardDevDataMap = standardDevDataList.stream().collect(Collectors.groupingBy(DevData::getId));
|
Map<String, List<DevData>> standardDevDataMap = standardDevDataList.stream().collect(Collectors.groupingBy(DevData::getId));
|
||||||
|
|
||||||
Map<String, Integer> resultMap = new LinkedHashMap<>();
|
Map<String, Integer> resultMap = new LinkedHashMap<>();
|
||||||
pars.forEach((standardDevMoniterId, devMoniterId) -> {
|
pars.forEach((devMoniterId, standardDevMoniterId) -> {
|
||||||
resultMap.put(devMoniterId, dataProcessing(devDataMap.get(devMoniterId), standardDevDataMap.get(standardDevMoniterId), devIdMapComm, testItemCodeList, monitorMap.get(devMoniterId), errorSysId, dataRule, num, code));
|
resultMap.put(devMoniterId, dataProcessing(devDataMap.get(devMoniterId), standardDevDataMap.get(standardDevMoniterId), devIdMapComm, testItemCodeList, monitorMap.get(devMoniterId), errorSysId, dataRule, num, code));
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1466,8 +1468,12 @@ public class DetectionServiceImpl {
|
|||||||
private Integer dataProcessing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> devIdMapComm, List<String> testItemCodeList, PreDetection.MonitorListDTO monitorDto, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
private Integer dataProcessing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> devIdMapComm, List<String> testItemCodeList, PreDetection.MonitorListDTO monitorDto, String errorSysId, DictDataEnum dataRule, Integer num, String code) {
|
||||||
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList)) {
|
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList)) {
|
||||||
for (String testItemCode : testItemCodeList) {
|
for (String testItemCode : testItemCodeList) {
|
||||||
|
if ("real$U1".equals(testItemCode) || "real$I1".equals(testItemCode)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
String[] split = testItemCode.split("\\$");
|
String[] split = testItemCode.split("\\$");
|
||||||
|
|
||||||
|
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||||
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysIdAndScriptType(errorSysId, split[1]);
|
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysIdAndScriptType(errorSysId, split[1]);
|
||||||
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(split[1]);
|
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(split[1]);
|
||||||
Double fUn = Double.valueOf(monitorDto.getPtStr().split(":")[1]);
|
Double fUn = Double.valueOf(monitorDto.getPtStr().split(":")[1]);
|
||||||
@@ -1475,27 +1481,27 @@ public class DetectionServiceImpl {
|
|||||||
Double fHz = 50.0;
|
Double fHz = 50.0;
|
||||||
switch (anEnum) {
|
switch (anEnum) {
|
||||||
case FREQ:
|
case FREQ:
|
||||||
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code);
|
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code, oneConfig.getScale());
|
||||||
case VRMS:
|
case VRMS:
|
||||||
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, DetectionCodeEnum.VRMS.getCode(), dataRule, num, code);
|
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, DetectionCodeEnum.VRMS.getCode(), dataRule, num, code, oneConfig.getScale());
|
||||||
case IRMS:
|
case IRMS:
|
||||||
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code);
|
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale());
|
||||||
case V_UNBAN:
|
case V_UNBAN:
|
||||||
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, DetectionCodeEnum.V_UNBAN.getCode(), dataRule, num, code);
|
break;
|
||||||
case I_UNBAN:
|
case I_UNBAN:
|
||||||
return isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fIn, DetectionCodeEnum.I_UNBAN.getCode(), dataRule, num, code);
|
break;
|
||||||
//case U1:
|
|
||||||
case V2_50:
|
case V2_50:
|
||||||
ContrastHarmonicResult harmV = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, DetectionCodeEnum.V2_50.getCode(), dataRule, num, HARMONIC_FLAG);
|
ContrastHarmonicResult harmV = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, U, dataRule, num, HARMONIC_FLAG, oneConfig.getScale());
|
||||||
return resultFlag(harmV, null, code);
|
return resultFlag(harmV, null, code);
|
||||||
//case I1:
|
|
||||||
case I2_50:
|
case I2_50:
|
||||||
ContrastHarmonicResult harmI = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, DetectionCodeEnum.V2_50.getCode(), dataRule, num, HARMONIC_FLAG);
|
ContrastHarmonicResult harmI = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, I, dataRule, num, HARMONIC_FLAG, oneConfig.getScale());
|
||||||
return resultFlag(null, harmI, code);
|
return resultFlag(null, harmI, code);
|
||||||
case MAG:
|
case SV_1_49:
|
||||||
break;
|
ContrastHarmonicResult harmSV = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, U, dataRule, num, INHARMONIC_FLAG, oneConfig.getScale());
|
||||||
case DUR:
|
return resultFlag(harmSV, null, code);
|
||||||
break;
|
case SI_1_49:
|
||||||
|
ContrastHarmonicResult harmSI = isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, fUn, fIn, I, dataRule, num, INHARMONIC_FLAG, oneConfig.getScale());
|
||||||
|
return resultFlag(null, harmSI, code);
|
||||||
case UNKNOWN_ERROR:
|
case UNKNOWN_ERROR:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1527,7 +1533,7 @@ public class DetectionServiceImpl {
|
|||||||
String desc,
|
String desc,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Integer num,
|
Integer num,
|
||||||
String code) {
|
String code, Integer scale) {
|
||||||
List<ContrastNonHarmonicResult> info = new ArrayList<>();
|
List<ContrastNonHarmonicResult> info = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) {
|
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) {
|
||||||
|
|
||||||
@@ -1543,7 +1549,7 @@ public class DetectionServiceImpl {
|
|||||||
|
|
||||||
Integer isQualified = 4;
|
Integer isQualified = 4;
|
||||||
if (map.containsKey(TYPE_T)) {
|
if (map.containsKey(TYPE_T)) {
|
||||||
DetectionData t = rangeComparisonList(map.get(TYPE_T).get(0), isQualified, errSysDtls, fData, map.get(TYPE_T).get(1).get(0), dataRule);
|
DetectionData t = rangeComparisonList(map.get(TYPE_T).get(0), isQualified, errSysDtls, fData, map.get(TYPE_T).get(1).get(0), dataRule, scale);
|
||||||
result.setTValue(JSON.toJSONString(t));
|
result.setTValue(JSON.toJSONString(t));
|
||||||
result.setResultFlag(t.getIsData());
|
result.setResultFlag(t.getIsData());
|
||||||
} else {
|
} else {
|
||||||
@@ -1556,7 +1562,7 @@ public class DetectionServiceImpl {
|
|||||||
List<String> phases = Arrays.asList(TYPE_A, TYPE_B, TYPE_C);
|
List<String> phases = Arrays.asList(TYPE_A, TYPE_B, TYPE_C);
|
||||||
for (String phase : phases) {
|
for (String phase : phases) {
|
||||||
List<Double> phaseValue = map.get(phase).get(0);
|
List<Double> phaseValue = map.get(phase).get(0);
|
||||||
DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, errSysDtls, fData, map.get(phase).get(1).get(0), dataRule);
|
DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, errSysDtls, fData, map.get(phase).get(1).get(0), dataRule, scale);
|
||||||
resultFlag.add(detectionData);
|
resultFlag.add(detectionData);
|
||||||
BiConsumer<ContrastNonHarmonicResult, DetectionData> setter = setters.get(phase);
|
BiConsumer<ContrastNonHarmonicResult, DetectionData> setter = setters.get(phase);
|
||||||
setter.accept(result, detectionData);
|
setter.accept(result, detectionData);
|
||||||
@@ -1600,7 +1606,7 @@ public class DetectionServiceImpl {
|
|||||||
String type,
|
String type,
|
||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Integer num,
|
Integer num,
|
||||||
Integer harmonicFlag) {
|
Integer harmonicFlag, Integer scale) {
|
||||||
Double fData = 1.0;
|
Double fData = 1.0;
|
||||||
String fundCode = "";
|
String fundCode = "";
|
||||||
String harmCode = "";
|
String harmCode = "";
|
||||||
@@ -1637,12 +1643,12 @@ public class DetectionServiceImpl {
|
|||||||
harmonicResult.setAdType(errSysDtls.get(0).getScriptType());
|
harmonicResult.setAdType(errSysDtls.get(0).getScriptType());
|
||||||
harmonicResult.setNum(num);
|
harmonicResult.setNum(num);
|
||||||
harmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
harmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||||
List<PqErrSysDtls> pqErrSysDtls = new ArrayList<>();
|
// List<PqErrSysDtls> pqErrSysDtls = new ArrayList<>();
|
||||||
Integer isQualified = 4;
|
Integer isQualified = 4;
|
||||||
|
|
||||||
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, pqErrSysDtls, dataRule, devMap.get(TYPE_A).get(0), devMap.get(TYPE_A).get(1), fData);
|
List<DetectionData> integerBooleanA = harmRangeComparison(isQualified, errSysDtls, dataRule, devMap.get(TYPE_A).get(0), devMap.get(TYPE_A).get(1), fData, scale);
|
||||||
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, pqErrSysDtls, dataRule, devMap.get(TYPE_B).get(0), devMap.get(TYPE_A).get(1), fData);
|
List<DetectionData> integerBooleanB = harmRangeComparison(isQualified, errSysDtls, dataRule, devMap.get(TYPE_B).get(0), devMap.get(TYPE_A).get(1), fData, scale);
|
||||||
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, pqErrSysDtls, dataRule, devMap.get(TYPE_C).get(0), devMap.get(TYPE_A).get(1), fData);
|
List<DetectionData> integerBooleanC = harmRangeComparison(isQualified, errSysDtls, dataRule, devMap.get(TYPE_C).get(0), devMap.get(TYPE_A).get(1), fData, scale);
|
||||||
harmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
harmonicResult.setDataType(DataSourceEnum.REAL_DATA.getValue());
|
||||||
reflectHarmonic("a", integerBooleanA, harmonicResult, harmonicFlag);
|
reflectHarmonic("a", integerBooleanA, harmonicResult, harmonicFlag);
|
||||||
reflectHarmonic("b", integerBooleanB, harmonicResult, harmonicFlag);
|
reflectHarmonic("b", integerBooleanB, harmonicResult, harmonicFlag);
|
||||||
@@ -1681,7 +1687,7 @@ public class DetectionServiceImpl {
|
|||||||
List<Double> aDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
|
List<Double> aDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
|
||||||
.map(x -> x.getA().doubleValue())
|
.map(x -> x.getA().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<Integer> aIdxs = DetectionUtil.sort(aDev);
|
List<Integer> aIdxs = DetectionUtil.sort(aDev, false);
|
||||||
List<Double> aStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
|
List<Double> aStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
|
||||||
.map(x -> x.getA().doubleValue())
|
.map(x -> x.getA().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -1689,7 +1695,7 @@ public class DetectionServiceImpl {
|
|||||||
List<Double> bDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getB()))
|
List<Double> bDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getB()))
|
||||||
.map(x -> x.getB().doubleValue())
|
.map(x -> x.getB().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<Integer> bIdxs = DetectionUtil.sort(bDev);
|
List<Integer> bIdxs = DetectionUtil.sort(bDev, false);
|
||||||
List<Double> bStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getB()))
|
List<Double> bStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getB()))
|
||||||
.map(x -> x.getB().doubleValue())
|
.map(x -> x.getB().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -1697,7 +1703,7 @@ public class DetectionServiceImpl {
|
|||||||
List<Double> cDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getC()))
|
List<Double> cDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getC()))
|
||||||
.map(x -> x.getC().doubleValue())
|
.map(x -> x.getC().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<Integer> cIdxs = DetectionUtil.sort(cDev);
|
List<Integer> cIdxs = DetectionUtil.sort(cDev, false);
|
||||||
List<Double> cStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getC()))
|
List<Double> cStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getC()))
|
||||||
.map(x -> x.getC().doubleValue())
|
.map(x -> x.getC().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -1705,7 +1711,7 @@ public class DetectionServiceImpl {
|
|||||||
List<Double> tDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getT()))
|
List<Double> tDev = devList.stream().filter(x -> ObjectUtil.isNotNull(x.getT()))
|
||||||
.map(x -> x.getT().doubleValue())
|
.map(x -> x.getT().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<Integer> tIdxs = DetectionUtil.sort(tDev);
|
List<Integer> tIdxs = DetectionUtil.sort(tDev, false);
|
||||||
List<Double> tStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getT()))
|
List<Double> tStandardDev = standardDevList.stream().filter(x -> ObjectUtil.isNotNull(x.getT()))
|
||||||
.map(x -> x.getT().doubleValue())
|
.map(x -> x.getT().doubleValue())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -1799,6 +1805,7 @@ public class DetectionServiceImpl {
|
|||||||
DictDataEnum dataRule) {
|
DictDataEnum dataRule) {
|
||||||
Map<String, List<Map<Double, List<Double>>>> resultMap = new HashMap<>(3);
|
Map<String, List<Map<Double, List<Double>>>> resultMap = new HashMap<>(3);
|
||||||
|
|
||||||
|
// key为相别、value{key为谐波次数,value为按数据处理原则处理后的数据}
|
||||||
Map<String, Map<Double, List<Double>>> devMap = new HashMap<>(3);
|
Map<String, Map<Double, List<Double>>> devMap = new HashMap<>(3);
|
||||||
Map<String, Map<Double, List<Double>>> standardDevMap = new HashMap<>(3);
|
Map<String, Map<Double, List<Double>>> standardDevMap = new HashMap<>(3);
|
||||||
|
|
||||||
@@ -1849,9 +1856,8 @@ public class DetectionServiceImpl {
|
|||||||
}
|
}
|
||||||
devMap.forEach((typeKey, typeValue) -> {
|
devMap.forEach((typeKey, typeValue) -> {
|
||||||
typeValue.forEach((key, value) -> {
|
typeValue.forEach((key, value) -> {
|
||||||
value.sort(Comparator.comparing(Double::doubleValue).reversed());
|
|
||||||
if (CollUtil.isNotEmpty(value)) {
|
if (CollUtil.isNotEmpty(value)) {
|
||||||
List<Integer> idx = DetectionUtil.sort(value);
|
List<Integer> idx = DetectionUtil.sort(value, false);
|
||||||
switch (dataRule) {
|
switch (dataRule) {
|
||||||
case SECTION_VALUE:
|
case SECTION_VALUE:
|
||||||
if (value.size() > 2) {
|
if (value.size() > 2) {
|
||||||
@@ -1863,16 +1869,15 @@ public class DetectionServiceImpl {
|
|||||||
break;
|
break;
|
||||||
case CP95_VALUE:
|
case CP95_VALUE:
|
||||||
int cp95Idx = DetectionUtil.getCP95Idx(value);
|
int cp95Idx = DetectionUtil.getCP95Idx(value);
|
||||||
value = Collections.singletonList(value.get(cp95Idx));
|
value.clear();
|
||||||
|
value.addAll(Collections.singletonList(value.get(cp95Idx)));
|
||||||
Double standardCP95Data = standardDevMap.get(typeKey).get(key).get(cp95Idx);
|
Double standardCP95Data = standardDevMap.get(typeKey).get(key).get(cp95Idx);
|
||||||
standardDevMap.get(typeKey).get(key).clear();
|
standardDevMap.get(typeKey).get(key).clear();
|
||||||
standardDevMap.get(typeKey).get(key).add(standardCP95Data);
|
standardDevMap.get(typeKey).get(key).add(standardCP95Data);
|
||||||
break;
|
break;
|
||||||
case AVG_VALUE:
|
case AVG_VALUE:
|
||||||
// double average = value.stream().mapToDouble(Double::doubleValue).average().orElse(0.0);
|
value.clear();
|
||||||
// value.clear(); // 清空列表
|
value.addAll(DetectionUtil.getAvgDoubles(value));
|
||||||
// value.add(average); // 添加平均值
|
|
||||||
value = DetectionUtil.getAvgDoubles(value);
|
|
||||||
List<Double> standardAvgData = DetectionUtil.getAvgDoubles(standardDevMap.get(typeKey).get(key));
|
List<Double> standardAvgData = DetectionUtil.getAvgDoubles(standardDevMap.get(typeKey).get(key));
|
||||||
standardDevMap.get(typeKey).get(key).clear();
|
standardDevMap.get(typeKey).get(key).clear();
|
||||||
standardDevMap.get(typeKey).get(key).addAll(standardAvgData);
|
standardDevMap.get(typeKey).get(key).addAll(standardAvgData);
|
||||||
@@ -1902,17 +1907,17 @@ public class DetectionServiceImpl {
|
|||||||
DictDataEnum dataRule,
|
DictDataEnum dataRule,
|
||||||
Map<Double, List<Double>> devMap,
|
Map<Double, List<Double>> devMap,
|
||||||
Map<Double, List<Double>> standardDevMap,
|
Map<Double, List<Double>> standardDevMap,
|
||||||
Double fData) {
|
Double fData, Integer scale) {
|
||||||
List<DetectionData> info = new ArrayList<>();
|
List<DetectionData> info = new ArrayList<>();
|
||||||
//根据谐波几次相值/额定值
|
//key为(间)谐波次数,value为标准设备数据
|
||||||
Map<Double, Double> issueHarmMap = standardDevMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, x -> x.getValue().get(0)));
|
Map<Double, Double> issueHarmMap = standardDevMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, x -> x.getValue().get(0)));
|
||||||
|
|
||||||
Map<Double, PqErrSysDtls> errSysDtlMap = new LinkedHashMap<>();
|
Map<Double, PqErrSysDtls> errSysDtlMap = new LinkedHashMap<>();
|
||||||
issueHarmMap.forEach((key, value) -> {
|
issueHarmMap.forEach((key, value) -> {
|
||||||
//获得误差体系
|
//获得误差体系
|
||||||
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, value, x.getConditionType()),
|
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, value, x.getConditionType(), scale),
|
||||||
x.getStartFlag(),
|
x.getStartFlag(),
|
||||||
startRadiusEnd(x.getEndValue(), fData, value, x.getConditionType()),
|
startRadiusEnd(x.getEndValue(), fData, value, x.getConditionType(), scale),
|
||||||
x.getEndFlag(),
|
x.getEndFlag(),
|
||||||
value)).collect(Collectors.toList());
|
value)).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(errSysDtls)) {
|
if (CollUtil.isNotEmpty(errSysDtls)) {
|
||||||
@@ -1927,20 +1932,19 @@ public class DetectionServiceImpl {
|
|||||||
DetectionData data = new DetectionData();
|
DetectionData data = new DetectionData();
|
||||||
data.setIsData(isQualified);
|
data.setIsData(isQualified);
|
||||||
data.setNum(harm);
|
data.setNum(harm);
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
if (CollUtil.isNotEmpty(harmDataList)) {
|
if (CollUtil.isNotEmpty(harmDataList)) {
|
||||||
BigDecimal bd = BigDecimal.valueOf(harmDataList.get(0));
|
BigDecimal bd = BigDecimal.valueOf(harmDataList.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
data.setData(bd.doubleValue());
|
data.setData(bd.doubleValue());
|
||||||
}
|
}
|
||||||
Double channelData = issueHarmMap.get(harm);
|
Double channelData = issueHarmMap.get(harm);
|
||||||
data.setResultData(channelData);
|
data.setResultData(channelData);
|
||||||
if (ObjectUtil.isNotNull(errSysDtl)) {
|
if (ObjectUtil.isNotNull(errSysDtl)) {
|
||||||
PqErrSysDtls errSys = BeanUtil.copyProperties(errSysDtl, PqErrSysDtls.class);
|
PqErrSysDtls errSys = BeanUtil.copyProperties(errSysDtl, PqErrSysDtls.class);
|
||||||
errSys.setMaxErrorValue(maxErrorMultiply(errSys, fData, issueHarmMap.get(harm), oneConfig.getScale()));
|
errSys.setMaxErrorValue(maxErrorMultiply(errSys, fData, issueHarmMap.get(harm), scale));
|
||||||
data.setUnit(errSysDtl.getErrorUnit());
|
data.setUnit(errSysDtl.getErrorUnit());
|
||||||
data.setRadius(-errSys.getMaxErrorValue() + "~" + errSys.getMaxErrorValue());
|
data.setRadius(-errSys.getMaxErrorValue() + "~" + errSys.getMaxErrorValue());
|
||||||
setDetection(dataRule, harmDataList, errSys, data, channelData, fData, oneConfig.getScale());
|
setDetection(dataRule, harmDataList, errSys, data, channelData, fData, scale);
|
||||||
}
|
}
|
||||||
info.add(data);
|
info.add(data);
|
||||||
});
|
});
|
||||||
@@ -1960,14 +1964,13 @@ public class DetectionServiceImpl {
|
|||||||
* @param dataRule
|
* @param dataRule
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public DetectionData rangeComparisonList(List<Double> devData, List<Double> standardDevData, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double fData, DictDataEnum dataRule) {
|
public DetectionData rangeComparisonList(List<Double> devData, List<Double> standardDevData, Integer isQualified, List<PqErrSysDtls> pqErrSysDtls, Double fData, DictDataEnum dataRule, Integer scale) {
|
||||||
DetectionData detectionData = new DetectionData();
|
DetectionData detectionData = new DetectionData();
|
||||||
detectionData.setIsData(isQualified);
|
detectionData.setIsData(isQualified);
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(devData)) {
|
if (CollUtil.isNotEmpty(devData)) {
|
||||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
|
||||||
BigDecimal bd = BigDecimal.valueOf(devData.get(0));
|
BigDecimal bd = BigDecimal.valueOf(devData.get(0));
|
||||||
bd = bd.setScale(oneConfig.getScale(), RoundingMode.HALF_UP);
|
bd = bd.setScale(scale, RoundingMode.HALF_UP);
|
||||||
detectionData.setData(bd.doubleValue());
|
detectionData.setData(bd.doubleValue());
|
||||||
detectionData.setResultData(standardDevData.get(0));
|
detectionData.setResultData(standardDevData.get(0));
|
||||||
|
|
||||||
@@ -1976,9 +1979,9 @@ public class DetectionServiceImpl {
|
|||||||
|
|
||||||
for (int i = 0; i < devData.size(); i++) {
|
for (int i = 0; i < devData.size(); i++) {
|
||||||
int finalI = i;
|
int finalI = i;
|
||||||
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, standardDevData.get(finalI), x.getConditionType()),
|
List<PqErrSysDtls> errSysDtls = pqErrSysDtls.stream().filter(x -> rangeComparison(startRadiusEnd(x.getStartValue(), fData, standardDevData.get(finalI), x.getConditionType(), scale),
|
||||||
x.getStartFlag(),
|
x.getStartFlag(),
|
||||||
startRadiusEnd(x.getEndValue(), fData, standardDevData.get(finalI), x.getConditionType()),
|
startRadiusEnd(x.getEndValue(), fData, standardDevData.get(finalI), x.getConditionType(), scale),
|
||||||
x.getEndFlag(),
|
x.getEndFlag(),
|
||||||
devData.get(finalI))).collect(Collectors.toList());
|
devData.get(finalI))).collect(Collectors.toList());
|
||||||
|
|
||||||
@@ -2061,7 +2064,7 @@ public class DetectionServiceImpl {
|
|||||||
} else {
|
} else {
|
||||||
data.setErrorData(devSubtractChannelData(harmDataList.get(0), channelData, ratedValue, errSysDtl, scale));
|
data.setErrorData(devSubtractChannelData(harmDataList.get(0), channelData, ratedValue, errSysDtl, scale));
|
||||||
}
|
}
|
||||||
isData(dataRule, harmDataList, data, qualifiedList);
|
isData(dataRule, harmDataList, data, qualifiedList,scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
|||||||
checkDevIp(param.getDevIds());
|
checkDevIp(param.getDevIds());
|
||||||
socketContrastResponseService.init(param);
|
socketContrastResponseService.init(param);
|
||||||
//用于处理异常导致的socket通道未关闭,socket交互异常
|
//用于处理异常导致的socket通道未关闭,socket交互异常
|
||||||
DetectionCommunicateUtil.checkContrastCommunicateChannel(param.getLoginName());
|
//DetectionCommunicateUtil.checkContrastCommunicateChannel(param.getLoginName());
|
||||||
|
|
||||||
// 和通信模块进行连接
|
// 和通信模块进行连接
|
||||||
this.sendContrastSocket(param);
|
this.sendContrastSocket(param);
|
||||||
|
|||||||
@@ -195,18 +195,25 @@ public class DetectionUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对list进行从大到小排序,并返回排序后的索引序列
|
* 对list进行排序,并返回排序后的索引序列
|
||||||
*
|
*
|
||||||
* @param list
|
* @param list
|
||||||
|
* @param isAsc 是否升序
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<Integer> sort(List<Double> list) {
|
public static List<Integer> sort(List<Double> list, Boolean isAsc) {
|
||||||
List<Integer> indexList = Stream.iterate(0, i -> i + 1).limit(list.size()).collect(Collectors.toList());
|
List<Integer> indexList = Stream.iterate(0, i -> i + 1).limit(list.size()).collect(Collectors.toList());
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
int maxIdx = i;
|
int maxIdx = i;
|
||||||
for (int j = i + 1; j < list.size(); j++) {
|
for (int j = i + 1; j < list.size(); j++) {
|
||||||
if (list.get(j) > list.get(maxIdx)) {
|
if (isAsc) {
|
||||||
maxIdx = j;
|
if (list.get(j) < list.get(maxIdx)) {
|
||||||
|
maxIdx = j;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (list.get(j) > list.get(maxIdx)) {
|
||||||
|
maxIdx = j;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (maxIdx != i) {
|
if (maxIdx != i) {
|
||||||
|
|||||||
@@ -62,18 +62,18 @@ public class DetectionCommunicateUtil {
|
|||||||
*
|
*
|
||||||
* @param loginName
|
* @param loginName
|
||||||
*/
|
*/
|
||||||
public static void checkContrastCommunicateChannel(String loginName) {
|
// public static void checkContrastCommunicateChannel(String loginName) {
|
||||||
Channel channel = SocketManager.getChannelByUserId(loginName + CnSocketUtil.CONTRAST_DEV_TAG);
|
// Channel channel = SocketManager.getChannelByUserId(loginName + CnSocketUtil.CONTRAST_DEV_TAG);
|
||||||
|
//
|
||||||
if (Objects.nonNull(channel) && channel.isActive()) {
|
// if (Objects.nonNull(channel) && channel.isActive()) {
|
||||||
System.out.println("存在已有的Socket通道,强行关闭。。。。。。。。");
|
// System.out.println("存在已有的Socket通道,强行关闭。。。。。。。。");
|
||||||
CnSocketUtil.contrastSendquit(loginName);
|
// CnSocketUtil.contrastSendquit(loginName);
|
||||||
SocketManager.removeUser(loginName + CnSocketUtil.CONTRAST_DEV_TAG);
|
// SocketManager.removeUser(loginName + CnSocketUtil.CONTRAST_DEV_TAG);
|
||||||
try {
|
// try {
|
||||||
Thread.sleep(4000);
|
// Thread.sleep(4000);
|
||||||
} catch (InterruptedException e) {
|
// } catch (InterruptedException e) {
|
||||||
log.error(e.getMessage());
|
// log.error(e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
||||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||||
import com.njcn.gather.detection.pojo.vo.SocketMsg;
|
import com.njcn.gather.detection.pojo.vo.SocketMsg;
|
||||||
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
|
|
||||||
import com.njcn.gather.detection.util.socket.websocket.WebServiceManager;
|
import com.njcn.gather.detection.util.socket.websocket.WebServiceManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,13 +57,14 @@ public class CnSocketUtil {
|
|||||||
/**
|
/**
|
||||||
* 比对式-退出检测
|
* 比对式-退出检测
|
||||||
*/
|
*/
|
||||||
public static void contrastSendquit(String loginName) {
|
public static void contrastSendquit(String loginName,boolean isRemoveSocket) {
|
||||||
System.out.println("比对式-发送关闭备通讯模块指令。。。。。。。。");
|
System.out.println("比对式-发送关闭备通讯模块指令。。。。。。。。");
|
||||||
SocketMsg<String> socketMsg = new SocketMsg<>();
|
SocketMsg<String> socketMsg = new SocketMsg<>();
|
||||||
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
|
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
|
||||||
socketMsg.setOperateCode(SourceOperateCodeEnum.QUIT_INIT_02.getValue());
|
socketMsg.setOperateCode(SourceOperateCodeEnum.QUIT_INIT_02.getValue());
|
||||||
SocketManager.sendMsg(loginName + CONTRAST_DEV_TAG, JSON.toJSONString(socketMsg));
|
SocketManager.sendMsg(loginName + CONTRAST_DEV_TAG, JSON.toJSONString(socketMsg));
|
||||||
WebServiceManager.removePreDetectionParam(loginName);
|
// WebServiceManager.removePreDetectionParam();
|
||||||
FormalTestManager.currentStep=SourceOperateCodeEnum.QUITE;
|
FormalTestManager.isRemoveSocket = isRemoveSocket;
|
||||||
|
FormalTestManager.currentStep = SourceOperateCodeEnum.QUITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class FormalTestManager {
|
|||||||
/**
|
/**
|
||||||
* key:设备ip,value:装置id
|
* key:设备ip,value:装置id
|
||||||
*/
|
*/
|
||||||
public static Map<String, String> devIdMapComm = HashBiMap.create();
|
public static HashBiMap<String, String> devIdMapComm = HashBiMap.create();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停止触发标识
|
* 停止触发标识
|
||||||
@@ -105,7 +105,7 @@ public class FormalTestManager {
|
|||||||
public static DictDataEnum dataRule;
|
public static DictDataEnum dataRule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所有参与比对式检测的被检设备、标准设备配对关系。key:被检设备id_通道号,value:标准设备id_通道号
|
* 所有参与比对式检测的被检设备、标准设备配对关系。key:被检设备ip_通道号,value:标准设备ip_通道号
|
||||||
*/
|
*/
|
||||||
public static HashBiMap<String, String> pairsMap = HashBiMap.create();
|
public static HashBiMap<String, String> pairsMap = HashBiMap.create();
|
||||||
|
|
||||||
@@ -118,4 +118,9 @@ public class FormalTestManager {
|
|||||||
* 标准设备的数据。key:设备ip_通道号,value:DevData数据集合
|
* 标准设备的数据。key:设备ip_通道号,value:DevData数据集合
|
||||||
*/
|
*/
|
||||||
public static Map<String, List<DevData>> standardDevDataMap = new HashMap<>();
|
public static Map<String, List<DevData>> standardDevDataMap = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否要移除和通信模块的socket连接
|
||||||
|
*/
|
||||||
|
public static Boolean isRemoveSocket = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ public class MsgUtil {
|
|||||||
*
|
*
|
||||||
* @param devMonitorId
|
* @param devMonitorId
|
||||||
* @param standardDevId
|
* @param standardDevId
|
||||||
* @param devMap
|
* @param devMap key为设备ip,value为设备名称
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String getPairStr(String devMonitorId, String standardDevId, Map<String, String> devMap) {
|
public static String getPairStr(String devMonitorId, String standardDevId, Map<String, String> devMap) {
|
||||||
@@ -80,7 +80,7 @@ public class MsgUtil {
|
|||||||
} else {
|
} else {
|
||||||
String[] split1 = devMonitorId.split("_");
|
String[] split1 = devMonitorId.split("_");
|
||||||
String[] split2 = standardDevId.split("_");
|
String[] split2 = standardDevId.split("_");
|
||||||
return "被检设备" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "路" + " -> 标准设备" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "路";
|
return "被检设备\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "路\"" + " -> 标准设备\"" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "路\"";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ public class SocketManager {
|
|||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return boolean true:连接活跃, false:连接不存在或不活跃
|
* @return boolean true:连接活跃, false:连接不存在或不活跃
|
||||||
*/
|
*/
|
||||||
private static boolean isChannelActive(String userId) {
|
public static boolean isChannelActive(String userId) {
|
||||||
Channel channel = getChannelByUserId(userId);
|
Channel channel = getChannelByUserId(userId);
|
||||||
return ObjectUtil.isNotNull(channel) && channel.isActive();
|
return ObjectUtil.isNotNull(channel) && channel.isActive();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ public class NettyClient {
|
|||||||
private void connectToContrast(String ip, Integer port, ContrastDetectionParam param, String msg) {
|
private void connectToContrast(String ip, Integer port, ContrastDetectionParam param, String msg) {
|
||||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||||
preDetectionParam.setUserPageId(param.getLoginName());
|
preDetectionParam.setUserPageId(param.getLoginName());
|
||||||
|
preDetectionParam.setTestItemList(param.getTestItemList());
|
||||||
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);
|
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);
|
||||||
executeSocketConnection(ip, port, preDetectionParam, msg, handler);
|
executeSocketConnection(ip, port, preDetectionParam, msg, handler);
|
||||||
}
|
}
|
||||||
@@ -468,8 +469,6 @@ public class NettyClient {
|
|||||||
if (handler instanceof NettyDevClientHandler) {
|
if (handler instanceof NettyDevClientHandler) {
|
||||||
// 被检设备异常时,发送程控源退出指令
|
// 被检设备异常时,发送程控源退出指令
|
||||||
CnSocketUtil.quitSendSource(param);
|
CnSocketUtil.quitSendSource(param);
|
||||||
} else if (handler instanceof NettyContrastClientHandler) {
|
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
|
||||||
}
|
}
|
||||||
// 程控源处理器异常时无需额外操作
|
// 程控源处理器异常时无需额外操作
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
package com.njcn.gather.detection.util.socket.cilent;
|
package com.njcn.gather.detection.util.socket.cilent;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.gather.detection.handler.SocketContrastResponseService;
|
import com.njcn.gather.detection.handler.SocketContrastResponseService;
|
||||||
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
|
||||||
|
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
|
||||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||||
|
import com.njcn.gather.detection.pojo.vo.DevLineTestResult;
|
||||||
|
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
|
||||||
|
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
|
||||||
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
||||||
|
import com.njcn.gather.detection.util.socket.FormalTestManager;
|
||||||
|
import com.njcn.gather.detection.util.socket.MsgUtil;
|
||||||
import com.njcn.gather.detection.util.socket.SocketManager;
|
import com.njcn.gather.detection.util.socket.SocketManager;
|
||||||
import com.njcn.gather.detection.util.socket.websocket.WebServiceManager;
|
import com.njcn.gather.detection.util.socket.websocket.WebServiceManager;
|
||||||
import com.njcn.gather.plan.pojo.enums.DataSourceEnum;
|
import com.njcn.gather.plan.pojo.enums.DataSourceEnum;
|
||||||
@@ -14,17 +21,21 @@ import io.netty.handler.timeout.IdleState;
|
|||||||
import io.netty.handler.timeout.IdleStateEvent;
|
import io.netty.handler.timeout.IdleStateEvent;
|
||||||
import io.netty.handler.timeout.TimeoutException;
|
import io.netty.handler.timeout.TimeoutException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
import java.net.ProtocolException;
|
import java.net.ProtocolException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author caozehui
|
* @author caozehui
|
||||||
* @data 2025-07-25
|
* @data 2025-07-25
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class NettyContrastClientHandler extends SimpleChannelInboundHandler<String> {
|
public class NettyContrastClientHandler extends SimpleChannelInboundHandler<String> {
|
||||||
|
|
||||||
@@ -48,12 +59,12 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler<Stri
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void channelRead0(ChannelHandlerContext ctx, String msg) throws InterruptedException {
|
protected void channelRead0(ChannelHandlerContext ctx, String msg) throws InterruptedException {
|
||||||
System.out.println("contrastClientHandler接收server端数据>>>>>>" + msg);
|
log.info("contrastdevhandler接收server端数据: {}", msg);
|
||||||
try {
|
try {
|
||||||
socketContrastResponseService.deal(param, msg);
|
socketContrastResponseService.deal(param, msg);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
log.error("处理服务端消息异常", e);
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,12 +88,15 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler<Stri
|
|||||||
System.out.println(LocalDateTime.now() + "contrastClientHandler触发读超时函数**************************************");
|
System.out.println(LocalDateTime.now() + "contrastClientHandler触发读超时函数**************************************");
|
||||||
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, SocketManager.contrastClockMap.get(DataSourceEnum.REAL_DATA) + 60L);
|
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, SocketManager.contrastClockMap.get(DataSourceEnum.REAL_DATA) + 60L);
|
||||||
|
|
||||||
//实时数据
|
if (FormalTestManager.isRemoveSocket) {
|
||||||
if (SocketManager.contrastClockMap.get(DataSourceEnum.REAL_DATA) >= 60) {
|
//实时数据
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
if (SocketManager.contrastClockMap.get(DataSourceEnum.REAL_DATA) >= 60) {
|
||||||
System.out.println("超时处理-----》" + "实时数据已超时----------------关闭");
|
CnSocketUtil.contrastSendquit(param.getUserPageId(), false);
|
||||||
timeoutSend();
|
System.out.println("超时处理-----》" + "实时数据已超时----------------关闭");
|
||||||
|
timeoutSend();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,7 +126,7 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler<Stri
|
|||||||
System.out.println("Unknown exception caught: " + cause.getMessage());
|
System.out.println("Unknown exception caught: " + cause.getMessage());
|
||||||
WebServiceManager.sendDetectionErrorMessage(param.getUserPageId(), SourceOperateCodeEnum.DEVICE_ERROR);
|
WebServiceManager.sendDetectionErrorMessage(param.getUserPageId(), SourceOperateCodeEnum.DEVICE_ERROR);
|
||||||
}
|
}
|
||||||
CnSocketUtil.contrastSendquit(param.getUserPageId());
|
CnSocketUtil.contrastSendquit(param.getUserPageId(),true);
|
||||||
// socketContrastResponseService.backCheckState(param);
|
// socketContrastResponseService.backCheckState(param);
|
||||||
ctx.close();
|
ctx.close();
|
||||||
}
|
}
|
||||||
@@ -122,7 +136,12 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler<Stri
|
|||||||
* 接收数据超时处理
|
* 接收数据超时处理
|
||||||
*/
|
*/
|
||||||
private void timeoutSend() {
|
private void timeoutSend() {
|
||||||
System.out.println("接收数据超时处理。todo...");
|
// 向前端推送超时消息
|
||||||
|
SocketDataMsg webSend = new SocketDataMsg();
|
||||||
|
webSend.setCode(SourceResponseCodeEnum.RECEIVE_DATA_TIME_OUT.getCode());
|
||||||
|
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0));
|
||||||
|
|
||||||
|
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
|
||||||
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
||||||
import com.njcn.gather.detection.util.socket.FormalTestManager;
|
import com.njcn.gather.detection.util.socket.FormalTestManager;
|
||||||
|
import com.njcn.gather.detection.util.socket.SocketManager;
|
||||||
import com.njcn.gather.device.pojo.enums.PatternEnum;
|
import com.njcn.gather.device.pojo.enums.PatternEnum;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.SimpleChannelInboundHandler;
|
import io.netty.channel.SimpleChannelInboundHandler;
|
||||||
@@ -23,7 +24,7 @@ import static com.njcn.gather.detection.util.socket.websocket.WebSocketConstants
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* WebSocket消息处理器
|
* WebSocket消息处理器
|
||||||
*
|
*
|
||||||
* <p>负责处理电能质量检测系统中的WebSocket连接和消息通信,主要功能包括:</p>
|
* <p>负责处理电能质量检测系统中的WebSocket连接和消息通信,主要功能包括:</p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>WebSocket连接的建立、维护和断开</li>
|
* <li>WebSocket连接的建立、维护和断开</li>
|
||||||
@@ -32,34 +33,33 @@ import static com.njcn.gather.detection.util.socket.websocket.WebSocketConstants
|
|||||||
* <li>检测状态和结果的实时推送</li>
|
* <li>检测状态和结果的实时推送</li>
|
||||||
* <li>异常处理和资源清理</li>
|
* <li>异常处理和资源清理</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* <p><b>通信协议:</b></p>
|
* <p><b>通信协议:</b></p>
|
||||||
* <pre>
|
* <pre>
|
||||||
* 连接URL: ws://host:port/path?name=userId
|
* 连接URL: ws://host:port/path?name=userId
|
||||||
* 心跳消息: "alive" -> "over"
|
* 心跳消息: "alive" -> "over"
|
||||||
* 业务消息: JSON格式的检测数据和状态信息
|
* 业务消息: JSON格式的检测数据和状态信息
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* <p><b>安全策略:</b></p>
|
* <p><b>安全策略:</b></p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>连接时必须提供有效的userId参数,否则拒绝连接</li>
|
* <li>连接时必须提供有效的userId参数,否则拒绝连接</li>
|
||||||
* <li>支持心跳超时检测,超时3次自动断开连接</li>
|
* <li>支持心跳超时检测,超时3次自动断开连接</li>
|
||||||
* <li>连接断开时自动清理相关Socket资源</li>
|
* <li>连接断开时自动清理相关Socket资源</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* <p><b>使用场景:</b></p>
|
* <p><b>使用场景:</b></p>
|
||||||
* 主要用于前端实时接收检测进度、检测结果、设备状态等信息的推送,
|
* 主要用于前端实时接收检测进度、检测结果、设备状态等信息的推送,
|
||||||
* 配合detection模块的ResponseService类实现完整的实时通信链路。
|
* 配合detection模块的ResponseService类实现完整的实时通信链路。
|
||||||
*
|
*
|
||||||
* @author wr
|
* @author wr
|
||||||
* @date 2024/12/10 13:56
|
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @since 检测系统 v2.3.12
|
* @date 2024/12/10 13:56
|
||||||
*
|
|
||||||
* @see WebServiceManager 会话管理器
|
* @see WebServiceManager 会话管理器
|
||||||
* @see WebSocketConstants 常量定义
|
* @see WebSocketConstants 常量定义
|
||||||
* @see com.njcn.gather.detection.handler.SocketDevResponseService 设备响应处理
|
* @see com.njcn.gather.detection.handler.SocketDevResponseService 设备响应处理
|
||||||
* @see com.njcn.gather.detection.handler.SocketSourceResponseService 源响应处理
|
* @see com.njcn.gather.detection.handler.SocketSourceResponseService 源响应处理
|
||||||
|
* @since 检测系统 v2.3.12
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -67,19 +67,19 @@ import static com.njcn.gather.detection.util.socket.websocket.WebSocketConstants
|
|||||||
public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
|
public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
|
||||||
|
|
||||||
// ================================ 字段定义 ================================
|
// ================================ 字段定义 ================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 心跳超时计数器
|
* 心跳超时计数器
|
||||||
*/
|
*/
|
||||||
private int times;
|
private int times;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前WebSocket连接对应的用户ID
|
* 当前WebSocket连接对应的用户ID
|
||||||
* 在首次HTTP握手时从URL参数中提取并存储
|
* 在首次HTTP握手时从URL参数中提取并存储
|
||||||
* 用于后续的Socket连接管理和资源清理
|
* 用于后续的Socket连接管理和资源清理
|
||||||
*/
|
*/
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 心跳响应内容常量
|
* 心跳响应内容常量
|
||||||
* 注意:不能预创建TextWebSocketFrame对象,因为ByteBuf状态会改变
|
* 注意:不能预创建TextWebSocketFrame对象,因为ByteBuf状态会改变
|
||||||
@@ -120,7 +120,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
@Override
|
@Override
|
||||||
public void channelInactive(ChannelHandlerContext ctx) {
|
public void channelInactive(ChannelHandlerContext ctx) {
|
||||||
log.info("webSocket连接断线,channelId: {}, userId: {}", ctx.channel().id(), this.userId);
|
log.info("webSocket连接断线,channelId: {}, userId: {}", ctx.channel().id(), this.userId);
|
||||||
|
|
||||||
// 确保通道关闭
|
// 确保通道关闭
|
||||||
if (ctx.channel() != null && ctx.channel().isActive()) {
|
if (ctx.channel() != null && ctx.channel().isActive()) {
|
||||||
ctx.close();
|
ctx.close();
|
||||||
@@ -134,26 +134,26 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
|
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
|
||||||
// 处理WebSocket握手完成事件
|
// 处理WebSocket握手完成事件
|
||||||
if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete) {
|
if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete) {
|
||||||
WebSocketServerProtocolHandler.HandshakeComplete handshakeComplete =
|
WebSocketServerProtocolHandler.HandshakeComplete handshakeComplete =
|
||||||
(WebSocketServerProtocolHandler.HandshakeComplete) evt;
|
(WebSocketServerProtocolHandler.HandshakeComplete) evt;
|
||||||
|
|
||||||
// 从Channel属性获取userId(由WebSocketPreprocessor设置)
|
// 从Channel属性获取userId(由WebSocketPreprocessor设置)
|
||||||
this.userId = ctx.channel().attr(AttributeKey.<String>valueOf("userId")).get();
|
this.userId = ctx.channel().attr(AttributeKey.<String>valueOf("userId")).get();
|
||||||
|
|
||||||
log.info("WebSocket协议升级完成,userId: {}, channelId: {}, requestUri: {}",
|
log.info("WebSocket协议升级完成,userId: {}, channelId: {}, requestUri: {}",
|
||||||
this.userId, ctx.channel().id(), handshakeComplete.requestUri());
|
this.userId, ctx.channel().id(), handshakeComplete.requestUri());
|
||||||
|
|
||||||
// 握手完成后建立用户会话
|
// 握手完成后建立用户会话
|
||||||
if (this.userId != null) {
|
if (this.userId != null) {
|
||||||
WebServiceManager.addUser(this.userId, ctx.channel());
|
WebServiceManager.addUser(this.userId, ctx.channel());
|
||||||
log.info("WebSocket用户会话已建立,userId: {}, channelId: {}", this.userId, ctx.channel().id());
|
log.info("WebSocket用户会话已建立,userId: {}, channelId: {}", this.userId, ctx.channel().id());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送连接成功消息给前端
|
// 发送连接成功消息给前端
|
||||||
sendConnectionSuccessMessage(ctx);
|
sendConnectionSuccessMessage(ctx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理心跳超时事件
|
// 处理心跳超时事件
|
||||||
if (evt instanceof IdleStateEvent) {
|
if (evt instanceof IdleStateEvent) {
|
||||||
IdleStateEvent event = (IdleStateEvent) evt;
|
IdleStateEvent event = (IdleStateEvent) evt;
|
||||||
@@ -184,7 +184,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 其他事件传递给父类处理
|
// 其他事件传递给父类处理
|
||||||
super.userEventTriggered(ctx, evt);
|
super.userEventTriggered(ctx, evt);
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
/**
|
/**
|
||||||
* 发送连接成功消息给前端
|
* 发送连接成功消息给前端
|
||||||
* WebSocket握手完成后立即调用,通知前端连接建立成功
|
* WebSocket握手完成后立即调用,通知前端连接建立成功
|
||||||
*
|
*
|
||||||
* @param ctx Netty通道上下文
|
* @param ctx Netty通道上下文
|
||||||
*/
|
*/
|
||||||
private void sendConnectionSuccessMessage(ChannelHandlerContext ctx) {
|
private void sendConnectionSuccessMessage(ChannelHandlerContext ctx) {
|
||||||
@@ -221,15 +221,15 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
log.warn("无法发送连接成功消息:通道不可用, userId: {}", this.userId);
|
log.warn("无法发送连接成功消息:通道不可用, userId: {}", this.userId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 构建连接成功消息
|
// 构建连接成功消息
|
||||||
String welcomeMessage = String.format("{\"type\":\"connection\",\"status\":\"success\",\"message\":\"WebSocket连接建立成功\",\"userId\":\"%s\",\"timestamp\":%d}",
|
String welcomeMessage = String.format("{\"type\":\"connection\",\"status\":\"success\",\"message\":\"WebSocket连接建立成功\",\"userId\":\"%s\",\"timestamp\":%d}",
|
||||||
this.userId, System.currentTimeMillis());
|
this.userId, System.currentTimeMillis());
|
||||||
|
|
||||||
TextWebSocketFrame frame = new TextWebSocketFrame(welcomeMessage);
|
TextWebSocketFrame frame = new TextWebSocketFrame(welcomeMessage);
|
||||||
ctx.channel().writeAndFlush(frame);
|
ctx.channel().writeAndFlush(frame);
|
||||||
|
|
||||||
log.info("已发送连接成功消息给前端, userId: {}, channelId: {}", this.userId, ctx.channel().id());
|
log.info("已发送连接成功消息给前端, userId: {}, channelId: {}", this.userId, ctx.channel().id());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("发送连接成功消息失败, userId: {}, channelId: {}", this.userId, ctx.channel().id(), e);
|
log.error("发送连接成功消息失败, userId: {}, channelId: {}", this.userId, ctx.channel().id(), e);
|
||||||
@@ -239,8 +239,8 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
/**
|
/**
|
||||||
* 处理WebSocket文本消息
|
* 处理WebSocket文本消息
|
||||||
* 这里是所有WebSocket文本消息的统一处理入口
|
* 这里是所有WebSocket文本消息的统一处理入口
|
||||||
*
|
*
|
||||||
* @param ctx Netty通道上下文
|
* @param ctx Netty通道上下文
|
||||||
* @param frame WebSocket文本帧
|
* @param frame WebSocket文本帧
|
||||||
*/
|
*/
|
||||||
private void handleWebSocketMessage(ChannelHandlerContext ctx, TextWebSocketFrame frame) {
|
private void handleWebSocketMessage(ChannelHandlerContext ctx, TextWebSocketFrame frame) {
|
||||||
@@ -277,14 +277,14 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
/**
|
/**
|
||||||
* 处理业务消息
|
* 处理业务消息
|
||||||
* 可以在这里扩展具体的业务逻辑处理
|
* 可以在这里扩展具体的业务逻辑处理
|
||||||
*
|
*
|
||||||
* @param ctx Netty通道上下文
|
* @param ctx Netty通道上下文
|
||||||
* @param frame WebSocket文本帧
|
* @param frame WebSocket文本帧
|
||||||
* @param messageText 消息文本内容
|
* @param messageText 消息文本内容
|
||||||
*/
|
*/
|
||||||
private void handleBusinessMessage(ChannelHandlerContext ctx, TextWebSocketFrame frame, String messageText) {
|
private void handleBusinessMessage(ChannelHandlerContext ctx, TextWebSocketFrame frame, String messageText) {
|
||||||
log.debug("收到WebSocket业务消息,userId: {}, channelId: {}, message: {}",
|
log.debug("收到WebSocket业务消息,userId: {}, channelId: {}, message: {}",
|
||||||
this.userId, ctx.channel().id(), messageText);
|
this.userId, ctx.channel().id(), messageText);
|
||||||
// TODO: 根据业务需要扩展消息处理逻辑
|
// TODO: 根据业务需要扩展消息处理逻辑
|
||||||
// 例如:
|
// 例如:
|
||||||
// - 解析JSON消息
|
// - 解析JSON消息
|
||||||
@@ -307,8 +307,8 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
} else if (cause instanceof IllegalArgumentException) {
|
} else if (cause instanceof IllegalArgumentException) {
|
||||||
log.warn("webSocket参数异常,channelId: {}, 异常: {}", channelId, cause.getMessage());
|
log.warn("webSocket参数异常,channelId: {}, 异常: {}", channelId, cause.getMessage());
|
||||||
} else {
|
} else {
|
||||||
log.error("webSocket未分类异常,channelId: {}, 类型: {}, 异常: {}",
|
log.error("webSocket未分类异常,channelId: {}, 类型: {}, 异常: {}",
|
||||||
channelId, cause.getClass().getSimpleName(), cause.getMessage(), cause);
|
channelId, cause.getClass().getSimpleName(), cause.getMessage(), cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,9 +320,9 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
log.warn("异常处理:通道上下文为空,无法进行清理");
|
log.warn("异常处理:通道上下文为空,无法进行清理");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String channelId = ctx.channel().id().toString();
|
String channelId = ctx.channel().id().toString();
|
||||||
|
|
||||||
// 清理会话
|
// 清理会话
|
||||||
if (this.userId != null) {
|
if (this.userId != null) {
|
||||||
WebServiceManager.removeByUserId(this.userId);
|
WebServiceManager.removeByUserId(this.userId);
|
||||||
@@ -331,7 +331,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
WebServiceManager.removeChannel(channelId);
|
WebServiceManager.removeChannel(channelId);
|
||||||
log.debug("已清理WebSocket会话(使用channelId),channelId: {}", channelId);
|
log.debug("已清理WebSocket会话(使用channelId),channelId: {}", channelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理检测相关资源
|
// 清理检测相关资源
|
||||||
cleanupSocketResources(this.userId);
|
cleanupSocketResources(this.userId);
|
||||||
}
|
}
|
||||||
@@ -342,8 +342,8 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
private void handleConnectionByExceptionType(ChannelHandlerContext ctx, Throwable cause) {
|
private void handleConnectionByExceptionType(ChannelHandlerContext ctx, Throwable cause) {
|
||||||
String channelId = ctx.channel().id().toString();
|
String channelId = ctx.channel().id().toString();
|
||||||
// URL参数异常但连接本身可能正常,尝试保持连接
|
// URL参数异常但连接本身可能正常,尝试保持连接
|
||||||
if (cause instanceof IllegalArgumentException &&
|
if (cause instanceof IllegalArgumentException &&
|
||||||
cause.getMessage() != null && cause.getMessage().contains("URL")) {
|
cause.getMessage() != null && cause.getMessage().contains("URL")) {
|
||||||
log.info("URL参数异常,尝试保持连接,channelId: {}", channelId);
|
log.info("URL参数异常,尝试保持连接,channelId: {}", channelId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -353,10 +353,10 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ================================ 资源清理 ================================
|
// ================================ 资源清理 ================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清理Socket相关资源
|
* 清理Socket相关资源
|
||||||
*
|
*
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
*/
|
*/
|
||||||
private void cleanupSocketResources(String userId) {
|
private void cleanupSocketResources(String userId) {
|
||||||
@@ -364,14 +364,21 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
|
|||||||
log.warn("userId为空,无法进行Socket连接清理");
|
log.warn("userId为空,无法进行Socket连接清理");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PreDetectionParam preDetectionParam = WebServiceManager.getPreDetectionParam(userId);
|
PreDetectionParam preDetectionParam = WebServiceManager.getPreDetectionParam(userId);
|
||||||
if (ObjectUtil.isNotNull(preDetectionParam)) {
|
if (ObjectUtil.isNotNull(preDetectionParam)) {
|
||||||
// 使用该用户的检测参数关闭Socket连接
|
// 使用该用户的检测参数关闭Socket连接
|
||||||
log.info("使用用户检测参数关闭Socket连接,userId: {}", userId);
|
log.info("使用用户检测参数关闭Socket连接,userId: {}", userId);
|
||||||
if (FormalTestManager.patternEnum.equals(PatternEnum.CONTRAST)) {
|
if (FormalTestManager.patternEnum.equals(PatternEnum.CONTRAST)) {
|
||||||
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId());
|
if (FormalTestManager.isRemoveSocket) {
|
||||||
|
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), true);
|
||||||
|
} else {
|
||||||
|
boolean channelActive = SocketManager.isChannelActive(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG);
|
||||||
|
if (channelActive) {
|
||||||
|
SocketManager.removeUser(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
CnSocketUtil.quitSendSource(preDetectionParam);
|
CnSocketUtil.quitSendSource(preDetectionParam);
|
||||||
CnSocketUtil.quitSend(preDetectionParam);
|
CnSocketUtil.quitSend(preDetectionParam);
|
||||||
|
|||||||
Reference in New Issue
Block a user