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 c86ae018..d3e75cb7 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 @@ -313,14 +313,14 @@ public class SocketDevResponseService { //判断小电压是否系数超过大电压10% double limit = 0.1; - XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataBig) -> { + XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataSmall) -> { //定义一个标识: false:表示小电流系数和大电流系数 boolean flag = true; - DevXiNumData devXiNumDataSmall = XiNumberManager.devXiNumDataMap.get(devIp); - Map gfMap = devXiNumDataSmall.getGf().stream().collect(Collectors.toMap(DevXiNumData.GF::getUMonitorPoint, Function.identity())); + DevXiNumData devXiNumDataBig = XiNumberManager.devXiNumDataMap.get(devIp); + Map gfMapSmall = devXiNumDataSmall.getGf().stream().collect(Collectors.toMap(DevXiNumData.GF::getUMonitorPoint, Function.identity())); for (DevXiNumData.GF bigGf : devXiNumDataBig.getGf()) { - DevXiNumData.F smallF = gfMap.get(bigGf.getUMonitorPoint()).getF(); + DevXiNumData.F smallF = gfMapSmall.get(bigGf.getUMonitorPoint()).getF(); DevXiNumData.F bigF = bigGf.getF(); boolean ia = isWithinTenPercent(smallF.getIa_gain(), bigF.getIa_gain(), limit); @@ -456,12 +456,12 @@ public class SocketDevResponseService { return percentage <= limit; } - private BigDecimal rangeNum(double num1, double num2, String type) { + private BigDecimal rangeNum(double num1, double num2,String type) { double diff = Math.abs(num1 - num2); double larger = Math.max(num1, num2); - if (DicDataEnum.V.getCode().equals(type)) { + if(DicDataEnum.V.getCode().equals(type)){ return BigDecimal.valueOf(diff / larger).setScale(4, RoundingMode.HALF_UP); - } else { + }else { return BigDecimal.valueOf(diff / larger).multiply(BigDecimal.valueOf(100)).setScale(4, RoundingMode.HALF_UP); } } @@ -525,12 +525,12 @@ public class SocketDevResponseService { coefficientVO.setBIeXi(isWithinTenPercent(optionalIB, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setCIeXi(isWithinTenPercent(optionalIC, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); - coefficientVO.setAV(rangeNum(optionalA, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString()); - coefficientVO.setBV(rangeNum(optionalB, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString()); - coefficientVO.setCV(rangeNum(optionalC, devParameter.getDevVolt(), DicDataEnum.V.getCode()).toString()); - coefficientVO.setAI(rangeNum(optionalIA, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString()); - coefficientVO.setBI(rangeNum(optionalIB, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString()); - coefficientVO.setCI(rangeNum(optionalIC, devParameter.getDevCurr(), DicDataEnum.I.getCode()).toString()); + coefficientVO.setAV(rangeNum(optionalA, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString()); + coefficientVO.setBV(rangeNum(optionalB, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString()); + coefficientVO.setCV(rangeNum(optionalC, devParameter.getDevVolt(),DicDataEnum.V.getCode()).toString()); + coefficientVO.setAI(rangeNum(optionalIA, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString()); + coefficientVO.setBI(rangeNum(optionalIB, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString()); + coefficientVO.setCI(rangeNum(optionalIC, devParameter.getDevCurr(),DicDataEnum.I.getCode()).toString()); if ("不合格".equals(coefficientVO.getAVuXi()) || "不合格".equals(coefficientVO.getBVuXi()) || "不合格".equals(coefficientVO.getCVuXi()) || "不合格".equals(coefficientVO.getAIeXi()) || "不合格".equals(coefficientVO.getBIeXi()) || "不合格".equals(coefficientVO.getCIeXi())) { coefficientVO.setResultFlag(0); @@ -908,7 +908,9 @@ public class SocketDevResponseService { } - Map> targetTestMap = new HashMap<>(); + + + Map> targetTestMap = new HashMap<>(); /** * 正式检测 @@ -939,7 +941,7 @@ public class SocketDevResponseService { Map textResult = detectionServiceImpl.processing(realDataXiList, param, FormalTestManager.devIdMapComm, sourceIssue, dataRule); //组装实体推送给前台 - assWebJson(param, textResult, socketDataMsg, sourceIssue); + assWebJson(param,textResult,socketDataMsg,sourceIssue); //当小项结束后需要删除集合中的小项 SocketManager.delSource(sourceIssue.getIndex()); @@ -967,7 +969,7 @@ public class SocketDevResponseService { resultList.add(devTem); }); allDevTestList.clear(); - CnSocketUtil.sendToWebSocket(param.getUserPageId(), socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd, null, resultList, null); + CnSocketUtil.sendToWebSocket(param.getUserPageId(),socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd,null,resultList,null); } //在这一步判断是否已经触发暂停按钮 @@ -985,7 +987,7 @@ public class SocketDevResponseService { if (CollUtil.isNotEmpty(sourceIssueList)) { SourceIssue sourceIssues = SocketManager.getSourceList().get(0); if (residueCount == 0) { - CnSocketUtil.sendToWebSocket(param.getUserPageId(), sourceIssues.getType() + stepBegin, null, new ArrayList<>(), null); + CnSocketUtil.sendToWebSocket(param.getUserPageId(),sourceIssues.getType() + stepBegin,null,new ArrayList<>(),null); } SocketMsg xuMsg = new SocketMsg<>(); @@ -1036,7 +1038,7 @@ public class SocketDevResponseService { /** * 组装实体推送给前端 */ - private void assWebJson(PreDetectionParam param, Map textResult, SocketDataMsg socketDataMsg, SourceIssue sourceIssue) { + private void assWebJson(PreDetectionParam param,Map textResult,SocketDataMsg socketDataMsg,SourceIssue sourceIssue){ List devListRes = new ArrayList<>(); FormalTestManager.devList.forEach(dev -> { DevLineTestResult devLineTestResult = new DevLineTestResult(); @@ -1053,11 +1055,11 @@ public class SocketDevResponseService { devListRes.add(devLineTestResult); }); - if (targetTestMap.containsKey(sourceIssue.getType())) { + if(targetTestMap.containsKey(sourceIssue.getType())){ List devLineTestResultList = targetTestMap.get(sourceIssue.getType()); devLineTestResultList.addAll(devListRes); - } else { - targetTestMap.put(sourceIssue.getType(), devListRes); + }else { + targetTestMap.put(sourceIssue.getType(),devListRes); } WebSocketVO> webSocketVO = new WebSocketVO<>(); @@ -1197,8 +1199,8 @@ public class SocketDevResponseService { .sorted(Comparator.comparing(SourceIssue.ChannelListDTO::getChannelType)) .collect(Collectors.toList()); Map sourceMessageMap = sourceMessage(issue); - List v = Arrays.asList("VRMS", "VA", "U", "V", "电压"); - List i = Arrays.asList("IRMS", "IA", "I", "I", "电流"); + List v = Arrays.asList("VRMS", "VA", "U", "V"); + List i = Arrays.asList("IRMS", "IA", "I", "I"); devMap.forEach((key, value) -> { List sqlData = value.stream().flatMap(x -> x.getSqlData().stream()).collect(Collectors.toList()); getResult(key, sqlData, sourceMessageMap, sourceV, info, v); @@ -1253,7 +1255,7 @@ public class SocketDevResponseService { Boolean b = getaBoolean(sourceMap.get(type + "b"), data.get(0).getList().getB(), dataPhase.get(0).getList().getB()); Boolean c = getaBoolean(sourceMap.get(type + "c"), data.get(0).getList().getC(), dataPhase.get(0).getList().getC()); compareDev.setIsQualified(a && b && c); - compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + desc + stepTag + devMessage(type, data, dataPhase)); + compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") +stepTag + desc + stepTag + devMessage(type, data, dataPhase)); return compareDev; } 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 e43a47dc..0721522a 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 @@ -56,6 +56,7 @@ public enum SourceOperateCodeEnum { UNKNOWN_OPERATE("unknown_operate","未知的操作返回,请联系管理员排查"), SOCKET_TIMEOUT("socket_timeout","与源或者装置通讯等待超时"), STOP_TIMEOUT("stop_timeout","暂停时间超过十分钟"), + SERVER_ERROR("server_error","服务端主动关闭连接,请稍后再试"), diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java index b090c8b6..4d70aa93 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java @@ -85,7 +85,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler { * @param ctx */ @Override - public void channelInactive(ChannelHandlerContext ctx) { + public void channelInactive(ChannelHandlerContext ctx) throws Exception { System.out.println("设备通讯客户端断线"); ctx.close(); SocketManager.removeUser(param.getUserPageId() + dev); @@ -173,6 +173,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + System.out.println("捕获到设备服务异常。。。。。。。"); // 处理异常,例如记录日志、关闭连接等 cause.printStackTrace(); // 根据异常类型进行不同的处理 @@ -183,6 +184,8 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler { } else if (cause instanceof IOException) { // 处理I/O异常,例如读写错误 System.out.println("IOException caught: There was an I/O error."); + CnSocketUtil.sendToWebSocket(param.getUserPageId(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getValue(),SourceOperateCodeEnum.SERVER_ERROR.getMsg(),null ); + // 例如,可以记录更详细的I/O错误信息 } else if (cause instanceof TimeoutException) { // 处理超时异常 diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java index 7de4933a..d43a1581 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java @@ -6,6 +6,7 @@ import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.param.PreDetectionParam; import com.njcn.gather.detection.pojo.vo.SocketDataMsg; import com.njcn.gather.detection.pojo.vo.SocketMsg; +import com.njcn.gather.detection.pojo.vo.WebSocketVO; import com.njcn.gather.detection.util.socket.CnSocketUtil; import com.njcn.gather.detection.util.socket.MsgUtil; import com.njcn.gather.detection.util.socket.SocketManager; @@ -115,6 +116,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler