diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java index 878135f00..367d52d45 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java @@ -249,6 +249,12 @@ public class DeviceController { return success(deviceOperationalStatus); } + @GetMapping("/getDeviceOverview") + @Operation(summary = "获取设备概况") + public CommonResult getDeviceOverview() { + return success(deviceService.getDeviceOverview()); + } + // ==================== 子表(设备属性) ==================== @@ -351,4 +357,4 @@ public class DeviceController { return success(true); } -} \ No newline at end of file +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java index 02631d674..bef1bee2d 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java @@ -136,6 +136,8 @@ public interface DeviceService { DeviceOperationStatusRespVO getDeviceOperationalStatus(); + DeviceOverviewRespVO getDeviceOverview(); + List> getMultiDeviceAttributes(Long goviewId); List getDeviceAttributeList(Long deviceId); diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java index fd6660b2b..1aa16fc6c 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java @@ -1244,6 +1244,61 @@ public class DeviceServiceImpl implements DeviceService { return result; } + @Override + public DeviceOverviewRespVO getDeviceOverview() { + DeviceOverviewRespVO result = new DeviceOverviewRespVO(); + + Integer totalDevices = deviceMapper.getTotalDeviceCount(); + int total = totalDevices == null ? 0 : totalDevices; + result.setTotalDevices(total); + + List deviceIds = deviceMapper.getAllDeviceIds(); + if (CollectionUtils.isEmpty(deviceIds)) { + result.setRunningCount(0); + result.setStandbyCount(0); + result.setFaultCount(0); + result.setOfflineCount(0); + result.setUtilizationRate("0.00%"); + result.setBootRate("0.00%"); + result.setFaultRate("0.00%"); + return result; + } + + Map deviceStatusMap = tdengineService.getLatestDeviceStatusAlternative(deviceIds); + + int runningCount = 0; + int standbyCount = 0; + int faultCount = 0; + int offlineCount = 0; + + for (Long deviceId : deviceIds) { + String status = deviceStatusMap.get(deviceId); + if ("1".equals(status)) { + runningCount++; + } else if ("2".equals(status)) { + standbyCount++; + } else if ("3".equals(status)) { + faultCount++; + } else { + offlineCount++; + } + } + + result.setRunningCount(runningCount); + result.setStandbyCount(standbyCount); + result.setFaultCount(faultCount); + result.setOfflineCount(offlineCount); + + double utilizationRate = total > 0 ? (double) runningCount / total * 100 : 0; + double bootRate = total > 0 ? (double) (runningCount + standbyCount + faultCount) / total * 100 : 0; + double faultRate = total > 0 ? (double) faultCount / total * 100 : 0; + + result.setUtilizationRate(String.format("%.2f%%", utilizationRate)); + result.setBootRate(String.format("%.2f%%", bootRate)); + result.setFaultRate(String.format("%.2f%%", faultRate)); + return result; + } + /** * 计算利用率 @@ -1652,4 +1707,4 @@ public class DeviceServiceImpl implements DeviceService { return deviceMapper.deviceLedgerList(); } -} \ No newline at end of file +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/baogongrecord/BaogongRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/baogongrecord/BaogongRecordServiceImpl.java index e8540c4d4..d68c2bf96 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/baogongrecord/BaogongRecordServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/baogongrecord/BaogongRecordServiceImpl.java @@ -41,6 +41,7 @@ public class BaogongRecordServiceImpl implements BaogongRecordService { public Long createBaogongRecord(BaogongRecordSaveReqVO createReqVO) { // 插入 BaogongRecordDO baogongRecord = BeanUtils.toBean(createReqVO, BaogongRecordDO.class); + baogongRecord.setBaogongTime(LocalDateTime.now()); baogongRecordMapper.insert(baogongRecord); // 返回 return baogongRecord.getId(); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/baogongrecord/BaogongRecordMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/baogongrecord/BaogongRecordMapper.xml index 61c883281..f58ca833a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/baogongrecord/BaogongRecordMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/baogongrecord/BaogongRecordMapper.xml @@ -123,6 +123,19 @@ - diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/task/TaskMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/task/TaskMapper.xml index 749fb18b3..0ebf2a73f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/task/TaskMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/task/TaskMapper.xml @@ -65,7 +65,11 @@