From 08be6c15fb4fbb926841bfbe7f504a77c604bc3e Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Fri, 7 Mar 2025 09:16:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=8B=E6=8E=A7=E6=BA=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreDetectionController.java | 73 ++++++--- .../handler/SocketSourceResponseService.java | 40 ++++- .../pojo/enums/SourceOperateCodeEnum.java | 2 + .../pojo/param/SimulateDetectionParam.java | 40 +++++ .../service/PreDetectionService.java | 27 +++- .../service/impl/PreDetectionServiceImpl.java | 152 ++++++++++++++++-- .../util/socket/WebServiceManager.java | 13 ++ .../util/socket/web/WebSocketHandler.java | 22 +-- .../service/impl/PqScriptDtlsServiceImpl.java | 2 +- 9 files changed, 314 insertions(+), 57 deletions(-) create mode 100644 detection/src/main/java/com/njcn/gather/detection/pojo/param/SimulateDetectionParam.java diff --git a/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java b/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java index 428477c9..69cebdde 100644 --- a/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java +++ b/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java @@ -7,19 +7,15 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.gather.detection.handler.SocketDevResponseService; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.param.PreDetectionParam; +import com.njcn.gather.detection.pojo.param.SimulateDetectionParam; import com.njcn.gather.detection.pojo.vo.SocketMsg; import com.njcn.gather.detection.service.PreDetectionService; import com.njcn.gather.detection.service.impl.DetectionServiceImpl; -import com.njcn.gather.detection.util.socket.MsgUtil; -import com.njcn.gather.detection.util.socket.SocketManager; import com.njcn.gather.detection.util.socket.XiNumberManager; import com.njcn.gather.detection.util.socket.cilent.NettyClient; import com.njcn.gather.detection.util.socket.cilent.NettyDevClientHandler; -import com.njcn.gather.detection.util.socket.cilent.NettySourceClientHandler; import com.njcn.gather.device.pojo.vo.PreDetection; import com.njcn.gather.device.service.IPqDevService; -import com.njcn.gather.script.pojo.param.PqScriptIssueParam; -import com.njcn.gather.script.pojo.po.SourceIssue; import com.njcn.gather.script.service.IPqScriptDtlsService; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.HttpResultUtil; @@ -54,9 +50,6 @@ public class PreDetectionController extends BaseController { private final SocketDevResponseService socketDevResponseService; - - - /** * 开始检测 */ @@ -64,12 +57,48 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("开始检测") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult startPreTest(@RequestBody @Validated PreDetectionParam param){ + public HttpResult startPreTest(@RequestBody @Validated PreDetectionParam param) { String methodDescribe = getMethodDescribe("startPreTest"); preDetectionService.sourceCommunicationCheck(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } + @PostMapping("/ytxCheckSimulate") + @OperateInfo + @ApiOperation("模拟检测-通讯校验") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult ytxCheckSimulate(@RequestBody @Validated SimulateDetectionParam param) { + String methodDescribe = getMethodDescribe("ytxCheckSimulate"); + preDetectionService.ytxCheckSimulate(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + /** + * 模拟检测 + */ + @PostMapping("/startSimulateTest") + @OperateInfo + @ApiOperation("模拟检测") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult startTestSimulate(@RequestBody @Validated SimulateDetectionParam param) { + String methodDescribe = getMethodDescribe("startTestSimulate"); + preDetectionService.sendScript(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + /** + * 关闭检测 + */ + @PostMapping("/closeSimulateTest") + @OperateInfo + @ApiOperation("停止模拟检测") + @ApiImplicitParam(name = "param", value = "查询参数", required = true) + public HttpResult closeSimulateTest(@RequestBody @Validated SimulateDetectionParam param) { + String methodDescribe = getMethodDescribe("closeSimulateTest"); + preDetectionService.closeTestSimulate(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + /** * 关闭检测 */ @@ -77,7 +106,7 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("关闭检测") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult closeCheck(@RequestBody @Validated PreDetectionParam param){ + public HttpResult closeCheck(@RequestBody @Validated PreDetectionParam param) { String methodDescribe = getMethodDescribe("closeCheck"); preDetectionService.closeCheck(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); @@ -90,7 +119,7 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("下一步检测") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult nextScript(@RequestBody @Validated PreDetectionParam param){ + public HttpResult nextScript(@RequestBody @Validated PreDetectionParam param) { String methodDescribe = getMethodDescribe("nextScript"); preDetectionService.nextScript(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); @@ -104,7 +133,7 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("系数校验") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult coefficientCheck(@RequestBody PreDetectionParam param){ + public HttpResult coefficientCheck(@RequestBody PreDetectionParam param) { String methodDescribe = getMethodDescribe("coefficientCheck"); preDetectionService.coefficientCheck(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); @@ -118,7 +147,7 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("暂停检测") @ApiImplicitParam(name = "param", value = "参数", required = true) - public HttpResult temStopTest(){ + public HttpResult temStopTest() { String methodDescribe = getMethodDescribe("temStopTest"); preDetectionService.temStopTest(); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); @@ -131,14 +160,13 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("重新开始检测") @ApiImplicitParam(name = "param", value = "参数", required = true) - public HttpResult restartTemTest(@RequestBody PreDetectionParam param){ + public HttpResult restartTemTest(@RequestBody PreDetectionParam param) { String methodDescribe = getMethodDescribe("restartTemTest"); preDetectionService.restartTemTest(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } - /** * 测试 */ @@ -146,13 +174,11 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("测试") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult startTest(@RequestBody PreDetectionParam param){ + public HttpResult startTest(@RequestBody PreDetectionParam param) { String methodDescribe = getMethodDescribe("startTest"); //preDetectionService.startTest(param); - - List pqDevList = iPqDevService.getDevInfo(param.getDevIds()); XiNumberManager.xiDevList = pqDevList; String s = param.getUserPageId() + "_Dev"; @@ -160,9 +186,9 @@ public class PreDetectionController extends BaseController { socketMsg.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$01.getValue()); PreDetection preDetection = pqDevList.get(0); - Map map = new HashMap<>(); - map.put("devIP",preDetection.getDevIP()); - map.put("chnNum",preDetection.getDevChns()); + Map map = new HashMap<>(); + map.put("devIP", preDetection.getDevIP()); + map.put("chnNum", preDetection.getDevChns()); socketMsg.setData(JSON.toJSONString(map)); @@ -170,7 +196,6 @@ public class PreDetectionController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } - - - + + } 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 e102cf6c..3fd161ce 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 @@ -61,7 +61,11 @@ public class SocketSourceResponseService { switch (enumByCode) { //源初始化 case YJC_YTXJY: - detectionDev(param, socketDataMsg); + if (ObjectUtil.isNotNull(param.getPlanId())) { + detectionDev(param, socketDataMsg); + } else { + System.out.println("模拟检测-源初始化成功"); + } break; //相序检测 case YJC_XUJY: @@ -69,7 +73,11 @@ public class SocketSourceResponseService { break; //正式检测 case FORMAL_REAL: - senParamToDev(param, socketDataMsg); + if (ObjectUtil.isNotNull(param.getPlanId())) { + senParamToDev(param, socketDataMsg); + } else { + handleSimulateTest(param, socketDataMsg); + } break; //系数校验 case Coefficient_Check: @@ -84,8 +92,34 @@ public class SocketSourceResponseService { } else { System.out.println("fggggggggggggggggggggg" + enumByCode); } + } - + /** + * 处理模拟检测时,通信模块返回报文 + * + * @param param + * @param socketDataMsg + */ + private void handleSimulateTest(PreDetectionParam param, SocketDataMsg socketDataMsg) { + SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); + if (ObjectUtil.isNotNull(dictDataEnumByCode)) { + switch (dictDataEnumByCode) { + case SUCCESS: + System.out.println("模拟检测-源成功执行脚本"); + break; + case UNPROCESSED_BUSINESS: + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); + break; + default: + CnSocketUtil.quitSendSource(param); + SocketMsg socketMsg = new SocketMsg<>(); + socketMsg.setRequestId(socketDataMsg.getRequestId()); + socketMsg.setOperateCode(socketDataMsg.getOperateCode()); + socketMsg.setData(dictDataEnumByCode.getMessage()); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketMsg)); + break; + } + } } 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 0721522a..bee82542 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 @@ -47,6 +47,7 @@ public enum SourceOperateCodeEnum { YJC_XYJY("yjc_xyjy", "协议校验"), YJC_XUJY("YJC_xujy", "相序校验"), FORMAL_REAL("formal_real","正式检测"), +// SIMULATE_REAL("simulate_real","模拟检测"), Coefficient_Check("Coefficient_Check","系数校验"), QUITE("quit","关闭设备通讯初始化"), QUITE_SOURCE("close_source","关闭源通讯"), @@ -74,6 +75,7 @@ public enum SourceOperateCodeEnum { TEST_TEM_START("6","继续检测"), TEST_STOP("7","停止检测"), RE_ERROR_TEST("8","不合格项复检"), + SIMULATE_TEST("9","模拟检测"), /** diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/param/SimulateDetectionParam.java b/detection/src/main/java/com/njcn/gather/detection/pojo/param/SimulateDetectionParam.java new file mode 100644 index 00000000..0bc4c48f --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/param/SimulateDetectionParam.java @@ -0,0 +1,40 @@ +package com.njcn.gather.detection.pojo.param; + +import lombok.Data; + +/** + * @author caozehui + * @data 2025-03-06 + */ +@Data +public class SimulateDetectionParam { + + /** + * 操作类型 9.模拟检测 + */ + private String operateType = "9"; + + /** + * 数字、模拟、比对 + */ + private String pattern; + + /** + * 用户功能组成唯一标识 zhangsan_test + */ + private String userPageId; + + /** + * 检测脚本Id + */ + private String scriptId; + + private Integer scriptIndex; + + /** + * 源id + */ + private String sourceId; + + +} diff --git a/detection/src/main/java/com/njcn/gather/detection/service/PreDetectionService.java b/detection/src/main/java/com/njcn/gather/detection/service/PreDetectionService.java index 455b9b00..018e607a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/PreDetectionService.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/PreDetectionService.java @@ -1,7 +1,7 @@ package com.njcn.gather.detection.service; import com.njcn.gather.detection.pojo.param.PreDetectionParam; - +import com.njcn.gather.detection.pojo.param.SimulateDetectionParam; /** @@ -13,7 +13,8 @@ public interface PreDetectionService { /** * 源通讯校验socket入参拼接 - * @param param + * + * @param param * @Author: wr * @Date: 2024/12/11 13:26 */ @@ -33,6 +34,26 @@ public interface PreDetectionService { void closeCheck(PreDetectionParam param); - void nextScript(PreDetectionParam param); + void nextScript(PreDetectionParam param); + /** + * 模拟测试-源通讯校验 + * + * @param param + */ + void ytxCheckSimulate(SimulateDetectionParam param); + + /** + * 模拟测试-向源发送脚本 + * + * @param param + */ + void sendScript(SimulateDetectionParam param); + + /** + * 模拟测试-停止 + * + * @param param + */ + void closeTestSimulate(SimulateDetectionParam param); } 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 1897a344..225052ca 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 @@ -11,29 +11,28 @@ import com.njcn.gather.detection.handler.SocketSourceResponseService; import com.njcn.gather.detection.pojo.enums.DetectionResponseEnum; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.param.PreDetectionParam; +import com.njcn.gather.detection.pojo.param.SimulateDetectionParam; import com.njcn.gather.detection.pojo.vo.SocketMsg; import com.njcn.gather.detection.service.PreDetectionService; - import com.njcn.gather.detection.util.socket.CnSocketUtil; import com.njcn.gather.detection.util.socket.FormalTestManager; import com.njcn.gather.detection.util.socket.SocketManager; +import com.njcn.gather.detection.util.socket.WebServiceManager; import com.njcn.gather.detection.util.socket.cilent.NettyClient; -import com.njcn.gather.detection.util.socket.cilent.NettyDevClientHandler; import com.njcn.gather.detection.util.socket.cilent.NettySourceClientHandler; -import com.njcn.gather.device.pojo.enums.DevResponseEnum; import com.njcn.gather.device.pojo.po.PqDev; -import com.njcn.gather.device.pojo.vo.PreDetection; import com.njcn.gather.device.service.IPqDevService; +import com.njcn.gather.plan.pojo.po.AdPlan; +import com.njcn.gather.plan.pojo.po.AdPlanSource; +import com.njcn.gather.plan.service.IAdPlanService; +import com.njcn.gather.plan.service.IAdPlanSourceService; import com.njcn.gather.script.pojo.param.PqScriptCheckDataParam; +import com.njcn.gather.script.pojo.param.PqScriptIssueParam; import com.njcn.gather.script.pojo.po.SourceIssue; import com.njcn.gather.script.service.IPqScriptCheckDataService; import com.njcn.gather.script.service.IPqScriptDtlsService; import com.njcn.gather.source.pojo.po.SourceInitialize; import com.njcn.gather.source.service.IPqSourceService; -import com.njcn.gather.plan.pojo.po.AdPlan; -import com.njcn.gather.plan.pojo.po.AdPlanSource; -import com.njcn.gather.plan.service.IAdPlanService; -import com.njcn.gather.plan.service.IAdPlanSourceService; import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum; import com.njcn.gather.system.dictionary.service.IDictDataService; import io.netty.channel.Channel; @@ -42,7 +41,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @@ -53,6 +55,8 @@ public class PreDetectionServiceImpl implements PreDetectionService { private final String source = "_Source"; private final String dev = "_Dev"; + private final String stepTag = "&&"; + private final String handlerSourceStr = "_Source"; private final IPqDevService iPqDevService; private final IDictDataService dictDataService; @@ -154,6 +158,30 @@ public class PreDetectionServiceImpl implements PreDetectionService { } } + private void sendYtxSocketSimulate(PreDetectionParam 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())); + SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(param.getSourceId()); + param.setSourceId(sourceParam.getSourceId()); + WebServiceManager.addPreDetectionParam(param); + if (ObjectUtil.isNotNull(sourceParam)) { + //开始组装socket报文请求头 + //socketDevResponseService.initList(param); + //socketSourceResponseService.initList(param); + SocketMsg socketMsg = new SocketMsg<>(); + socketMsg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue()); + socketMsg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue()); + socketMsg.setData(JSON.toJSONString(sourceParam)); + NettyClient.socketClient(ip, port, param, JSON.toJSONString(socketMsg), new NettySourceClientHandler(param, sourceResponseService)); + } else { + throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT); + } + } + @Override public boolean startTest(PreDetectionParam param) { @@ -183,12 +211,12 @@ public class PreDetectionServiceImpl implements PreDetectionService { SocketManager.sendMsg(param.getUserPageId() + source, JSON.toJSONString(xuMsg)); } else { //TODO 是否最终检测完成需要推送给用户 - PqScriptCheckDataParam checkDataParam=new PqScriptCheckDataParam(); + PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam(); checkDataParam.setScriptId(param.getScriptId()); checkDataParam.setIsValueTypeName(false); List valueType = iPqScriptCheckDataService.getValueType(checkDataParam); - iPqDevService.updateResult(param.getDevIds(), valueType,param.getCode()); + iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode()); CnSocketUtil.quitSend(param); } @@ -229,8 +257,78 @@ public class PreDetectionServiceImpl implements PreDetectionService { } + @Override + public void ytxCheckSimulate(SimulateDetectionParam param) { + PreDetectionParam preDetectionParam = new PreDetectionParam(); + preDetectionParam.setSourceId(param.getSourceId()); + preDetectionParam.setUserPageId(param.getUserPageId()); + + specialDealSimulate(preDetectionParam); + +// String code = dictDataService.getDictDataById(param.getPattern()).getCode(); +// DictDataEnum dictDataEnumByCode = DictDataEnum.getDictDataEnumByCode(code); +// switch (dictDataEnumByCode) { +// case DIGITAL: +// case SIMULATE: +// sendYtxSocketSimulate(preDetectionParam); +// break; +// case CONTRAST: +// break; +// default: +// throw new BusinessException(DetectionResponseEnum.PLAN_PATTERN_NOT); +// } + sendYtxSocketSimulate(preDetectionParam); + } + + @Override + public void sendScript(SimulateDetectionParam param) { +// Channel channel = SocketManager.getChannelByUserId(param.getUserPageId() + source); +// if (Objects.isNull(channel) || !channel.isActive()) { +// // 进行源通信连接 +// PreDetectionParam preDetectionParam = new PreDetectionParam(); +// preDetectionParam.setSourceId(param.getSourceId()); +// preDetectionParam.setUserPageId(param.getUserPageId()); +// this.sendYtxSocketSimulate(preDetectionParam); +// } + //组装源控制脚本 + PqScriptIssueParam issueParam = new PqScriptIssueParam(); + //issueParam.setPlanId(param.getPlanId()); + issueParam.setSourceId(param.getSourceId()); + //issueParam.setDevIds(param.getDevIds()); + issueParam.setScriptId(param.getScriptId()); + issueParam.setIsPhaseSequence(SourceOperateCodeEnum.SIMULATE_TEST.getValue()); + List sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam); + sourceIssues = sourceIssues.stream() + .filter(s -> s.getIndex().equals(param.getScriptIndex())) + .sorted(Comparator.comparing(SourceIssue::getIndex)) + .collect(Collectors.toList()); + + SourceIssue sourceIssue = sourceIssues.get(0); + List comm = sourceIssue.getDevValueTypeList(); + System.out.println("向装置下发的参数ddd>>>>>>>>" + comm); + + SocketMsg socketMsg = new SocketMsg<>(); + socketMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue()); + socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssue.getType()); + socketMsg.setData(JSON.toJSONString(sourceIssues.get(0))); + SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg)); + } + + @Override + public void closeTestSimulate(SimulateDetectionParam param) { + SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(param.getSourceId()); + PreDetectionParam preDetectionParam = new PreDetectionParam(); + preDetectionParam.setSourceId(sourceParam.getSourceId()); + preDetectionParam.setUserPageId(param.getUserPageId()); + CnSocketUtil.quitSendSource(preDetectionParam); + WebServiceManager.removePreDetectionParam(); + + SocketManager.removeUser(param.getUserPageId() + source); + } + /** * 对重复发起或者异常发起的检测进行关闭源操作 + * * @param param */ private void specialDeal(PreDetectionParam param) { @@ -240,7 +338,7 @@ public class PreDetectionServiceImpl implements PreDetectionService { System.out.println("发送关闭源指令。。。。。。。。"); CnSocketUtil.quitSendSource(param); } - if(Objects.nonNull(channelDev) && channelDev.isActive()){ + if (Objects.nonNull(channelDev) && channelDev.isActive()) { System.out.println("发送关闭设备通讯指令。。。。。。。。"); CnSocketUtil.quitSend(param); } @@ -248,7 +346,7 @@ public class PreDetectionServiceImpl implements PreDetectionService { try { Thread.sleep(4000); } catch (InterruptedException e) { - log.error(e.getMessage()); + log.error(e.getMessage()); } SocketManager.removeUser(param.getUserPageId() + source); @@ -261,14 +359,38 @@ public class PreDetectionServiceImpl implements PreDetectionService { } } + /** + * 对重复发起或者异常发起的检测进行关闭源操作-模拟检测 + * + * @param param + */ + private void specialDealSimulate(PreDetectionParam param) { + Channel channel = SocketManager.getChannelByUserId(param.getUserPageId() + source); + if (Objects.nonNull(channel) && channel.isActive()) { + System.out.println("发送关闭源指令。。。。。。。。"); + CnSocketUtil.quitSendSource(param); + } + try { + Thread.sleep(4000); + } catch (InterruptedException e) { + log.error(e.getMessage()); + } + SocketManager.removeUser(param.getUserPageId() + source); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + log.error(e.getMessage()); + } + } + /** * 校验 */ - private void commCheck(PreDetectionParam param){ + private void commCheck(PreDetectionParam param) { List pqDevList = iPqDevService.listByIds(param.getDevIds()); List ipList = pqDevList.stream().map(PqDev::getIp).distinct().collect(Collectors.toList()); - if(ipList.size()!=param.getDevIds().size()){ + if (ipList.size() != param.getDevIds().size()) { throw new BusinessException(DetectionResponseEnum.PLAN_DEV_IP_HAS); } } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/WebServiceManager.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/WebServiceManager.java index 88a2c20b..5a5b49b0 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/WebServiceManager.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/WebServiceManager.java @@ -1,6 +1,7 @@ package com.njcn.gather.detection.util.socket; import com.alibaba.fastjson.JSON; +import com.njcn.gather.detection.pojo.param.PreDetectionParam; import com.njcn.gather.detection.pojo.vo.WebSocketVO; import io.netty.channel.Channel; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; @@ -24,6 +25,8 @@ public class WebServiceManager { //key:页面 value:channel private static final Map userSessions = new ConcurrentHashMap<>(); + // 检测参数。key固定为preDetectionParam, value:检测参数 + private static final Map preDetectionParamMap = new ConcurrentHashMap<>(); public static void addUser(String userId, Channel channel) { userSessions.put(userId, channel); @@ -66,5 +69,15 @@ public class WebServiceManager { } } + + public static void addPreDetectionParam(PreDetectionParam preDetectionParam) { + preDetectionParamMap.put("preDetectionParam", preDetectionParam); + } + public static PreDetectionParam getPreDetectionParam() { + return preDetectionParamMap.get("preDetectionParam"); + } + public static void removePreDetectionParam() { + preDetectionParamMap.clear(); + } } \ No newline at end of file diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/web/WebSocketHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/web/WebSocketHandler.java index d379cc49..7ab3905a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/web/WebSocketHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/web/WebSocketHandler.java @@ -1,21 +1,15 @@ package com.njcn.gather.detection.util.socket.web; +import cn.hutool.core.util.ObjectUtil; import com.njcn.gather.detection.pojo.param.PreDetectionParam; import com.njcn.gather.detection.util.socket.CnSocketUtil; -import com.njcn.gather.detection.util.socket.SocketManager; import com.njcn.gather.detection.util.socket.WebServiceManager; -import io.netty.buffer.Unpooled; -import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import io.netty.handler.timeout.IdleStateEvent; -import io.netty.util.CharsetUtil; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; /** @@ -73,6 +67,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler list = pqDevService.list(new LambdaQueryWrapper() - .eq(PqDev::getPlanId, param.getPlanId()) + .eq(StrUtil.isNotBlank(param.getPlanId()), PqDev::getPlanId, param.getPlanId()) .in(PqDev::getId, param.getDevIds()) .eq(PqDev::getState, DataStateEnum.ENABLE.getCode()) );