From 333fadf6dff545d74b7c73e920514e887e8a274c Mon Sep 17 00:00:00 2001 From: lxj <15683799673@163.com> Date: Fri, 15 Aug 2025 14:07:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=91=8A=E8=AD=A6=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sis/controller/AlarmPushController.java | 17 +++-- .../dromara/sis/domain/SisAlarmEvents.java | 14 +++- .../sis/domain/bo/SisAlarmEventsBo.java | 15 ++++- .../dromara/sis/domain/enums/AlarmStatus.java | 66 +++++++++++++++++++ .../sis/domain/enums/EventSmallTypeEnum.java | 51 +++++++++++--- .../sis/domain/vo/SisAlarmEventsVo.java | 32 ++++++++- .../impl/SisAlarmEventsServiceImpl.java | 11 ++-- .../org/dromara/sis/task/DataSyncTask.java | 6 +- 8 files changed, 185 insertions(+), 27 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/AlarmStatus.java diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java index 929d50c0..4029d2b3 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/AlarmPushController.java @@ -4,6 +4,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.domain.AlarmRecord; import org.dromara.sis.domain.bo.SisAlarmEventsBo; +import org.dromara.sis.domain.enums.EventBigTypeEnum; +import org.dromara.sis.domain.enums.EventSmallTypeEnum; import org.dromara.sis.service.AlarmRecordService; import org.dromara.sis.service.ISisAlarmEventsService; import org.springframework.http.HttpStatus; @@ -46,7 +48,7 @@ public class AlarmPushController { } catch (Exception e) { log.error("处理单条告警推送失败: {}", e.getMessage(), e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Collections.singletonMap("error", "处理告警数据失败: " + e.getMessage())); + .body(Collections.singletonMap("error", "处理告警数据失败: " + e.getMessage())); } } @@ -72,12 +74,13 @@ public class AlarmPushController { } catch (Exception e) { log.error("处理批量告警推送失败: {}", e.getMessage(), e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(Collections.singletonMap("error", "处理告警数据失败: " + e.getMessage())); + .body(Collections.singletonMap("error", "处理告警数据失败: " + e.getMessage())); } } /** * 处理告警数据并保存到数据库 + * * @param alarmDataList 告警数据列表 * @return 处理成功的数量 */ @@ -86,8 +89,8 @@ public class AlarmPushController { // 转换报警记录 List records = alarmDataList.stream() - .map(alarmRecordService::convertFromMap) - .collect(Collectors.toList()); + .map(alarmRecordService::convertFromMap) + .collect(Collectors.toList()); // 提取操作记录数据 Map>> operatorMap = new HashMap<>(); @@ -128,9 +131,11 @@ public class AlarmPushController { private SisAlarmEventsBo convertToAlarmEvents(Map recordMap, Long recordId) { SisAlarmEventsBo sisAlarmEvents = new SisAlarmEventsBo(); sisAlarmEvents.setId(recordId); - // 转换类型和级别 - sisAlarmEvents.setType(convertToLong(recordMap.get("Type"))); +// sisAlarmEvents.setType(convertToLong(recordMap.get("Type"))); + sisAlarmEvents.setBigType(EventBigTypeEnum.EQUIPMENT_UP.getCode()); + sisAlarmEvents.setSmallType(EventSmallTypeEnum.EQP_REPORT_SBSB.getCode()); + sisAlarmEvents.setLevel(convertToLong(recordMap.get("Level"))); // 设备信息 diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEvents.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEvents.java index fd8b4d23..7ac7a648 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEvents.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisAlarmEvents.java @@ -32,12 +32,12 @@ public class SisAlarmEvents extends TenantEntity { /** * 事件大类 */ - private Long bigType; + private Integer bigType; /** * 事件小类 */ - private Long smallType; + private Integer smallType; /** * 报警记录级别(0:特急;1:紧急;2:普通) @@ -69,6 +69,16 @@ public class SisAlarmEvents extends TenantEntity { */ private Date reportTime; + /** + * 开始处理时间 + */ + private Date processSt; + + /** + * 结束处理时间 + */ + private Date processEt; + /** * 事件状态 */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventsBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventsBo.java index 047cb45e..caf430bf 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventsBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAlarmEventsBo.java @@ -31,12 +31,12 @@ public class SisAlarmEventsBo extends BaseEntity { /** * 事件大类 */ - private Long bigType; + private Integer bigType; /** * 事件小类 */ - private Long smallType; + private Integer smallType; /** * 报警记录级别(1:一般,2:中级,3:紧急) @@ -70,6 +70,17 @@ public class SisAlarmEventsBo extends BaseEntity { @NotNull(message = "设备告警时间不能为空", groups = {AddGroup.class, EditGroup.class}) private Date reportTime; + /** + * 开始处理时间 + */ + private Date processSt; + + /** + * 结束处理时间 + */ + private Date processEt; + + /** * 事件状态 */ diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/AlarmStatus.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/AlarmStatus.java new file mode 100644 index 00000000..8201fe7e --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/AlarmStatus.java @@ -0,0 +1,66 @@ +package org.dromara.sis.domain.enums; + +public enum AlarmStatus { + /** + * 已上报待确认 + */ + REPORTED(10, "已上报待确认"), + + /** + * 已确认待处理 + */ + CONFIRMED(20, "已确认待处理"), + + /** + * 处理中 + */ + IN_PROGRESS(30, "处理中"), + + /** + * 升级-转工单 + */ + ESCALATED_TO_TICKET(31, "升级-转工单"), + + /** + * 升级-协助 + */ + ESCALATED_TO_ASSISTANCE(32, "升级-协助"), + + /** + * 已解决 + */ + RESOLVED(40, "已解决"), + + /** + * 已关闭 + */ + CLOSED(50, "已关闭"); + + private final int code; + private final String description; + + AlarmStatus(int code, String description) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + /** + * 根据状态码获取对应的枚举值 + */ + public static AlarmStatus fromCode(int code) { + for (AlarmStatus status : values()) { + if (status.code == code) { + return status; + } + } + throw new IllegalArgumentException("无效的报警状态码: " + code); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/EventSmallTypeEnum.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/EventSmallTypeEnum.java index b3d94499..72b116c5 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/EventSmallTypeEnum.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/enums/EventSmallTypeEnum.java @@ -9,16 +9,49 @@ import lombok.Getter; */ @Getter public enum EventSmallTypeEnum { + /*---------------------------智能相机事件上报-----------------------------------*/ + SMART_REPORT_RYLG(1001, "人员离岗"), + SMART_REPORT_RYSG(1002, "人员睡岗"), + SMART_REPORT_RYDD(1003, "人员倒地"), + SMART_REPORT_CY(1004, "抽烟"), + SMART_REPORT_DDH(1005, "打电话"), + SMART_REPORT_WSJ(1006, "玩手机"), + SMART_REPORT_RYJJ(1007, "人员聚集"), + SMART_REPORT_ZJCR(1008, "周界闯入"), + SMART_REPORT_RYPH(1009, "人员徘徊"), + SMART_REPORT_FYWL(1010, "翻越围栏"), + SMART_REPORT_LJTWGS(1011, "垃圾桶未盖上"), + SMART_REPORT_WZQCDFZ(1012, "未正确穿戴服装"), + SMART_REPORT_WDKZ(1013, "未戴口罩"), + SMART_REPORT_QQRQBJ(1014, "区域入侵报警"), + SMART_REPORT_WDAQMBJ(1015, "未戴安全帽报警"), + SMART_REPORT_WCDGF(1016, "未穿工服报警"), + SMART_REPORT_DDHBJ(1017, "打电话报警"), + SMART_REPORT_DDBJ(1018, "跌倒报警"), + SMART_REPORT_LGBJ(1019, "离岗报警"), + SMART_REPORT_XYBJ(1020, "吸烟报警"), + SMART_REPORT_WCDFGF(1021, "未穿反光服报警"), + SMART_REPORT_MH(1022, "明火报警"), + SMART_REPORT_YW(1023, "烟雾报警"), + SMART_REPORT_RYSLCX(1024, "人员数量超限报警"), + EQP_REPORT_SBSB(1025, "报警设备上报"), + /* -----------------------系统报警相关-------------------------------------*/ + SYS_REPORT_WLGZ(2001, "网络连接故障"), + SYS_REPORT_DLYC(2002, "用户登录异常"), + SYS_REPORT_ZFYC(2002, "支付异常"), + /* -----------------------设备相关-------------------------------------*/ + EQP_REPORT_SBGG(3001, "设备故障"), + EQP_REPORT_XXCT(3002, "设备与平台信息冲突"), + EQP_REPORT_CZJG(3003, "现场处置结果"), + EQP_REPORT_XCSG(3005, "现场事故"), + EQP_REPORT_XCGF(3006, "现场纠纷"), + EQP_REPORT_XCQZ(3007, "现场求助"), + EQP_REPORT_SBXJ(3009, "设备巡检"), + EQP_REPORT_RYJD(3010, "人员监督"), + EQP_REPORT_JKQYXJ(3011, "监控区域巡检"), - EQP_REPORT_RYLG(1001, "人员离岗"), - EQP_REPORT_RYSG(1002, "人员睡岗"), - EQP_REPORT_RYDD(1003, "人员倒地"), - EQP_REPORT_CY(1004, "抽烟"), - EQP_REPORT_DDH(1005, "打电话"), - EQP_REPORT_WSJ(1006, "玩手机"), - EQP_REPORT_RYJJ(1007, "人员聚集"), - EQP_REPORT_ZJCR(1008, "周界闯入"), - EQP_REPORT_RYPH(1009, "人员徘徊"), + + OUTHER_REPORT_FKWFJR(5001, "访客无法进入"), ; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventsVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventsVo.java index 19812ef9..6f79c62e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventsVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAlarmEventsVo.java @@ -2,6 +2,8 @@ package org.dromara.sis.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import org.dromara.sis.domain.SisAlarmEvents; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -30,21 +32,32 @@ public class SisAlarmEventsVo implements Serializable { @Serial private static final long serialVersionUID = 1L; + private Long id; + /** * 事件大类 */ private Long bigType; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "bigType", other = "event_big_type") + private String bigTypeName; + /** * 事件小类 */ - private Long smallType; + private Integer smallType; + + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "smallType", other = "event_small_type") + private String smallTypeName; /** * 报警记录级别(1:一般,2:中级,3:紧急) */ - @ExcelProperty(value = "报警记录级别(0:特急;1:紧急;2:普通)") - private Long level; + @ExcelProperty(value = "报警记录级别(1:特急;2:紧急;3:普通)") + private Integer level; + + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "level", other = "alarm_level") + private String levelName; /** * 报警设备ip @@ -76,11 +89,24 @@ public class SisAlarmEventsVo implements Serializable { @ExcelProperty(value = "设备告警时间") private Date reportTime; + /** + * 开始处理时间 + */ + private Date processSt; + + /** + * 结束处理时间 + */ + private Date processEt; + /** * 事件状态 */ private Integer state; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "state", other = "alarm_state") + private String stateName; + /** * 工单id */ 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 b3c486b3..6810a8cb 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 @@ -17,6 +17,9 @@ 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.enums.AlarmStatus; +import org.dromara.sis.domain.enums.EventBigTypeEnum; +import org.dromara.sis.domain.enums.EventSmallTypeEnum; import org.dromara.sis.domain.vo.SisAlarmEventsVo; import org.dromara.sis.mapper.SisAlarmEventsMapper; import org.dromara.sis.service.ISisAlarmEventAttachmentsService; @@ -160,15 +163,15 @@ public class SisAlarmEventsServiceImpl implements ISisAlarmEventsService { } // 生成时间信息 SisAlarmEvents alarmEvents = new SisAlarmEvents(); - // - alarmEvents.setBigType(10L); - alarmEvents.setSmallType(1008L); + alarmEvents.setBigType(EventBigTypeEnum.EQUIPMENT_UP.getCode()); + //TODO 处理上报小类型 + alarmEvents.setSmallType(EventSmallTypeEnum.EQP_REPORT_SBSB.getCode()); alarmEvents.setLevel(Long.valueOf(level)); alarmEvents.setDeviceIp(deviceIp); alarmEvents.setDeviceName(sisDeviceManage.getDeviceName()); alarmEvents.setDeviceGroupId(sisDeviceManage.getId()); alarmEvents.setReportTime(new Date()); - alarmEvents.setState(1); + alarmEvents.setState(AlarmStatus.REPORTED.getCode()); alarmEvents.setTenantId(sisDeviceManage.getTenantId()); alarmEvents.setCreateDept(sisDeviceManage.getCreateDept()); int insert = this.baseMapper.insert(alarmEvents); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java index b9a4012d..c6abb5bd 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/DataSyncTask.java @@ -7,6 +7,8 @@ import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.AlarmRecord; import org.dromara.sis.domain.SisAlarmEvents; import org.dromara.sis.domain.bo.SisAlarmEventsBo; +import org.dromara.sis.domain.enums.EventBigTypeEnum; +import org.dromara.sis.domain.enums.EventSmallTypeEnum; import org.dromara.sis.service.AlarmRecordService; import org.dromara.sis.service.ApiService; import org.dromara.sis.service.ISisAlarmEventsService; @@ -86,7 +88,9 @@ public class DataSyncTask { //同步成功后,将两张表的数据合并到alarmEvents表中 SisAlarmEventsBo sisAlarmEvents = new SisAlarmEventsBo(); sisAlarmEvents.setId(recordId); - sisAlarmEvents.setType(Long.valueOf((Integer) recordMap.get("Type"))); + sisAlarmEvents.setBigType(EventBigTypeEnum.EQUIPMENT_UP.getCode()); + sisAlarmEvents.setSmallType(EventSmallTypeEnum.EQP_REPORT_SBSB.getCode()); + sisAlarmEvents.setLevel(Long.valueOf((Integer) recordMap.get("Level"))); sisAlarmEvents.setDeviceIp((String) recordMap.get("DeviceSipNum")); sisAlarmEvents.setDeviceName(recordMap.get("DeviceName").toString());