diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterDevService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterDevService.java index 38c8a9bb..13b5a5e1 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterDevService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterDevService.java @@ -308,29 +308,19 @@ public class SocketFreqConverterDevService { if (CollUtil.isNotEmpty(statusList)) { FreqConverterStatus status = statusList.get(statusList.size() - 1); PqFreqConverterTestRes testRes = new PqFreqConverterTestRes(); - testRes.setDipId(pqDipData.getId()); + testRes.setId(IdUtil.fastSimpleUUID()); testRes.setTolerant(originalTolerant == 1 ? (status.getStatusWord1() == freqConverterConfig.getTolerant() ? 1 : 0) : 0); - testRes.setStartTime(lastStatusData.getTimestamp()); + testRes.setDurationMs(pqDipData.getDurationMs()); + testRes.setResidualVoltage(pqDipData.getResidualVoltage()); - FormalTestManager.pendingDipTaskMap.put(pqDipData.getId(), new FormalTestManager.PendingDipTask( + FormalTestManager.pendingDipTaskMap.put(testRes.getId(), new FormalTestManager.PendingDipTask( pqDipData, targetEndTime, originalTolerant )); - testRes.setEndTime(status.getTimestamp()); -// if (status.getTimestamp().isBefore(targetEndTime)) { -// FormalTestManager.pendingDipTaskMap.put(pqDipData.getId(), new FormalTestManager.PendingDipTask( -// pqDipData.getId(), -// pqDipData.getStartTime(), -// targetEndTime, -// originalTolerant -// )); -// } else { -// testRes.setEndTime(status.getTimestamp().isAfter(targetEndTime) ? targetEndTime : status.getTimestamp()); -// } pqFreqConverterTestResService.saveOrUpdateTestRes(suffix, Collections.singletonList(testRes)); } } @@ -360,6 +350,7 @@ public class SocketFreqConverterDevService { /** * 如果设备已停止,则清除共享的运行时状态 + * * @param currentUserId 当前用户ID */ private void clearStateIfStopped(String currentUserId) { diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterService.java index 03155e10..ba5144d2 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketFreqConverterService.java @@ -1,6 +1,7 @@ package com.njcn.gather.detection.handler; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -48,6 +49,10 @@ public class SocketFreqConverterService { private final IPqFreqConverterConfigService pqFreqConverterConfigService; private final IPqFreqConverterTestResService pqFreqConverterTestResService; private String userId; + /** + * 上一个暂降点耐受检测结果 + */ + private TolerantPointVO lastTolerancePoint; private final FreqConverterConfig freqConverterConfig; /** @@ -106,6 +111,7 @@ public class SocketFreqConverterService { } public void init(String userId, String converterId, String monitorId, Boolean reset) { + this.lastTolerancePoint = null; this.userId = userId; FormalTestManager.freqConverterStep = null; FormalTestManager.currentFreqConverterId = converterId; @@ -185,6 +191,7 @@ public class SocketFreqConverterService { updateCurrentTestStatus(); clearStateIfStopped(currentUserId); this.userId = null; + this.lastTolerancePoint = null; } private void handleInitSerial(String converterChannelTag, FreqConverterRespDTO respDTO) { @@ -295,43 +302,94 @@ public class SocketFreqConverterService { } Integer suffix = FormalTestManager.freqConverterTableSuffix; - List finishedDipIdList = new ArrayList<>(); + List finishedTestResIdList = new ArrayList<>(); List testResList = new ArrayList<>(); - for (FormalTestManager.PendingDipTask task : FormalTestManager.pendingDipTaskMap.values()) { - PqFreqConverterTestRes testRes = pqFreqConverterTestResService.getByDipId(suffix, task.getPqDipData().getId()); - if (Objects.isNull(testRes)) { - finishedDipIdList.add(task.getPqDipData().getId()); - continue; - } - testRes.setEndTime(freqConverterStatus.getTimestamp().isAfter(task.getTargetEndTime()) - ? freqConverterStatus.getTimestamp() - : task.getTargetEndTime()); - - testRes.setTolerant(testRes.getTolerant() & (freqConverterStatus.getStatusWord1() == freqConverterConfig.getTolerant() ? 1 : 0)); - testResList.add(testRes); + FormalTestManager.pendingDipTaskMap.forEach((key, task) -> { + PqFreqConverterTestRes testRes = new PqFreqConverterTestRes(); + testRes.setId(key); + testRes.setDurationMs(task.getPqDipData().getDurationMs()); + testRes.setResidualVoltage(task.getPqDipData().getResidualVoltage()); + testRes.setTolerant(task.getOriginalTolerant() & (freqConverterStatus.getStatusWord1() == freqConverterConfig.getTolerant() ? 1 : 0)); if (freqConverterStatus.getTimestamp().isAfter(task.getTargetEndTime())) { - finishedDipIdList.add(task.getPqDipData().getId()); + finishedTestResIdList.add(key); SocketDataMsg socketDataMsg = new SocketDataMsg(); socketDataMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL + SocketFreqConverterDevService.DIP_DATA_SUFFIX); - TolerantPointVO tolerantPointVO = new TolerantPointVO(); - tolerantPointVO.setResidualVoltage(task.getPqDipData().getResidualVoltage()); - tolerantPointVO.setDurationMs(task.getPqDipData().getDurationMs()); - tolerantPointVO.setTolerant(testRes.getTolerant()); - socketDataMsg.setData(JSON.toJSONString(tolerantPointVO)); + TolerantPointVO newTolerantPointVO = new TolerantPointVO(); + newTolerantPointVO.setResidualVoltage(task.getPqDipData().getResidualVoltage()); + newTolerantPointVO.setDurationMs(task.getPqDipData().getDurationMs()); + newTolerantPointVO.setTolerant(testRes.getTolerant()); + socketDataMsg.setData(JSON.toJSONString(newTolerantPointVO)); WebServiceManager.sendMsg(this.userId, JSON.toJSONString(socketDataMsg)); + + if (ObjectUtil.isNotNull(this.lastTolerancePoint)) { + boolean isNewGroup = this.isNewGroup(this.lastTolerancePoint, newTolerantPointVO); + if (isNewGroup) { + if (this.lastTolerancePoint.getTolerant() == 1 && newTolerantPointVO.getTolerant() == 1) { + TolerantPointVO featurePointVO = new TolerantPointVO(); + featurePointVO.setResidualVoltage(this.lastTolerancePoint.getResidualVoltage()); + featurePointVO.setDurationMs(this.lastTolerancePoint.getDurationMs()); + featurePointVO.setTolerant(2); + socketDataMsg.setData(JSON.toJSONString(featurePointVO)); + WebServiceManager.sendMsg(this.userId, JSON.toJSONString(socketDataMsg)); + testRes.setTolerant(2); + } + } else { + if (this.lastTolerancePoint.getTolerant() == 1 && testRes.getTolerant() == 0) { + TolerantPointVO featurePointVO = new TolerantPointVO(); + + featurePointVO.setResidualVoltage((task.getPqDipData().getResidualVoltage() + this.lastTolerancePoint.getResidualVoltage()) / 2D); + featurePointVO.setDurationMs(Integer.valueOf((task.getPqDipData().getDurationMs().intValue() + this.lastTolerancePoint.getDurationMs().intValue()) / 2)); + featurePointVO.setTolerant(2); + socketDataMsg.setData(JSON.toJSONString(featurePointVO)); + WebServiceManager.sendMsg(this.userId, JSON.toJSONString(socketDataMsg)); + + PqFreqConverterTestRes featureTestRes = new PqFreqConverterTestRes(); + featureTestRes.setId(IdUtil.fastSimpleUUID()); + featureTestRes.setDurationMs(featurePointVO.getDurationMs()); + featureTestRes.setResidualVoltage(featurePointVO.getResidualVoltage()); + featureTestRes.setTolerant(2); + testResList.add(featureTestRes); + } + } + } + this.lastTolerancePoint = newTolerantPointVO; } - } + testResList.add(testRes); + }); pqFreqConverterTestResService.saveOrUpdateTestRes(suffix, testResList); - for (String dipId : finishedDipIdList) { + for (String dipId : finishedTestResIdList) { FormalTestManager.pendingDipTaskMap.remove(dipId); } } + + /** + * 判断是否为新的一组测试脚本 + * + * @param lastTolerancePoint 上一个暂降点 + * @param newTolerantPointVO 最新的暂降点 + * @return + */ + private boolean isNewGroup(TolerantPointVO lastTolerancePoint, TolerantPointVO newTolerantPointVO) { +// // 纵向分租 +// if (newTolerantPointVO.getResidualVoltage() - lastTolerancePoint.getResidualVoltage() >= 2 && newTolerantPointVO.getDurationMs() - lastTolerancePoint.getDurationMs() >= 10) { +// return true; +// } +// // 横向分组 +// if (lastTolerancePoint.getDurationMs() - newTolerantPointVO.getDurationMs() >= 10 && lastTolerancePoint.getResidualVoltage() - newTolerantPointVO.getResidualVoltage() >= 2) { +// return true; +// } + + if (Math.abs(lastTolerancePoint.getDurationMs() - newTolerantPointVO.getDurationMs()) >= 10 && Math.abs(lastTolerancePoint.getResidualVoltage() - newTolerantPointVO.getResidualVoltage()) >= 2) { + return true; + } + return false; + } } diff --git a/detection/src/main/java/com/njcn/gather/freqConverter/controller/FreqConverterController.java b/detection/src/main/java/com/njcn/gather/freqConverter/controller/FreqConverterController.java index ec3284da..be401b42 100644 --- a/detection/src/main/java/com/njcn/gather/freqConverter/controller/FreqConverterController.java +++ b/detection/src/main/java/com/njcn/gather/freqConverter/controller/FreqConverterController.java @@ -104,13 +104,13 @@ public class FreqConverterController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, tolerantPoints, methodDescribe); } - @GetMapping("/scurve") - @ApiOperation("获取绘制特性曲线的point点") - @ApiImplicitParam(name = "converterId", value = "变频器ID", required = true) - public HttpResult> getScurvePoints(@RequestParam("converterId") String converterId) { - String methodDescribe = getMethodDescribe("getScurvePoints"); - LogUtil.njcnDebug(log, "{},查询ID数据为:{}", methodDescribe, converterId); - List tolerantPoints = freqConverterService.getFeaturesScurvePoints(converterId); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, tolerantPoints, methodDescribe); - } +// @GetMapping("/scurve") +// @ApiOperation("获取绘制特性曲线的point点") +// @ApiImplicitParam(name = "converterId", value = "变频器ID", required = true) +// public HttpResult> getScurvePoints(@RequestParam("converterId") String converterId) { +// String methodDescribe = getMethodDescribe("getScurvePoints"); +// LogUtil.njcnDebug(log, "{},查询ID数据为:{}", methodDescribe, converterId); +// List tolerantPoints = freqConverterService.getFeaturesScurvePoints(converterId); +// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, tolerantPoints, methodDescribe); +// } } diff --git a/detection/src/main/java/com/njcn/gather/freqConverter/pojo/po/PqFreqConverterTestRes.java b/detection/src/main/java/com/njcn/gather/freqConverter/pojo/po/PqFreqConverterTestRes.java index a0813b29..48a5cdea 100644 --- a/detection/src/main/java/com/njcn/gather/freqConverter/pojo/po/PqFreqConverterTestRes.java +++ b/detection/src/main/java/com/njcn/gather/freqConverter/pojo/po/PqFreqConverterTestRes.java @@ -18,22 +18,17 @@ public class PqFreqConverterTestRes { private String id; /** - * 装置暂降数据id + * 残余电压,单位:%Ur */ - private String dipId; + private Double residualVoltage; + + /** + * 持续时间,单位:ms + */ + private Integer durationMs; /** * 0为不耐受,1为耐受,2为特性曲线点 */ private Integer tolerant; - - /** - * 该暂降时期对应变频器的起始时间戳 - */ - private LocalDateTime startTime; - - /** - * 该暂降时期对应变频器的结束时间戳 - */ - private LocalDateTime endTime; } diff --git a/detection/src/main/java/com/njcn/gather/freqConverter/service/IPqFreqConverterTestResService.java b/detection/src/main/java/com/njcn/gather/freqConverter/service/IPqFreqConverterTestResService.java index 3e6f2307..8291f840 100644 --- a/detection/src/main/java/com/njcn/gather/freqConverter/service/IPqFreqConverterTestResService.java +++ b/detection/src/main/java/com/njcn/gather/freqConverter/service/IPqFreqConverterTestResService.java @@ -35,11 +35,4 @@ public interface IPqFreqConverterTestResService extends IService listTestRes(Integer suffix); - /** - * 根据DIPID查询结果 - * @param suffix - * @param dipId - * @return - */ - PqFreqConverterTestRes getByDipId(Integer suffix, String dipId); } diff --git a/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/FreqConverterServiceImpl.java b/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/FreqConverterServiceImpl.java index fabd414f..e5799256 100644 --- a/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/FreqConverterServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/FreqConverterServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; -import com.njcn.gather.dip.pojo.po.PqDipData; import com.njcn.gather.dip.service.IPqDipDataService; import com.njcn.gather.freqConverter.mapper.FreqConverterStatusMapper; import com.njcn.gather.freqConverter.pojo.po.FreqConverterStatus; @@ -80,16 +79,14 @@ public class FreqConverterServiceImpl extends ServiceImpl pqFreqConverterTestResList = pqFreqConverterTestResService.list(); DynamicTableNameHandler.remove(); List result = pqFreqConverterTestResList.stream().map(item -> { - DynamicTableNameHandler.setTableName(PqFreqConverterConfigServiceImpl.PQ_DIP_DATA_TB_PREFIX + suffix); - PqDipData pqDipData = dipDataService.getById(item.getDipId()); - DynamicTableNameHandler.remove(); - TolerantPointVO tolerantPointVO = new TolerantPointVO(); - tolerantPointVO.setDurationMs(pqDipData.getDurationMs()); - tolerantPointVO.setResidualVoltage(pqDipData.getResidualVoltage()); - tolerantPointVO.setTolerant(item.getTolerant()); - return tolerantPointVO; - }).sorted(Comparator.comparingInt(TolerantPointVO::getDurationMs)).collect(Collectors.toList()); - + TolerantPointVO tolerantPointVO = new TolerantPointVO(); + tolerantPointVO.setDurationMs(item.getDurationMs()); + tolerantPointVO.setResidualVoltage(item.getResidualVoltage()); + tolerantPointVO.setTolerant(item.getTolerant()); + return tolerantPointVO; + }) + .sorted(Comparator.comparingInt(TolerantPointVO::getDurationMs)) + .sorted(Comparator.comparingDouble(TolerantPointVO::getResidualVoltage)).collect(Collectors.toList()); return result; } @@ -136,15 +133,15 @@ public class FreqConverterServiceImpl extends ServiceImpl keyList = durationPointMap.keySet().stream().collect(Collectors.toList()); Integer i1 = keyList.get(0); List tolerantPointVOS1 = durationPointMap.get(i1); - Collections.sort(tolerantPointVOS1,Comparator.comparing(TolerantPointVO::getResidualVoltage)); + Collections.sort(tolerantPointVOS1, Comparator.comparing(TolerantPointVO::getResidualVoltage)); TolerantPointVO tolerantPointVO1 = tolerantPointVOS1.get(0); Integer i2 = keyList.get(1); List tolerantPointVOS2 = durationPointMap.get(i2); - Collections.sort(tolerantPointVOS2,Comparator.comparing(TolerantPointVO::getResidualVoltage)); + Collections.sort(tolerantPointVOS2, Comparator.comparing(TolerantPointVO::getResidualVoltage)); TolerantPointVO tolerantPointVO2 = tolerantPointVOS2.get(0); - firstPoint.setDurationMs((i1 + i2)/2); + firstPoint.setDurationMs((i1 + i2) / 2); firstPoint.setResidualVoltage((tolerantPointVO1.getResidualVoltage() + tolerantPointVO2.getResidualVoltage()) / 2D); firstPoint.setTolerant(2); result.add(firstPoint); diff --git a/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/PqFreqConverterConfigServiceImpl.java b/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/PqFreqConverterConfigServiceImpl.java index ce34e743..600ecb60 100644 --- a/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/PqFreqConverterConfigServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/freqConverter/service/impl/PqFreqConverterConfigServiceImpl.java @@ -81,10 +81,9 @@ public class PqFreqConverterConfigServiceImpl extends ServiceImpl implements IPqFreqConverterTestResService { @Override public void clearAllData(Integer suffix) { - DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix); + DynamicTableNameHandler.setTableName(PqFreqConverterConfigServiceImpl.PQ_FREQ_CONVERTER_TEST_RES_TB_PREFIX + suffix); this.remove(null); DynamicTableNameHandler.remove(); } @Override public boolean saveOrUpdateTestRes(Integer suffix, List testResList) { - DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix); + DynamicTableNameHandler.setTableName(PqFreqConverterConfigServiceImpl.PQ_FREQ_CONVERTER_TEST_RES_TB_PREFIX + suffix); List existedTestResList = new ArrayList<>(); List newTestResList = new ArrayList<>(); @@ -50,17 +50,10 @@ public class PqFreqConverterTestResServiceImpl extends ServiceImpl listTestRes(Integer suffix) { - DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix); + DynamicTableNameHandler.setTableName(PqFreqConverterConfigServiceImpl.PQ_FREQ_CONVERTER_TEST_RES_TB_PREFIX + suffix); List result = this.list(); DynamicTableNameHandler.remove(); return result; } - @Override - public PqFreqConverterTestRes getByDipId(Integer suffix, String dipId) { - DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix); - PqFreqConverterTestRes one = this.lambdaQuery().eq(PqFreqConverterTestRes::getDipId, dipId).one(); - DynamicTableNameHandler.remove(); - return one; - } }