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 e8b41ea3..7ba13d87 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 @@ -19,6 +19,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -52,7 +53,7 @@ public class PreDetectionController extends BaseController { @OperateInfo @ApiOperation("开始检测") @ApiImplicitParam(name = "param", value = "查询参数", required = true) - public HttpResult startPreTest(@RequestBody PreDetectionParam param){ + public HttpResult startPreTest(@RequestBody @Validated PreDetectionParam param){ String methodDescribe = getMethodDescribe("startPreTest"); preDetectionService.sourceCommunicationCheck(param); 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 2653cb1d..ac551c20 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 @@ -164,6 +164,8 @@ public class SocketSourceResponseService { WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); break; case SOURCE_CONNECTION_ERROR: + CnSocketUtil.quitSendSource(param); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); case CONTROLLED_SOURCE_ERROR: CnSocketUtil.quitSendSource(param); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionResponseEnum.java b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionResponseEnum.java index 5bf7c558..1d576e06 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionResponseEnum.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionResponseEnum.java @@ -11,7 +11,8 @@ public enum DetectionResponseEnum { PLAN_PATTERN_NOT("A020001", "计划模式查询为空"), SOURCE_INFO_NOT("A020002", "源表信息不存在"), PLAN_AND_SOURCE_NOT("A020003", "计划和源关系不存在"), - ITEM_TEST_NOT("A020003", "检测项为空") + ITEM_TEST_NOT("A020004", "检测项为空"), + PLAN_DEV_IP_HAS("A20005","当前计划检测装置ip重复") ; private final String code; diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java b/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java index 2094ec8a..c45208b7 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java @@ -2,6 +2,8 @@ package com.njcn.gather.detection.pojo.param; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -20,6 +22,7 @@ public class PreDetectionParam { /** * 检测计划id */ + @NotBlank(message = "计划id不可为空") private String planId; /** @@ -40,6 +43,7 @@ public class PreDetectionParam { /** * 检测终端id集合 */ + @NotEmpty(message = "装置不能为空") private List devIds; /** 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 d71111ff..b1ecadc6 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 @@ -19,6 +19,8 @@ import com.njcn.gather.detection.util.socket.FormalTestManager; import com.njcn.gather.detection.util.socket.SocketManager; import com.njcn.gather.detection.util.socket.cilent.NettyClient; 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.service.IPqDevService; import com.njcn.gather.script.pojo.param.PqScriptCheckDataParam; import com.njcn.gather.script.pojo.po.SourceIssue; @@ -39,6 +41,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Service @@ -70,8 +73,8 @@ public class PreDetectionServiceImpl implements PreDetectionService { @Override public void sourceCommunicationCheck(PreDetectionParam param) { + commCheck(param); specialDeal(param); - /* 先组装源通讯协议 查询计划什么模式的(除了对比式,其他都是一个计划对应一个源) @@ -152,7 +155,6 @@ public class PreDetectionServiceImpl implements PreDetectionService { @Override public boolean startTest(PreDetectionParam param) { - socketDevResponseService.initList(param); NettyClient.socketClient(ip, port, param, "start\n", new NettySourceClientHandler(param, sourceResponseService)); @@ -168,29 +170,6 @@ public class PreDetectionServiceImpl implements PreDetectionService { @Override public boolean restartTemTest(PreDetectionParam param) { FormalTestManager.stopFlag = false; - /* specialDeal(param); - AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper().eq(AdPlanSource::getPlanId, param.getPlanId())); - if (ObjectUtil.isNotNull(planSource)) { - SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(planSource.getSourceId()); - if (Objects.isNull(sourceParam)) { - throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT); - } - param.setSourceId(sourceParam.getSourceId()); - - if (CollUtil.isNotEmpty(SocketManager.getSourceList())) { - //开始组装socket报文请求头 - socketDevResponseService.initRestart(); - SocketMsg msg = new SocketMsg<>(); - msg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue()); - msg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue()); - msg.setData(JSON.toJSONString(sourceParam)); - NettyClient.socketClient(ip, port, param, JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService)); - } else { - throw new BusinessException(DetectionResponseEnum.ITEM_TEST_NOT); - } - } else { - throw new BusinessException(DetectionResponseEnum.PLAN_AND_SOURCE_NOT); - }*/ List sourceIssueList = SocketManager.getSourceList(); if (CollUtil.isNotEmpty(sourceIssueList)) { SourceIssue sourceIssues = SocketManager.getSourceList().get(0); @@ -213,6 +192,11 @@ public class PreDetectionServiceImpl implements PreDetectionService { return true; } + + /** + * 对重复发起或者异常发起的检测进行关闭源操作 + * @param param + */ private void specialDeal(PreDetectionParam param) { Channel channel = SocketManager.getChannelByUserId(param.getUserPageId() + source); if (Objects.nonNull(channel) && channel.isActive()) { @@ -235,4 +219,16 @@ public class PreDetectionServiceImpl implements PreDetectionService { } } + + /** + * 校验 + */ + 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()){ + throw new BusinessException(DetectionResponseEnum.PLAN_DEV_IP_HAS); + } + } + } \ No newline at end of file