diff --git a/event_smart/src/main/java/com/njcn/product/event/transientes/controller/EventGateController.java b/event_smart/src/main/java/com/njcn/product/event/transientes/controller/EventGateController.java index 3f0a93b..53ad8d6 100644 --- a/event_smart/src/main/java/com/njcn/product/event/transientes/controller/EventGateController.java +++ b/event_smart/src/main/java/com/njcn/product/event/transientes/controller/EventGateController.java @@ -1,6 +1,7 @@ package com.njcn.product.event.transientes.controller; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; @@ -116,35 +117,56 @@ public class EventGateController extends BaseController { && Float.parseFloat(jsonObject.get("eventvalue").toString()) <= msgEventConfigService.getEventValue() && (Float.parseFloat(jsonObject.get("persisttime").toString()) * 1000) >= msgEventConfigService.getEventDuration()) { //过滤重要暂降事件 + //F47过滤 + float eventvalue = Float.parseFloat(jsonObject.get("eventvalue").toString()); + float persisttime = Float.parseFloat(jsonObject.get("persisttime").toString()) * 1000; + if(shouldSendSMS(eventvalue,persisttime)){ + Integer lineId = Integer.valueOf(jsonObject.get("lineid").toString()); + List assList = pqUserLineAssMapper.selectList(new LambdaQueryWrapper().eq(PqUserLineAssPO::getLineIndex, lineId)); - jsonObject.set("persisttime",new BigDecimal(jsonObject.get("persisttime").toString()).setScale(3,RoundingMode.HALF_UP).toString()); - Integer lineId = Integer.valueOf(jsonObject.get("lineid").toString()); - List assList = pqUserLineAssMapper.selectList(new LambdaQueryWrapper().eq(PqUserLineAssPO::getLineIndex, lineId)); + String str ; + if (CollUtil.isNotEmpty(assList)) { + List userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); + List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().select(PqUserLedgerPO::getId, PqUserLedgerPO::getCustomerName,PqUserLedgerPO::getIsShow).in(PqUserLedgerPO::getId, userIds)); + List isShowUser = poList.stream().filter(temp -> temp.getIsShow() == 1).collect(Collectors.toList()); + List noShowUser = poList.stream().filter(temp -> temp.getIsShow() != 1).collect(Collectors.toList()); + String strUser="" ; + + if(CollectionUtil.isEmpty(isShowUser)){ + strUser =strUser+"影响集成电路敏感用户:无;"; + }else { + String sensitiveUser = isShowUser.stream().map(PqUserLedgerPO::getCustomerName).collect(Collectors.joining(";")); + strUser =strUser+"影响集成电路敏感用户:"+sensitiveUser+";"; + } + if(CollectionUtil.isEmpty(noShowUser)){ + strUser =strUser+"影响其他用户:无;"; + }else { + String sensitiveUser = noShowUser.stream().map(PqUserLedgerPO::getCustomerName).collect(Collectors.joining(";")); + strUser =strUser+"影响其他用户:"+sensitiveUser+";"; + } + str = strUser; + } else { + str = "/"; + } + + List deptsList = (List) redisUtil.getObjectByKey(REDIS_DEPT_INDEX + StrUtil.DASHED + "AllDept"); + Map deptsMap = deptsList.stream().collect(Collectors.toMap(PqsDepts::getDeptsIndex, dept -> dept)); + + List deptslineList = pqsDeptslineService.lambdaQuery().eq(PqsDeptsline::getLineIndex, lineId).list(); + List deptIds = deptslineList.stream().map(PqsDeptsline::getDeptsIndex).collect(Collectors.toList()); + Set set = getAllParentIdsWithChildrenBatch(deptIds, deptsMap); + jsonObject.putOpt("objName", str); + jsonObject.putOpt("dept", String.join(StrUtil.COMMA, set)); + + webSocketServer.sendMessageToAll(jsonObject.toString()); + + //针对前置推送的暂降事件进行短信发送功能 + smsTaskExecutor.execute(() -> { + sendMessage(jsonObject, str); + }); - String str; - if (CollUtil.isNotEmpty(assList)) { - List userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); - List poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper().select(PqUserLedgerPO::getId, PqUserLedgerPO::getCustomerName).in(PqUserLedgerPO::getId, userIds)); - str = poList.stream().map(PqUserLedgerPO::getCustomerName).collect(Collectors.joining(";")); - } else { - str = "/"; } - List deptsList = (List) redisUtil.getObjectByKey(REDIS_DEPT_INDEX + StrUtil.DASHED + "AllDept"); - Map deptsMap = deptsList.stream().collect(Collectors.toMap(PqsDepts::getDeptsIndex, dept -> dept)); - - List deptslineList = pqsDeptslineService.lambdaQuery().eq(PqsDeptsline::getLineIndex, lineId).list(); - List deptIds = deptslineList.stream().map(PqsDeptsline::getDeptsIndex).collect(Collectors.toList()); - Set set = getAllParentIdsWithChildrenBatch(deptIds, deptsMap); - jsonObject.putOpt("objName", str); - jsonObject.putOpt("dept", String.join(StrUtil.COMMA, set)); - - webSocketServer.sendMessageToAll(jsonObject.toString()); - - //针对前置推送的暂降事件进行短信发送功能 - smsTaskExecutor.execute(() -> { - sendMessage(jsonObject, str); - }); } } catch (Exception e) { @@ -154,6 +176,27 @@ public class EventGateController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } + private boolean shouldSendSMS( Float value , Float time ) { + + + // 条件1: 电压降至50%以下,持续时间超过20ms + if (value < 0.5 && time >= 20) { + return true; + } + + // 条件2: 电压降至50%—70%,持续时间超过200ms + if (value >= 50 && value < 70 && time >= 200) { + return true; + } + + // 条件3: 电压降至70%—80%,持续时间超过500ms + if (value >= 70 && value < 80 && time >= 500) { + return true; + } + + return false; + } + public Set getAllParentIdsRecursive(String deptId, Map deptMap, Set result) { if (deptId == null || result.contains(deptId)) { return result; @@ -372,8 +415,9 @@ public class EventGateController extends BaseController { StringBuilder stringBuilder = new StringBuilder(jsonObject.get("timeid").toString()); String busName = jsonObject.containsKey("busname")? "_"+jsonObject.get("busname").toString():""; BigDecimal bigDecimal = new BigDecimal(jsonObject.get("eventvalue").toString()).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP); - stringBuilder.append(".").append(jsonObject.get("ms").toString()).append(",").append(jsonObject.get("bdname").toString()).append(busName).append("_").append(jsonObject.get("pointname").toString()) - .append("发生电压暂降事件,事件残余电压").append(bigDecimal).append("%,持续时间:").append(jsonObject.get("persisttime").toString()).append("S;影响用户:"); + stringBuilder.append(".").append(jsonObject.get("ms").toString()).append(",").append(jsonObject.get("bdname").toString()).append(busName) +// .append("_").append(jsonObject.get("pointname").toString()) + .append("发生电压暂降事件,事件残余电压").append(bigDecimal).append("%,持续时间:").append(jsonObject.get("persisttime").toString()).append("S;"); stringBuilder.append(objStr); String message; diff --git a/event_smart/src/main/resources/application.yml b/event_smart/src/main/resources/application.yml index c255abd..82170e6 100644 --- a/event_smart/src/main/resources/application.yml +++ b/event_smart/src/main/resources/application.yml @@ -40,10 +40,10 @@ business: wavePath: D://Comtrade targetPath: /pqmonitor exportBaseDir: D://exportComtrade - eventCronExpression: 0 0/10 * * * ? + eventCronExpression: 0 0/2 * * * ? failCronExpression: 0 5/10 * * * ? userCronExpression: 0 5 1 * * ? - syncinterval: 10 + syncinterval: 2 failsyncinterval: 1440 #wavePath: /usr/local/comtrade #处理临时数据