feat(alarm): 添加可视化大屏物联网设备报警功能

dev_visual_page
zhaokai 2026-07-17 09:11:06 +08:00
parent 203692baab
commit 3884605533
11 changed files with 123 additions and 2 deletions

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/5/27 09:58:05) App/iotalarm"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/5/28 17:15:10) App/iotalarm"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -20,4 +20,4 @@
redirect: '',
FRAMEWORK: APP_ENV.antd
};
})();</script><script defer="defer" src="/iotalarm/static/js/692.af6ab5c0031679cbddc3.js"></script><script defer="defer" src="/iotalarm/static/js/267.5d17f26c6b6d0853e68b.js"></script><script defer="defer" src="/iotalarm/static/js/867.e56a598fea96a2b1b4fa.js"></script><script defer="defer" src="/iotalarm/static/js/main.efb0f4abab73ee923073.js"></script><link href="/iotalarm/static/css/main.64b082dca17390b0b36f.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/5/27 09:58:05) App/iotalarm Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
})();</script><script defer="defer" src="/iotalarm/static/js/692.af6ab5c0031679cbddc3.js"></script><script defer="defer" src="/iotalarm/static/js/267.5d17f26c6b6d0853e68b.js"></script><script defer="defer" src="/iotalarm/static/js/867.e56a598fea96a2b1b4fa.js"></script><script defer="defer" src="/iotalarm/static/js/main.e1495a14be2402b9ed1a.js"></script><link href="/iotalarm/static/css/main.64b082dca17390b0b36f.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/5/28 17:15:10) App/iotalarm Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -6,8 +6,10 @@ import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.api.AlarmRecordServiceI;
import com.zcloud.dto.AlarmRecordPageQry;
import com.zcloud.dto.AlarmRecordSensorPageQry;
import com.zcloud.dto.AlarmRecordScreenPageQry;
import com.zcloud.dto.AppAlarmDisposePageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -78,4 +80,10 @@ public class AlarmRecordController {
return MultiResponse.of(alarmRecordCOList);
}
@ApiOperation("可视化大屏-物联网设备情况报警")
@PostMapping("/screenIotDeviceAlarmPage")
public PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(@RequestBody AlarmRecordScreenPageQry qry) {
return alarmRecordService.screenIotDeviceAlarmPage(qry);
}
}

View File

@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.dto.AlarmRecordPageQry;
import com.zcloud.dto.AlarmRecordSensorPageQry;
import com.zcloud.dto.AlarmRecordScreenPageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
@ -56,6 +58,11 @@ public class AlarmRecordQueryExe {
return PageResponse.of(alarmRecordCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(AlarmRecordScreenPageQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
return alarmRecordRepository.screenIotDeviceAlarmPage(params);
}
public SingleResponse<AlarmRecordCO> getById(Long id) {
AlarmRecordDO d = alarmRecordRepository.detailView(id);
if (d == null || "TRUE".equals(d.getDeleteEnum())) {

View File

@ -8,8 +8,10 @@ import com.zcloud.command.query.AppAlarmDisposeQueryExe;
import com.zcloud.command.query.AppAlarmRecordQueryExe;
import com.zcloud.dto.AlarmRecordPageQry;
import com.zcloud.dto.AlarmRecordSensorPageQry;
import com.zcloud.dto.AlarmRecordScreenPageQry;
import com.zcloud.dto.AppAlarmDisposePageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -31,6 +33,11 @@ public class AlarmRecordServiceImpl implements AlarmRecordServiceI {
return alarmRecordQueryExe.listBySensorDevice(qry);
}
@Override
public PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(AlarmRecordScreenPageQry qry) {
return alarmRecordQueryExe.screenIotDeviceAlarmPage(qry);
}
@Override
public SingleResponse<AlarmRecordCO> info(Long id) {
return alarmRecordQueryExe.getById(id);

View File

@ -4,9 +4,11 @@ import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.dto.AlarmRecordPageQry;
import com.zcloud.dto.AlarmRecordSensorPageQry;
import com.zcloud.dto.AlarmRecordScreenPageQry;
import com.zcloud.dto.AppAlarmDisposePageQry;
import com.zcloud.dto.AppAlarmRecordPageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
/**
* AlarmRecordServiceI -
@ -24,6 +26,14 @@ public interface AlarmRecordServiceI {
PageResponse<AlarmRecordCO> listBySensorDevice(AlarmRecordSensorPageQry qry);
/**
*
*
* @param qry
* @return
*/
PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(AlarmRecordScreenPageQry qry);
/**
*
* @param id

View File

@ -0,0 +1,18 @@
package com.zcloud.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @Author wangyan
* @Date 2026-07-16
*/
@Data
public class AlarmRecordScreenPageQry extends PageQuery {
@ApiModelProperty(value = "所属单位ID可以为空")
private Long corpinfoId;
}

View File

@ -0,0 +1,33 @@
package com.zcloud.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @Author wangyan
* @Date 2026-07-16
*/
@Data
public class AlarmRecordScreenCO extends ClientObject {
@ApiModelProperty(value = "报警来源DCS三方报警THRESHOLD阈值报警")
private String alarmSource;
@ApiModelProperty(value = "设备类型")
private String alarmSourceName;
@ApiModelProperty(value = "所属单位名称")
private String corpName;
@ApiModelProperty(value = "报警类型")
private String alarmType;
@ApiModelProperty(value = "报警类型名称")
private String alarmTypeName;
@ApiModelProperty(value = "处置状态10报警中20未处置30已消警")
private Integer status;
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -25,6 +26,8 @@ public interface AlarmRecordMapper extends BaseMapper<AlarmRecordDO> {
IPage<AlarmRecordDO> listBySensorDevice(IPage<AlarmRecordDO> page, @Param("params") Map<String, Object> params);
IPage<AlarmRecordScreenCO> screenIotDeviceAlarmPage(IPage<AlarmRecordScreenCO> page, @Param("params") Map<String, Object> params);
IPage<AlarmRecordDO> disposeListPage(IPage<AlarmRecordDO> page, @Param("params") Map<String, Object> params);
IPage<AlarmRecordDO> appListPage(IPage<AlarmRecordDO> page, @Param("params") Map<String, Object> params);

View File

@ -2,6 +2,7 @@ package com.zcloud.persistence.repository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import java.util.Map;
@ -17,6 +18,8 @@ public interface AlarmRecordRepository extends BaseRepository<AlarmRecordDO> {
PageResponse<AlarmRecordDO> listBySensorDevice(Map<String, Object> params);
PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(Map<String, Object> params);
PageResponse<AlarmRecordDO> disposeListPage(Map<String, Object> params);
PageResponse<AlarmRecordDO> appListPage(Map<String, Object> params);

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.domain.enums.MenuEnum;
import com.zcloud.dto.clientobject.AlarmRecordScreenCO;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.mapper.AlarmRecordMapper;
import com.zcloud.persistence.repository.AlarmRecordRepository;
@ -43,6 +44,13 @@ public class AlarmRecordRepositoryImpl extends BaseRepositoryImpl<AlarmRecordMap
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public PageResponse<AlarmRecordScreenCO> screenIotDeviceAlarmPage(Map<String, Object> params) {
IPage<AlarmRecordScreenCO> page = new Query<AlarmRecordScreenCO>().getPage(params);
IPage<AlarmRecordScreenCO> result = alarmRecordMapper.screenIotDeviceAlarmPage(page, params);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public PageResponse<AlarmRecordDO> disposeListPage(Map<String, Object> params) {
IPage<AlarmRecordDO> page = new Query<AlarmRecordDO>().getPage(params);

View File

@ -113,6 +113,30 @@
ORDER BY ar.alarm_time DESC
</select>
<select id="screenIotDeviceAlarmPage" resultType="com.zcloud.dto.clientobject.AlarmRecordScreenCO">
SELECT
ar.alarm_source AS alarmSource,
CASE ar.alarm_source
WHEN 'DCS' THEN '三方报警'
WHEN 'THRESHOLD' THEN '阈值报警'
ELSE ar.alarm_source
END AS alarmSourceName,
ci.corp_name AS corpName,
ar.alarm_type AS alarmType,
ar.alarm_type_name AS alarmTypeName,
ar.status AS status
FROM iot_alarm_record ar
LEFT JOIN corp_info ci ON ar.tenant_id = ci.id
<where>
ar.delete_enum = 'FALSE'
AND ar.status != 40
<if test="params.corpinfoId != null">
AND ar.corpinfo_id = #{params.corpinfoId}
</if>
</where>
ORDER BY ar.alarm_time DESC
</select>
<select id="disposeListPage" resultType="com.zcloud.persistence.dataobject.AlarmRecordDO">
SELECT
<include refid="alarmRecordBaseColumns"/>