From c571f870d827edd7e0de2a3d6dfde696981c605d Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Wed, 15 Jan 2025 17:52:34 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=B0=83=E6=95=B4=E7=9B=B8=E5=BA=8F=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E8=BF=94=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/SocketDevResponseService.java | 245 ++++++++---------- .../handler/SocketSourceResponseService.java | 2 +- 2 files changed, 106 insertions(+), 141 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 42259cf2..88605f26 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 @@ -829,9 +829,8 @@ public class SocketDevResponseService { List sourceIssues = scriptDtlsService.listSourceIssue(sourceParam); List info = new ArrayList<>(); if (CollUtil.isNotEmpty(sourceIssues)) { - for (DevData dev : devInfo) { - info.addAll(devIsSource(dev, sourceIssues.get(0))); - } + devInfo.stream().sorted(Comparator.comparing(DevData::getId)); + info.addAll(devIsSource(devInfo, sourceIssues.get(0))); } if (CollUtil.isNotEmpty(info)) { SocketDataMsg dataMsg = new SocketDataMsg(); @@ -840,18 +839,7 @@ public class SocketDevResponseService { dataMsg.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); for (SourceCompareDev sourceCompareDev : info) { - - String temStr = "未知指标"; - if ("VRMS".equals(sourceCompareDev.getDesc())) { - temStr = "电压"; - } else if ("IRMS".equals(sourceCompareDev.getDesc())) { - temStr = "电流"; - } else if ("VA".equals(sourceCompareDev.getDesc())) { - temStr = "电压相角"; - } else if ("IA".equals(sourceCompareDev.getDesc())) { - temStr = "电流相角"; - } - dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + temStr + "校验结果:" + (sourceCompareDev.getIsQualified() ? "合格" : "不合格")); + dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + "校验结果:" + sourceCompareDev.getDesc()); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(dataMsg)); } @@ -1173,149 +1161,126 @@ public class SocketDevResponseService { } + private Map sourceMessage(SourceIssue issue) { + //(Ua=59.0V,相角=0.0° Ub=59.0V,相角=0.0° Uc=59.0V,相角=0.0°) + Map map = new HashMap<>(); + List v = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList()); + List i = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList()); + map.put("V", sourceBuffer(v)); + map.put("I", sourceBuffer(i)); + return map; + } - private List devIsSource(DevData dev, SourceIssue issue) { + private String sourceBuffer(List v) { + StringBuffer str = new StringBuffer(); + str.append("源("); + for (SourceIssue.ChannelListDTO dto : v) { + str.append(dto.getChannelType() + "=" + dto.getFAmp() + ",相角=" + dto.getFPhase() + "° "); + } + str.append(")"); + return str.toString(); + } + private String devMessage(String type, + List data, + List dataPhase) { + StringBuffer str = new StringBuffer(); + if (data.size() == dataPhase.size()) { + DevData.SqlDataDTO.ListDTO dto = data.get(0).getList(); + DevData.SqlDataDTO.ListDTO phase = dataPhase.get(0).getList(); + + str.append("装置(" + type + "a=" + String.format("%.4f", dto.getA()) + ",相角=" + String.format("%.4f", phase.getA()) + "° " + + type + "b=" + String.format("%.4f", dto.getB()) + ",相角=" + String.format("%.4f", phase.getB()) + "° " + + type + "c=" + String.format("%.4f", dto.getC()) + ",相角=" + String.format("%.4f", phase.getC()) + "° "); + str.append(")"); + } + return str.toString(); + } + + private List devIsSource(List dev, SourceIssue issue) { List info = new ArrayList<>(); - String[] split = dev.getId().split(splitTag); + //相序校验信息个 + LinkedHashMap> devMap = dev.stream() + .sorted(Comparator.comparing(DevData::getId)) + .collect(Collectors.groupingBy(DevData::getId, LinkedHashMap::new, Collectors.toList())); + //电压 + List sourceV = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("U")) + .sorted(Comparator.comparing(SourceIssue.ChannelListDTO::getChannelType)) + .collect(Collectors.toList()); + //电流 + List sourceI = issue.getChannelList().stream().filter(x -> x.getChannelType().contains("I")) + .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"); + devMap.forEach((key, value) -> { + List sqlData = value.stream().flatMap(x -> x.getSqlData().stream()).collect(Collectors.toList()); + getResult(key, sqlData, sourceMessageMap, sourceV, info, v); + getResult(key, sqlData, sourceMessageMap, sourceI, info, i); + }); + return info; + } + + private void getResult(String key, + List sqlData, + Map sourceMessageMap, + List sourceV, + List info, + List type + ) { + List dataV = sqlData.stream().filter(x -> type.get(0).equals(x.getDesc())).collect(Collectors.toList()); + List dataVPhase = sqlData.stream().filter(x -> type.get(1).equals(x.getDesc())).collect(Collectors.toList()); + SourceCompareDev compareDev = new SourceCompareDev(); + String[] split = key.split(splitTag); String devName = null; if (FormalTestManager.devNameMapComm.containsKey(split[0])) { devName = FormalTestManager.devNameMapComm.get(split[0]); } - List channelList = issue.getChannelList(); - - List sqlData = dev.getSqlData(); - List dataV = sqlData.stream().filter(x -> "VRMS".equals(x.getDesc())).collect(Collectors.toList()); - List dataVA = sqlData.stream().filter(x -> "VA".equals(x.getDesc())).collect(Collectors.toList()); - List dataI = sqlData.stream().filter(x -> "IRMS".equals(x.getDesc())).collect(Collectors.toList()); - List dataIA = sqlData.stream().filter(x -> "IA".equals(x.getDesc())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(dataV)) { - SourceCompareDev compareDev = getSourceCompareDev(split, dataV, "VRMS", "U", channelList, false); - compareDev.setDevName(devName); - info.add(compareDev); - } - if (CollUtil.isNotEmpty(dataVA)) { - SourceCompareDev compareDev = getSourceCompareDev(split, dataVA, "VA", "U", channelList, true); - compareDev.setDevName(devName); - info.add(compareDev); - } - if (CollUtil.isNotEmpty(dataI)) { - SourceCompareDev compareDev = getSourceCompareDev(split, dataI, "IRMS", "I", channelList, false); - compareDev.setDevName(devName); - info.add(compareDev); - } - if (CollUtil.isNotEmpty(dataVA)) { - SourceCompareDev compareDev = getSourceCompareDev(split, dataVA, "IA", "I", channelList, true); - compareDev.setDevName(devName); - info.add(compareDev); - } - - return info; + compareDev.setDevName(devName); + compareDev.setLineNum(split[1]); + getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV); + info.add(compareDev); } + /** * 计算是否合格 * - * @param split - * @param data - * @param name 指标名称 - * @param type U,I - * @param channelList + * @param data 装置返回信息 + * @param compareDev 返回信息 + * @param channelList 源通道信息 * @return */ - private static SourceCompareDev getSourceCompareDev(String[] split, - List data, - String name, - String type, - List channelList, - Boolean isPhase + private SourceCompareDev getSourceCompareDev(String type, + List data, + List dataPhase, + SourceCompareDev compareDev, + String desc, + List channelList + ) { - SourceCompareDev compareDev = new SourceCompareDev(); - compareDev.setIp(split[0]); - compareDev.setLineNum(split[1]); - compareDev.setDesc(name); - //装置数据 - DevData.SqlDataDTO.ListDTO devData = data.get(0).getList(); - List sourceList = channelList.stream().filter(x -> (type + "a").equals(x.getChannelType()) || - (type + "b").equals(x.getChannelType()) || - (type + "c").equals(x.getChannelType()) - ).collect(Collectors.toList()); - Map sourceMap = sourceList.stream() - .collect(Collectors.toMap(x -> x.getChannelType().toUpperCase().replace(type, "") - , isPhase ? SourceIssue.ChannelListDTO::getFPhase : SourceIssue.ChannelListDTO::getFAmp)); - Map devMap = new HashMap<>(3); - devMap.put("A", devData.getA()); - devMap.put("B", devData.getB()); - devMap.put("C", devData.getC()); - Boolean is = true; - for (SourceIssue.ChannelListDTO channelListDTO : sourceList) { - if (!is) { - break; - } - if (channelListDTO.getChannelType().equals((type + "a"))) { - if (isPhase) { - if (channelListDTO.getFPhase() == 0.0) { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()), - BigDecimal.valueOf(-0.05), - BigDecimal.valueOf(0.05)); - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()), - BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95), - BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05)); - } - - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()), - BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), - BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); - } - - } - if (channelListDTO.getChannelType().equals((type + "b"))) { - if (isPhase) { - if (channelListDTO.getFPhase() == 0.0) { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()), - BigDecimal.valueOf(-0.05), - BigDecimal.valueOf(0.05)); - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()), - BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95), - BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05)); - } - - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()), - BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), - BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); - } - - } - if (channelListDTO.getChannelType().equals((type + "c"))) { - if (isPhase) { - if (channelListDTO.getFPhase() == 0.0) { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()), - BigDecimal.valueOf(-0.05), - BigDecimal.valueOf(0.05)); - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()), - BigDecimal.valueOf(channelListDTO.getFPhase() * 0.95), - BigDecimal.valueOf(channelListDTO.getFPhase() * 1.05)); - } - - } else { - is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()), - BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), - BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); - } - } - - } - compareDev.setIsQualified(is); - compareDev.setSourceData(sourceMap); - compareDev.setDevData(devMap); + //源信息 + Map sourceMap = channelList.stream() + .collect(Collectors.toMap(x -> x.getChannelType(), Function.identity())); + compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "a"), data.get(0).getList().getA(), dataPhase.get(0).getList().getA())); + compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "b"), data.get(0).getList().getB(), dataPhase.get(0).getList().getB())); + compareDev.setIsQualified(getaBoolean(sourceMap.get(type + "c"), data.get(0).getList().getC(), dataPhase.get(0).getList().getC())); + compareDev.setDesc((compareDev.getIsQualified() ? "合格->" : "不合格->") + desc + "
" + devMessage(type, data, dataPhase)); return compareDev; } + private static Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase) { + return NumberUtil.isIn(BigDecimal.valueOf(devData), + BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), + BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)) + && + NumberUtil.isIn(BigDecimal.valueOf(devPhase), + BigDecimal.valueOf(channelListDTO.getFPhase() - 1), + BigDecimal.valueOf(channelListDTO.getFPhase() + 1)); + + } + /** * 暂停后的重新检测 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 97168959..02307f30 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 @@ -233,7 +233,7 @@ public class SocketSourceResponseService { DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); phaseSequenceParam.setMoniterIdList(moniterIdList); phaseSequenceParam.setDataType(Arrays.asList("real$VRMS", "real$VA", "real$IRMS", "real$IA")); - phaseSequenceParam.setReadCount(5); + phaseSequenceParam.setReadCount(1); phaseSequenceParam.setIgnoreCount(10); socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));