比对预检测-完善

This commit is contained in:
caozehui
2025-08-12 15:32:57 +08:00
parent c1d2160335
commit 50d626f563
15 changed files with 339 additions and 390 deletions

View File

@@ -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为标准设备idvalue为标准设备下的监测点列表(Id_通道号) // key为标准设备idvalue为标准设备下的监测点列表(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));
} }

View File

@@ -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();

View File

@@ -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,"接收数据超时")

View File

@@ -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;
/** /**
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测 * 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
*/ */

View File

@@ -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为被检设备ipvalue为被检设备id * @param devIdMapComm 设备id映射关系 key为被检设备ipvalue为被检设备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);
} }
} }
} }

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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());
} // }
} // }
} // }
} }

View File

@@ -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;
} }
} }

View File

@@ -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;
} }

View File

@@ -71,7 +71,7 @@ public class MsgUtil {
* *
* @param devMonitorId * @param devMonitorId
* @param standardDevId * @param standardDevId
* @param devMap * @param devMap key为设备ipvalue为设备名称
* @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] + "\"";
} }
} }
} }

View File

@@ -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();
} }

View File

@@ -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());
} }
// 程控源处理器异常时无需额外操作 // 程控源处理器异常时无需额外操作
} }

View File

@@ -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));
} }
} }

View File

@@ -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;
@@ -52,14 +53,13 @@ import static com.njcn.gather.detection.util.socket.websocket.WebSocketConstants
* 配合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
*/ */
@@ -135,7 +135,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
// 处理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();
@@ -240,7 +240,7 @@ 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) {
@@ -278,13 +278,13 @@ 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消息
@@ -308,7 +308,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
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);
} }
} }
@@ -343,7 +343,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
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;
} }
@@ -371,7 +371,14 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
// 使用该用户的检测参数关闭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);