diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiConfigController.java b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiConfigController.java index a65103dc4..2c865231d 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiConfigController.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiConfigController.java @@ -142,7 +142,7 @@ public class AiConfigController { // 将第一个设备改名为 "edge" AiEdgeDevice first = devices.get(0); String oldId = first.getDeviceId(); - edgeDeviceMapper.renameDeviceId(first.getId(), targetDeviceId); + edgeDeviceMapper.renameByDeviceId(oldId, targetDeviceId); result.put("device_action", "renamed"); result.put("old_device_id", oldId); log.info("[AiConfig] 已将设备 {} 改名为 {}", oldId, targetDeviceId); diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java index 57218d9fc..038f7877e 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java @@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.aiot.controller; import com.genersoft.iot.vmp.aiot.bean.AiEdgeDevice; import com.genersoft.iot.vmp.aiot.service.IAiEdgeDeviceService; +import com.genersoft.iot.vmp.vmanager.bean.WVPResult; +import com.github.pagehelper.PageInfo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @Slf4j @RestController @@ -30,4 +33,27 @@ public class AiEdgeDeviceController { public AiEdgeDevice queryDetail(@PathVariable String deviceId) { return edgeDeviceService.queryByDeviceId(deviceId); } + + @Operation(summary = "边缘设备分页查询") + @GetMapping("/page") + public WVPResult> queryPage( + @RequestParam(defaultValue = "1") int pageNo, + @RequestParam(defaultValue = "20") int pageSize, + @RequestParam(required = false) String status) { + PageInfo pageInfo = edgeDeviceService.queryPage(pageNo, pageSize, status); + return WVPResult.success(pageInfo); + } + + @Operation(summary = "按设备ID查询") + @GetMapping("/get") + public WVPResult queryByParam(@RequestParam String deviceId) { + AiEdgeDevice device = edgeDeviceService.queryByDeviceId(deviceId); + return WVPResult.success(device); + } + + @Operation(summary = "设备统计") + @GetMapping("/statistics") + public WVPResult> statistics() { + return WVPResult.success(edgeDeviceService.getStatistics()); + } } diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiEdgeDeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiEdgeDeviceMapper.java index 79f60578f..37856f359 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiEdgeDeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/dao/AiEdgeDeviceMapper.java @@ -36,4 +36,21 @@ public interface AiEdgeDeviceMapper { @Update("UPDATE wvp_ai_edge_device SET device_id=#{newDeviceId} WHERE id=#{id}") int renameDeviceId(@Param("id") Integer id, @Param("newDeviceId") String newDeviceId); + + @Update("UPDATE wvp_ai_edge_device SET device_id=#{newDeviceId} WHERE device_id=#{oldDeviceId}") + int renameByDeviceId(@Param("oldDeviceId") String oldDeviceId, @Param("newDeviceId") String newDeviceId); + + @Select({""}) + List queryPage(@Param("status") String status); + + @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE status=#{status}") + int countByStatus(@Param("status") String status); + + @Select("SELECT COUNT(*) FROM wvp_ai_edge_device") + int countAll(); } diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/service/IAiEdgeDeviceService.java b/src/main/java/com/genersoft/iot/vmp/aiot/service/IAiEdgeDeviceService.java index 48aa405e8..228d53fdb 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/service/IAiEdgeDeviceService.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/service/IAiEdgeDeviceService.java @@ -1,8 +1,10 @@ package com.genersoft.iot.vmp.aiot.service; import com.genersoft.iot.vmp.aiot.bean.AiEdgeDevice; +import com.github.pagehelper.PageInfo; import java.util.List; +import java.util.Map; public interface IAiEdgeDeviceService { @@ -13,4 +15,8 @@ public interface IAiEdgeDeviceService { List queryAll(); void checkOffline(); + + PageInfo queryPage(int page, int count, String status); + + Map getStatistics(); } diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiEdgeDeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiEdgeDeviceServiceImpl.java index 474bd117b..4d055f640 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiEdgeDeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiEdgeDeviceServiceImpl.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson2.JSONObject; import com.genersoft.iot.vmp.aiot.bean.AiEdgeDevice; import com.genersoft.iot.vmp.aiot.dao.AiEdgeDeviceMapper; import com.genersoft.iot.vmp.aiot.service.IAiEdgeDeviceService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -12,7 +14,9 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @Service @@ -82,4 +86,20 @@ public class AiEdgeDeviceServiceImpl implements IAiEdgeDeviceService { log.warn("[AiEdgeDevice] 标记{}台设备为离线", count); } } + + @Override + public PageInfo queryPage(int page, int count, String status) { + PageHelper.startPage(page, count); + List list = deviceMapper.queryPage(status); + return new PageInfo<>(list); + } + + @Override + public Map getStatistics() { + Map stats = new HashMap<>(); + stats.put("total", deviceMapper.countAll()); + stats.put("online", deviceMapper.countByStatus("online")); + stats.put("offline", deviceMapper.countByStatus("offline")); + return stats; + } }