| | |
| | | import java.text.MessageFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.concurrent.locks.ReentrantLock; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | private static final String warnContentFormat = "【气体监测预警提示】{0} {1}气体浓度连续超标系统判断为{2},请相关负责人及时检查处置。"; |
| | | |
| | | private static final String deviceExcLogFormat = "【设备预警提示】{0} 硬件设备离线。"; |
| | | |
| | | private static final DateTimeFormatter deviceExcLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); |
| | | |
| | | private static final DateTimeFormatter warnLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); |
| | | |
| | | private static final String[] DEVICE_EXC_RECEIVER = {"17625323889","18019908965"}; |
| | | |
| | | @PostConstruct |
| | | public void init() { |
| | |
| | | throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"通量数据状态不能为空"); |
| | | Boolean push = false; |
| | | List<String> descs = new ArrayList<>(); |
| | | if (reqDTO.getHardwareState().size() > 1){ |
| | | if (!(reqDTO.getHardwareState().size() == 1 && reqDTO.getHardwareState().get(0) == 0)){ |
| | | push = true; |
| | | for (int i = 0; i < reqDTO.getHardwareState().size(); i++) { |
| | | descs.add(HardwareStateEnum.getValue(reqDTO.getHardwareState().get(i))); |
| | |
| | | logger.info("【警告】设备异常提醒推送>>>>>>>>>>>>>>>>>>失败"); |
| | | } |
| | | if (push){ |
| | | //todo 线上环境还是异常才向前端推送 |
| | | //String message = JSON.toJSONString(reqDTO); |
| | | //try { |
| | | // GasDeviceExcWebsocketServer.sendInfo(message,null); |
| | | //} catch (IOException e) { |
| | | // logger.info("【警告】设备异常提醒推送>>>>>>>>>>>>>>>>>>失败"); |
| | | //} |
| | | DeviceExceptionLog lastLog = deviceExceptionLogService.getLastLog(); |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | if (lastLog == null || now.compareTo(lastLog.getTime().plusHours(1)) >= 0) { |
| | | Map<String, String> mesMap = new HashMap<>(); |
| | | mesMap.put("message","数据异常,无法进行监测"); |
| | | mesMap.put(" level","设备离线"); |
| | | //// TODO: 2024/2/22 |
| | | List<String> deviceExcReceiver = Arrays.asList(DEVICE_EXC_RECEIVER); |
| | | if (!CollectionUtils.isEmpty(deviceExcReceiver)) { |
| | | List<String> distinctPhone = deviceExcReceiver.stream().distinct().collect(Collectors.toList()); |
| | | logger.info("【气体浓度异常短信发送】-----发送内容:" + "数据异常,无法进行监测 气体浓度连续超标,系统判断为设备离线,请相关负责人及时检查处置。" |
| | | + " 发送时间: " + LocalDateTime.now()+ " 接收人手机号:" + distinctPhone); |
| | | if (!org.springframework.util.StringUtils.isEmpty(smsSendEnabledStatus) && "true".equals(smsSendEnabledStatus)) { |
| | | sendMessageUtil.sendMessageCheck(deviceExcReceiver.toArray(new String[deviceExcReceiver.size()]), mesMap); |
| | | } |
| | | } |
| | | } |
| | | String execInfo = JSON.toJSONString(descs); |
| | | logger.info("【警告】设备异常,异常原因: "+ execInfo); |
| | | DeviceExceptionLog log = new DeviceExceptionLog(); |
| | | log.setTime(LocalDateTime.now()); |
| | | String content = MessageFormat.format(deviceExcLogFormat,deviceExcLogFormatter.format(now)); |
| | | log.setContent(content); |
| | | log.setTime(now); |
| | | log.setExecDesc(execInfo); |
| | | DeviceExceptionLog save = deviceExceptionLogService.save(log); |
| | | if (save == null) |
| | | if (save == null) { |
| | | logger.info("【警告】设备异常日志保存>>>>>>>>>>>>>>>>>>失败"); |
| | | } |
| | | |
| | | } |
| | | return ForeignResult.success(); |
| | | } |
| | |
| | | throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"预警异常短信接收人保存失败"); |
| | | Map<String, String> mesMap = new HashMap<>(); |
| | | mesMap.put("message",warnTime+" "+gasCategory.getName()); |
| | | mesMap.put("level",warnThresholdName); |
| | | mesMap.put(" level",warnThresholdName); |
| | | //todo |
| | | if (!CollectionUtils.isEmpty(phone)) { |
| | | List<String> distinctPhone = phone.stream().distinct().collect(Collectors.toList()); |