diff --git a/ALOps_sys_backend/alops-admin/pom.xml b/ALOps_sys_backend/alops-admin/pom.xml index 5adccf07..3857d600 100644 --- a/ALOps_sys_backend/alops-admin/pom.xml +++ b/ALOps_sys_backend/alops-admin/pom.xml @@ -92,7 +92,11 @@ 1.0.0 compile - + + + org.springframework.boot + spring-boot-starter-websocket + diff --git a/ALOps_sys_backend/alops-admin/src/main/java/com/alops/web/controller/equManagement/EquBaseController.java b/ALOps_sys_backend/alops-admin/src/main/java/com/alops/web/controller/equManagement/EquBaseController.java index c87e6234..5184b890 100644 --- a/ALOps_sys_backend/alops-admin/src/main/java/com/alops/web/controller/equManagement/EquBaseController.java +++ b/ALOps_sys_backend/alops-admin/src/main/java/com/alops/web/controller/equManagement/EquBaseController.java @@ -15,10 +15,7 @@ import com.alops.common.core.page.TableDataInfo; import com.alops.common.enums.BusinessType; import com.alops.common.utils.poi.ExcelUtil; import com.alops.system.domain.EquBase; -import com.alops.system.domain.dto.EquBaseQueryDto; -import com.alops.system.domain.dto.EquMonitorHomeDto; -import com.alops.system.domain.dto.MonitorListDto; -import com.alops.system.domain.dto.MonitorStatisticDto; +import com.alops.system.domain.dto.*; import com.alops.system.domain.vo.EquMonitorVO; import com.alops.system.domain.vo.queryEquBaseVO; import com.alops.system.service.IEquBaseService; @@ -122,17 +119,27 @@ public class EquBaseController extends BaseController @ApiOperation("按设备类型分类统计设备信息") public AjaxResult listMonitorInfoByType() { List list = equBaseService.selectEquStatisticByType(); - // 获取总设备数 - int totalCount = 0; - if (list != null) { - totalCount = list.stream().mapToInt(MonitorStatisticDto::getCount).sum(); - } + Map result = new HashMap<>(); - result.put("totalCount", totalCount); + result.put("totalCount", equBaseService.getTotalDeviceCount()); + result.put("onlineCount", equBaseService.getOnlineDeviceCount()); result.put("list", list); + return AjaxResult.success("查询成功", result); } + /** + * 统计楼层设备分布 + */ + @PreAuthorize("@ss.hasPermi('device:files:statistic')") + @GetMapping("/floorStatistic") + @ApiOperation("统计楼层设备分布信息") + public AjaxResult getFloorDeviceStatistic() { + List list = equBaseService.selectFloorDeviceStatistic(); + return AjaxResult.success("查询成功", list); + } + + /** * 获取设备基本信息详细信息 diff --git a/ALOps_sys_backend/alops-system/pom.xml b/ALOps_sys_backend/alops-system/pom.xml index 664ee492..8fb697ec 100644 --- a/ALOps_sys_backend/alops-system/pom.xml +++ b/ALOps_sys_backend/alops-system/pom.xml @@ -92,10 +92,6 @@ lombok provided - - org.springframework.boot - spring-boot-starter-websocket - diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/EquMonitorHomeDto.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/EquMonitorHomeDto.java index b49b12df..1b655216 100644 --- a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/EquMonitorHomeDto.java +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/EquMonitorHomeDto.java @@ -12,11 +12,11 @@ public class EquMonitorHomeDto { private String id; private String equNumber; //设备编号 private String name; // 设备名称 - private String location; // 设备位置 - private Float cpuUtilization; // CPU 使用率 - private Float memoryUtilization; // 内存使用率 - private Float temperature; // 温度 + //private String location; // 设备位置 + //private Float cpuUtilization; // CPU 使用率 + //private Float memoryUtilization; // 内存使用率 + //private Float temperature; // 温度 private String health; // 健康度 - private String contWorkPeriod; // 持续运行时长 - private Date gatherTime; // 采集时间 + //private String contWorkPeriod; // 持续运行时长 + //private Date gatherTime; // 采集时间 } diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/FloorDeviceCountDto.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/FloorDeviceCountDto.java new file mode 100644 index 00000000..42ecbfe9 --- /dev/null +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/FloorDeviceCountDto.java @@ -0,0 +1,12 @@ +package com.alops.system.domain.dto; + +import lombok.Data; + +/** + * 楼层设备数量统计 DTO + */ +@Data +public class FloorDeviceCountDto { + private String floor; // 楼层名称 + private Integer count; // 设备数量 +} diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/MonitorStatisticDto.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/MonitorStatisticDto.java index 6f9fb488..5ffda2b6 100644 --- a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/MonitorStatisticDto.java +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/domain/dto/MonitorStatisticDto.java @@ -8,7 +8,7 @@ import java.util.List; @Data public class MonitorStatisticDto { private String equTypeId; // 设备类型ID 或 名称 - private String equTypeName; // 设备类型名称 + private String equTypeName;// 设备类型名称 private List devices; // 属于该类型的设备列表 // 新增统计数量字段 diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/mapper/EquBaseMapper.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/mapper/EquBaseMapper.java index 6cada08c..6ca9c2d3 100644 --- a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/mapper/EquBaseMapper.java +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/mapper/EquBaseMapper.java @@ -72,7 +72,7 @@ public interface EquBaseMapper /**分类统计界面信息 -YY**/ List selectEquStatisticByType(); - + Map selectDeviceCountSummary(); /** * 查询设备基本信息列表 * @@ -81,6 +81,11 @@ public interface EquBaseMapper */ public List selectEquBaseList(EquBaseQueryDto equBase); + /** + * 查询楼层设备数量统计 + */ + List selectFloorDeviceStatistic(); + /** * 新增设备基本信息 * diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/IEquBaseService.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/IEquBaseService.java index 301b6bb1..125f721a 100644 --- a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/IEquBaseService.java +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/IEquBaseService.java @@ -36,6 +36,10 @@ public interface IEquBaseService public imageVo selectEquBaseImageById(String id); /**查询界面具体信息**/ // EquMonitorVO selectEquMonitorInfo(EquBaseQueryDto queryDto); + /** + * 查询楼层设备数量统计 + */ + List selectFloorDeviceStatistic(); /** @@ -103,4 +107,7 @@ public interface IEquBaseService * @return 结果 */ public int deleteEquBaseById(String id); + + int getTotalDeviceCount(); + int getOnlineDeviceCount(); } diff --git a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/impl/EquBaseServiceImpl.java b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/impl/EquBaseServiceImpl.java index abea0fb5..a437a333 100644 --- a/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/impl/EquBaseServiceImpl.java +++ b/ALOps_sys_backend/alops-system/src/main/java/com/alops/system/service/impl/EquBaseServiceImpl.java @@ -163,6 +163,11 @@ public class EquBaseServiceImpl implements IEquBaseService return dto; } + //查询楼层数据 + @Override + public List selectFloorDeviceStatistic() { + return equBaseMapper.selectFloorDeviceStatistic(); + } /** @@ -200,11 +205,14 @@ public class EquBaseServiceImpl implements IEquBaseService @Override public List selectEquStatisticByType() { List list = equBaseMapper.selectEquStatisticByType(); + if (list == null || list.isEmpty()) { + this.totalDeviceCount = 0; + this.onlineDeviceCount = 0; return list; } - // 计算每种类型的数量 + // 按类型计算每类设备数量 int totalCount = 0; for (MonitorStatisticDto dto : list) { int count = (dto.getDevices() != null) ? dto.getDevices().size() : 0; @@ -212,24 +220,39 @@ public class EquBaseServiceImpl implements IEquBaseService totalCount += count; } - // 计算百分比 + // 计算百分比 for (MonitorStatisticDto dto : list) { if (totalCount > 0) { double percent = (dto.getCount() * 100.0) / totalCount; - dto.setPercentage(Math.round(percent * 100.0) / 100.0); // 保留两位小数 + dto.setPercentage(Math.round(percent * 100.0) / 100.0); } else { dto.setPercentage(0.0); } } - this.totalDeviceCount = totalCount; // 注意:你可以在 service 中定义字段存储 + + // 查询数据库总设备数和在线数 + Map summary = equBaseMapper.selectDeviceCountSummary(); + if (summary != null) { + this.totalDeviceCount = ((Number) summary.get("totalCount")).intValue(); + this.onlineDeviceCount = ((Number) summary.get("onlineCount")).intValue(); + } else { + this.totalDeviceCount = 0; + this.onlineDeviceCount = 0; + } + return list; } - // 在类中增加: + + + // 在类中增加:(统计设备总数量以及在线设备数量) private int totalDeviceCount; + private int onlineDeviceCount; public int getTotalDeviceCount() { return totalDeviceCount; } + public int getOnlineDeviceCount() {return onlineDeviceCount;} + /** 通用百分比指标判断(CPU/内存) */ private String checkStatus(BigDecimal val, double healthy, double good, double average) { diff --git a/ALOps_sys_backend/alops-system/src/main/resources/mapper/system/EquBaseMapper.xml b/ALOps_sys_backend/alops-system/src/main/resources/mapper/system/EquBaseMapper.xml index 4e0c876c..ceed6146 100644 --- a/ALOps_sys_backend/alops-system/src/main/resources/mapper/system/EquBaseMapper.xml +++ b/ALOps_sys_backend/alops-system/src/main/resources/mapper/system/EquBaseMapper.xml @@ -277,6 +277,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY t.name + + +