From 6b1519a5b6cf98884586432404e87c75131a914b Mon Sep 17 00:00:00 2001 From: 15683799673 Date: Tue, 5 Aug 2025 00:44:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E8=84=B8=E5=91=8A=E8=AD=A6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=86=99=E5=85=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sis/domain/SisAlarmEventAttachments.java | 2 +- .../dromara/sis/domain/SisDeviceManage.java | 3 ++ .../domain/bo/SisAlarmEventAttachmentsBo.java | 2 +- .../domain/vo/SisAlarmEventAttachmentsVo.java | 2 +- .../ISisAlarmEventAttachmentsService.java | 10 ++++ .../sis/service/ISisDeviceManageService.java | 1 + .../SisAlarmEventAttachmentsServiceImpl.java | 5 ++ .../impl/SisAlarmEventsServiceImpl.java | 52 +++++++++++++++---- .../impl/SisDeviceManageServiceImpl.java | 9 +++- 9 files changed, 73 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEventAttachments.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEventAttachments.java index 7e34cfbd..808aacc7 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEventAttachments.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEventAttachments.java @@ -36,7 +36,7 @@ public class SisAlarmEventAttachments extends TenantEntity { /** * 时间图片id */ - private String ossId; + private Long ossId; /** * 1:图片,2:文件;3视频 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java index 10ef03ea..e18bbf54 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisDeviceManage.java @@ -77,4 +77,7 @@ public class SisDeviceManage extends BaseEntity { * 设备组id */ private Long groupId; + + private String tenantId; + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventAttachmentsBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventAttachmentsBo.java index 5fdc96fe..a66bb97c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventAttachmentsBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventAttachmentsBo.java @@ -35,7 +35,7 @@ public class SisAlarmEventAttachmentsBo extends BaseEntity { /** * 时间图片id */ - private String ossId; + private Long ossId; /** * 1:图片,2:文件;3视频 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventAttachmentsVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventAttachmentsVo.java index ca0c1380..0cf84127 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventAttachmentsVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventAttachmentsVo.java @@ -40,7 +40,7 @@ public class SisAlarmEventAttachmentsVo implements Serializable { * 时间图片id */ @ExcelProperty(value = "时间图片id") - private String ossId; + private Long ossId; /** * 1:图片,2:文件;3视频 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAlarmEventAttachmentsService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAlarmEventAttachmentsService.java index 89feccd8..ec99b37d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAlarmEventAttachmentsService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAlarmEventAttachmentsService.java @@ -2,6 +2,7 @@ package org.dromara.sis.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.domain.SisAlarmEventAttachments; import org.dromara.sis.domain.bo.SisAlarmEventAttachmentsBo; import org.dromara.sis.domain.vo.SisAlarmEventAttachmentsVo; @@ -65,4 +66,13 @@ public interface ISisAlarmEventAttachmentsService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量写入事件附件表 + * + * @param ls 附件数据 + * @return 返回写入数量 + */ + Boolean batchInsert(List ls); + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java index 68b45bca..4cdb47a7 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisDeviceManageService.java @@ -76,6 +76,7 @@ public interface ISisDeviceManageService { */ SisDeviceManageVo queryVoByDeviceIp(String deviceIp); + SisDeviceManage queryByDeviceIp(String deviceId); /** * 查询设备数 * diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventAttachmentsServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventAttachmentsServiceImpl.java index b3da1c3f..82dc8de4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventAttachmentsServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventAttachmentsServiceImpl.java @@ -131,4 +131,9 @@ public class SisAlarmEventAttachmentsServiceImpl implements ISisAlarmEventAttach } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public Boolean batchInsert(List ls) { + return baseMapper.insertBatch(ls); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventsServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventsServiceImpl.java index 15a31d27..f0ed7bbc 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventsServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAlarmEventsServiceImpl.java @@ -12,19 +12,20 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.resource.api.RemoteFileService; import org.dromara.resource.api.domain.RemoteFile; +import org.dromara.sis.domain.SisAlarmEventAttachments; import org.dromara.sis.domain.SisAlarmEvents; +import org.dromara.sis.domain.SisDeviceManage; import org.dromara.sis.domain.bo.SisAlarmEventsBo; import org.dromara.sis.domain.vo.SisAlarmEventsVo; -import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.mapper.SisAlarmEventsMapper; +import org.dromara.sis.service.ISisAlarmEventAttachmentsService; import org.dromara.sis.service.ISisAlarmEventsService; import org.dromara.sis.service.ISisDeviceManageService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 告警Service业务层处理 @@ -39,6 +40,7 @@ public class SisAlarmEventsServiceImpl implements ISisAlarmEventsService { private final SisAlarmEventsMapper baseMapper; private final ISisDeviceManageService deviceManageService; + private final ISisAlarmEventAttachmentsService alarmEventAttachmentsService; @DubboReference private RemoteFileService remoteFileService; @@ -148,17 +150,49 @@ public class SisAlarmEventsServiceImpl implements ISisAlarmEventsService { @Async @Override + @Transactional(rollbackFor = Exception.class) public void createAlarmRecord(String deviceIp, Integer level, Integer type, byte[] smallImg, byte[] bigImg) { // 校验设备信息 - SisDeviceManageVo sisDeviceManageVo = deviceManageService.queryVoByDeviceIp(deviceIp); - if (sisDeviceManageVo == null) { + SisDeviceManage sisDeviceManage = deviceManageService.queryByDeviceIp(deviceIp); + if (sisDeviceManage == null) { log.error("设备信息不存在,放弃此条告警记录。"); return; } + // 生成时间信息 + SisAlarmEvents alarmEvents = new SisAlarmEvents(); + alarmEvents.setType(1L); + alarmEvents.setLevel(Long.valueOf(level)); + alarmEvents.setDeviceIp(deviceIp); + alarmEvents.setDeviceName(sisDeviceManage.getDeviceName()); + alarmEvents.setDeviceGroupId(sisDeviceManage.getId()); + alarmEvents.setReportTime(new Date()); + alarmEvents.setState(1); + alarmEvents.setTenantId(sisDeviceManage.getTenantId()); + alarmEvents.setCreateDept(sisDeviceManage.getCreateDept()); + int insert = this.baseMapper.insert(alarmEvents); + log.info("写入报警事件表完成,num={}", insert); + // 写入附件表 // 上传图片 - RemoteFile small = remoteFileService.uploadImg(smallImg); - RemoteFile big = remoteFileService.uploadImg(bigImg); - + List ls = new ArrayList<>(); + if (smallImg != null && smallImg.length > 0) { + ls.add(createEventAttachments(smallImg, alarmEvents, sisDeviceManage)); + } + if (bigImg != null && bigImg.length > 0) { + ls.add(createEventAttachments(bigImg, alarmEvents, sisDeviceManage)); + } + Boolean flag = alarmEventAttachmentsService.batchInsert(ls); + log.info("写入告警事件附件表完成, reslut={}, size={}", flag, ls.size()); } + + public SisAlarmEventAttachments createEventAttachments(byte[] img, SisAlarmEvents alarmEvents, SisDeviceManage sisDeviceManage) { + RemoteFile result = remoteFileService.uploadImg(img); + SisAlarmEventAttachments attachments = new SisAlarmEventAttachments(); + attachments.setEventId(alarmEvents.getId()); + attachments.setOssId(result.getOssId()); + attachments.setType(1L); + attachments.setTenantId(sisDeviceManage.getTenantId()); + attachments.setCreateDept(sisDeviceManage.getCreateDept()); + return attachments; + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java index 6cf7f4ec..86973097 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisDeviceManageServiceImpl.java @@ -178,7 +178,14 @@ public class SisDeviceManageServiceImpl implements ISisDeviceManageService { public SisDeviceManageVo queryVoByDeviceIp(String deviceIp) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(SisDeviceManage::getDeviceIp, deviceIp); - return baseMapper.selectVoById(lqw); + return baseMapper.selectVoOne(lqw); + } + + @Override + public SisDeviceManage queryByDeviceIp(String deviceId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SisDeviceManage::getDeviceIp, deviceId); + return baseMapper.selectOne(lqw); } @Override