修改检测计划态,录波校验调整

This commit is contained in:
caozehui
2025-09-23 19:35:47 +08:00
parent f0540d4c92
commit 69503c7ca9
13 changed files with 803 additions and 694 deletions

View File

@@ -9,6 +9,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.gather.detection.pojo.dto.WaveCommandDTO; import com.njcn.gather.detection.pojo.dto.WaveCommandDTO;
@@ -66,8 +67,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -94,18 +93,9 @@ public class SocketContrastResponseService {
private final ICompareWaveService compareWaveService; private final ICompareWaveService compareWaveService;
private final IAdPlanTestConfigService adPlanTestConfigService; private final IAdPlanTestConfigService adPlanTestConfigService;
/**
* 定时器
*/
private ScheduledExecutorService scheduler = null;
/** /**
* 定时器任务 * 存放结果
*/
private ScheduledFuture<?> scheduledFuture = null;
/**
* 实时数据对齐校验结果
*/ */
private boolean checkResult = false; private boolean checkResult = false;
@@ -157,32 +147,6 @@ public class SocketContrastResponseService {
Map<String, Integer> resultMap = new HashMap<>(); Map<String, Integer> resultMap = new HashMap<>();
for (String devMonitorId : devMonitorIds) { for (String devMonitorId : devMonitorIds) {
Integer maxNum = 1; Integer maxNum = 1;
// DynamicTableNameHandler.setTableName("ad_non_harmonic_" + code);
// List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.lambdaQuery()
// .select(ContrastNonHarmonicResult::getNum)
// .eq(ContrastNonHarmonicResult::getMonitorId, devMonitorId)
// .orderByDesc(ContrastNonHarmonicResult::getNum)
// .last("LIMIT 1").list();
// if (CollUtil.isNotEmpty(nonHarmonicResultList)) {
// if (maxNum <= nonHarmonicResultList.get(0).getNum()) {
// maxNum = nonHarmonicResultList.get(0).getNum() + 1;
// }
// }
// DynamicTableNameHandler.remove();
//
// DynamicTableNameHandler.setTableName("ad_harmonic_" + code);
// List<ContrastHarmonicResult> harmonicResultList = contrastHarmonicService.lambdaQuery()
// .select(ContrastHarmonicResult::getNum)
// .eq(ContrastHarmonicResult::getMonitorId, devMonitorId)
// .orderByDesc(ContrastHarmonicResult::getNum)
// .last("LIMIT 1").list();
// if (CollUtil.isNotEmpty(harmonicResultList)) {
// if (maxNum <= harmonicResultList.get(0).getNum()) {
// maxNum = harmonicResultList.get(0).getNum() + 1;
// }
// }
// DynamicTableNameHandler.remove();
List<AdPair> adPairList = adPairService.lambdaQuery().select(AdPair::getNum) List<AdPair> adPairList = adPairService.lambdaQuery().select(AdPair::getNum)
.eq(AdPair::getDevMonitorId, devMonitorId) .eq(AdPair::getDevMonitorId, devMonitorId)
.orderByDesc(AdPair::getNum) .orderByDesc(AdPair::getNum)
@@ -218,6 +182,8 @@ public class SocketContrastResponseService {
successPair.clear(); successPair.clear();
FormalTestManager.isRemoveSocket = false; FormalTestManager.isRemoveSocket = false;
FormalTestManager.waveCheckFlag = false; FormalTestManager.waveCheckFlag = false;
FormalTestManager.scheduler = null;
FormalTestManager.scheduledFuture = null;
HashBiMap<String, String> hashBiMap = HashBiMap.create(param.getPairs()); HashBiMap<String, String> hashBiMap = HashBiMap.create(param.getPairs());
FormalTestManager.pairsIdMap.clear(); FormalTestManager.pairsIdMap.clear();
@@ -358,7 +324,6 @@ public class SocketContrastResponseService {
break; break;
// 启动录波 // 启动录波
case RECORD_WAVE_STEP1: case RECORD_WAVE_STEP1:
case RECORD_WAVE_STEP2:
this.recordWave(param, socketDataMsg); this.recordWave(param, socketDataMsg);
break; break;
//退出关闭 //退出关闭
@@ -382,15 +347,15 @@ public class SocketContrastResponseService {
if (ObjectUtil.isNotNull(dictDataEnumByCode)) { if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
if (SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue().equals(socketDataMsg.getRequestId())) { if (SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue().equals(socketDataMsg.getRequestId())) {
WaveResultDTO waveResultDTO = JSON.parseObject(socketDataMsg.getData(), WaveResultDTO.class); WaveResultDTO waveResultDTO = JSON.parseObject(socketDataMsg.getData(), WaveResultDTO.class);
FormalTestManager.waveResultDTOMap.put(waveResultDTO.getId(), waveResultDTO); FormalTestManager.waveResultDTOMap.put(waveResultDTO.getId(), waveResultDTO);
successComm.add(waveResultDTO.getId()); successComm.add(waveResultDTO.getId());
if (successComm.size() == FormalTestManager.monitorMap.size()) { if (successComm.size() == FormalTestManager.monitorMap.size()) {
scheduledFuture.cancel(true); FormalTestManager.scheduledFuture.cancel(true);
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue()); webSend.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
@@ -401,7 +366,6 @@ public class SocketContrastResponseService {
successComm.clear(); successComm.clear();
failComm.clear(); failComm.clear();
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
//开始模型一致性校验 //开始模型一致性校验
System.out.println("装置通信成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始模型一致性校验》》》》》》》》》》》》》》》》"); System.out.println("装置通信成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始模型一致性校验》》》》》》》》》》》》》》》》");
@@ -476,14 +440,15 @@ public class SocketContrastResponseService {
} }
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
if (SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue().equals(socketDataMsg.getRequestId())) { if (SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue().equals(socketDataMsg.getRequestId())) {
String data = socketDataMsg.getData(); String data = socketDataMsg.getData();
if (StrUtil.isNotBlank(data) && data.equals("waiting")) { if (StrUtil.isNotBlank(data) && data.equals("waiting")) {
if (Objects.isNull(scheduler)) { if (Objects.isNull(FormalTestManager.scheduler)) {
scheduler = Executors.newScheduledThreadPool(1); FormalTestManager.scheduler = Executors.newScheduledThreadPool(1);
scheduledFuture = scheduler.schedule(() -> { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> {
if (!FormalTestManager.isRemoveSocket) {
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue()); webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue()); webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue());
System.out.println("无效的录波指令!"); System.out.println("无效的录波指令!");
@@ -501,9 +466,9 @@ public class SocketContrastResponseService {
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送 webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送
webSend.setData("无效的录波指令!"); webSend.setData("无效的录波指令!");
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
}
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
}, 20, TimeUnit.SECONDS); }, 20, TimeUnit.SECONDS);
} }
} }
@@ -547,7 +512,6 @@ public class SocketContrastResponseService {
DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class); DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class);
socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue());
if (!SourceOperateCodeEnum.QUIT_INIT_03.getValue().equals(socketDataMsg.getOperateCode()) && !SourceOperateCodeEnum.RDRE$01.getValue().equals(socketDataMsg.getOperateCode())) {
if (ObjectUtil.isNotNull(dictDataEnumByCode)) { if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
switch (dictDataEnumByCode) { switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
@@ -569,9 +533,9 @@ public class SocketContrastResponseService {
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true); boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true);
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult; modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult;
if (!modelCheckResult) {
this.clearData();
this.clearData();
if (!modelCheckResult) {
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());
@@ -582,15 +546,18 @@ public class SocketContrastResponseService {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
return; return;
} else { } else {
this.clearData();
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());
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
String[] dataSources = FormalTestManager.currentTestPlan.getDatasourceId().split(",");
if (Arrays.stream(dataSources).anyMatch(DataSourceEnum.REAL_DATA.getValue()::equals)) {
System.out.println("模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始实时数据对齐校验》》》》》》》》》》》》》》》》"); System.out.println("模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始实时数据对齐校验》》》》》》》》》》》》》》》》");
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
@@ -598,10 +565,20 @@ public class SocketContrastResponseService {
phaseSequenceParam.setDataType(Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode())); phaseSequenceParam.setDataType(Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(5)); phaseSequenceParam.setReadCount(this.getMaxReadCount(5));
phaseSequenceParam.setIgnoreCount(0); phaseSequenceParam.setIgnoreCount(0);
phaseSequenceParam.setDataType(Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(5));
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN; FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN;
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); } else {
System.out.println("(仅有录波)模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》》》》》》》》》》》》");
this.sendXu(s);
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
}
// 实时数据开始计时 // 实时数据开始计时
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
} }
@@ -634,7 +611,6 @@ public class SocketContrastResponseService {
} }
} }
} }
}
/** /**
* 实时数据对齐校验 * 实时数据对齐校验
@@ -656,9 +632,9 @@ public class SocketContrastResponseService {
String monitorId1 = devData.getId(); String monitorId1 = devData.getId();
//成功收到数据后重置超时统计时间 //成功收到数据后重置超时统计时间
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
if (Objects.isNull(scheduler)) { if (Objects.isNull(FormalTestManager.scheduler)) {
scheduler = Executors.newScheduledThreadPool(1); FormalTestManager.scheduler = Executors.newScheduledThreadPool(1);
scheduledFuture = scheduler.schedule(() -> { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> {
if (!checkResult) { if (!checkResult) {
System.out.println("1minute内实时数据对齐校验失败"); System.out.println("1minute内实时数据对齐校验失败");
@@ -686,8 +662,8 @@ public class SocketContrastResponseService {
this.saveAlignData(); this.saveAlignData();
this.clearData(); this.clearData();
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
} }
}, 1, TimeUnit.MINUTES); }, 1, TimeUnit.MINUTES);
} }
@@ -734,8 +710,8 @@ public class SocketContrastResponseService {
// 若成功的配对项等于总的配对项,则判定为成功 // 若成功的配对项等于总的配对项,则判定为成功
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) { if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
checkResult = true; checkResult = true;
scheduledFuture.cancel(true); FormalTestManager.scheduledFuture.cancel(true);
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
// 将数据推送给前端 // 将数据推送给前端
this.sendAlignDataToWeb(param.getUserPageId()); this.sendAlignDataToWeb(param.getUserPageId());
@@ -750,28 +726,8 @@ public class SocketContrastResponseService {
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1));
System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》"); System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》");
this.sendXu(s);
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
phaseSequenceParam.setDataType(Arrays.asList(
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
// 实时数据开始计时 // 实时数据开始计时
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
} }
@@ -844,17 +800,16 @@ public class SocketContrastResponseService {
if (FormalTestManager.devDataMap.get(devMonitorId).size() >= 1 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= 1) { 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);
List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 1); List<List<DevData>> singleMonitorAlignData = getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 1);
if (CollUtil.isNotEmpty(singleMonitorAlignData.get(0)) && CollUtil.isNotEmpty(singleMonitorAlignData.get(1))) {
PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId); PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId);
if (this.singleMonitorXuCheck(devMonitorId, standardDevMonitorId, monitorListDTO, singleMonitorAlignData.get(0), singleMonitorAlignData.get(1), FormalTestManager.devNameMapComm, param.getUserPageId())) { if (this.singleMonitorXuCheck(devMonitorId, standardDevMonitorId, monitorListDTO, singleMonitorAlignData.get(0), singleMonitorAlignData.get(1), FormalTestManager.devNameMapComm, param.getUserPageId())) {
successPair.put(devMonitorId, standardDevMonitorId); successPair.put(devMonitorId, standardDevMonitorId);
// 若成功的配对项等于总的配对项,则判定为成功 // 若成功的配对项等于总的配对项,则判定为成功
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) { if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
this.clearData(); this.clearData();
WebSocketVO webSend = new WebSocketVO();
SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
@@ -863,6 +818,9 @@ public class SocketContrastResponseService {
// 后续做正式检测 // 后续做正式检测
if (param.getTestItemList().get(2)) { if (param.getTestItemList().get(2)) {
System.out.println("相序校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始正式检测》》》》》》》》》》》》》》》》"); System.out.println("相序校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始正式检测》》》》》》》》》》》》》》》》");
String datasourceId = FormalTestManager.currentTestPlan.getDatasourceId();
if (datasourceId.contains(DataSourceEnum.REAL_DATA.getValue())) {
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
@@ -877,9 +835,23 @@ public class SocketContrastResponseService {
// 实时数据开始计时 // 实时数据开始计时
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
checkResult = false; checkResult = false;
} else { } else if (datasourceId.contains(DataSourceEnum.WAVE_DATA.getValue())) {
// 断开与设备的连接,但是不要将Socket移除
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
// 录波数据
successComm.clear();
failComm.clear();
FormalTestManager.currentStep = SourceOperateCodeEnum.RECORD_WAVE_STEP1;
// 发送录波指令
this.sendRecordWave(s);
} else {
// 统计数据
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
}
} else {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
} }
} }
} else if (successComm.size() == FormalTestManager.monitorMap.size()) { } else if (successComm.size() == FormalTestManager.monitorMap.size()) {
@@ -893,8 +865,21 @@ public class SocketContrastResponseService {
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
return; return;
} }
} else {
Integer maxReadCount = getMaxReadCount(1);
WebSocketVO webSend = new WebSocketVO();
webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
if (FormalTestManager.devDataMap.get(devMonitorId).size() >= maxReadCount && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= maxReadCount) {
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());
webSend.setData(MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, FormalTestManager.devNameMapComm) + " 数据对齐失败!");
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
}
}
} }
} }
break; break;
@@ -929,7 +914,7 @@ public class SocketContrastResponseService {
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG; String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
DevData devData = JSON.parseObject(data, DevData.class); DevData devData = JSON.parseObject(data, DevData.class);
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (SourceOperateCodeEnum.FORMAL_REAL.getValue().equals(socketDataMsg.getRequestId())) {
switch (Objects.requireNonNull(dictDataEnumByCode)) { switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS: case SUCCESS:
case NORMAL_RESPONSE: case NORMAL_RESPONSE:
@@ -942,9 +927,9 @@ public class SocketContrastResponseService {
Integer realTime = FormalTestManager.curretntTestPlanConfig.getRealTime(); Integer realTime = FormalTestManager.curretntTestPlanConfig.getRealTime();
//成功收到数据后重置超时统计时间 //成功收到数据后重置超时统计时间
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
if (Objects.isNull(scheduler)) { if (Objects.isNull(FormalTestManager.scheduler)) {
scheduler = Executors.newScheduledThreadPool(1); FormalTestManager.scheduler = Executors.newScheduledThreadPool(1);
scheduledFuture = scheduler.schedule(() -> { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> {
if (!checkResult) { if (!checkResult) {
System.out.println("正式检测-" + (long) Math.ceil(realTime / 5) + "分钟内收集数据不完整!"); System.out.println("正式检测-" + (long) Math.ceil(realTime / 5) + "分钟内收集数据不完整!");
@@ -966,8 +951,8 @@ public class SocketContrastResponseService {
return; return;
} }
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
}, (long) Math.ceil(realTime / 5), TimeUnit.MINUTES); }, (long) Math.ceil(realTime / 5), TimeUnit.MINUTES);
} }
@@ -1009,25 +994,13 @@ public class SocketContrastResponseService {
// 断开与设备的连接,但是不要将Socket移除 // 断开与设备的连接,但是不要将Socket移除
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
checkResult = true; checkResult = true;
scheduledFuture.cancel(true); FormalTestManager.scheduledFuture.cancel(true);
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
String errorSysId = FormalTestManager.currentTestPlan.getErrorSysId(); String errorSysId = FormalTestManager.currentTestPlan.getErrorSysId();
String code = String.valueOf(FormalTestManager.currentTestPlan.getCode()); String code = String.valueOf(FormalTestManager.currentTestPlan.getCode());
// 配对关系入库
List<AdPair> adPairList = new ArrayList<>();
for (String key : FormalTestManager.pairsIdMap.keySet()) {
AdPair adPair = new AdPair();
adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
adPair.setDevMonitorId(key);
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
adPair.setNum(FormalTestManager.numMap.get(key));
adPairList.add(adPair);
}
adPairService.saveBatch(adPairList);
// 原始数据入库 // 原始数据入库
List<DevData> devDataList = FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()); List<DevData> devDataList = FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList());
List<DevData> standardDevDataList = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()); List<DevData> standardDevDataList = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList());
@@ -1052,8 +1025,6 @@ public class SocketContrastResponseService {
Map<String, Integer> result = detectionDataDealService.devResult(true, FormalTestManager.pairsIdMap.keySet().stream().collect(Collectors.toList()), adTypes, code); Map<String, Integer> result = detectionDataDealService.devResult(true, FormalTestManager.pairsIdMap.keySet().stream().collect(Collectors.toList()), adTypes, code);
// 若有不符合的 // 若有不符合的
if (result.values().stream().anyMatch(r -> r.equals(ResultEnum.NOT_QUALIFIED.getValue()))) { if (result.values().stream().anyMatch(r -> r.equals(ResultEnum.NOT_QUALIFIED.getValue()))) {
// if (true) {
// 判断是否启用录波 // 判断是否启用录波
String datasourceId = FormalTestManager.currentTestPlan.getDatasourceId(); String datasourceId = FormalTestManager.currentTestPlan.getDatasourceId();
// 最终将检测结果推送到前端 // 最终将检测结果推送到前端
@@ -1061,10 +1032,6 @@ public class SocketContrastResponseService {
webSend.setCode(SourceResponseCodeEnum.REAL_DATA_CHECK_FAIL.getCode());// 实时数据检测失败,最终错误推送 webSend.setCode(SourceResponseCodeEnum.REAL_DATA_CHECK_FAIL.getCode());// 实时数据检测失败,最终错误推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
System.out.println("实时数据校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始录波》》》》》》》》》》》》》》》》"); System.out.println("实时数据校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始录波》》》》》》》》》》》》》》》》");
SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
Map<String, List<PreDetection>> map = new HashMap<>(1);
Set<String> delSet = new HashSet<>(); Set<String> delSet = new HashSet<>();
for (int i = 0; i < FormalTestManager.devList.size(); i++) { for (int i = 0; i < FormalTestManager.devList.size(); i++) {
@@ -1094,15 +1061,16 @@ public class SocketContrastResponseService {
} }
} }
List<PreDetection> preDetectionList = new ArrayList<>(); successComm.clear();
preDetectionList.addAll(FormalTestManager.devList); failComm.clear();
preDetectionList.addAll(FormalTestManager.standardDevList);
map.put("deviceList", preDetectionList);
String jsonString = JSON.toJSONString(map);
socketMsg.setData(jsonString);
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
FormalTestManager.currentStep = SourceOperateCodeEnum.RECORD_WAVE_STEP1; FormalTestManager.currentStep = SourceOperateCodeEnum.RECORD_WAVE_STEP1;
// 发送录波指令
this.sendRecordWave(s);
} else { } else {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
// 配对关系入库
this.pairDataInsert();
// 最终将检测结果推送到前端 // 最终将检测结果推送到前端
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
@@ -1113,6 +1081,9 @@ public class SocketContrastResponseService {
}); });
} }
} else { } else {
// 配对关系入库
this.pairDataInsert();
// 最终将检测结果推送到前端 // 最终将检测结果推送到前端
webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
@@ -1121,6 +1092,8 @@ public class SocketContrastResponseService {
pqMonitorService.updateMonitorResult(id1, adTypes, DataSourceEnum.REAL_DATA, FormalTestManager.numMap.get(id1), null, code); pqMonitorService.updateMonitorResult(id1, adTypes, DataSourceEnum.REAL_DATA, FormalTestManager.numMap.get(id1), null, code);
pqDevService.updateResult(id1.split(CnSocketUtil.SPLIT_TAG)[0], param.getUserId()); pqDevService.updateResult(id1.split(CnSocketUtil.SPLIT_TAG)[0], param.getUserId());
}); });
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
} }
} }
} }
@@ -1145,6 +1118,7 @@ public class SocketContrastResponseService {
break; break;
} }
} }
}
/** /**
@@ -1156,34 +1130,20 @@ public class SocketContrastResponseService {
private void recordWave(PreDetectionParam param, SocketDataMsg socketDataMsg) { private void recordWave(PreDetectionParam param, SocketDataMsg socketDataMsg) {
String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG; String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG;
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue().equals(socketDataMsg.getRequestId())) {
switch (Objects.requireNonNull(dictDataEnumByCode)) { switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS: case SUCCESS:
if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1 && socketDataMsg.getRequestId().equals(SourceOperateCodeEnum.YJC_XYJY.getValue())) {
String monitorId = socketDataMsg.getData();
successComm.add(monitorId);
System.out.println("暂态协议申请成功测点个数:" + successComm.size() + "=====" + FormalTestManager.monitorMap.size());
if (successComm.size() == FormalTestManager.monitorMap.size()) {
FormalTestManager.currentStep = SourceOperateCodeEnum.RECORD_WAVE_STEP2;
// 发送录波指令
this.sendRecordWave(s);
successComm.clear();
failComm.clear();
}
} else if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP2) {
WaveResultDTO waveResultDTO = JSON.parseObject(socketDataMsg.getData(), WaveResultDTO.class); WaveResultDTO waveResultDTO = JSON.parseObject(socketDataMsg.getData(), WaveResultDTO.class);
FormalTestManager.waveResultDTOMap.put(waveResultDTO.getId(), waveResultDTO); FormalTestManager.waveResultDTOMap.put(waveResultDTO.getId(), waveResultDTO);
successComm.add(waveResultDTO.getId()); successComm.add(waveResultDTO.getId());
if (successComm.size() == FormalTestManager.monitorMap.size()) { if (successComm.size() == FormalTestManager.monitorMap.size()) {
FormalTestManager.waveNum += 1; FormalTestManager.waveNum += 1;
scheduledFuture.cancel(true); FormalTestManager.scheduledFuture.cancel(true);
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue()); webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue()); webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
webSend.setData("" + FormalTestManager.waveNum + "次录波完成!"); webSend.setData("" + FormalTestManager.waveNum + "次录波完成!");
@@ -1201,6 +1161,7 @@ public class SocketContrastResponseService {
List<List<DevData>> lists = this.analyzeWaveFile(waveResultDTO1, waveResultDTO2, monitorListDTO, devMonitorId, stdDevMonitorId, FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList())); List<List<DevData>> lists = this.analyzeWaveFile(waveResultDTO1, waveResultDTO2, monitorListDTO, devMonitorId, stdDevMonitorId, FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()));
if (CollUtil.isNotEmpty(lists)) { if (CollUtil.isNotEmpty(lists)) {
// if (false) {
FormalTestManager.devDataMap.put(devMonitorId, lists.get(0)); FormalTestManager.devDataMap.put(devMonitorId, lists.get(0));
FormalTestManager.standardDevDataMap.put(stdDevMonitorId, lists.get(1)); FormalTestManager.standardDevDataMap.put(stdDevMonitorId, lists.get(1));
} else { } else {
@@ -1213,6 +1174,7 @@ public class SocketContrastResponseService {
}); });
if (!flag.get()) { if (!flag.get()) {
// if (false) {
List<DevData> devDataList = FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()); List<DevData> devDataList = FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList());
List<DevData> standardDevDataList = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()); List<DevData> standardDevDataList = FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList());
@@ -1262,14 +1224,6 @@ public class SocketContrastResponseService {
FormalTestManager.preNumTestResultList.add(devLineTestResult); FormalTestManager.preNumTestResultList.add(devLineTestResult);
} }
}); });
} else {
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());
webSend.setData("录波对齐失败!");
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
// 断开与设备的连接,但是不要将Socket移除
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
}
if (FormalTestManager.waveNum < FormalTestManager.curretntTestPlanConfig.getWaveRecord()) { if (FormalTestManager.waveNum < FormalTestManager.curretntTestPlanConfig.getWaveRecord()) {
// 继续录波 // 继续录波
@@ -1277,23 +1231,26 @@ public class SocketContrastResponseService {
failComm.clear(); failComm.clear();
FormalTestManager.waveResultDTOMap.clear(); FormalTestManager.waveResultDTOMap.clear();
if (Objects.isNull(scheduler)) { if (Objects.isNull(FormalTestManager.scheduler)) {
scheduler = Executors.newScheduledThreadPool(1); FormalTestManager.scheduler = Executors.newScheduledThreadPool(1);
scheduledFuture = scheduler.schedule(() -> { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> {
if (!FormalTestManager.isRemoveSocket) { if (!FormalTestManager.isRemoveSocket) {
System.out.println("" + (FormalTestManager.waveNum + 1) + "次录波开始"); System.out.println("" + (FormalTestManager.waveNum + 1) + "次录波开始");
this.sendRecordWave(s); this.sendRecordWave(s);
} }
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
}, 40, TimeUnit.SECONDS); }, 40, TimeUnit.SECONDS);
} }
} else { } else {
// 断开与设备的连接,但是不要将Socket移除 // 断开与设备的连接,但是不要将Socket移除
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
// 配对关系入库
this.pairDataInsert();
List<String> adTypes = FormalTestManager.testItemMap.values().stream().collect(Collectors.toList()); List<String> adTypes = FormalTestManager.testItemMap.values().stream().collect(Collectors.toList());
// 修改检测点状态、设备状态 // 修改检测点状态、设备状态
FormalTestManager.pairsIpMap.forEach((ip1, ip2) -> { FormalTestManager.pairsIpMap.forEach((ip1, ip2) -> {
@@ -1309,19 +1266,29 @@ public class SocketContrastResponseService {
webSend.setData(JSON.toJSONString(FormalTestManager.preNumTestResultList)); webSend.setData(JSON.toJSONString(FormalTestManager.preNumTestResultList));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
} }
} else {
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());
webSend.setData("录波对齐失败!");
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
// 断开与设备的连接,但是不要将Socket移除
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false);
}
successComm.clear(); successComm.clear();
failComm.clear(); failComm.clear();
} }
}
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP2) { if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1) {
String data = socketDataMsg.getData(); String data = socketDataMsg.getData();
if (StrUtil.isNotBlank(data) && data.equals("waiting")) { if (StrUtil.isNotBlank(data) && data.equals("waiting")) {
if (Objects.isNull(scheduler)) { if (Objects.isNull(FormalTestManager.scheduler)) {
scheduler = Executors.newScheduledThreadPool(1); FormalTestManager.scheduler = Executors.newScheduledThreadPool(1);
scheduledFuture = scheduler.schedule(() -> { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> {
if (!FormalTestManager.isRemoveSocket) {
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue()); webSend.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue());
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue()); webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue());
System.out.println("无效的录波指令!"); System.out.println("无效的录波指令!");
@@ -1338,9 +1305,10 @@ public class SocketContrastResponseService {
webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送 webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送
webSend.setData("无效的录波指令!"); webSend.setData("无效的录波指令!");
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
}
scheduler.shutdown(); FormalTestManager.scheduler.shutdown();
scheduler = null; FormalTestManager.scheduler = null;
}, 20, TimeUnit.SECONDS); }, 20, TimeUnit.SECONDS);
} }
} }
@@ -1352,6 +1320,7 @@ public class SocketContrastResponseService {
break; break;
} }
} }
}
/** /**
@@ -1550,7 +1519,7 @@ public class SocketContrastResponseService {
data.add(alignDataVO); data.add(alignDataVO);
}); });
webSend.setData(JSON.toJSONString(data)); webSend.setData(JSON.toJSONString(data, SerializerFeature.WriteMapNullValue));
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSend)); WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSend));
} }
@@ -1803,10 +1772,8 @@ public class SocketContrastResponseService {
* @return * @return
*/ */
private boolean singleMonitorXuCheck(String devMonitorId, String standardDevMonitorId, PreDetection.MonitorListDTO monitorListDTO, List<DevData> devData, List<DevData> stdData, Map<String, String> devNameMapComm, String userId) { private boolean singleMonitorXuCheck(String devMonitorId, String standardDevMonitorId, PreDetection.MonitorListDTO monitorListDTO, List<DevData> devData, List<DevData> stdData, Map<String, String> devNameMapComm, String userId) {
DecimalFormat df = new DecimalFormat("0.000000");
Boolean flag = true; Boolean flag = true;
if (devData.size() < 1 || stdData.size() < 1) {
return false;
} else {
String pairStr = MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, devNameMapComm); String pairStr = MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, devNameMapComm);
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
@@ -1832,12 +1799,12 @@ public class SocketContrastResponseService {
if (CollUtil.isNotEmpty(uDev) && CollUtil.isNotEmpty(uStd)) { if (CollUtil.isNotEmpty(uDev) && CollUtil.isNotEmpty(uStd)) {
DevData.SqlDataDTO.ListDTO uDevList = uDev.get(0).getList(); DevData.SqlDataDTO.ListDTO uDevList = uDev.get(0).getList();
DevData.SqlDataDTO.ListDTO uStdList = uStd.get(0).getList(); DevData.SqlDataDTO.ListDTO uStdList = uStd.get(0).getList();
detail = "被检设备:" + (isDelta ? "Uab" : "Ua") + "=" + uDevList.getA() + detail = "被检设备:" + (isDelta ? "Uab" : "Ua") + "=" + df.format(uDevList.getA()) +
", " + (isDelta ? "Ubc" : "Ub") + "=" + uDevList.getB() + ", " + (isDelta ? "Ubc" : "Ub") + "=" + df.format(uDevList.getB()) +
", " + (isDelta ? "Uca" : "Uc") + "=" + uDevList.getC() + ", " + (isDelta ? "Uca" : "Uc") + "=" + df.format(uDevList.getC()) +
";标准设备:" + (isDelta ? "Uab" : "Ua") + "=" + uStdList.getA() + ";标准设备:" + (isDelta ? "Uab" : "Ua") + "=" + df.format(uStdList.getA()) +
", " + (isDelta ? "Ubc" : "Ub") + "=" + uStdList.getB() + ", " + (isDelta ? "Ubc" : "Ub") + "=" + df.format(uStdList.getB()) +
", " + (isDelta ? "Uca" : "Uc") + "=" + uStdList.getC(); ", " + (isDelta ? "Uca" : "Uc") + "=" + df.format(uStdList.getC());
if (!voltageOrCurrentCheck(uDevList.getA(), uDevList.getB(), uDevList.getC(), uStdList.getA(), uStdList.getB(), uStdList.getC(), true)) { if (!voltageOrCurrentCheck(uDevList.getA(), uDevList.getB(), uDevList.getC(), uStdList.getA(), uStdList.getB(), uStdList.getC(), true)) {
flag = false; flag = false;
// 单个检测点电压校验失败,推送失败消息 // 单个检测点电压校验失败,推送失败消息
@@ -1862,7 +1829,7 @@ public class SocketContrastResponseService {
if (CollUtil.isNotEmpty(iDev) && CollUtil.isNotEmpty(iStd)) { if (CollUtil.isNotEmpty(iDev) && CollUtil.isNotEmpty(iStd)) {
DevData.SqlDataDTO.ListDTO iDevList = iDev.get(0).getList(); DevData.SqlDataDTO.ListDTO iDevList = iDev.get(0).getList();
DevData.SqlDataDTO.ListDTO iStdList = iStd.get(0).getList(); DevData.SqlDataDTO.ListDTO iStdList = iStd.get(0).getList();
detail = "被检设备Ia=" + iDevList.getA() + ",Ib=" + iDevList.getB() + ",Ic=" + iDevList.getC() + "标准设备Ia=" + iStdList.getA() + ",Ib=" + iStdList.getB() + ",Ic=" + iStdList.getC(); detail = "被检设备Ia=" + df.format(iDevList.getA()) + ",Ib=" + df.format(iDevList.getB()) + ",Ic=" + df.format(iDevList.getC()) + "标准设备Ia=" + df.format(iStdList.getA()) + ",Ib=" + df.format(iStdList.getB()) + ",Ic=" + df.format(iStdList.getC());
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)) {
// 单个检测点电流校验失败,推送失败消息 // 单个检测点电流校验失败,推送失败消息
flag = false; flag = false;
@@ -1886,8 +1853,6 @@ public class SocketContrastResponseService {
List<DevData.SqlDataDTO> uUnblanceDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.V_UNBAN.getCode()); List<DevData.SqlDataDTO> uUnblanceDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.V_UNBAN.getCode());
List<DevData.SqlDataDTO> uUnblanceStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.V_UNBAN.getCode()); List<DevData.SqlDataDTO> uUnblanceStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.V_UNBAN.getCode());
DecimalFormat df = new DecimalFormat("0.000000");
if (CollUtil.isNotEmpty(uUnblanceDev) && CollUtil.isNotEmpty(uUnblanceStd)) { if (CollUtil.isNotEmpty(uUnblanceDev) && CollUtil.isNotEmpty(uUnblanceStd)) {
DevData.SqlDataDTO.ListDTO uUnblanceDevList = uUnblanceDev.get(0).getList(); DevData.SqlDataDTO.ListDTO uUnblanceDevList = uUnblanceDev.get(0).getList();
DevData.SqlDataDTO.ListDTO uUnblanceStdList = uUnblanceStd.get(0).getList(); DevData.SqlDataDTO.ListDTO uUnblanceStdList = uUnblanceStd.get(0).getList();
@@ -1999,7 +1964,6 @@ public class SocketContrastResponseService {
} }
return flag; return flag;
} }
}
/** /**
* 从单个检测点中根据检测项code获取SqlDataDTO数据 * 从单个检测点中根据检测项code获取SqlDataDTO数据
@@ -2273,6 +2237,22 @@ public class SocketContrastResponseService {
System.out.println("原始数据插入数据库执行成功========================================="); System.out.println("原始数据插入数据库执行成功=========================================");
} }
/**
* 配对关系入库
*/
private void pairDataInsert() {
List<AdPair> adPairList = new ArrayList<>();
for (String key : FormalTestManager.pairsIdMap.keySet()) {
AdPair adPair = new AdPair();
adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
adPair.setDevMonitorId(key);
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
adPair.setNum(FormalTestManager.numMap.get(key));
adPairList.add(adPair);
}
adPairService.saveBatch(adPairList);
}
/** /**
* 发送录波指令 * 发送录波指令
* *
@@ -2280,7 +2260,7 @@ public class SocketContrastResponseService {
*/ */
private void sendRecordWave(String s) { private void sendRecordWave(String s) {
SocketMsg<String> socketMsg = new SocketMsg<>(); SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP2.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.RECORD_WAVE_STEP1.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.RDRE$01.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.RDRE$01.getValue());
Map<String, List<WaveCommandDTO>> map = new HashMap<>(1); Map<String, List<WaveCommandDTO>> map = new HashMap<>(1);
@@ -2330,6 +2310,29 @@ public class SocketContrastResponseService {
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
} }
private void sendXu(String s) {
SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
phaseSequenceParam.setDataType(Arrays.asList(
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
}
private List<List<DevData>> analyzeWaveFile(WaveResultDTO devWaveResultDTO, WaveResultDTO stdDevWaveResultDTO, PreDetection.MonitorListDTO monitorListDTO, String devMonitorId, String stdDevMonitorId, List<String> adTypeCodeList) { private List<List<DevData>> analyzeWaveFile(WaveResultDTO devWaveResultDTO, WaveResultDTO stdDevWaveResultDTO, PreDetection.MonitorListDTO monitorListDTO, String devMonitorId, String stdDevMonitorId, List<String> adTypeCodeList) {
String stdDevCfgPath = stdDevWaveResultDTO.getPath().replaceAll("\\\\", "/").replace(".CFG", ".cfg"); String stdDevCfgPath = stdDevWaveResultDTO.getPath().replaceAll("\\\\", "/").replace(".CFG", ".cfg");
String devCfgPath = devWaveResultDTO.getPath().replaceAll("\\\\", "/").replace(".CFG", ".cfg"); String devCfgPath = devWaveResultDTO.getPath().replaceAll("\\\\", "/").replace(".CFG", ".cfg");

View File

@@ -52,7 +52,7 @@ public enum SourceOperateCodeEnum {
YJC_MXYZXJY("yjc_mxyzxjy", "模型一致性校验"), YJC_MXYZXJY("yjc_mxyzxjy", "模型一致性校验"),
FORMAL_REAL("formal_real","正式检测"), FORMAL_REAL("formal_real","正式检测"),
RECORD_WAVE_STEP1("record_wave_step1","启动录波_step1"), RECORD_WAVE_STEP1("record_wave_step1","启动录波_step1"),
RECORD_WAVE_STEP2("record_wave_step2","启动录波_step2"), // RECORD_WAVE_STEP2("record_wave_step2","启动录波_step2"),
// SIMULATE_REAL("simulate_real","模拟检测"), // SIMULATE_REAL("simulate_real","模拟检测"),
Coefficient_Check("Coefficient_Check","系数校验"), Coefficient_Check("Coefficient_Check","系数校验"),
QUITE("quit","关闭设备通讯初始化"), QUITE("quit","关闭设备通讯初始化"),

View File

@@ -1603,13 +1603,13 @@ public class DetectionServiceImpl {
switch (anEnum) { switch (anEnum) {
case FREQ: case FREQ:
// if (ObjectUtil.isNull(waveNum)) { if (ObjectUtil.isNull(waveNum)) {
// devDataList.stream().forEach(devData -> devData.getSqlData().stream().filter(sqlData -> sqlData.getDesc().equals(DetectionCodeEnum.FREQ.getCode())).findFirst().ifPresent(sqlData -> { devDataList.stream().forEach(devData -> devData.getSqlData().stream().filter(sqlData -> sqlData.getDesc().equals(DetectionCodeEnum.FREQ.getCode())).findFirst().ifPresent(sqlData -> {
// DevData.SqlDataDTO.ListDTO listDTO = sqlData.getList(); DevData.SqlDataDTO.ListDTO listDTO = sqlData.getList();
// listDTO.setT(55.0); listDTO.setT(55.0);
// sqlData.setList(listDTO); sqlData.setList(listDTO);
// })); }));
// } }
resultMap.put(PowerIndexEnum.FREQ.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum)); resultMap.put(PowerIndexEnum.FREQ.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum));
break; break;
case VRMS: case VRMS:
@@ -1726,6 +1726,9 @@ public class DetectionServiceImpl {
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) { if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) {
Map<String, List<List<Double>>> map = devListMap(devDataList, standardDevDataList, desc, dataRule); Map<String, List<List<Double>>> map = devListMap(devDataList, standardDevDataList, desc, dataRule);
if(ObjectUtil.isNull(map)){
return 4;
}
ContrastNonHarmonicResult result = new ContrastNonHarmonicResult(); ContrastNonHarmonicResult result = new ContrastNonHarmonicResult();
result.setWaveNum(waveNum); result.setWaveNum(waveNum);
@@ -1903,6 +1906,10 @@ public class DetectionServiceImpl {
List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> finalDesc.equals(j.getDesc())) List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> finalDesc.equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); .map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
if(CollUtil.isEmpty(devList) || CollUtil.isEmpty(standardDevList)){
return null;
}
aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA())) aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
.map(x -> x.getA().doubleValue()) .map(x -> x.getA().doubleValue())
.collect(Collectors.toList())); .collect(Collectors.toList()));

View File

@@ -385,6 +385,15 @@ public class PreDetectionServiceImpl implements PreDetectionService {
String jsonString = JSON.toJSONString(map); String jsonString = JSON.toJSONString(map);
SocketMsg<String> socketMsg = new SocketMsg<>(); SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
// AdPlan currentTestPlan = FormalTestManager.currentTestPlan;
// String[] datasource = currentTestPlan.getDatasourceId().split(",");
// if (Arrays.stream(datasource).anyMatch(x -> x.equals(DataSourceEnum.REAL_DATA.getValue()))) {
// socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
// } else if (Arrays.stream(datasource).anyMatch(x -> x.equals(DataSourceEnum.MINUTE_STATISTICS_AVG.getValue()) || x.equals(DataSourceEnum.MINUTE_STATISTICS_MAX.getValue()) || x.equals(DataSourceEnum.MINUTE_STATISTICS_MIN.getValue()) || x.equals(DataSourceEnum.MINUTE_STATISTICS_CP95.getValue()))) {
//
// } else if (Arrays.stream(datasource).anyMatch(x -> x.equals(DataSourceEnum.WAVE_DATA.getValue()))) {
// socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
// }
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
socketMsg.setData(jsonString); socketMsg.setData(jsonString);
PreDetectionParam preDetectionParam = new PreDetectionParam(); PreDetectionParam preDetectionParam = new PreDetectionParam();

View File

@@ -58,7 +58,7 @@ public class CnSocketUtil {
* 比对式-退出检测 * 比对式-退出检测
*/ */
public static void contrastSendquit(String loginName, SourceOperateCodeEnum operateCode, boolean isRemoveSocket) { public static void contrastSendquit(String loginName, SourceOperateCodeEnum operateCode, boolean isRemoveSocket) {
System.out.println("比对式-发送关闭备通讯模块指令。。。。。。。。"); System.out.println("比对式-发送" + operateCode.getMsg() + "指令。。。。。。。。");
SocketMsg<String> socketMsg = new SocketMsg<>(); SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.QUITE.getValue());
socketMsg.setOperateCode(operateCode.getValue()); socketMsg.setOperateCode(operateCode.getValue());

View File

@@ -16,6 +16,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
/** /**
* @Author: cdf * @Author: cdf
@@ -154,4 +156,14 @@ public class FormalTestManager {
*/ */
public static List<DevLineTestResult> preNumTestResultList = new ArrayList<>(); public static List<DevLineTestResult> preNumTestResultList = new ArrayList<>();
/**
* 定时器
*/
public static ScheduledExecutorService scheduler;
/**
* 定时器任务
*/
public static ScheduledFuture<?> scheduledFuture;
} }

View File

@@ -193,7 +193,7 @@ public class HeartbeatHandler extends SimpleChannelInboundHandler<String> {
} else if (CnSocketUtil.SOURCE_TAG.equals(handlerType)) { } else if (CnSocketUtil.SOURCE_TAG.equals(handlerType)) {
CnSocketUtil.quitSendSource(param); CnSocketUtil.quitSendSource(param);
} else { } else {
if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1 || FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP2) { if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1) {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true);
} else { } else {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true);

View File

@@ -60,7 +60,7 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler<Stri
socketContrastResponseService.deal(param, msg); socketContrastResponseService.deal(param, msg);
} catch (Exception e) { } catch (Exception e) {
log.error("处理服务端消息异常", e); log.error("处理服务端消息异常", e);
if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1 || FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP2) { if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1) {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true);
} else { } else {
CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true);

View File

@@ -372,17 +372,18 @@ 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)) {
if (!FormalTestManager.isRemoveSocket) { if (FormalTestManager.isRemoveSocket) {
if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1 || FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP2) { boolean channelActive = SocketManager.isChannelActive(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG);
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); if (channelActive) {
} else if (FormalTestManager.currentStep != SourceOperateCodeEnum.QUITE) {
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true);
} else {
SocketManager.removeUser(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG); SocketManager.removeUser(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG);
} }
} else { } else {
boolean channelActive = SocketManager.isChannelActive(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG); if (FormalTestManager.currentStep == SourceOperateCodeEnum.RECORD_WAVE_STEP1) {
if (channelActive) { CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true);
} else if (FormalTestManager.currentStep != SourceOperateCodeEnum.QUITE) {
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false);
CnSocketUtil.contrastSendquit(preDetectionParam.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true);
} else {
SocketManager.removeUser(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG); SocketManager.removeUser(preDetectionParam.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG);
} }
} }

View File

@@ -13,6 +13,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -44,6 +45,7 @@ import com.njcn.gather.system.dictionary.service.IDictDataService;
import com.njcn.gather.system.dictionary.service.IDictTypeService; import com.njcn.gather.system.dictionary.service.IDictTypeService;
import com.njcn.gather.type.pojo.po.DevType; import com.njcn.gather.type.pojo.po.DevType;
import com.njcn.gather.type.service.IDevTypeService; import com.njcn.gather.type.service.IDevTypeService;
import com.njcn.gather.user.user.pojo.po.SysUser;
import com.njcn.gather.user.user.service.ISysUserService; import com.njcn.gather.user.user.service.ISysUserService;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import com.njcn.web.utils.ExcelUtil; import com.njcn.web.utils.ExcelUtil;
@@ -353,7 +355,10 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
pqDevVO.setDevKey(EncryptionUtil.decoderString(1, pqDevVO.getDevKey())); pqDevVO.setDevKey(EncryptionUtil.decoderString(1, pqDevVO.getDevKey()));
} }
if (StrUtil.isNotBlank(pqDevVO.getCheckBy())) { if (StrUtil.isNotBlank(pqDevVO.getCheckBy())) {
pqDevVO.setCheckBy(userService.getById(pqDevVO.getCheckBy()).getName()); SysUser user = userService.getById(pqDevVO.getCheckBy());
if (ObjectUtil.isNotNull(user)) {
pqDevVO.setCheckBy(user.getName());
}
} }
DevType devType = devTypeService.getById(pqDevVO.getDevType()); DevType devType = devTypeService.getById(pqDevVO.getDevType());
@@ -515,11 +520,18 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
Integer checkState = pqMonitorService.getDevCheckState(devId); Integer checkState = pqMonitorService.getDevCheckState(devId);
Integer checkResult = pqMonitorService.getDevCheckResult(devId); Integer checkResult = pqMonitorService.getDevCheckResult(devId);
pqDevSubService.lambdaUpdate() SysUser user = userService.getById(userId);
LambdaUpdateChainWrapper<PqDevSub> w = pqDevSubService.lambdaUpdate()
.set(PqDevSub::getCheckState, checkState) .set(PqDevSub::getCheckState, checkState)
.set(PqDevSub::getCheckResult, checkResult) .set(PqDevSub::getCheckResult, checkResult)
.set(StrUtil.isNotBlank(userId), PqDevSub::getCheckBy, userId) .set(PqDevSub::getCheckTime, LocalDateTime.now())
.eq(PqDevSub::getDevId, devId).update(); .eq(PqDevSub::getDevId, devId);
if(ObjectUtil.isNotNull(user)){
w.set(PqDevSub::getCheckBy, user.getName());
}
w.update();
PqDevParam.QueryParam param = new PqDevParam.QueryParam(); PqDevParam.QueryParam param = new PqDevParam.QueryParam();
String planId = dev.getPlanId(); String planId = dev.getPlanId();
@@ -539,6 +551,10 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
set = pqDevVOList.stream().map(PqDevVO::getCheckState).collect(Collectors.toSet()); set = pqDevVOList.stream().map(PqDevVO::getCheckState).collect(Collectors.toSet());
if (set.contains(CheckStateEnum.UNCHECKED.getValue())) { if (set.contains(CheckStateEnum.UNCHECKED.getValue())) {
this.baseMapper.updatePlanTestState(planId, CheckStateEnum.CHECKING.getValue()); this.baseMapper.updatePlanTestState(planId, CheckStateEnum.CHECKING.getValue());
} else if (set.contains(CheckStateEnum.CHECKING.getValue())) {
this.baseMapper.updatePlanTestState(planId, CheckStateEnum.CHECKING.getValue());
} else {
this.baseMapper.updatePlanTestState(planId, CheckStateEnum.CHECKED.getValue());
} }
} }
} }

View File

@@ -602,6 +602,12 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
} }
DictData dictData = dictDataService.getById(patternId); DictData dictData = dictDataService.getById(patternId);
if (PatternEnum.CONTRAST.getValue().equals(dictData.getCode())) { if (PatternEnum.CONTRAST.getValue().equals(dictData.getCode())) {
String datasourceId = adPlan.getDatasourceId();
if (datasourceId.contains(DataSourceEnum.REAL_DATA.getValue())
|| datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_CP95.getValue())
|| datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_AVG.getValue())
|| datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_MAX.getValue())
|| datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_MIN.getValue())) {
String[] split = adPlan.getTestItem().split(StrUtil.COMMA); String[] split = adPlan.getTestItem().split(StrUtil.COMMA);
List<DictTree> dictTreeList = dictTreeService.list(new QueryWrapper<DictTree>().in("id", split).eq("state", DataStateEnum.DELETED.getCode())); List<DictTree> dictTreeList = dictTreeService.list(new QueryWrapper<DictTree>().in("id", split).eq("state", DataStateEnum.DELETED.getCode()));
@@ -612,6 +618,8 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
map.put("scriptName", dictTree.getName()); map.put("scriptName", dictTree.getName());
result.add(map); result.add(map);
} }
}
if (StrUtil.isBlank(scriptType)) { if (StrUtil.isBlank(scriptType)) {
if (adPlan.getDatasourceId().contains(DataSourceEnum.WAVE_DATA.getValue())) { if (adPlan.getDatasourceId().contains(DataSourceEnum.WAVE_DATA.getValue())) {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();

View File

@@ -29,7 +29,6 @@ import com.njcn.gather.detection.pojo.vo.DetectionData;
import com.njcn.gather.detection.service.IAdPariService; import com.njcn.gather.detection.service.IAdPariService;
import com.njcn.gather.detection.service.impl.DetectionServiceImpl; import com.njcn.gather.detection.service.impl.DetectionServiceImpl;
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.device.pojo.enums.CommonEnum; import com.njcn.gather.device.pojo.enums.CommonEnum;
import com.njcn.gather.device.pojo.enums.PatternEnum; import com.njcn.gather.device.pojo.enums.PatternEnum;
import com.njcn.gather.device.pojo.po.PqDev; import com.njcn.gather.device.pojo.po.PqDev;
@@ -96,6 +95,8 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.njcn.gather.detection.util.socket.FormalTestManager.waveNum;
/** /**
* @author caozehui * @author caozehui
* @data 2024-12-30 * @data 2024-12-30
@@ -1708,38 +1709,84 @@ public class ResultServiceImpl implements IResultService {
} }
AdPlan finalPlan = plan; AdPlan finalPlan = plan;
// 实时数据结果 // 实时数据结果
List<ContrastNonHarmonicResult> nonHarmonicResults = contrastNonHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), null, null, false, monitorId, null); List<ContrastNonHarmonicResult> realNonHarmonicResults = contrastNonHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), null, null, false, monitorId, null);
Map<Integer, List<ContrastNonHarmonicResult>> numMap = nonHarmonicResults.stream() Map<Integer, List<ContrastNonHarmonicResult>> numNonHarmonicMap = realNonHarmonicResults.stream()
.sorted(Comparator.comparing(ContrastNonHarmonicResult::getNum)) .sorted(Comparator.comparing(ContrastNonHarmonicResult::getNum))
.collect(Collectors.groupingBy(ContrastNonHarmonicResult::getNum, LinkedHashMap::new, Collectors.toList())); .collect(Collectors.groupingBy(ContrastNonHarmonicResult::getNum, LinkedHashMap::new, Collectors.toList()));
List<ContrastHarmonicResult> realHarmonicResults = contrastHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), null, null, false, monitorId, null);
Map<Integer, List<ContrastHarmonicResult>> numHarmonicMap = realHarmonicResults.stream()
.sorted(Comparator.comparing(ContrastHarmonicResult::getNum))
.collect(Collectors.groupingBy(ContrastHarmonicResult::getNum, LinkedHashMap::new, Collectors.toList()));
numMap.forEach((num, resultList) -> { Map<Integer, List<Integer>> numResutMap = new TreeMap<>();
numNonHarmonicMap.forEach((num, resultList) -> {
numResutMap.put(num, resultList.stream().map(ContrastNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()));
});
numHarmonicMap.forEach((num, resultList) -> {
List<Integer> list = numResutMap.getOrDefault(num, new ArrayList<>());
list.addAll(resultList.stream().map(ContrastHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()));
numResutMap.put(num, list);
});
numResutMap.forEach((num, resultList) -> {
List<DataSourceResultVO> dataSourceResultVOList = new ArrayList<>(); List<DataSourceResultVO> dataSourceResultVOList = new ArrayList<>();
DataSourceResultVO realDataSourceResultVO = new DataSourceResultVO(); DataSourceResultVO realDataSourceResultVO = new DataSourceResultVO();
realDataSourceResultVO.setDataSourceCode(DataSourceEnum.REAL_DATA.getValue()); realDataSourceResultVO.setDataSourceCode(DataSourceEnum.REAL_DATA.getValue());
realDataSourceResultVO.setDataSourceName(DataSourceEnum.REAL_DATA.getMsg()); realDataSourceResultVO.setDataSourceName(DataSourceEnum.REAL_DATA.getMsg());
List<Integer> resultFlagList = resultList.stream().map(ContrastNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()); realDataSourceResultVO.setCheckResult(StorageUtil.getInteger(resultList));
realDataSourceResultVO.setCheckResult(StorageUtil.getInteger(resultFlagList));
dataSourceResultVOList.add(realDataSourceResultVO); dataSourceResultVOList.add(realDataSourceResultVO);
result.put(num, dataSourceResultVOList);
});
Map<Integer, Map<Integer, List<Integer>>> waveNumMap = new TreeMap<>();
// 录波数据结果 // 录波数据结果
List<ContrastNonHarmonicResult> waveNonHarmonicResults = contrastNonHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), num, null, true, monitorId, null); List<ContrastNonHarmonicResult> waveNonHarmonicResults = contrastNonHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), null, null, true, monitorId, null);
Map<Integer, List<ContrastNonHarmonicResult>> waveNumMap = waveNonHarmonicResults.stream() Map<Integer, List<ContrastNonHarmonicResult>> waveNumNonHarmonicMap = waveNonHarmonicResults.stream()
.sorted(Comparator.comparing(ContrastNonHarmonicResult::getNum))
.collect(Collectors.groupingBy(ContrastNonHarmonicResult::getNum, LinkedHashMap::new, Collectors.toList()));
List<ContrastHarmonicResult> waveHarmonicResults = contrastHarmonicService.listAllResultData(String.valueOf(finalPlan.getCode()), null, null, true, monitorId, null);
Map<Integer, List<ContrastHarmonicResult>> waveNumHarmonicMap = waveHarmonicResults.stream()
.sorted(Comparator.comparing(ContrastHarmonicResult::getNum))
.collect(Collectors.groupingBy(ContrastHarmonicResult::getNum, LinkedHashMap::new, Collectors.toList()));
waveNumNonHarmonicMap.forEach((num, resultList) -> {
LinkedHashMap<Integer, List<ContrastNonHarmonicResult>> collect = resultList.stream()
.sorted(Comparator.comparing(ContrastNonHarmonicResult::getWaveNum)) .sorted(Comparator.comparing(ContrastNonHarmonicResult::getWaveNum))
.collect(Collectors.groupingBy(ContrastNonHarmonicResult::getWaveNum, LinkedHashMap::new, Collectors.toList())); .collect(Collectors.groupingBy(ContrastNonHarmonicResult::getWaveNum, LinkedHashMap::new, Collectors.toList()));
waveNumMap.forEach((waveNum, resultList1) -> { Map<Integer, List<Integer>> map = new TreeMap<>();
collect.forEach((waveNum, resultList1) -> {
map.put(waveNum, resultList1.stream().map(ContrastNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()));
});
waveNumMap.put(num, map);
});
waveNumHarmonicMap.forEach((num, resultList) -> {
Map<Integer, List<Integer>> map = waveNumMap.getOrDefault(num, new TreeMap<>());
LinkedHashMap<Integer, List<ContrastHarmonicResult>> collect = resultList.stream().sorted(Comparator.comparing(ContrastHarmonicResult::getWaveNum))
.collect(Collectors.groupingBy(ContrastHarmonicResult::getWaveNum, LinkedHashMap::new, Collectors.toList()));
collect.forEach((waveNum, resultList1) -> {
List<Integer> list = map.getOrDefault(waveNum, new ArrayList<>());
list.addAll(resultList1.stream().map(ContrastHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()));
map.put(waveNum, list);
});
waveNumMap.put(num, map);
});
waveNumMap.forEach((num, map) -> {
List<DataSourceResultVO> orDefault = result.getOrDefault(num, new ArrayList<>());
map.forEach((waveNum, resultList) -> {
DataSourceResultVO waveDataSourceResultVO = new DataSourceResultVO(); DataSourceResultVO waveDataSourceResultVO = new DataSourceResultVO();
waveDataSourceResultVO.setDataSourceCode(DataSourceEnum.WAVE_DATA.getValue() + CnSocketUtil.SPLIT_TAG + waveNum); waveDataSourceResultVO.setDataSourceCode(DataSourceEnum.WAVE_DATA.getValue() + CnSocketUtil.SPLIT_TAG + waveNum);
waveDataSourceResultVO.setDataSourceName(DataSourceEnum.WAVE_DATA.getMsg() + StrUtil.SPACE + waveNum); waveDataSourceResultVO.setDataSourceName(DataSourceEnum.WAVE_DATA.getMsg() + StrUtil.SPACE + waveNum);
List<Integer> tempResultFlagList = resultList1.stream().map(ContrastNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()); waveDataSourceResultVO.setCheckResult(StorageUtil.getInteger(resultList));
waveDataSourceResultVO.setCheckResult(StorageUtil.getInteger(tempResultFlagList)); orDefault.add(waveDataSourceResultVO);
dataSourceResultVOList.add(waveDataSourceResultVO);
}); });
result.put(num, orDefault);
result.put(num, dataSourceResultVOList);
}); });
return result; return result;

View File

@@ -166,9 +166,12 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code); DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
LambdaQueryWrapper<ContrastNonHarmonicResult> wrapper1 = new LambdaQueryWrapper<ContrastNonHarmonicResult>() LambdaQueryWrapper<ContrastNonHarmonicResult> wrapper1 = new LambdaQueryWrapper<ContrastNonHarmonicResult>()
.in(CollUtil.isNotEmpty(adType), ContrastNonHarmonicResult::getAdType, adType); .in(CollUtil.isNotEmpty(adType), ContrastNonHarmonicResult::getAdType, adType);
wrapper1.and(w -> {
for (String id : ids) { for (String id : ids) {
wrapper1.like(ContrastNonHarmonicResult::getDevMonitorId, id); w.or().like(ContrastNonHarmonicResult::getDevMonitorId, id);
} }
});
List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.list(wrapper1); List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.list(wrapper1);
Map<String, List<ContrastNonHarmonicResult>> chnMap1 = nonHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[1], Collectors.toList())); Map<String, List<ContrastNonHarmonicResult>> chnMap1 = nonHarmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[1], Collectors.toList()));
chnMap1.forEach((chn, vList) -> { chnMap1.forEach((chn, vList) -> {
@@ -181,9 +184,12 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code); DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
LambdaQueryWrapper<ContrastHarmonicResult> wrapper2 = new LambdaQueryWrapper<ContrastHarmonicResult>() LambdaQueryWrapper<ContrastHarmonicResult> wrapper2 = new LambdaQueryWrapper<ContrastHarmonicResult>()
.in(CollUtil.isNotEmpty(adType), ContrastHarmonicResult::getAdType, adType); .in(CollUtil.isNotEmpty(adType), ContrastHarmonicResult::getAdType, adType);
wrapper2.and(w -> {
for (String id : ids) { for (String id : ids) {
wrapper2.like(ContrastHarmonicResult::getDevMonitorId, id); w.like(ContrastHarmonicResult::getDevMonitorId, id);
} }
});
List<ContrastHarmonicResult> harmonicResultList = contrastHarmonicService.list(wrapper2); List<ContrastHarmonicResult> harmonicResultList = contrastHarmonicService.list(wrapper2);
Map<String, List<ContrastHarmonicResult>> chnMap2 = harmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[1], Collectors.toList())); Map<String, List<ContrastHarmonicResult>> chnMap2 = harmonicResultList.stream().collect(Collectors.groupingBy(x -> x.getDevMonitorId().split("_")[1], Collectors.toList()));
chnMap2.forEach((chn, vList) -> { chnMap2.forEach((chn, vList) -> {