feat(alarm): 优化报警查询接口并完善显示字段关联填充

- 增加SensorName和DisposeUserName字段到AlarmDisposeCO、AlarmRecordCO及其DO对象
- 重构AlarmDisposeQueryExe、AlarmRecordQueryExe及APP端对应查询执行器逻辑,改用分页查询方法
- 在查询结果中填充传感器名称和处置人姓名,提升数据展示完整性
- 扩展AlarmRecordRepository和Mapper,支持多种分页查询接口
- 传感器与用户数据通过批量ID查询并映射,减少单条查询压力
- 新增DeviceRegion相关字段(外部消防区域名称、负责人姓名、绑定传感器等)及分页查询能力
- 更新DeviceRegionGateway及实现类,支持负责人姓名更新
- 规范Mybatis配置文件,增加更多Mapper文件扫描路径
main
wangyan 2026-04-03 18:24:11 +08:00
parent 7d40840231
commit 79bcee2aa5
32 changed files with 558 additions and 226 deletions

View File

@ -1,5 +1,5 @@
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml,classpath*:mapper/**/*Mapper.xml
mapper-locations: classpath*:mapper/*.xml,classpath*:mapper/**/*Mapper.xml,classpath*:mybatis/*.xml,classpath*:mybatis/**/*Mapper.xml
type-handlers-package: com.jjb.saas.framework.datascope.handler
global-config:
banner: false
@ -8,4 +8,4 @@ mybatis-plus:
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl

View File

@ -30,9 +30,14 @@ public class ManagerExe {
throw new BizException("区域配置不存在");
}
Boolean res = deviceRegionGateway.updateManager(cmd.getId(), cmd.getManagerId(), cmd.getDepartmentId());
Boolean res = deviceRegionGateway.updateManager(
cmd.getId(),
cmd.getManagerId(),
cmd.getManagerName(),
cmd.getDepartmentId()
);
if (!res) {
throw new BizException("负责人配置失败");
}
}
}
}

View File

@ -7,13 +7,23 @@ import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.AlarmDisposePageQry;
import com.zcloud.dto.clientobject.AlarmDisposeCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.dataobject.UserDO;
import com.zcloud.persistence.repository.AlarmRecordRepository;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.zcloud.persistence.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* AlarmDisposeQueryExe -
@ -25,40 +35,13 @@ import java.util.List;
public class AlarmDisposeQueryExe {
private final AlarmRecordRepository alarmRecordRepository;
private final SensorDeviceRepository sensorDeviceRepository;
private final UserRepository userRepository;
public PageResponse<AlarmDisposeCO> execute(AlarmDisposePageQry qry) {
LambdaQueryWrapper<AlarmRecordDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource())
.like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode())
.eq(ObjectUtil.isNotEmpty(qry.getFireRegionId()), AlarmRecordDO::getFireRegionId, qry.getFireRegionId())
.eq(ObjectUtil.isNotEmpty(qry.getDepartmentId()), AlarmRecordDO::getDepartmentId, qry.getDepartmentId())
.eq(ObjectUtil.isNotEmpty(qry.getDisposeUserId()), AlarmRecordDO::getManagerId, qry.getDisposeUserId())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmLevel()), AlarmRecordDO::getAlarmLevel, qry.getAlarmLevel())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmType()), AlarmRecordDO::getAlarmType, qry.getAlarmType())
// 查询待研判(10)或待处置(20)的报警
.in(AlarmRecordDO::getStatus, 10, 20)
.eq(AlarmRecordDO::getActiveFlag, 1)
.orderByDesc(AlarmRecordDO::getAlarmTime);
// 处理报警时间范围
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) {
wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart());
}
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) {
wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd());
}
List<AlarmRecordDO> results = alarmRecordRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<AlarmDisposeCO> alarmDisposeCOs = BeanUtil.copyToList(results, AlarmDisposeCO.class);
return PageResponse.of(alarmDisposeCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<AlarmRecordDO> pageResponse = alarmRecordRepository.disposeListPage(PageQueryHelper.toHashMap(qry));
List<AlarmDisposeCO> alarmDisposeCOs = BeanUtil.copyToList(pageResponse.getData(), AlarmDisposeCO.class);
return PageResponse.of(alarmDisposeCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<AlarmDisposeCO> getById(Long id) {
@ -69,6 +52,44 @@ public class AlarmDisposeQueryExe {
AlarmDisposeCO co = new AlarmDisposeCO();
BeanUtils.copyProperties(d, co);
fillDisplayFields(Collections.singletonList(co));
return SingleResponse.of(co);
}
}
private void fillDisplayFields(List<AlarmDisposeCO> alarmDisposeCOs) {
if (alarmDisposeCOs == null || alarmDisposeCOs.isEmpty()) {
return;
}
Set<Long> sensorIds = alarmDisposeCOs.stream()
.map(AlarmDisposeCO::getSensorId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Set<Long> disposeUserIds = alarmDisposeCOs.stream()
.map(AlarmDisposeCO::getDisposeUserId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Map<Long, String> sensorNameMap = Collections.emptyMap();
if (!sensorIds.isEmpty()) {
LambdaQueryWrapper<SensorDeviceDO> sensorWrapper = new LambdaQueryWrapper<>();
sensorWrapper.in(SensorDeviceDO::getId, sensorIds)
.eq(SensorDeviceDO::getDeleteEnum, "FALSE");
sensorNameMap = sensorDeviceRepository.list(sensorWrapper).stream()
.collect(Collectors.toMap(SensorDeviceDO::getId, SensorDeviceDO::getSensorName, (left, right) -> left));
}
Map<Long, String> userNameMap = Collections.emptyMap();
if (!disposeUserIds.isEmpty()) {
LambdaQueryWrapper<UserDO> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(UserDO::getId, disposeUserIds);
userNameMap = userRepository.list(userWrapper).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getName, (left, right) -> left));
}
for (AlarmDisposeCO alarmDisposeCO : alarmDisposeCOs) {
alarmDisposeCO.setSensorName(sensorNameMap.get(alarmDisposeCO.getSensorId()));
alarmDisposeCO.setDisposeUserName(userNameMap.get(alarmDisposeCO.getDisposeUserId()));
}
}
}

View File

@ -7,13 +7,23 @@ import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.AlarmRecordPageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.dataobject.UserDO;
import com.zcloud.persistence.repository.AlarmRecordRepository;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.zcloud.persistence.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* AlarmRecordQueryExe -
@ -25,35 +35,13 @@ import java.util.List;
public class AlarmRecordQueryExe {
private final AlarmRecordRepository alarmRecordRepository;
private final SensorDeviceRepository sensorDeviceRepository;
private final UserRepository userRepository;
public PageResponse<AlarmRecordCO> execute(AlarmRecordPageQry qry) {
LambdaQueryWrapper<AlarmRecordDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource())
.like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode())
// 支持按状态筛选(不指定则查询所有状态)
.eq(ObjectUtil.isNotEmpty(qry.getStatus()), AlarmRecordDO::getStatus, qry.getStatus())
.eq(AlarmRecordDO::getDeleteEnum, "FALSE")
.orderByDesc(AlarmRecordDO::getAlarmTime);
// 处理报警时间范围
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) {
wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart());
}
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) {
wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd());
}
List<AlarmRecordDO> results = alarmRecordRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<AlarmRecordCO> alarmRecordCOs = BeanUtil.copyToList(results, AlarmRecordCO.class);
return PageResponse.of(alarmRecordCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<AlarmRecordDO> pageResponse = alarmRecordRepository.listPage(PageQueryHelper.toHashMap(qry));
List<AlarmRecordCO> alarmRecordCOs = BeanUtil.copyToList(pageResponse.getData(), AlarmRecordCO.class);
return PageResponse.of(alarmRecordCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<AlarmRecordCO> getById(Long id) {
@ -64,6 +52,44 @@ public class AlarmRecordQueryExe {
AlarmRecordCO co = new AlarmRecordCO();
BeanUtils.copyProperties(d, co);
fillDisplayFields(Collections.singletonList(co));
return SingleResponse.of(co);
}
}
private void fillDisplayFields(List<AlarmRecordCO> alarmRecordCOs) {
if (alarmRecordCOs == null || alarmRecordCOs.isEmpty()) {
return;
}
Set<Long> sensorIds = alarmRecordCOs.stream()
.map(AlarmRecordCO::getSensorId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Set<Long> disposeUserIds = alarmRecordCOs.stream()
.map(AlarmRecordCO::getDisposeUserId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Map<Long, String> sensorNameMap = Collections.emptyMap();
if (!sensorIds.isEmpty()) {
LambdaQueryWrapper<SensorDeviceDO> sensorWrapper = new LambdaQueryWrapper<>();
sensorWrapper.in(SensorDeviceDO::getId, sensorIds)
.eq(SensorDeviceDO::getDeleteEnum, "FALSE");
sensorNameMap = sensorDeviceRepository.list(sensorWrapper).stream()
.collect(Collectors.toMap(SensorDeviceDO::getId, SensorDeviceDO::getSensorName, (left, right) -> left));
}
Map<Long, String> userNameMap = Collections.emptyMap();
if (!disposeUserIds.isEmpty()) {
LambdaQueryWrapper<UserDO> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(UserDO::getId, disposeUserIds);
userNameMap = userRepository.list(userWrapper).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getName, (left, right) -> left));
}
for (AlarmRecordCO alarmRecordCO : alarmRecordCOs) {
alarmRecordCO.setSensorName(sensorNameMap.get(alarmRecordCO.getSensorId()));
alarmRecordCO.setDisposeUserName(userNameMap.get(alarmRecordCO.getDisposeUserId()));
}
}
}

View File

@ -7,13 +7,23 @@ import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.AppAlarmDisposePageQry;
import com.zcloud.dto.clientobject.AlarmDisposeCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.dataobject.UserDO;
import com.zcloud.persistence.repository.AlarmRecordRepository;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.zcloud.persistence.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* AppAlarmDisposeQueryExe - APP
@ -25,43 +35,16 @@ import java.util.List;
public class AppAlarmDisposeQueryExe {
private final AlarmRecordRepository alarmRecordRepository;
private final SensorDeviceRepository sensorDeviceRepository;
private final UserRepository userRepository;
/**
*
*/
public PageResponse<AlarmDisposeCO> execute(AppAlarmDisposePageQry qry) {
LambdaQueryWrapper<AlarmRecordDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), AlarmRecordDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), AlarmRecordDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getAlarmNo()), AlarmRecordDO::getAlarmNo, qry.getAlarmNo())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmSource()), AlarmRecordDO::getAlarmSource, qry.getAlarmSource())
.like(ObjectUtil.isNotEmpty(qry.getSensorCode()), AlarmRecordDO::getSensorCode, qry.getSensorCode())
.eq(ObjectUtil.isNotEmpty(qry.getFireRegionId()), AlarmRecordDO::getFireRegionId, qry.getFireRegionId())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmLevel()), AlarmRecordDO::getAlarmLevel, qry.getAlarmLevel())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmType()), AlarmRecordDO::getAlarmType, qry.getAlarmType())
// 关键按当前用户过滤managerId = 当前用户ID
.eq(ObjectUtil.isNotEmpty(qry.getCurrentUserId()), AlarmRecordDO::getManagerId, qry.getCurrentUserId())
// 只查询待处置(20)状态的报警
.eq(AlarmRecordDO::getStatus, 20)
.eq(AlarmRecordDO::getActiveFlag, 1)
.orderByDesc(AlarmRecordDO::getAlarmTime);
// 处理报警时间范围
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) {
wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart());
}
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) {
wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd());
}
List<AlarmRecordDO> results = alarmRecordRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<AlarmDisposeCO> alarmDisposeCOs = BeanUtil.copyToList(results, AlarmDisposeCO.class);
return PageResponse.of(alarmDisposeCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<AlarmRecordDO> pageResponse = alarmRecordRepository.appDisposeListPage(PageQueryHelper.toHashMap(qry));
List<AlarmDisposeCO> alarmDisposeCOs = BeanUtil.copyToList(pageResponse.getData(), AlarmDisposeCO.class);
return PageResponse.of(alarmDisposeCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
/**
@ -75,6 +58,44 @@ public class AppAlarmDisposeQueryExe {
AlarmDisposeCO co = new AlarmDisposeCO();
BeanUtils.copyProperties(d, co);
fillDisplayFields(Collections.singletonList(co));
return SingleResponse.of(co);
}
}
private void fillDisplayFields(List<AlarmDisposeCO> alarmDisposeCOs) {
if (alarmDisposeCOs == null || alarmDisposeCOs.isEmpty()) {
return;
}
Set<Long> sensorIds = alarmDisposeCOs.stream()
.map(AlarmDisposeCO::getSensorId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Set<Long> disposeUserIds = alarmDisposeCOs.stream()
.map(AlarmDisposeCO::getDisposeUserId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Map<Long, String> sensorNameMap = Collections.emptyMap();
if (!sensorIds.isEmpty()) {
LambdaQueryWrapper<SensorDeviceDO> sensorWrapper = new LambdaQueryWrapper<>();
sensorWrapper.in(SensorDeviceDO::getId, sensorIds)
.eq(SensorDeviceDO::getDeleteEnum, "FALSE");
sensorNameMap = sensorDeviceRepository.list(sensorWrapper).stream()
.collect(Collectors.toMap(SensorDeviceDO::getId, SensorDeviceDO::getSensorName, (left, right) -> left));
}
Map<Long, String> userNameMap = Collections.emptyMap();
if (!disposeUserIds.isEmpty()) {
LambdaQueryWrapper<UserDO> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(UserDO::getId, disposeUserIds);
userNameMap = userRepository.list(userWrapper).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getName, (left, right) -> left));
}
for (AlarmDisposeCO alarmDisposeCO : alarmDisposeCOs) {
alarmDisposeCO.setSensorName(sensorNameMap.get(alarmDisposeCO.getSensorId()));
alarmDisposeCO.setDisposeUserName(userNameMap.get(alarmDisposeCO.getDisposeUserId()));
}
}
}

View File

@ -8,13 +8,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.dto.AppAlarmRecordPageQry;
import com.zcloud.dto.clientobject.AlarmRecordCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.dataobject.UserDO;
import com.zcloud.persistence.repository.AlarmRecordRepository;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.zcloud.persistence.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* AppAlarmRecordQueryExe - APP
@ -26,33 +36,15 @@ import java.util.List;
public class AppAlarmRecordQueryExe {
private final AlarmRecordRepository alarmRecordRepository;
private final SensorDeviceRepository sensorDeviceRepository;
private final UserRepository userRepository;
public PageResponse<AlarmRecordCO> execute(AppAlarmRecordPageQry qry) {
LambdaQueryWrapper<AlarmRecordDO> wrapper = new LambdaQueryWrapper<>();
// 按当前用户过滤处置人ID
Long userId = AuthContext.getUserId();
wrapper.eq(userId != null, AlarmRecordDO::getDisposeUserId, userId);
// 支持按状态筛选30已消警/40误报
wrapper.eq(ObjectUtil.isNotEmpty(qry.getStatus()), AlarmRecordDO::getStatus, qry.getStatus())
.eq(AlarmRecordDO::getDeleteEnum, "FALSE")
.orderByDesc(AlarmRecordDO::getAlarmTime);
// 处理报警时间范围
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeStart())) {
wrapper.ge(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeStart());
}
if (ObjectUtil.isNotEmpty(qry.getAlarmTimeEnd())) {
wrapper.le(AlarmRecordDO::getAlarmTime, qry.getAlarmTimeEnd());
}
List<AlarmRecordDO> results = alarmRecordRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<AlarmRecordCO> alarmRecordCOs = BeanUtil.copyToList(results, AlarmRecordCO.class);
return PageResponse.of(alarmRecordCOs, total, qry.getPageSize(), qry.getPageIndex());
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
params.put("currentUserId", AuthContext.getUserId());
PageResponse<AlarmRecordDO> pageResponse = alarmRecordRepository.appListPage(params);
List<AlarmRecordCO> alarmRecordCOs = BeanUtil.copyToList(pageResponse.getData(), AlarmRecordCO.class);
return PageResponse.of(alarmRecordCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<AlarmRecordCO> getById(Long id) {
@ -69,6 +61,44 @@ public class AppAlarmRecordQueryExe {
AlarmRecordCO co = new AlarmRecordCO();
BeanUtils.copyProperties(d, co);
fillDisplayFields(Collections.singletonList(co));
return SingleResponse.of(co);
}
}
private void fillDisplayFields(List<AlarmRecordCO> alarmRecordCOs) {
if (alarmRecordCOs == null || alarmRecordCOs.isEmpty()) {
return;
}
Set<Long> sensorIds = alarmRecordCOs.stream()
.map(AlarmRecordCO::getSensorId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Set<Long> disposeUserIds = alarmRecordCOs.stream()
.map(AlarmRecordCO::getDisposeUserId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toCollection(HashSet::new));
Map<Long, String> sensorNameMap = Collections.emptyMap();
if (!sensorIds.isEmpty()) {
LambdaQueryWrapper<SensorDeviceDO> sensorWrapper = new LambdaQueryWrapper<>();
sensorWrapper.in(SensorDeviceDO::getId, sensorIds)
.eq(SensorDeviceDO::getDeleteEnum, "FALSE");
sensorNameMap = sensorDeviceRepository.list(sensorWrapper).stream()
.collect(Collectors.toMap(SensorDeviceDO::getId, SensorDeviceDO::getSensorName, (left, right) -> left));
}
Map<Long, String> userNameMap = Collections.emptyMap();
if (!disposeUserIds.isEmpty()) {
LambdaQueryWrapper<UserDO> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(UserDO::getId, disposeUserIds);
userNameMap = userRepository.list(userWrapper).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getName, (left, right) -> left));
}
for (AlarmRecordCO alarmRecordCO : alarmRecordCOs) {
alarmRecordCO.setSensorName(sensorNameMap.get(alarmRecordCO.getSensorId()));
alarmRecordCO.setDisposeUserName(userNameMap.get(alarmRecordCO.getDisposeUserId()));
}
}
}

View File

@ -8,13 +8,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.DeviceRegionPageQry;
import com.zcloud.dto.clientobject.DeviceRegionCO;
import com.zcloud.dto.clientobject.FireRegionCO;
import com.zcloud.dto.clientobject.SensorDeviceCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.DepartmentDO;
import com.zcloud.persistence.dataobject.DeviceRegionDO;
import com.zcloud.persistence.dataobject.RegionSensorRelDO;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.dataobject.UserDO;
import com.zcloud.persistence.repository.DepartmentRepository;
import com.zcloud.persistence.repository.DeviceRegionRepository;
import com.zcloud.persistence.repository.RegionSensorRelRepository;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.zcloud.persistence.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* DeviceRegionQueryExe -
@ -26,26 +40,15 @@ import java.util.List;
public class DeviceRegionQueryExe {
private final DeviceRegionRepository deviceRegionRepository;
private final RegionSensorRelRepository regionSensorRelRepository;
private final SensorDeviceRepository sensorDeviceRepository;
private final DepartmentRepository departmentRepository;
private final UserRepository userRepository;
public PageResponse<DeviceRegionCO> execute(DeviceRegionPageQry qry) {
LambdaQueryWrapper<DeviceRegionDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), DeviceRegionDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), DeviceRegionDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getFireRegionCode()), DeviceRegionDO::getFireRegionCode, qry.getFireRegionCode())
.eq(ObjectUtil.isNotEmpty(qry.getDepartmentId()), DeviceRegionDO::getDepartmentId, qry.getDepartmentId())
.eq(ObjectUtil.isNotEmpty(qry.getManagerId()), DeviceRegionDO::getManagerId, qry.getManagerId())
.eq(ObjectUtil.isNotEmpty(qry.getStatus()), DeviceRegionDO::getStatus, qry.getStatus())
.eq(DeviceRegionDO::getDeleteEnum, "FALSE")
.orderByDesc(DeviceRegionDO::getCreateTime);
List<DeviceRegionDO> results = deviceRegionRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<DeviceRegionCO> deviceRegionCOs = BeanUtil.copyToList(results, DeviceRegionCO.class);
return PageResponse.of(deviceRegionCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<DeviceRegionDO> pageResponse = deviceRegionRepository.listPage(PageQueryHelper.toHashMap(qry));
List<DeviceRegionCO> deviceRegionCOs = BeanUtil.copyToList(pageResponse.getData(), DeviceRegionCO.class);
return PageResponse.of(deviceRegionCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<DeviceRegionCO> getById(Long id) {
@ -56,6 +59,8 @@ public class DeviceRegionQueryExe {
DeviceRegionCO co = new DeviceRegionCO();
BeanUtils.copyProperties(d, co);
fillBindSensorInfo(Collections.singletonList(co), true);
fillDisplayFields(Collections.singletonList(co));
return SingleResponse.of(co);
}
@ -67,10 +72,99 @@ public class DeviceRegionQueryExe {
.orderByDesc(DeviceRegionDO::getCreateTime);
List<DeviceRegionDO> results = deviceRegionRepository.list(wrapper);
// Convert to FireRegionCO
List<FireRegionCO> fireRegionCOs = BeanUtil.copyToList(results, FireRegionCO.class);
return SingleResponse.of(fireRegionCOs.isEmpty() ? null : fireRegionCOs.get(0));
}
}
private void fillBindSensorInfo(List<DeviceRegionCO> deviceRegionCOs, boolean includeBoundSensors) {
if (deviceRegionCOs == null || deviceRegionCOs.isEmpty()) {
return;
}
Set<Long> regionIds = deviceRegionCOs.stream()
.map(DeviceRegionCO::getId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toSet());
if (regionIds.isEmpty()) {
return;
}
LambdaQueryWrapper<RegionSensorRelDO> relWrapper = new LambdaQueryWrapper<>();
relWrapper.in(RegionSensorRelDO::getRegionConfigId, regionIds)
.eq(RegionSensorRelDO::getDeleteEnum, "FALSE");
List<RegionSensorRelDO> relList = regionSensorRelRepository.list(relWrapper);
Map<Long, List<RegionSensorRelDO>> relMap = relList.stream()
.collect(Collectors.groupingBy(RegionSensorRelDO::getRegionConfigId));
Map<Long, SensorDeviceCO> sensorMap = Collections.emptyMap();
if (includeBoundSensors && !relList.isEmpty()) {
Set<Long> sensorIds = relList.stream()
.map(RegionSensorRelDO::getSensorId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toSet());
if (!sensorIds.isEmpty()) {
LambdaQueryWrapper<SensorDeviceDO> sensorWrapper = new LambdaQueryWrapper<>();
sensorWrapper.in(SensorDeviceDO::getId, sensorIds)
.eq(SensorDeviceDO::getDeleteEnum, "FALSE");
sensorMap = sensorDeviceRepository.list(sensorWrapper).stream()
.map(sensor -> BeanUtil.copyProperties(sensor, SensorDeviceCO.class))
.collect(Collectors.toMap(SensorDeviceCO::getId, sensor -> sensor));
}
}
for (DeviceRegionCO deviceRegionCO : deviceRegionCOs) {
List<RegionSensorRelDO> currentRelList = relMap.getOrDefault(deviceRegionCO.getId(), Collections.emptyList());
deviceRegionCO.setBindSensorCount(currentRelList.size());
if (!includeBoundSensors) {
continue;
}
List<SensorDeviceCO> boundSensors = currentRelList.stream()
.map(RegionSensorRelDO::getSensorId)
.map(sensorMap::get)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toList());
deviceRegionCO.setBoundSensors(boundSensors);
}
}
private void fillDisplayFields(List<DeviceRegionCO> deviceRegionCOs) {
if (deviceRegionCOs == null || deviceRegionCOs.isEmpty()) {
return;
}
Set<Long> departmentIds = deviceRegionCOs.stream()
.map(DeviceRegionCO::getDepartmentId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toSet());
Set<Long> managerIds = deviceRegionCOs.stream()
.map(DeviceRegionCO::getManagerId)
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toSet());
Map<Long, String> departmentNameMap = Collections.emptyMap();
if (!departmentIds.isEmpty()) {
LambdaQueryWrapper<DepartmentDO> departmentWrapper = new LambdaQueryWrapper<>();
departmentWrapper.in(DepartmentDO::getId, departmentIds);
departmentNameMap = departmentRepository.list(departmentWrapper).stream()
.collect(Collectors.toMap(DepartmentDO::getId, DepartmentDO::getName, (left, right) -> left));
}
Map<Long, String> managerNameMap = Collections.emptyMap();
if (!managerIds.isEmpty()) {
LambdaQueryWrapper<UserDO> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(UserDO::getId, managerIds);
managerNameMap = userRepository.list(userWrapper).stream()
.collect(Collectors.toMap(UserDO::getId, UserDO::getName, (left, right) -> left));
}
for (DeviceRegionCO deviceRegionCO : deviceRegionCOs) {
deviceRegionCO.setDepartmentName(departmentNameMap.get(deviceRegionCO.getDepartmentId()));
if (ObjectUtil.isEmpty(deviceRegionCO.getManagerName())) {
deviceRegionCO.setManagerName(managerNameMap.get(deviceRegionCO.getManagerId()));
}
}
}
}

View File

@ -1,12 +1,11 @@
package com.zcloud.command.query;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.SensorDevicePageQry;
import com.zcloud.dto.clientobject.SensorDeviceCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import lombok.RequiredArgsConstructor;
@ -27,28 +26,9 @@ public class SensorDeviceQueryExe {
private final SensorDeviceRepository sensorDeviceRepository;
public PageResponse<SensorDeviceCO> execute(SensorDevicePageQry qry) {
LambdaQueryWrapper<SensorDeviceDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), SensorDeviceDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), SensorDeviceDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getSensorCode()), SensorDeviceDO::getSensorCode, qry.getSensorCode())
.like(ObjectUtil.isNotEmpty(qry.getSensorName()), SensorDeviceDO::getSensorName, qry.getSensorName())
.eq(ObjectUtil.isNotEmpty(qry.getSensorTypeId()), SensorDeviceDO::getSensorTypeId, qry.getSensorTypeId())
.eq(ObjectUtil.isNotEmpty(qry.getSensorAttr()), SensorDeviceDO::getSensorAttr, qry.getSensorAttr())
.eq(ObjectUtil.isNotEmpty(qry.getSensorStatus()), SensorDeviceDO::getSensorStatus, qry.getSensorStatus())
.eq(ObjectUtil.isNotEmpty(qry.getAlarmSwitch()), SensorDeviceDO::getAlarmSwitch, qry.getAlarmSwitch())
.eq(ObjectUtil.isNotEmpty(qry.getThresholdFlag()), SensorDeviceDO::getThresholdFlag, qry.getThresholdFlag())
.like(ObjectUtil.isNotEmpty(qry.getInstallPosition()), SensorDeviceDO::getInstallPosition, qry.getInstallPosition())
.eq(SensorDeviceDO::getDeleteEnum, "FALSE")
.orderByDesc(SensorDeviceDO::getCreateTime);
List<SensorDeviceDO> results = sensorDeviceRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<SensorDeviceCO> sensorDeviceCOs = BeanUtil.copyToList(results, SensorDeviceCO.class);
return PageResponse.of(sensorDeviceCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<SensorDeviceDO> pageResponse = sensorDeviceRepository.listPage(PageQueryHelper.toHashMap(qry));
List<SensorDeviceCO> sensorDeviceCOs = BeanUtil.copyToList(pageResponse.getData(), SensorDeviceCO.class);
return PageResponse.of(sensorDeviceCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<SensorDeviceCO> getById(Long id) {
@ -61,4 +41,4 @@ public class SensorDeviceQueryExe {
BeanUtils.copyProperties(d, co);
return SingleResponse.of(co);
}
}
}

View File

@ -1,12 +1,11 @@
package com.zcloud.command.query;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zcloud.dto.SensorTypePageQry;
import com.zcloud.dto.clientobject.SensorTypeCO;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.persistence.dataobject.SensorTypeDO;
import com.zcloud.persistence.repository.SensorTypeRepository;
import lombok.RequiredArgsConstructor;
@ -27,24 +26,9 @@ public class SensorTypeQueryExe {
private final SensorTypeRepository sensorTypeRepository;
public PageResponse<SensorTypeCO> execute(SensorTypePageQry qry) {
LambdaQueryWrapper<SensorTypeDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ObjectUtil.isNotEmpty(qry.getTenantId()), SensorTypeDO::getTenantId, qry.getTenantId())
.eq(ObjectUtil.isNotEmpty(qry.getOrgId()), SensorTypeDO::getOrgId, qry.getOrgId())
.like(ObjectUtil.isNotEmpty(qry.getTypeCode()), SensorTypeDO::getTypeCode, qry.getTypeCode())
.like(ObjectUtil.isNotEmpty(qry.getTypeName()), SensorTypeDO::getTypeName, qry.getTypeName())
.eq(ObjectUtil.isNotEmpty(qry.getSensorAttr()), SensorTypeDO::getSensorAttr, qry.getSensorAttr())
.eq(ObjectUtil.isNotEmpty(qry.getStatus()), SensorTypeDO::getStatus, qry.getStatus())
.eq(SensorTypeDO::getDeleteEnum, "FALSE")
.orderByDesc(SensorTypeDO::getCreateTime);
List<SensorTypeDO> results = sensorTypeRepository.list(wrapper);
int total = results.size();
// Convert to CO
List<SensorTypeCO> sensorTypeCOs = BeanUtil.copyToList(results, SensorTypeCO.class);
return PageResponse.of(sensorTypeCOs, total, qry.getPageSize(), qry.getPageIndex());
PageResponse<SensorTypeDO> pageResponse = sensorTypeRepository.listPage(PageQueryHelper.toHashMap(qry));
List<SensorTypeCO> sensorTypeCOs = BeanUtil.copyToList(pageResponse.getData(), SensorTypeCO.class);
return PageResponse.of(sensorTypeCOs, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public SingleResponse<SensorTypeCO> getById(Long id) {
@ -57,4 +41,4 @@ public class SensorTypeQueryExe {
BeanUtils.copyProperties(d, co);
return SingleResponse.of(co);
}
}
}

View File

@ -23,6 +23,9 @@ public class DeviceRegionAddCmd extends Command {
@ApiModelProperty(value = "外部消防区域主键", name = "fireRegionId", required = true)
private Long fireRegionId;
@ApiModelProperty(value = "外部消防区域名称", name = "fireRegionName")
private String fireRegionName;
@ApiModelProperty(value = "外部消防区域编码", name = "fireRegionCode")
private String fireRegionCode;
@ -44,4 +47,4 @@ public class DeviceRegionAddCmd extends Command {
@ApiModelProperty(value = "组织ID", name = "orgId")
private Long orgId;
}
}

View File

@ -23,7 +23,10 @@ public class ManagerCmd extends Command {
@ApiModelProperty(value = "负责人ID", name = "managerId", required = true)
private Long managerId;
@ApiModelProperty(value = "负责人姓名", name = "managerName")
private String managerName;
@ApiModelProperty(value = "负责部门ID", name = "departmentId")
private Long departmentId;
}
}

View File

@ -36,6 +36,9 @@ public class AlarmDisposeCO extends ClientObject {
@ApiModelProperty(value = "传感器编码")
private String sensorCode;
@ApiModelProperty(value = "传感器名称")
private String sensorName;
@ApiModelProperty(value = "消防区域ID")
private Long fireRegionId;
@ -81,6 +84,9 @@ public class AlarmDisposeCO extends ClientObject {
@ApiModelProperty(value = "处置人ID")
private Long disposeUserId;
@ApiModelProperty(value = "处置人姓名")
private String disposeUserName;
@ApiModelProperty(value = "当前处置结果快照")
private String disposeResult;
@ -122,4 +128,4 @@ public class AlarmDisposeCO extends ClientObject {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -36,6 +36,9 @@ public class AlarmRecordCO extends ClientObject {
@ApiModelProperty(value = "传感器编码")
private String sensorCode;
@ApiModelProperty(value = "传感器名称")
private String sensorName;
@ApiModelProperty(value = "消防区域ID")
private Long fireRegionId;
@ -81,6 +84,9 @@ public class AlarmRecordCO extends ClientObject {
@ApiModelProperty(value = "处置人ID")
private Long disposeUserId;
@ApiModelProperty(value = "处置人姓名")
private String disposeUserName;
@ApiModelProperty(value = "当前处置结果快照")
private String disposeResult;
@ -125,4 +131,4 @@ public class AlarmRecordCO extends ClientObject {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* DeviceRegionCO -
@ -23,15 +24,30 @@ public class DeviceRegionCO extends ClientObject {
@ApiModelProperty(value = "外部消防区域主键")
private Long fireRegionId;
@ApiModelProperty(value = "外部消防区域名称")
private String fireRegionName;
@ApiModelProperty(value = "外部消防区域编码")
private String fireRegionCode;
@ApiModelProperty(value = "负责部门ID")
private Long departmentId;
@ApiModelProperty(value = "负责部门名称")
private String departmentName;
@ApiModelProperty(value = "负责人ID")
private Long managerId;
@ApiModelProperty(value = "负责人姓名")
private String managerName;
@ApiModelProperty(value = "已绑定传感器数量")
private Integer bindSensorCount;
@ApiModelProperty(value = "已绑定传感器列表")
private List<SensorDeviceCO> boundSensors;
@ApiModelProperty(value = "状态 1启用0停用")
private Integer status;
@ -64,4 +80,4 @@ public class DeviceRegionCO extends ClientObject {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -29,6 +29,9 @@ public class SensorDeviceCO extends ClientObject {
@ApiModelProperty(value = "传感器类型主键ID")
private Long sensorTypeId;
@ApiModelProperty(value = "传感器类型名称")
private String sensorTypeName;
@ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)")
private String sensorAttr;
@ -106,4 +109,4 @@ public class SensorDeviceCO extends ClientObject {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -43,5 +43,5 @@ public interface DeviceRegionGateway {
/**
*
*/
Boolean updateManager(Long id, Long managerId, Long departmentId);
}
Boolean updateManager(Long id, Long managerId, String managerName, Long departmentId);
}

View File

@ -22,6 +22,11 @@ public class DeviceRegionE extends BaseE {
*
*/
private Long fireRegionId;
/**
*
*/
private String fireRegionName;
/**
*
@ -37,6 +42,11 @@ public class DeviceRegionE extends BaseE {
* ID
*/
private Long managerId;
/**
*
*/
private String managerName;
/**
* 10
@ -62,4 +72,4 @@ public class DeviceRegionE extends BaseE {
* ID
*/
private Long orgId;
}
}

View File

@ -85,12 +85,13 @@ public class DeviceRegionGatewayImpl implements DeviceRegionGateway {
}
@Override
public Boolean updateManager(Long id, Long managerId, Long departmentId) {
public Boolean updateManager(Long id, Long managerId, String managerName, Long departmentId) {
DeviceRegionDO d = new DeviceRegionDO();
d.setId(id);
d.setManagerId(managerId);
d.setManagerName(managerName);
d.setDepartmentId(departmentId);
deviceRegionRepository.updateById(d);
return true;
}
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
@ -36,6 +37,10 @@ public class AlarmRecordDO extends BaseDO {
@ApiModelProperty(value = "传感器编码")
private String sensorCode;
@TableField(exist = false)
@ApiModelProperty(value = "传感器名称")
private String sensorName;
@ApiModelProperty(value = "消防区域ID")
private Long fireRegionId;
@ -81,6 +86,10 @@ public class AlarmRecordDO extends BaseDO {
@ApiModelProperty(value = "处置人ID")
private Long disposeUserId;
@TableField(exist = false)
@ApiModelProperty(value = "处置人姓名")
private String disposeUserName;
@ApiModelProperty(value = "当前处置结果快照")
private String disposeResult;
@ -109,4 +118,4 @@ public class AlarmRecordDO extends BaseDO {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
@ -22,18 +23,32 @@ public class DeviceRegionDO extends BaseDO {
@ApiModelProperty(value = "外部消防区域主键")
private Long fireRegionId;
@ApiModelProperty(value = "外部消防区域名称")
private String fireRegionName;
@ApiModelProperty(value = "外部消防区域编码")
private String fireRegionCode;
@ApiModelProperty(value = "负责部门ID")
private Long departmentId;
@TableField(exist = false)
@ApiModelProperty(value = "负责部门名称")
private String departmentName;
@ApiModelProperty(value = "负责人ID")
private Long managerId;
@ApiModelProperty(value = "负责人姓名")
private String managerName;
@ApiModelProperty(value = "状态 1启用0停用")
private Integer status;
@TableField(exist = false)
@ApiModelProperty(value = "已绑定传感器数量")
private Integer bindSensorCount;
@ApiModelProperty(value = "备注")
private String remarks;
@ -47,4 +62,4 @@ public class DeviceRegionDO extends BaseDO {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
@ -28,6 +29,10 @@ public class SensorDeviceDO extends BaseDO {
@ApiModelProperty(value = "传感器类型主键ID")
private Long sensorTypeId;
@TableField(exist = false)
@ApiModelProperty(value = "传感器类型名称")
private String sensorTypeName;
@ApiModelProperty(value = "传感器属性快照(NUMBER/SWITCH)")
private String sensorAttr;
@ -89,4 +94,4 @@ public class SensorDeviceDO extends BaseDO {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -47,4 +47,4 @@ public class SensorTypeDO extends BaseDO {
@ApiModelProperty(value = "组织ID")
private Long orgId;
}
}

View File

@ -1,8 +1,12 @@
package com.zcloud.persistence.mapper;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* AlarmRecordMapper - Mapper
@ -10,4 +14,13 @@ import org.apache.ibatis.annotations.Mapper;
* @Date 2026-04-03 00:00:00
*/
@Mapper
public interface AlarmRecordMapper extends BaseMapper<AlarmRecordDO> {}
public interface AlarmRecordMapper extends BaseMapper<AlarmRecordDO> {
IPage<AlarmRecordDO> listPage(IPage<AlarmRecordDO> 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);
IPage<AlarmRecordDO> appDisposeListPage(IPage<AlarmRecordDO> page, @Param("params") Map<String, Object> params);
}

View File

@ -1,8 +1,12 @@
package com.zcloud.persistence.mapper;
import com.zcloud.persistence.dataobject.DeviceRegionDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.persistence.dataobject.DeviceRegionDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* DeviceRegionMapper - Mapper
@ -10,4 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
* @Date 2026-04-03 00:00:00
*/
@Mapper
public interface DeviceRegionMapper extends BaseMapper<DeviceRegionDO> {}
public interface DeviceRegionMapper extends BaseMapper<DeviceRegionDO> {
IPage<DeviceRegionDO> listPage(IPage<DeviceRegionDO> page, @Param("params") Map<String, Object> params);
}

View File

@ -1,8 +1,12 @@
package com.zcloud.persistence.mapper;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* SensorDeviceMapper - Mapper
@ -10,4 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
* @Date 2026-04-03 00:00:00
*/
@Mapper
public interface SensorDeviceMapper extends BaseMapper<SensorDeviceDO> {}
public interface SensorDeviceMapper extends BaseMapper<SensorDeviceDO> {
IPage<SensorDeviceDO> listPage(IPage<SensorDeviceDO> page, @Param("params") Map<String, Object> params);
}

View File

@ -1,8 +1,12 @@
package com.zcloud.persistence.mapper;
import com.zcloud.persistence.dataobject.SensorTypeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.persistence.dataobject.SensorTypeDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* SensorTypeMapper - Mapper
@ -10,4 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
* @Date 2026-04-03 00:00:00
*/
@Mapper
public interface SensorTypeMapper extends BaseMapper<SensorTypeDO> {}
public interface SensorTypeMapper extends BaseMapper<SensorTypeDO> {
IPage<SensorTypeDO> listPage(IPage<SensorTypeDO> page, @Param("params") Map<String, Object> params);
}

View File

@ -1,11 +1,23 @@
package com.zcloud.persistence.repository;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.persistence.dataobject.AlarmRecordDO;
import java.util.Map;
/**
* AlarmRecordRepository -
* @Author wangyan
* @Date 2026-04-03 00:00:00
*/
public interface AlarmRecordRepository extends BaseRepository<AlarmRecordDO> {}
public interface AlarmRecordRepository extends BaseRepository<AlarmRecordDO> {
PageResponse<AlarmRecordDO> listPage(Map<String, Object> params);
PageResponse<AlarmRecordDO> disposeListPage(Map<String, Object> params);
PageResponse<AlarmRecordDO> appListPage(Map<String, Object> params);
PageResponse<AlarmRecordDO> appDisposeListPage(Map<String, Object> params);
}

View File

@ -1,11 +1,17 @@
package com.zcloud.persistence.repository;
import com.zcloud.persistence.dataobject.DeviceRegionDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.persistence.dataobject.DeviceRegionDO;
import java.util.Map;
/**
* DeviceRegionRepository -
* @Author wangyan
* @Date 2026-04-03 00:00:00
*/
public interface DeviceRegionRepository extends BaseRepository<DeviceRegionDO> {}
public interface DeviceRegionRepository extends BaseRepository<DeviceRegionDO> {
PageResponse<DeviceRegionDO> listPage(Map<String, Object> params);
}

View File

@ -1,11 +1,17 @@
package com.zcloud.persistence.repository;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.persistence.dataobject.SensorDeviceDO;
import java.util.Map;
/**
* SensorDeviceRepository -
* @Author wangyan
* @Date 2026-04-03 00:00:00
*/
public interface SensorDeviceRepository extends BaseRepository<SensorDeviceDO> {}
public interface SensorDeviceRepository extends BaseRepository<SensorDeviceDO> {
PageResponse<SensorDeviceDO> listPage(Map<String, Object> params);
}

View File

@ -1,11 +1,17 @@
package com.zcloud.persistence.repository;
import com.zcloud.persistence.dataobject.SensorTypeDO;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.persistence.dataobject.SensorTypeDO;
import java.util.Map;
/**
* SensorTypeRepository -
* @Author wangyan
* @Date 2026-04-03 00:00:00
*/
public interface SensorTypeRepository extends BaseRepository<SensorTypeDO> {}
public interface SensorTypeRepository extends BaseRepository<SensorTypeDO> {
PageResponse<SensorTypeDO> listPage(Map<String, Object> params);
}

View File

@ -1,12 +1,18 @@
package com.zcloud.persistence.repository.impl;
import com.alibaba.cola.dto.PageResponse;
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.persistence.dataobject.SensorDeviceDO;
import com.zcloud.persistence.mapper.SensorDeviceMapper;
import com.zcloud.persistence.repository.SensorDeviceRepository;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.utils.Query;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* SensorDeviceRepositoryImpl -
* @Author wangyan
@ -15,4 +21,13 @@ import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class SensorDeviceRepositoryImpl extends BaseRepositoryImpl<SensorDeviceMapper, SensorDeviceDO> implements SensorDeviceRepository {
}
private final SensorDeviceMapper sensorDeviceMapper;
@Override
public PageResponse<SensorDeviceDO> listPage(Map<String, Object> params) {
IPage<SensorDeviceDO> page = new Query<SensorDeviceDO>().getPage(params);
IPage<SensorDeviceDO> result = sensorDeviceMapper.listPage(page, params);
return PageHelper.pageToResponse(result, result.getRecords());
}
}

View File

@ -1,12 +1,18 @@
package com.zcloud.persistence.repository.impl;
import com.alibaba.cola.dto.PageResponse;
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.persistence.dataobject.SensorTypeDO;
import com.zcloud.persistence.mapper.SensorTypeMapper;
import com.zcloud.persistence.repository.SensorTypeRepository;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.utils.Query;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* SensorTypeRepositoryImpl -
* @Author wangyan
@ -15,4 +21,13 @@ import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class SensorTypeRepositoryImpl extends BaseRepositoryImpl<SensorTypeMapper, SensorTypeDO> implements SensorTypeRepository {
}
private final SensorTypeMapper sensorTypeMapper;
@Override
public PageResponse<SensorTypeDO> listPage(Map<String, Object> params) {
IPage<SensorTypeDO> page = new Query<SensorTypeDO>().getPage(params);
IPage<SensorTypeDO> result = sensorTypeMapper.listPage(page, params);
return PageHelper.pageToResponse(result, result.getRecords());
}
}