From 44170f2d9af72daef3e8c6c7f1eca23843fe2178 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Thu, 5 Feb 2026 13:31:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(aiot):=20=E6=96=B0=E5=A2=9E=E6=96=B9?= =?UTF-8?q?=E6=A1=88B=20Controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AiAlertController: AI告警查询和统计API - AiAlgoTemplateController: 算法模板管理API - AiEdgeDeviceController: 边缘设备状态查询API Co-Authored-By: Claude Opus 4.5 --- .../aiot/controller/AiAlertController.java | 61 +++++++++++++++++++ .../controller/AiAlgoTemplateController.java | 47 ++++++++++++++ .../controller/AiEdgeDeviceController.java | 33 ++++++++++ 3 files changed, 141 insertions(+) create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlertController.java create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlgoTemplateController.java create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlertController.java b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlertController.java new file mode 100644 index 000000000..6eb75c1c2 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlertController.java @@ -0,0 +1,61 @@ +package com.genersoft.iot.vmp.aiot.controller; + +import com.genersoft.iot.vmp.aiot.bean.AiAlert; +import com.genersoft.iot.vmp.aiot.service.IAiAlertService; +import com.github.pagehelper.PageInfo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("/api/ai/alert") +@Tag(name = "AI-告警管理") +public class AiAlertController { + + @Autowired + private IAiAlertService alertService; + + @Operation(summary = "告警列表(分页、筛选)") + @GetMapping("/list") + public PageInfo queryList( + @Parameter(description = "摄像头ID") @RequestParam(required = false) String cameraId, + @Parameter(description = "告警类型") @RequestParam(required = false) String alertType, + @Parameter(description = "开始时间") @RequestParam(required = false) String startTime, + @Parameter(description = "结束时间") @RequestParam(required = false) String endTime, + @RequestParam int page, + @RequestParam int count) { + return alertService.queryList(cameraId, alertType, startTime, endTime, page, count); + } + + @Operation(summary = "告警详情") + @GetMapping("/{alertId}") + public AiAlert queryDetail(@PathVariable String alertId) { + return alertService.queryByAlertId(alertId); + } + + @Operation(summary = "删除告警") + @DeleteMapping("/delete") + public void delete(@RequestParam(required = false) String alertId, + @RequestParam(required = false) List alertIds) { + if (alertId != null) { + alertService.delete(alertId); + } + if (alertIds != null && !alertIds.isEmpty()) { + alertService.deleteBatch(alertIds); + } + } + + @Operation(summary = "告警统计") + @GetMapping("/statistics") + public Map statistics( + @Parameter(description = "统计起始时间") @RequestParam(required = false, defaultValue = "2020-01-01 00:00:00") String startTime) { + return alertService.statistics(startTime); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlgoTemplateController.java b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlgoTemplateController.java new file mode 100644 index 000000000..faf4810e4 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiAlgoTemplateController.java @@ -0,0 +1,47 @@ +package com.genersoft.iot.vmp.aiot.controller; + +import com.genersoft.iot.vmp.aiot.bean.AiAlgoTemplate; +import com.genersoft.iot.vmp.aiot.service.IAiAlgoTemplateService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@RequestMapping("/api/ai/template") +@Tag(name = "AI-算法参数模板") +public class AiAlgoTemplateController { + + @Autowired + private IAiAlgoTemplateService templateService; + + @Operation(summary = "创建/更新模板") + @PostMapping("/save") + public void save(@RequestBody AiAlgoTemplate template) { + templateService.save(template); + } + + @Operation(summary = "模板列表") + @GetMapping("/list") + public List queryList( + @Parameter(description = "按算法代码筛选") @RequestParam(required = false) String algoCode) { + return templateService.queryList(algoCode); + } + + @Operation(summary = "模板详情") + @GetMapping("/{templateId}") + public AiAlgoTemplate queryDetail(@PathVariable String templateId) { + return templateService.queryByTemplateId(templateId); + } + + @Operation(summary = "删除模板") + @DeleteMapping("/{templateId}") + public void delete(@PathVariable String templateId) { + templateService.delete(templateId); + } +} 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 new file mode 100644 index 000000000..57218d9fc --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/controller/AiEdgeDeviceController.java @@ -0,0 +1,33 @@ +package com.genersoft.iot.vmp.aiot.controller; + +import com.genersoft.iot.vmp.aiot.bean.AiEdgeDevice; +import com.genersoft.iot.vmp.aiot.service.IAiEdgeDeviceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@RequestMapping("/api/ai/device") +@Tag(name = "AI-边缘设备管理") +public class AiEdgeDeviceController { + + @Autowired + private IAiEdgeDeviceService edgeDeviceService; + + @Operation(summary = "边缘设备列表及状态") + @GetMapping("/list") + public List queryList() { + return edgeDeviceService.queryAll(); + } + + @Operation(summary = "设备详情") + @GetMapping("/{deviceId}") + public AiEdgeDevice queryDetail(@PathVariable String deviceId) { + return edgeDeviceService.queryByDeviceId(deviceId); + } +}