自动检测代码

This commit is contained in:
2025-06-23 10:57:24 +08:00
parent c2c5c9668e
commit 512ed2a542
4 changed files with 81 additions and 67 deletions

View File

@@ -63,7 +63,6 @@ import static com.njcn.gather.detection.util.socket.FormalTestManager.harmonicRe
@RequiredArgsConstructor
public class SocketDevResponseService {
private final String handlerStr = "_Dev";
private final String handlerSourceStr = "_Source";
private final String stepTag = "&&";
@@ -124,12 +123,10 @@ public class SocketDevResponseService {
/**
* 保存成功的协议
*/
DictDataEnum dataRule;
//标识当前检测小项是否结束
public void deal(PreDetectionParam param, String msg) throws Exception {
SocketDataMsg socketDataMsg = MsgUtil.socketDataMsg(msg);
String[] tem = socketDataMsg.getRequestId().split(stepTag);
@@ -160,14 +157,14 @@ public class SocketDevResponseService {
case REPORT_CAT:
SourceOperateCodeEnum temOp = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
switch (Objects.requireNonNull(dictDataEnumByCode)){
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
SocketManager.removeUser(param.getUserPageId()+handlerStr);
SocketManager.removeUser(param.getUserPageId() + handlerStr);
break;
case UNPROCESSED_BUSINESS:
break;
default:
SocketManager.removeUser(param.getUserPageId()+handlerStr);
SocketManager.removeUser(param.getUserPageId() + handlerStr);
System.out.println(socketDataMsg);
}
break;
@@ -180,7 +177,6 @@ public class SocketDevResponseService {
}
}
/**
* 系数校验
*/
@@ -209,17 +205,12 @@ public class SocketDevResponseService {
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(xiSocket));
}
}
break;
case UNPROCESSED_BUSINESS:
break;
case NORMAL_RESPONSE:
break;
case DATA_RESOLVE:
break;
case COMMUNICATION_ERR:
break;
@@ -232,7 +223,6 @@ public class SocketDevResponseService {
//系数下发后的响应
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
if (CollUtil.isNotEmpty(XiNumberManager.devXiList)) {
//单台装置系数下发后,需要删除集合中存在的当前装置
String devIp = XiNumberManager.devXiList.get(0);
@@ -274,13 +264,10 @@ public class SocketDevResponseService {
break;
case UNPROCESSED_BUSINESS:
break;
case NORMAL_RESPONSE:
break;
case DATA_RESOLVE:
//quitSend(param);
break;
case COMMUNICATION_ERR:
@@ -410,6 +397,9 @@ public class SocketDevResponseService {
private void handleFinalStep(PreDetectionParam param) {
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_end.getValue(), XiNumberManager.devParameterList.get(1));
System.out.println("-------------------------已经全部结束----------------------");
//如果是系数校验则终止
if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) {
CnSocketUtil.quitSend(param);
//修改设备表Factor_Check_Result字段
XiNumberManager.devXiNumDataMap.forEach((key, val) -> {
@@ -424,6 +414,53 @@ public class SocketDevResponseService {
iPqDevService.update(updateWrapper);
updateWrapper.clear();
});
} else if (param.getOperateType().equals(SourceOperateCodeEnum.FAST_TEST.getValue())) {
//如果是一键检测,执行完系数校验后继续进行正式检测
//开始下源控制脚本
PqScriptIssueParam issueParam = new PqScriptIssueParam();
issueParam.setPlanId(param.getPlanId());
issueParam.setSourceId(param.getSourceId());
issueParam.setDevIds(param.getDevIds());
issueParam.setScriptId(param.getScriptId());
issueParam.setIsPhaseSequence(SourceOperateCodeEnum.FORMAL_TEST.getValue());
SocketMsg<String> socketMsg = new SocketMsg<>();
socketMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
List<SourceIssue> sourceIssues;
//正式检测
sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam);
sourceIssues = sourceIssues.stream().sorted(Comparator.comparing(SourceIssue::getIndex)).collect(Collectors.toList());
// 使用 LinkedHashMap 保持分组顺序
Map<String, List<SourceIssue>> groupedIssues = sourceIssues.stream()
.collect(Collectors.groupingBy(
SourceIssue::getType,
LinkedHashMap::new,
Collectors.toList()
));
// 将分组后的元素合并成一个新的集合,保持原有顺序
sourceIssues = groupedIssues.values().stream()
.flatMap(List::stream)
.collect(Collectors.toList());
// 存放所有检测小项
SocketManager.addSourceList(sourceIssues);
// 按照大项分组。key为大项codevalue为小项个数
Map<String, Long> sourceIssueMap = sourceIssues.stream().collect(Collectors.groupingBy(SourceIssue::getType, Collectors.counting()));
SocketManager.initMap(sourceIssueMap);
socketMsg.setData(JSON.toJSONString(sourceIssues.get(0)));
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssues.get(0).getType());
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg));
//告诉前端当前项开始了
WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(sourceIssues.get(0).getType() + stepBegin);
webSocketVO.setDesc(null);
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
}
@@ -499,7 +536,6 @@ public class SocketDevResponseService {
//表格数据
CnSocketUtil.sendToWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue(), coefficientVO, null);
});
DevXiNumData devXiNumData = createDevXiNumData(devIp, gf, xiFlag.get());
saveDevXiNumData(devIp, devXiNumData);
}
@@ -546,7 +582,6 @@ public class SocketDevResponseService {
}
}
/**
* 比较两个数的差值,是否再limit范围内
*/
@@ -567,11 +602,9 @@ public class SocketDevResponseService {
}
}
private void assemblyEntity(List<DevData> deList, DevXiNumData.F F, DevXiNumData.GF startF, CoefficientVO coefficientVO, CoefficientVO.DevParameter devParameter) {
//表示接收完成,必须保证10个数
if (deList.size() >= 10) {
List<Double> aList = deList.stream().map(it -> it.getSqlData().get(0).getList().getA()).sorted().collect(Collectors.toList());
List<Double> bList = deList.stream().map(it -> it.getSqlData().get(0).getList().getB()).sorted().collect(Collectors.toList());
List<Double> cList = deList.stream().map(it -> it.getSqlData().get(0).getList().getC()).sorted().collect(Collectors.toList());
@@ -594,7 +627,6 @@ public class SocketDevResponseService {
coefficientVO.setAIeData(String.valueOf(optionalIA));
coefficientVO.setBIeData(String.valueOf(optionalIB));
coefficientVO.setCIeData(String.valueOf(optionalIC));
if (XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) {
Integer aXi = BigDecimal.valueOf(devParameter.getDevVolt() * startF.getF().getUa_gain() / optionalA).setScale(0, RoundingMode.HALF_UP).intValue();
Integer bXi = BigDecimal.valueOf(devParameter.getDevVolt() * startF.getF().getUb_gain() / optionalB).setScale(0, RoundingMode.HALF_UP).intValue();
@@ -666,12 +698,8 @@ public class SocketDevResponseService {
//通讯校验成功
if (!param.getOperateType().equals(SourceOperateCodeEnum.TEST_TEM_START.getValue())) {
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
}
System.out.println("设备通讯校验!" + successComm.size() + "=====" + FormalTestManager.monitorIdListComm.size());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
if (!param.getOperateType().equals(SourceOperateCodeEnum.TEST_TEM_START.getValue())) {
SocketDataMsg temMsg = new SocketDataMsg();
@@ -680,7 +708,6 @@ public class SocketDevResponseService {
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(temMsg));
}
//开始进行协议校验
successComm.clear();
failComm.clear();
@@ -695,15 +722,11 @@ public class SocketDevResponseService {
System.out.println("开始协议校验》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》");
SocketManager.sendMsg(s, json);
}
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));
@@ -713,7 +736,6 @@ public class SocketDevResponseService {
failComm.add(socketDataMsg.getData());
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
completeJudgment(param);
break;
case RE_OPERATE:
//出现已经初始化情况,发送用户用户确认是否继续检测
@@ -731,6 +753,7 @@ public class SocketDevResponseService {
}
//检测结束判断
private void completeJudgment(PreDetectionParam param) {
System.out.println("成功失败测点数量" + successComm.size() + ":" + failComm.size() + "监测点总数" + FormalTestManager.monitorIdListComm.size());
@@ -770,7 +793,6 @@ public class SocketDevResponseService {
webSend.setData(string);
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
}
successComm.clear();
failComm.clear();
Map<String, List<PreDetection>> map = new HashMap<>(1);
@@ -782,10 +804,7 @@ public class SocketDevResponseService {
System.out.println("开始暂态协议校验++++++++++");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
}
completeJudgment(param);
} else if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue())) {
successComm.add(socketDataMsg.getData());
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
@@ -837,7 +856,6 @@ public class SocketDevResponseService {
}
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
if (isContinue) {
//System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size());
if (icdCheckDataMap.size() == icdTypeList.size()) {
@@ -898,7 +916,6 @@ public class SocketDevResponseService {
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssues.get(0).getType());
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg));
//告诉前端当前项开始了
WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(sourceIssues.get(0).getType() + stepBegin);
@@ -906,8 +923,8 @@ public class SocketDevResponseService {
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
} else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType()) || SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())) {
//预检测的相序检测 以及系数校验都需要进行相序检测
} else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType()) || SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())||SourceOperateCodeEnum.FAST_TEST.getValue().equals(param.getOperateType())) {
//预检测的相序检测 以及系数校验、一键检测 都需要进行相序检测
issueParam.setIsPhaseSequence(SourceOperateCodeEnum.PHASE_TEST.getValue());
sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam);
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
@@ -956,7 +973,6 @@ public class SocketDevResponseService {
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
completeJudgment(param);
break;
case RE_OPERATE:
//出现已经初始化情况,发送用户用户确认是否继续检测
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
@@ -1042,6 +1058,7 @@ public class SocketDevResponseService {
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(dataMsg));
}
//检测不合格关闭设备服务
if (info.stream().anyMatch(it -> !it.getIsQualified())) {
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
@@ -1069,7 +1086,7 @@ public class SocketDevResponseService {
System.out.println("预检测流程结束-----------------关闭源");
//同时关闭设备三个步骤
CnSocketUtil.quitSend(param);
} else if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) {
} else if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue()) || param.getOperateType().equals(SourceOperateCodeEnum.FAST_TEST.getValue())) {
WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.big_start.getValue());
@@ -1274,7 +1291,6 @@ public class SocketDevResponseService {
}
/**
* 组装实体推送给前端
*/
@@ -1653,7 +1669,7 @@ public class SocketDevResponseService {
//字典树
SocketManager.valueTypeMap = iPqScriptCheckDataService.getValueTypeMap(param.getScriptId());
if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) {
if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue()) || param.getOperateType().equals(SourceOperateCodeEnum.FAST_TEST.getValue())) {
initXiManager(param);
}

View File

@@ -197,7 +197,7 @@ public class SocketSourceResponseService {
phaseSequenceParam.setMoniterIdList(monitorIdList);
phaseSequenceParam.setDataType(Arrays.asList("real$VRMS", "real$IRMS"));
phaseSequenceParam.setReadCount(10);
phaseSequenceParam.setIgnoreCount(7);
phaseSequenceParam.setIgnoreCount(0);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
@@ -219,8 +219,8 @@ public class SocketSourceResponseService {
/**
* 装置检测(当源初始化成功后,直接向装置通道向装置服务器发送,装置检测)
*
* @param param
* @param socketDataMsg
* @param param 参数
* @param socketDataMsg 消息
*/
private void detectionDev(PreDetectionParam param, SocketDataMsg socketDataMsg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());

View File

@@ -80,7 +80,7 @@ public enum SourceOperateCodeEnum {
TEST_STOP("7","停止检测"),
RE_ERROR_TEST("8","不合格项复检"),
SIMULATE_TEST("9","模拟检测"),
FAST_TEST("10","一键检测"),
/**
* 系数校验步骤

View File

@@ -87,6 +87,9 @@ public class PreDetectionServiceImpl implements PreDetectionService {
查询计划什么模式的(除了对比式,其他都是一个计划对应一个源)
*/
AdPlan plan = iAdPlanService.getById(param.getPlanId());
param.setScriptId(plan.getScriptId());
param.setErrorSysId(plan.getErrorSysId());
param.setCode(String.valueOf(plan.getCode()));
if (ObjectUtil.isNotNull(plan)) {
String code = dictDataService.getDictDataById(plan.getPattern()).getCode();
DictDataEnum dictDataEnumByCode = DictDataEnum.getDictDataEnumByCode(code);
@@ -135,14 +138,9 @@ public class PreDetectionServiceImpl implements PreDetectionService {
private void sendYtxSocket(PreDetectionParam param) {
WebServiceManager.addPreDetectionParam(param);
AdPlan plan = iAdPlanService.getById(param.getPlanId());
AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>().eq(AdPlanSource::getPlanId, param.getPlanId()));
param.setSourceId(planSource.getSourceId());
param.setScriptId(plan.getScriptId());
param.setErrorSysId(plan.getErrorSysId());
param.setCode(String.valueOf(plan.getCode()));
if (ObjectUtil.isNotNull(planSource)) {
//获取源初始化参数
SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(planSource.getSourceId());
if (ObjectUtil.isNotNull(sourceParam)) {