From 512ed2a54262b27a8fd7b1365a99287be75dec66 Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Mon, 23 Jun 2025 10:57:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A3=80=E6=B5=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/SocketDevResponseService.java | 132 ++++++++++-------- .../handler/SocketSourceResponseService.java | 6 +- .../pojo/enums/SourceOperateCodeEnum.java | 2 +- .../service/impl/PreDetectionServiceImpl.java | 8 +- 4 files changed, 81 insertions(+), 67 deletions(-) diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java index b4a25364..1f80e438 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java @@ -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); @@ -156,18 +153,18 @@ public class SocketDevResponseService { case Coefficient_Check: coefficient(param, socketDataMsg); break; - //报告处理 + //报告处理 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,20 +397,70 @@ 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("-------------------------已经全部结束----------------------"); - CnSocketUtil.quitSend(param); - //修改设备表Factor_Check_Result字段 - XiNumberManager.devXiNumDataMap.forEach((key, val) -> { - DevXiNumData small = XiNumberManager.smallDevXiNumDataMap.get(key); - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PqDev::getId, FormalTestManager.devIdMapComm.get(key)); - if (val.getResultFlag() == 0 || small.getResultFlag() == 0) { - updateWrapper.set(PqDev::getFactorCheckResult, 0); - } else { - updateWrapper.set(PqDev::getFactorCheckResult, 1); - } - iPqDevService.update(updateWrapper); - updateWrapper.clear(); - }); + + //如果是系数校验则终止 + if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) { + CnSocketUtil.quitSend(param); + //修改设备表Factor_Check_Result字段 + XiNumberManager.devXiNumDataMap.forEach((key, val) -> { + DevXiNumData small = XiNumberManager.smallDevXiNumDataMap.get(key); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(PqDev::getId, FormalTestManager.devIdMapComm.get(key)); + if (val.getResultFlag() == 0 || small.getResultFlag() == 0) { + updateWrapper.set(PqDev::getFactorCheckResult, 0); + } else { + updateWrapper.set(PqDev::getFactorCheckResult, 1); + } + 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 socketMsg = new SocketMsg<>(); + socketMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue()); + List sourceIssues; + + //正式检测 + sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam); + sourceIssues = sourceIssues.stream().sorted(Comparator.comparing(SourceIssue::getIndex)).collect(Collectors.toList()); + // 使用 LinkedHashMap 保持分组顺序 + Map> 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为大项code,value为小项个数 + Map 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 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 deList, DevXiNumData.F F, DevXiNumData.GF startF, CoefficientVO coefficientVO, CoefficientVO.DevParameter devParameter) { //表示接收完成,必须保证10个数 if (deList.size() >= 10) { - List aList = deList.stream().map(it -> it.getSqlData().get(0).getList().getA()).sorted().collect(Collectors.toList()); List bList = deList.stream().map(it -> it.getSqlData().get(0).getList().getB()).sorted().collect(Collectors.toList()); List 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> 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 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 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 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); } diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java index cd554c7a..a4093c8c 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java @@ -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()); diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java index 4eed63f0..d282384a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java @@ -80,7 +80,7 @@ public enum SourceOperateCodeEnum { TEST_STOP("7","停止检测"), RE_ERROR_TEST("8","不合格项复检"), SIMULATE_TEST("9","模拟检测"), - + FAST_TEST("10","一键检测"), /** * 系数校验步骤 diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java index 520820c5..b55346b3 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java @@ -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().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)) {