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 6837c99e..baea8a8c 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 @@ -28,6 +28,9 @@ import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum; import com.njcn.gather.system.pojo.enums.DicDataEnum; +import com.njcn.gather.system.reg.pojo.po.SysRegRes; +import com.njcn.gather.system.reg.pojo.vo.SysRegResVO; +import com.njcn.gather.system.reg.service.ISysRegResService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -53,24 +56,24 @@ public class SocketDevResponseService { private final String handlerStr = "_Dev"; private final String handlerSourceStr = "_Source"; + // ISO 8601格式 + private final DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; + private final Integer[] resCount = {0,20,5,1}; - //private final List dicDataList = Stream.of(DicDataEnum.FREQ.getCode(),DicDataEnum.V.getCode()) + + private final List nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(),DicDataEnum.V.getCode(),DicDataEnum.I.getCode(),DicDataEnum.IMBV.getCode(),DicDataEnum.IMBA.getCode()).collect(Collectors.toList()); + private final List harmonicList = Stream.of(DicDataEnum.HV.getCode(),DicDataEnum.HI.getCode(),DicDataEnum.HP.getCode(),DicDataEnum.HSV.getCode(),DicDataEnum.HSI.getCode()).collect(Collectors.toList()); private final WebSocketHandler webSocketHandler; private final IPqDevService iPqDevService; private final IPqScriptDtlsService scriptDtlsService; private final IPqScriptDtlsService pqScriptDtlsService; private final DetectionServiceImpl detectionServiceImpl; - private final DetectionDataDealService detectionDataDealService; - - + private final ISysRegResService iSysRegResService; private final ExecutorService executorPool = Executors.newFixedThreadPool(5); - - - /** * 存储的装置相序数据 */ @@ -87,7 +90,6 @@ public class SocketDevResponseService { */ List monitorIdListComm = new ArrayList<>(); - private List devList = new ArrayList<>(); /** * 装置名称 @@ -102,15 +104,13 @@ public class SocketDevResponseService { */ List successComm = new ArrayList<>(); - /** * 保存成功的协议 */ List successXieyi = new ArrayList<>(); List successXieyi3 = new ArrayList<>(); - - List adNonHarmonicResultList = new ArrayList<>(); + // List adNonHarmonicResultList = new ArrayList<>(); public void deal(PreDetectionParam param, String msg) throws Exception{ @@ -341,7 +341,7 @@ public class SocketDevResponseService { DevData devData = JSON.parseObject(data, DevData.class); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); if (ObjectUtil.isNotNull(dictDataEnumByCode)) { - SocketMsg socketMsg = new SocketMsg(); + SocketMsg socketMsg = new SocketMsg<>(); switch (dictDataEnumByCode) { case SUCCESS: //webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1))); @@ -442,15 +442,15 @@ public class SocketDevResponseService { String data = socketDataMsg.getData(); DevData devData = JSON.parseObject(data, DevData.class); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); - SourceIssue sourceIssue = SocketManager.getSourceList().get(0); - test(devData, dictDataEnumByCode, sourceIssue, socketDataMsg, param); + + realDonging(devData, dictDataEnumByCode, sourceIssue, socketDataMsg, param); } - public void test(DevData devData, SourceResponseCodeEnum dictDataEnumByCode, SourceIssue sourceIssue, SocketDataMsg socketDataMsg, PreDetectionParam param) { + public void realDonging(DevData devData, SourceResponseCodeEnum dictDataEnumByCode, SourceIssue sourceIssue, SocketDataMsg socketDataMsg, PreDetectionParam param) { if (ObjectUtil.isNotNull(dictDataEnumByCode)) { SocketMsg socketMsg = new SocketMsg<>(); switch (dictDataEnumByCode) { @@ -461,6 +461,9 @@ public class SocketDevResponseService { System.out.println("获取devData数量............." + devDataList.size()); if (successComm.size() == monitorIdListComm.size()) { + //TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束,但是会存在缺失数据情况,例如有部分装置是没有暂降功能的 + + System.out.println(sourceIssue.getType() +"_"+ sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。"); //原始数据入库 @@ -501,6 +504,7 @@ public class SocketDevResponseService { webSocketVO.setData(devListRes); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + } System.out.println("当前小项结束进行删除============"+sourceIssue.getType()+"_"+sourceIssue.getIndex()); @@ -517,6 +521,9 @@ public class SocketDevResponseService { xuMsg.setData(JSON.toJSONString(sourceIssues)); xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType()); SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg)); + }else { + //TODO 是否最终检测完成需要推送给用户 + quitSend(param); } successComm.clear(); @@ -557,13 +564,13 @@ public class SocketDevResponseService { private void quitDeal(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) { SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceOperateCodeEnum operateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode()); - SocketMsg socketMsg = new SocketMsg(); + SocketMsg socketMsg = new SocketMsg<>(); String s = param.getUserPageId() + handlerStr; - switch (dictDataEnumByCode) { + switch (Objects.requireNonNull(dictDataEnumByCode)) { case SUCCESS: //通讯校验成功 - switch (operateCodeEnum) { + switch (Objects.requireNonNull(operateCodeEnum)) { case QUIT_INIT_01: //关闭所有 SocketManager.removeUser(s); @@ -579,6 +586,8 @@ public class SocketDevResponseService { socketMsg.setOperateCode("QUIT_FUNEND$02"); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); break; + default: + } break; case UNPROCESSED_BUSINESS: @@ -733,7 +742,6 @@ public class SocketDevResponseService { this.success = new ArrayList<>(); this.devDataMap = new HashMap<>(); - this.adNonHarmonicResultList.clear(); this.devDataList.clear(); this.devList.clear(); @@ -745,6 +753,10 @@ public class SocketDevResponseService { this.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)); this.devIdMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)); + //初始化有效数据数 + Map sysRegResMap = iSysRegResService.listRegRes(); + + } @@ -756,7 +768,6 @@ public class SocketDevResponseService { */ private void baseDataInsert(List devDataList,SourceIssue sourceIssue,PreDetectionParam param){ Runnable runnable = () -> { - DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; // ISO 8601格式 List adNonHarmonicResultList = new ArrayList<>(); List adHarmonicResultList = new ArrayList<>(); @@ -764,17 +775,18 @@ public class SocketDevResponseService { LocalDateTime localDateTime = timeFormat(data.getTime(),formatter); if(Objects.nonNull(localDateTime)){ - if(Stream.of("FREQ","V","IMBA","P","I","IMBV").collect(Collectors.toList()).contains(sourceIssue.getType())){ + String[] splitArr = data.getId().split("_"); + String temId = devDataMap.get(splitArr[0]).getId()+"_"+splitArr[1]; + if(nonHarmonicList.contains(sourceIssue.getType())){ AdNonHarmonicResult adNonHarmonicResult = new AdNonHarmonicResult(); adNonHarmonicResult.setTimeId(localDateTime); - adNonHarmonicResult.setMonitorId(data.getId()); + adNonHarmonicResult.setMonitorId(temId); adNonHarmonicResult.setScriptId(param.getScriptId()); adNonHarmonicResult.setSort(sourceIssue.getIndex()); adNonHarmonicResult.setAdType(sourceIssue.getId()); adNonHarmonicResult.setDataType("avg"); DevData.SqlDataDTO.ListDTO tem = data.getSqlData().get(0).getList(); - Double a = tem.getA(); Double b = tem.getB(); Double c = tem.getC(); @@ -793,27 +805,31 @@ public class SocketDevResponseService { } adNonHarmonicResultList.add(adNonHarmonicResult); }else { - //DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().get(0).getList(); AdHarmonicResult adHarmonicResult = new AdHarmonicResult(); adHarmonicResult.setTimeId(localDateTime); - adHarmonicResult.setMonitorId(data.getId()); + + adHarmonicResult.setMonitorId(temId); adHarmonicResult.setScriptId(param.getScriptId()); adHarmonicResult.setSort(sourceIssue.getIndex()); adHarmonicResult.setAdType(sourceIssue.getId()); adHarmonicResult.setDataType("avg"); - /* Double aV = vvv.getA(); - Double bV = vvv.getB(); - Double cV = vvv.getC(); - if(Objects.nonNull(aV)){ - adHarmonicResult.setAValue1(aV.toString()); + if(DicDataEnum.HI.getCode().equals(sourceIssue.getType())||DicDataEnum.HSI.getCode().equals(sourceIssue.getType())){ + DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().get(0).getList(); + Double aV = vvv.getA(); + Double bV = vvv.getB(); + Double cV = vvv.getC(); + if (Objects.nonNull(aV)) { + adHarmonicResult.setAValue1(String.format("%.7f", aV)); + } + if (Objects.nonNull(bV)) { + adHarmonicResult.setBValue1(String.format("%.7f", bV)); + } + if (Objects.nonNull(cV)) { + adHarmonicResult.setCValue1(String.format("%.7f", cV)); + } } - if(Objects.nonNull(bV)){ - adHarmonicResult.setBValue1(bV.toString()); - } - if(Objects.nonNull(cV)){ - adHarmonicResult.setCValue1(cV.toString()); - }*/ + DevData.SqlDataHarmDTO.ListDTO tem = data.getSqlDataHarm().get(0).getList(); List a = tem.getA(); List b = tem.getB(); @@ -841,7 +857,6 @@ public class SocketDevResponseService { } adHarmonicResultList.add(adHarmonicResult); } - } } 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 9ed63436..b5cc9a00 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 @@ -205,8 +205,8 @@ public class SocketSourceResponseService { System.out.println("向装置下发的参数"+comm); phaseSequenceParam.setMoniterIdList(moniterIdList); phaseSequenceParam.setDataType(comm); - phaseSequenceParam.setReadCount(2); - phaseSequenceParam.setIgnoreCount(10); + phaseSequenceParam.setReadCount(1); + phaseSequenceParam.setIgnoreCount(1); socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); 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 8c360df1..6f5391b8 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 @@ -22,6 +22,16 @@ public class PreDetectionParam { */ private String planId; + /** + * 检测计划code + */ + private String planCode; + + /** + * 数字、模拟、比对 + */ + private String pattern; + /** * 用户功能组成唯一标识 zhangsan_test */ diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java index 30c2fa84..2451ac15 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java @@ -236,7 +236,7 @@ public class DetectionServiceImpl { DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getFAmp(), dataRule); result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); - List numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData()).stream().distinct().collect(Collectors.toList()); + List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList()); return getAdNonHarmonicResult(result, numbers); } return result; @@ -280,8 +280,8 @@ public class DetectionServiceImpl { harmonicResult.setAdType(pqErrSysDtls.get(0).getScriptType()); harmonicResult.setDataType("avg"); reflectHarmonic("a", integerBooleanA, harmonicResult); - reflectHarmonic("b", integerBooleanA, harmonicResult); - reflectHarmonic("c", integerBooleanA, harmonicResult); + reflectHarmonic("b", integerBooleanB, harmonicResult); + reflectHarmonic("c", integerBooleanC, harmonicResult); List list = new ArrayList<>(); list.addAll(integerBooleanA.stream().map(DetectionData::getIsData).distinct().collect(Collectors.toList())); list.addAll(integerBooleanB.stream().map(DetectionData::getIsData).distinct().collect(Collectors.toList())); @@ -346,9 +346,9 @@ public class DetectionServiceImpl { .filter(x -> TYPE_C.equals(x.getPhase())) .collect(Collectors.toList()); DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule); - result.setCValue(c.getData() + "_" + c.getIsData()+"_"+b.getResultData()); + result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); - List numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData()); + List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()); return getAdNonHarmonicResult(result, numbers); }else{ List channelTypeBList = checkData.stream() @@ -467,7 +467,7 @@ public class DetectionServiceImpl { DetectionData c = rangeComparisonList(mag.get(TYPE_C), magErrList, fData, retainCTime, dataRule); result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData()); - List numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData()).stream().distinct().collect(Collectors.toList()); + List numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList()); return getAdNonHarmonicResult(result, numbers); } @@ -525,7 +525,7 @@ public class DetectionServiceImpl { .sorted(Comparator.comparing(Double::doubleValue).reversed()) .collect(Collectors.toList()); b = list.stream() - .filter(x -> ObjectUtil.isNotNull(x.getA())) + .filter(x -> ObjectUtil.isNotNull(x.getB())) .map(DevData.SqlDataDTO.ListDTO::getB) .sorted(Comparator.comparing(Double::doubleValue).reversed()) .collect(Collectors.toList()); diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/SocketManager.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/SocketManager.java index e2e06fdf..f3eb6fb7 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/SocketManager.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/SocketManager.java @@ -75,6 +75,8 @@ public class SocketManager { */ private static List sourceIssueList = new CopyOnWriteArrayList<>(); + private static volatile Boolean paused = false; + public static void addSourceList(List sList) { diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java index f2f951b1..698704a6 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java @@ -44,7 +44,7 @@ public class NettyClient { ch.pipeline() //空闲状态的handler // 添加LineBasedFrameDecoder来按行分割数据 -// .addLast(new LineBasedFrameDecoder(10240)) + .addLast(new LineBasedFrameDecoder(10240)) .addLast(new IdleStateHandler(20, 0, 0, TimeUnit.SECONDS)) .addLast(new StringDecoder(CharsetUtil.UTF_8)) .addLast(new StringEncoder(CharsetUtil.UTF_8)) diff --git a/system/src/main/java/com/njcn/gather/system/pojo/enums/DicDataEnum.java b/system/src/main/java/com/njcn/gather/system/pojo/enums/DicDataEnum.java index 2bf353f8..675bc2d3 100644 --- a/system/src/main/java/com/njcn/gather/system/pojo/enums/DicDataEnum.java +++ b/system/src/main/java/com/njcn/gather/system/pojo/enums/DicDataEnum.java @@ -12,15 +12,16 @@ public enum DicDataEnum { FREQ("FREQ","频率"), V("V","电压"), + I("I","电流"), + IMBV("IMBV","三相电压不平衡度"), + IMBA("IMBA","三相电流不平衡度"), + HV("HV","谐波电压"), HI("HI","谐波电流"), HP("HP","谐波有功功率"), HSV("HSV","间谐波电压"), HSI("V","间谐波电流"), VOLTAGE("VOLTAGE","暂态"), - I("I","电流"), - IMBV("IMBV","三相电压不平衡度"), - IMBA("IMBA","三相电流不平衡度"), F("F","闪变"),