diff --git a/iot-access/access-api/src/main/java/com/njcn/access/param/DevAccessParam.java b/iot-access/access-api/src/main/java/com/njcn/access/param/DevAccessParam.java index 19864d5..0883b38 100644 --- a/iot-access/access-api/src/main/java/com/njcn/access/param/DevAccessParam.java +++ b/iot-access/access-api/src/main/java/com/njcn/access/param/DevAccessParam.java @@ -72,6 +72,9 @@ public class DevAccessParam implements Serializable { @ApiModelProperty("中心点纬度") @NotNull(message = "中心点纬度不能为空") private Double lat; + + @ApiModelProperty("拓扑图指标id") + private String target; } } diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java index 02d39d8..5683ff1 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java @@ -277,6 +277,7 @@ public class CsDeviceServiceImpl implements ICsDeviceService { appLineTopologyDiagramPo.setLat(item.getLat()); appLineTopologyDiagramPo.setLng(item.getLng()); appLineTopologyDiagramPo.setStatus("1"); + appLineTopologyDiagramPo.setTarget(item.getTarget()); appLineTopologyDiagramPoList.add(appLineTopologyDiagramPo); } List position = csLinePoList.stream().map(CsLinePO::getPosition).collect(Collectors.toList()); diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/mapper/CsEventUserMapper.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/mapper/CsEventUserMapper.java index 39f1e55..58e99d5 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/mapper/CsEventUserMapper.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/mapper/CsEventUserMapper.java @@ -1,16 +1,16 @@ -package com.njcn.zlevent.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.njcn.csharmonic.pojo.po.CsEventUserPO; - -/** - *

- * 暂态事件表 Mapper 接口 - *

- * - * @author xuyang - * @since 2023-08-23 - */ -public interface CsEventUserMapper extends BaseMapper { - -} +//package com.njcn.zlevent.mapper; +// +//import com.baomidou.mybatisplus.core.mapper.BaseMapper; +//import com.njcn.csharmonic.pojo.po.CsEventUserPO; +// +///** +// *

+// * 暂态事件表 Mapper 接口 +// *

+// * +// * @author xuyang +// * @since 2023-08-23 +// */ +//public interface CsEventUserMapper extends BaseMapper { +// +//} diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/AppNotificationService.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/AppNotificationService.java index da9e7e3..46bce0f 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/AppNotificationService.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/AppNotificationService.java @@ -1,161 +1,72 @@ -package com.njcn.zlevent.service; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DatePattern; -import com.njcn.access.pojo.dto.NoticeUserDto; -import com.njcn.access.utils.SendMessageUtil; -import com.njcn.csdevice.api.CsLedgerFeignClient; -import com.njcn.csdevice.api.DeviceMessageFeignClient; -import com.njcn.csdevice.api.EquipmentFeignClient; -import com.njcn.csdevice.api.EventLogsFeignClient; -import com.njcn.csdevice.param.DeviceMessageParam; -import com.njcn.csdevice.pojo.dto.DevDetailDTO; -import com.njcn.csdevice.pojo.po.CsEventSendMsg; -import com.njcn.csharmonic.pojo.po.CsEventUserPO; -import com.njcn.system.api.EpdFeignClient; -import com.njcn.user.pojo.po.User; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @author xy - */ -@Service -@Slf4j -@RequiredArgsConstructor -public class AppNotificationService { - - private final DeviceMessageFeignClient deviceMessageFeignClient; - private final EquipmentFeignClient equipmentFeignClient; - private final EpdFeignClient epdFeignClient; - private final ICsEventUserService csEventUserService; - private final SendMessageUtil sendMessageUtil; - private final EventLogsFeignClient eventLogsFeignClient; - private final CsLedgerFeignClient csLedgerFeignClient; - - @Async("eventNotificationExecutor") - public void sendAppNotification(Integer eventType, String type, String devId, - String eventName, LocalDateTime eventTime, - String id, String nDid, Double amplitude, Double persistTime) { - int code; - List users = new ArrayList<>(); - List eventUser; - List devCodeList; - List userList = new ArrayList<>(); - List csEventSendMsgList = new ArrayList<>(); - NoticeUserDto noticeUserDto = new NoticeUserDto(); - NoticeUserDto.Payload payload = new NoticeUserDto.Payload(); - String content = null; - List result = new ArrayList<>(); - //获取设备类型 true:治理设备 false:其他类型的设备 - boolean devModel = equipmentFeignClient.judgeDevModel(nDid).getData(); - if (devModel) { - DevDetailDTO devDetailDto = csLedgerFeignClient.queryDevDetail(devId).getData(); - //事件处理 - if (eventType == 1){ - eventName = epdFeignClient.findByName(eventName).getData().getShowName(); - switch (type) { - case "1": - code = 3; - //设备自身事件 不推送给用户,推送给业务管理 - eventUser = deviceMessageFeignClient.getEventUserByDeviceId(devId,false).getData(); - if (CollectionUtil.isNotEmpty(eventUser)) { - eventUser.forEach(item->{ - CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(item); - csEventUser.setStatus(0); - csEventUser.setEventId(id); - result.add(csEventUser); - }); - - DeviceMessageParam param1 = new DeviceMessageParam(); - param1.setUserList(eventUser); - param1.setEventType(2); - users = deviceMessageFeignClient.getSendUserByType(param1).getData(); - if (CollectionUtil.isNotEmpty(users)){ - for (User user : users){ - userList.add(user.getDevCode()); - } - noticeUserDto.setPushClientId(userList); - noticeUserDto.setTitle("运行事件"); - } - } - break; - case "2": - code = 0; - //暂态事件 - eventUser = deviceMessageFeignClient.getEventUserByDeviceId(devId,true).getData(); - if (CollectionUtil.isNotEmpty(eventUser)) { - eventUser.forEach(item->{ - CsEventUserPO csEventUser = new CsEventUserPO(); - csEventUser.setUserId(item); - csEventUser.setStatus(0); - csEventUser.setEventId(id); - result.add(csEventUser); - }); - DeviceMessageParam param1 = new DeviceMessageParam(); - param1.setUserList(eventUser); - param1.setEventType(0); - users = deviceMessageFeignClient.getSendUserByType(param1).getData(); - if (CollectionUtil.isNotEmpty(users)){ - devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); - noticeUserDto.setPushClientId(devCodeList); - noticeUserDto.setTitle("暂态事件"); - content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() - + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生暂态事件,事件类型:" - + eventName - + ",特征幅值:" + amplitude + "%" - + ",持续时间:" + persistTime + "s"; - } - } - break; -// case "3": -// code = 1; -// //稳态事件 -// eventUser = getEventUser(devId,true); -// if (CollectionUtil.isNotEmpty(eventUser)) { -// eventUser.forEach(item->{ -// CsEventUserPO csEventUser = new CsEventUserPO(); -// csEventUser.setUserId(item); -// csEventUser.setStatus(0); -// csEventUser.setEventId(id); -// result.add(csEventUser); -// }); -// users = getSendUser(eventUser,1); -// if (CollectionUtil.isNotEmpty(users)){ -// devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); -// noticeUserDto.setPushClientId(devCodeList); -// noticeUserDto.setTitle("稳态事件"); -// } -// } -// break; - default: - code = 0; - break; - } - //获取台账信息 - if (Objects.isNull(content)) { - content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生" + eventName; - } - noticeUserDto.setContent(content); - payload.setType(code); - payload.setPath("/pages/index/message1?type="+payload.getType()); - noticeUserDto.setPayload(payload); - } -// //告警处理 -// else if (eventType == 2){ +//package com.njcn.zlevent.service; +// +//import cn.hutool.core.collection.CollectionUtil; +//import cn.hutool.core.date.DatePattern; +//import com.njcn.access.pojo.dto.NoticeUserDto; +//import com.njcn.access.utils.SendMessageUtil; +//import com.njcn.csdevice.api.CsLedgerFeignClient; +//import com.njcn.csdevice.api.DeviceMessageFeignClient; +//import com.njcn.csdevice.api.EquipmentFeignClient; +//import com.njcn.csdevice.api.EventLogsFeignClient; +//import com.njcn.csdevice.param.DeviceMessageParam; +//import com.njcn.csdevice.pojo.dto.DevDetailDTO; +//import com.njcn.csdevice.pojo.po.CsEventSendMsg; +//import com.njcn.csharmonic.pojo.po.CsEventUserPO; +//import com.njcn.system.api.EpdFeignClient; +//import com.njcn.user.pojo.po.User; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.scheduling.annotation.Async; +//import org.springframework.stereotype.Service; +// +//import java.time.LocalDateTime; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Objects; +//import java.util.stream.Collectors; +// +///** +// * @author xy +// */ +//@Service +//@Slf4j +//@RequiredArgsConstructor +//public class AppNotificationService { +// +// private final DeviceMessageFeignClient deviceMessageFeignClient; +// private final EquipmentFeignClient equipmentFeignClient; +// private final EpdFeignClient epdFeignClient; +// private final ICsEventUserService csEventUserService; +// private final SendMessageUtil sendMessageUtil; +// private final EventLogsFeignClient eventLogsFeignClient; +// private final CsLedgerFeignClient csLedgerFeignClient; +// +// @Async("eventNotificationExecutor") +// public void sendAppNotification(Integer eventType, String type, String devId, +// String eventName, LocalDateTime eventTime, +// String id, String nDid, Double amplitude, Double persistTime,String dropZone) { +// int code; +// List users = new ArrayList<>(); +// List eventUser; +// List devCodeList; +// List userList = new ArrayList<>(); +// List csEventSendMsgList = new ArrayList<>(); +// NoticeUserDto noticeUserDto = new NoticeUserDto(); +// NoticeUserDto.Payload payload = new NoticeUserDto.Payload(); +// String content = null; +// List result = new ArrayList<>(); +// //获取设备类型 true:治理设备 false:其他类型的设备 +// boolean devModel = equipmentFeignClient.judgeDevModel(nDid).getData(); +// if (devModel) { +// DevDetailDTO devDetailDto = csLedgerFeignClient.queryDevDetail(devId).getData(); +// //事件处理 +// if (eventType == 1){ +// eventName = epdFeignClient.findByName(eventName).getData().getShowName(); // switch (type) { // case "1": -// //Ⅰ级告警 不推送给用户,推送给业务管理 -// eventUser = getEventUser(devId,false); +// code = 3; +// //设备自身事件 不推送给用户,推送给业务管理 +// eventUser = deviceMessageFeignClient.getEventUserByDeviceId(devId,false).getData(); // if (CollectionUtil.isNotEmpty(eventUser)) { // eventUser.forEach(item->{ // CsEventUserPO csEventUser = new CsEventUserPO(); @@ -164,19 +75,24 @@ public class AppNotificationService { // csEventUser.setEventId(id); // result.add(csEventUser); // }); -// users = getSendUser(eventUser,3); +// +// DeviceMessageParam param1 = new DeviceMessageParam(); +// param1.setUserList(eventUser); +// param1.setEventType(2); +// users = deviceMessageFeignClient.getSendUserByType(param1).getData(); // if (CollectionUtil.isNotEmpty(users)){ -// eventName = epdFeignClient.findByName(eventName).getData().getShowName(); -// devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); -// noticeUserDto.setPushClientId(devCodeList); +// for (User user : users){ +// userList.add(user.getDevCode()); +// } +// noticeUserDto.setPushClientId(userList); +// noticeUserDto.setTitle("运行事件"); // } // } // break; // case "2": -// eventName = epdFeignClient.findByName(eventName).getData().getShowName(); -// case "3": -// //Ⅱ、Ⅲ级告警推送相关用户及业务管理员 -// eventUser = getEventUser(devId,true); +// code = 0; +// //暂态事件 +// eventUser = deviceMessageFeignClient.getEventUserByDeviceId(devId,true).getData(); // if (CollectionUtil.isNotEmpty(eventUser)) { // eventUser.forEach(item->{ // CsEventUserPO csEventUser = new CsEventUserPO(); @@ -185,54 +101,139 @@ public class AppNotificationService { // csEventUser.setEventId(id); // result.add(csEventUser); // }); -// users = getSendUser(eventUser,3); +// DeviceMessageParam param1 = new DeviceMessageParam(); +// param1.setUserList(eventUser); +// param1.setEventType(0); +// users = deviceMessageFeignClient.getSendUserByType(param1).getData(); // if (CollectionUtil.isNotEmpty(users)){ // devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); // noticeUserDto.setPushClientId(devCodeList); +// noticeUserDto.setTitle("暂态事件"); +// content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() +// + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生暂态事件,事件类型:" +// + eventName +// + ",特征幅值:" + amplitude + "%" +// + ",持续时间:" + persistTime + "s" +// + ",落点区域:" + (Objects.isNull(dropZone)?"未知":dropZone); // } // } // break; +//// case "3": +//// code = 1; +//// //稳态事件 +//// eventUser = getEventUser(devId,true); +//// if (CollectionUtil.isNotEmpty(eventUser)) { +//// eventUser.forEach(item->{ +//// CsEventUserPO csEventUser = new CsEventUserPO(); +//// csEventUser.setUserId(item); +//// csEventUser.setStatus(0); +//// csEventUser.setEventId(id); +//// result.add(csEventUser); +//// }); +//// users = getSendUser(eventUser,1); +//// if (CollectionUtil.isNotEmpty(users)){ +//// devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); +//// noticeUserDto.setPushClientId(devCodeList); +//// noticeUserDto.setTitle("稳态事件"); +//// } +//// } +//// break; // default: +// code = 0; // break; // } -// noticeUserDto.setTitle("告警事件"); -// DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(devId).getData(); -// content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生告警,告警信息:" + eventName; +// //获取台账信息 +// if (Objects.isNull(content)) { +// content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生" + eventName; +// } // noticeUserDto.setContent(content); -// payload.setType(3); -// payload.setPath("/pages/message/message?type="+payload.getType()); +// payload.setType(code); +// payload.setPath("/pages/index/message1?type="+payload.getType()); // noticeUserDto.setPayload(payload); // } - if (CollectionUtil.isNotEmpty(noticeUserDto.getPushClientId())) { - List filteredList = noticeUserDto.getPushClientId().stream() - .filter(Objects::nonNull) - .distinct() - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(filteredList)) { - noticeUserDto.setPushClientId(filteredList); - sendMessageUtil.sendEventToUser(noticeUserDto); - } - } - //记录推送日志 - for (User item : users) { - CsEventSendMsg csEventSendMsg = new CsEventSendMsg(); - csEventSendMsg.setUserId(item.getId()); - csEventSendMsg.setEventId(id); - csEventSendMsg.setSendTime(LocalDateTime.now()); - if (Objects.isNull(item.getDevCode())){ - csEventSendMsg.setStatus(0); - csEventSendMsg.setRemark("用户设备识别码为空"); - } else { - csEventSendMsg.setDevCode(item.getDevCode()); - csEventSendMsg.setStatus(1); - } - csEventSendMsgList.add(csEventSendMsg); - } - eventLogsFeignClient.addLogs(csEventSendMsgList); - //事件用户关系入库 - if (CollectionUtil.isNotEmpty(result)){ - csEventUserService.saveBatch(result); - } - } - } -} +//// //告警处理 +//// else if (eventType == 2){ +//// switch (type) { +//// case "1": +//// //Ⅰ级告警 不推送给用户,推送给业务管理 +//// eventUser = getEventUser(devId,false); +//// if (CollectionUtil.isNotEmpty(eventUser)) { +//// eventUser.forEach(item->{ +//// CsEventUserPO csEventUser = new CsEventUserPO(); +//// csEventUser.setUserId(item); +//// csEventUser.setStatus(0); +//// csEventUser.setEventId(id); +//// result.add(csEventUser); +//// }); +//// users = getSendUser(eventUser,3); +//// if (CollectionUtil.isNotEmpty(users)){ +//// eventName = epdFeignClient.findByName(eventName).getData().getShowName(); +//// devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); +//// noticeUserDto.setPushClientId(devCodeList); +//// } +//// } +//// break; +//// case "2": +//// eventName = epdFeignClient.findByName(eventName).getData().getShowName(); +//// case "3": +//// //Ⅱ、Ⅲ级告警推送相关用户及业务管理员 +//// eventUser = getEventUser(devId,true); +//// if (CollectionUtil.isNotEmpty(eventUser)) { +//// eventUser.forEach(item->{ +//// CsEventUserPO csEventUser = new CsEventUserPO(); +//// csEventUser.setUserId(item); +//// csEventUser.setStatus(0); +//// csEventUser.setEventId(id); +//// result.add(csEventUser); +//// }); +//// users = getSendUser(eventUser,3); +//// if (CollectionUtil.isNotEmpty(users)){ +//// devCodeList = users.stream().map(User::getDevCode).distinct().collect(Collectors.toList()); +//// noticeUserDto.setPushClientId(devCodeList); +//// } +//// } +//// break; +//// default: +//// break; +//// } +//// noticeUserDto.setTitle("告警事件"); +//// DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(devId).getData(); +//// content = devDetailDto.getEngineeringName() + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生告警,告警信息:" + eventName; +//// noticeUserDto.setContent(content); +//// payload.setType(3); +//// payload.setPath("/pages/message/message?type="+payload.getType()); +//// noticeUserDto.setPayload(payload); +//// } +// if (CollectionUtil.isNotEmpty(noticeUserDto.getPushClientId())) { +// List filteredList = noticeUserDto.getPushClientId().stream() +// .filter(Objects::nonNull) +// .distinct() +// .collect(Collectors.toList()); +// if (CollectionUtil.isNotEmpty(filteredList)) { +// noticeUserDto.setPushClientId(filteredList); +// sendMessageUtil.sendEventToUser(noticeUserDto); +// } +// } +// //记录推送日志 +// for (User item : users) { +// CsEventSendMsg csEventSendMsg = new CsEventSendMsg(); +// csEventSendMsg.setUserId(item.getId()); +// csEventSendMsg.setEventId(id); +// csEventSendMsg.setSendTime(LocalDateTime.now()); +// if (Objects.isNull(item.getDevCode())){ +// csEventSendMsg.setStatus(0); +// csEventSendMsg.setRemark("用户设备识别码为空"); +// } else { +// csEventSendMsg.setDevCode(item.getDevCode()); +// csEventSendMsg.setStatus(1); +// } +// csEventSendMsgList.add(csEventSendMsg); +// } +// eventLogsFeignClient.addLogs(csEventSendMsgList); +// //事件用户关系入库 +// if (CollectionUtil.isNotEmpty(result)){ +// csEventUserService.saveBatch(result); +// } +// } +// } +//} diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventUserService.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventUserService.java index 4e63ca2..0aed2c9 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventUserService.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventUserService.java @@ -1,16 +1,16 @@ -package com.njcn.zlevent.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.njcn.csharmonic.pojo.po.CsEventUserPO; - -/** - *

- * 暂态事件表 服务类 - *

- * - * @author xuyang - * @since 2023-08-23 - */ -public interface ICsEventUserService extends IService { - -} +//package com.njcn.zlevent.service; +// +//import com.baomidou.mybatisplus.extension.service.IService; +//import com.njcn.csharmonic.pojo.po.CsEventUserPO; +// +///** +// *

+// * 暂态事件表 服务类 +// *

+// * +// * @author xuyang +// * @since 2023-08-23 +// */ +//public interface ICsEventUserService extends IService { +// +//} diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/SmsNotificationService.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/SmsNotificationService.java index 1276475..c8c2faf 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/SmsNotificationService.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/SmsNotificationService.java @@ -1,70 +1,71 @@ -package com.njcn.zlevent.service; - -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.util.StrUtil; -import com.njcn.csdevice.api.CsLedgerFeignClient; -import com.njcn.csdevice.api.SmsSendFeignClient; -import com.njcn.csdevice.pojo.dto.DevDetailDTO; -import com.njcn.cssystem.api.AppMsgSetFeignClient; -import com.njcn.user.api.UserFeignClient; -import com.njcn.user.pojo.po.User; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @author xy - */ -@Service -@Slf4j -@RequiredArgsConstructor -public class SmsNotificationService { - - private final AppMsgSetFeignClient appMsgSetFeignClient; - private final UserFeignClient userFeignClient; - private final SmsSendFeignClient smsSendFeignClient; - private final CsLedgerFeignClient csLedgerFeignclient; - - @Value("${msg.msg_sign:南京灿能电力}") - private String msgSign; - - @Async("smsNotificationExecutor") - public void sendSmsForDipEvent(String deviceId, LocalDateTime eventTime,double amplitude,double persistTime) { - try { - List userIdList = appMsgSetFeignClient.queryUserIdsByDeviceId(deviceId).getData(); - if (CollectionUtil.isNotEmpty(userIdList)) { - List userList = userFeignClient.getUserListByIds(userIdList).getData(); - if (CollectionUtil.isNotEmpty(userList)) { - List userList1 = userList.stream() - .filter(item -> StrUtil.isNotBlank(item.getPhone()) && Objects.equals(item.getSmsNotice(), 1)) - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(userList1)) { - DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(deviceId).getData(); - String msgContent = "【" + msgSign + "】" + devDetailDto.getEngineeringName() - + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() - + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生暂降事件" - + ",特征幅值:" + amplitude + "%" - + ",持续时间:" + persistTime + "s"; - userList1.forEach(item -> { - try { - smsSendFeignClient.sendSmsSimple(item.getPhone(), msgContent, "verify_code"); - } catch (Exception e) { - log.error("发送短信失败,手机号: {}", item.getPhone(), e); - } - }); - } - } - } - } catch (Exception e) { - log.error("异步发送暂降事件短信失败,设备ID: {}", deviceId, e); - } - } -} +//package com.njcn.zlevent.service; +// +//import cn.hutool.core.collection.CollectionUtil; +//import cn.hutool.core.date.DatePattern; +//import cn.hutool.core.util.StrUtil; +//import com.njcn.csdevice.api.CsLedgerFeignClient; +//import com.njcn.csdevice.api.SmsSendFeignClient; +//import com.njcn.csdevice.pojo.dto.DevDetailDTO; +//import com.njcn.cssystem.api.AppMsgSetFeignClient; +//import com.njcn.user.api.UserFeignClient; +//import com.njcn.user.pojo.po.User; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.scheduling.annotation.Async; +//import org.springframework.stereotype.Service; +// +//import java.time.LocalDateTime; +//import java.util.List; +//import java.util.Objects; +//import java.util.stream.Collectors; +// +///** +// * @author xy +// */ +//@Service +//@Slf4j +//@RequiredArgsConstructor +//public class SmsNotificationService { +// +// private final AppMsgSetFeignClient appMsgSetFeignClient; +// private final UserFeignClient userFeignClient; +// private final SmsSendFeignClient smsSendFeignClient; +// private final CsLedgerFeignClient csLedgerFeignclient; +// +// @Value("${msg.msg_sign:南京灿能电力}") +// private String msgSign; +// +// @Async("smsNotificationExecutor") +// public void sendSmsForDipEvent(String deviceId, LocalDateTime eventTime,double amplitude,double persistTime,String dropZone) { +// try { +// List userIdList = appMsgSetFeignClient.queryUserIdsByDeviceId(deviceId).getData(); +// if (CollectionUtil.isNotEmpty(userIdList)) { +// List userList = userFeignClient.getUserListByIds(userIdList).getData(); +// if (CollectionUtil.isNotEmpty(userList)) { +// List userList1 = userList.stream() +// .filter(item -> StrUtil.isNotBlank(item.getPhone()) && Objects.equals(item.getSmsNotice(), 1)) +// .collect(Collectors.toList()); +// if (CollectionUtil.isNotEmpty(userList1)) { +// DevDetailDTO devDetailDto = csLedgerFeignclient.queryDevDetail(deviceId).getData(); +// String msgContent = "【" + msgSign + "】" + devDetailDto.getEngineeringName() +// + "-" + devDetailDto.getProjectName() + "-" + devDetailDto.getEquipmentName() +// + "于" + eventTime.format(DatePattern.NORM_DATETIME_MS_FORMATTER) + "发生暂降事件" +// + ",特征幅值:" + amplitude + "%" +// + ",持续时间:" + persistTime + "s" +// + ",落点区域:" + (Objects.isNull(dropZone)?"未知":dropZone); +// userList1.forEach(item -> { +// try { +// smsSendFeignClient.sendSmsSimple(item.getPhone(), msgContent, "verify_code"); +// } catch (Exception e) { +// log.error("发送短信失败,手机号: {}", item.getPhone(), e); +// } +// }); +// } +// } +// } +// } catch (Exception e) { +// log.error("异步发送暂降事件短信失败,设备ID: {}", deviceId, e); +// } +// } +//} diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsAlarmServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsAlarmServiceImpl.java index 682527d..cf85811 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsAlarmServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsAlarmServiceImpl.java @@ -9,6 +9,8 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.api.EquipmentFeignClient; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csharmonic.pojo.po.CsEventPO; +import com.njcn.cssystem.api.MsgSendFeignClient; +import com.njcn.cssystem.pojo.param.MsgSendParam; import com.njcn.mq.message.AppEventMessage; import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.redis.utils.RedisUtil; @@ -19,7 +21,7 @@ import com.njcn.system.pojo.po.EleEpdPqd; import com.njcn.system.pojo.po.SysDicTreePO; import com.njcn.zlevent.mapper.CsEventMapper; import com.njcn.zlevent.pojo.po.CsEventLogs; -import com.njcn.zlevent.service.AppNotificationService; +//import com.njcn.zlevent.service.AppNotificationService; import com.njcn.zlevent.service.ICsAlarmService; import com.njcn.zlevent.service.ICsEventLogsService; import com.njcn.zlevent.service.ICsEventService; @@ -54,7 +56,8 @@ public class CsAlarmServiceImpl extends ServiceImpl im private final EpdFeignClient epdFeignClient; private final RedisUtil redisUtil; private final ChannelObjectUtil channelObjectUtil; - private final AppNotificationService appNotificationService; +// private final AppNotificationService appNotificationService; + private final MsgSendFeignClient msgSendFeignClient; @Override @Transactional(rollbackFor = Exception.class) @@ -125,10 +128,21 @@ public class CsAlarmServiceImpl extends ServiceImpl im csEventService.saveBatch(list1); //推送事件逻辑处理 && cs_event_user入库 && 修改字典中告警事件的编码 for (AppEventMessage.DataArray item : dataArray) { + MsgSendParam msgSendParam = new MsgSendParam(); + msgSendParam.setEventType(2); + msgSendParam.setType(item.getType()); + msgSendParam.setDevId(po.getId()); + msgSendParam.setEventTime(eventTime); + msgSendParam.setId(id); + msgSendParam.setNDid(po.getNdid()); if (Objects.isNull(item.getCode())){ - appNotificationService.sendAppNotification(2,item.getType(),po.getId(),item.getName(),eventTime,id,po.getNdid(),null,null); + msgSendParam.setEventName(item.getName()); + msgSendFeignClient.appMsgSend(msgSendParam); +// appNotificationService.sendAppNotification(2,item.getType(),po.getId(),item.getName(),eventTime,id,po.getNdid(),null,null,null); } else { - appNotificationService.sendAppNotification(2,item.getType(),po.getId(),item.getCode(),eventTime,id,po.getNdid(),null, null); + msgSendParam.setEventName(item.getCode()); + msgSendFeignClient.appMsgSend(msgSendParam); +// appNotificationService.sendAppNotification(2,item.getType(),po.getId(),item.getCode(),eventTime,id,po.getNdid(),null, null,null); //更新字典信息 EleEpdPqd eleEpdPqd = epdFeignClient.findByName(item.getName()).getData(); EleEpdPqdParam.EleEpdPqdUpdateParam updateParam = new EleEpdPqdParam.EleEpdPqdUpdateParam(); diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventUserServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventUserServiceImpl.java index 0457e38..93a21cb 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventUserServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventUserServiceImpl.java @@ -1,21 +1,20 @@ -package com.njcn.zlevent.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.njcn.csharmonic.pojo.po.CsEventPO; -import com.njcn.csharmonic.pojo.po.CsEventUserPO; -import com.njcn.zlevent.mapper.CsEventUserMapper; -import com.njcn.zlevent.service.ICsEventUserService; -import org.springframework.stereotype.Service; - -/** - *

- * 暂态事件表 服务实现类 - *

- * - * @author xuyang - * @since 2023-08-23 - */ -@Service -public class CsEventUserServiceImpl extends ServiceImpl implements ICsEventUserService { - -} +//package com.njcn.zlevent.service.impl; +// +//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +//import com.njcn.csharmonic.pojo.po.CsEventUserPO; +//import com.njcn.zlevent.mapper.CsEventUserMapper; +//import com.njcn.zlevent.service.ICsEventUserService; +//import org.springframework.stereotype.Service; +// +///** +// *

+// * 暂态事件表 服务实现类 +// *

+// * +// * @author xuyang +// * @since 2023-08-23 +// */ +//@Service +//public class CsEventUserServiceImpl extends ServiceImpl implements ICsEventUserService { +// +//} diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/EventServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/EventServiceImpl.java index 2a1bce1..82e8cd6 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/EventServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/EventServiceImpl.java @@ -18,7 +18,10 @@ import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.po.WlRecord; import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO; import com.njcn.csharmonic.pojo.po.CsEventPO; +import com.njcn.cssystem.api.MsgSendFeignClient; +import com.njcn.cssystem.pojo.param.MsgSendParam; import com.njcn.event.common.mapper.WlRmpEventDetailMapper; +import com.njcn.event.common.service.EventAnalysisService; import com.njcn.event.pojo.po.RmpEventDetailPO; import com.njcn.influx.pojo.constant.InfluxDBTableConstant; import com.njcn.influx.utils.InfluxDbUtils; @@ -34,10 +37,10 @@ import com.njcn.system.enums.DicDataEnum; import com.njcn.system.pojo.dto.EpdDTO; import com.njcn.system.pojo.po.DictData; import com.njcn.zlevent.pojo.constant.ZlConstant; -import com.njcn.zlevent.service.AppNotificationService; +//import com.njcn.zlevent.service.AppNotificationService; import com.njcn.zlevent.service.ICsEventService; import com.njcn.zlevent.service.IEventService; -import com.njcn.zlevent.service.SmsNotificationService; +//import com.njcn.zlevent.service.SmsNotificationService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.influxdb.InfluxDB; @@ -80,8 +83,10 @@ public class EventServiceImpl implements IEventService { private final WlRmpEventDetailMapper wlRmpEventDetailMapper; private final DictTreeFeignClient dictTreeFeignClient; private final DeviceMessageFeignClient deviceMessageFeignClient; - private final AppNotificationService appNotificationService; - private final SmsNotificationService smsNotificationService; +// private final AppNotificationService appNotificationService; +// private final SmsNotificationService smsNotificationService; + private final EventAnalysisService eventAnalysisService; + private final MsgSendFeignClient msgSendFeignClient; @Override @DSTransactional @@ -189,12 +194,19 @@ public class EventServiceImpl implements IEventService { csEvent.setLocation("load"); } } + String dropZone = eventAnalysisService.determineDropZone(String.valueOf(csEvent.getAmplitude()),String.valueOf(csEvent.getPersistTime())); + csEvent.setLandPoint(dropZone); + AppEventMessage.Param param = new AppEventMessage.Param(); + param.setName("Evt_Param_DropZone"); + param.setData(dropZone); + params.add(param); //fixme 设备上送的是北京时间,时序数据库录入时 需要utc时间,减去8小时 Point point = influxDbUtils.pointBuilder(tableName, item.getDataTimeSec()-8*3600, TimeUnit.SECONDS, tags, fields); BatchPoints batchPoints = BatchPoints.database(influxDbUtils.getDbName()).retentionPolicy("").consistency(InfluxDB.ConsistencyLevel.ALL).build(); batchPoints.point(point); records.add(batchPoints.lineProtocol()); } + list1.add(csEvent); } } @@ -214,6 +226,7 @@ public class EventServiceImpl implements IEventService { for (AppEventMessage.DataArray item : dataArray) { double amplitude = 0.0; double persistTime = 0.0; + String dropZone = null; List params = item.getParam(); if (CollectionUtil.isNotEmpty(params)) { for (AppEventMessage.Param param : params) { @@ -223,12 +236,34 @@ public class EventServiceImpl implements IEventService { if (Objects.equals(param.getName(),ZlConstant.EVT_PARAM_TM)) { persistTime = Double.parseDouble(String.format("%.2f", Double.parseDouble(param.getData().toString()))); } + if (Objects.equals(param.getName(),"Evt_Param_DropZone")) { + dropZone = param.getData().toString(); + } } } - appNotificationService.sendAppNotification(1, item.getType(), po.getId(), item.getName(), eventTime, id, po.getNdid(),amplitude,persistTime); + MsgSendParam msgSendParam = new MsgSendParam(); + msgSendParam.setEventType(1); + msgSendParam.setType("2"); + msgSendParam.setDevId(po.getId()); + msgSendParam.setEventName(item.getName()); + msgSendParam.setEventTime(eventTime); + msgSendParam.setId(id); + msgSendParam.setNDid(po.getNdid()); + msgSendParam.setAmplitude(amplitude); + msgSendParam.setPersistTime(persistTime); + msgSendParam.setDropZone(dropZone); +// appNotificationService.sendAppNotification(1, item.getType(), po.getId(), item.getName(), eventTime, id, po.getNdid(),amplitude,persistTime,dropZone); + msgSendFeignClient.appMsgSend(msgSendParam); //如果是暂降事件,则异步发送短信 if (Objects.equals(item.getName(), "Evt_Sys_DipStr")) { - smsNotificationService.sendSmsForDipEvent(po.getId(), eventTime,amplitude,persistTime); + MsgSendParam msgSendParam2 = new MsgSendParam(); + msgSendParam2.setDevId(po.getId()); + msgSendParam2.setEventTime(eventTime); + msgSendParam2.setAmplitude(amplitude); + msgSendParam2.setPersistTime(persistTime); + msgSendParam2.setDropZone(dropZone); + msgSendFeignClient.smsMsgSend(msgSendParam2); +// smsNotificationService.sendSmsForDipEvent(po.getId(), eventTime,amplitude,persistTime,dropZone); } } }