From f19e3953dc8bdf3fe167c84d5e70fe9222cae237 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 7 Apr 2026 01:07:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(video):=20AI=20=E5=9F=9F=20ORM=20?= =?UTF-8?q?=E6=94=B9=E9=80=A0=20=E2=80=94=20DO=20=E7=BB=A7=E6=89=BF=20Tena?= =?UTF-8?q?ntBaseDO=20+=20Mapper=20=E7=BB=A7=E6=89=BF=20BaseMapperX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 8 个 AI DO 加 @TableName、继承 TenantBaseDO、主键改 Long - 9 个 AI Mapper 继承 BaseMapperX,简单 CRUD 改为 default 方法 - Service/Controller 适配类型变化(Integer→Long、删除手动 setCreateTime) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../module/video/aiot/bean/AiAlert.java | 10 ++- .../video/aiot/bean/AiAlgoTemplate.java | 18 +++-- .../module/video/aiot/bean/AiAlgorithm.java | 18 +++-- .../module/video/aiot/bean/AiConfigLog.java | 10 ++- .../video/aiot/bean/AiConfigSnapshot.java | 12 ++- .../module/video/aiot/bean/AiEdgeDevice.java | 14 +++- .../viewsh/module/video/aiot/bean/AiRoi.java | 18 +++-- .../module/video/aiot/bean/AiRoiAlgoBind.java | 18 +++-- .../aiot/controller/AiAlertController.java | 4 +- .../controller/AiAlgorithmController.java | 2 +- .../aiot/controller/AiConfigController.java | 4 +- .../controller/AiConfigLogController.java | 4 +- .../controller/AiEdgeDeviceController.java | 6 +- .../aiot/controller/AiRoiController.java | 6 +- .../module/video/aiot/dao/AiAlertMapper.java | 50 +++++-------- .../video/aiot/dao/AiAlgoTemplateMapper.java | 37 +++++----- .../video/aiot/dao/AiAlgorithmMapper.java | 54 +++++++------- .../video/aiot/dao/AiConfigLogMapper.java | 22 +++--- .../aiot/dao/AiConfigSnapshotMapper.java | 37 +++++----- .../video/aiot/dao/AiEdgeDeviceMapper.java | 57 ++++++++------- .../video/aiot/dao/AiRoiAlgoBindMapper.java | 56 +++++++------- .../module/video/aiot/dao/AiRoiMapper.java | 73 ++++++++++--------- .../video/aiot/service/IAiAlertService.java | 4 +- .../aiot/service/IAiAlgorithmService.java | 2 +- .../aiot/service/IAiConfigLogService.java | 4 +- .../service/IAiConfigSnapshotService.java | 4 +- .../aiot/service/IAiEdgeDeviceService.java | 4 +- .../video/aiot/service/IAiRoiService.java | 6 +- .../aiot/service/impl/AiAlertServiceImpl.java | 19 ++--- .../impl/AiAlgoTemplateServiceImpl.java | 8 -- .../service/impl/AiAlgorithmServiceImpl.java | 9 +-- .../service/impl/AiConfigLogServiceImpl.java | 13 ++-- .../impl/AiConfigSnapshotServiceImpl.java | 26 ++----- .../service/impl/AiEdgeDeviceServiceImpl.java | 13 ++-- .../aiot/service/impl/AiRoiServiceImpl.java | 27 ++----- 35 files changed, 347 insertions(+), 322 deletions(-) diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java index 1576756a..c7da0673 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java @@ -1,12 +1,20 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_alert") +@EqualsAndHashCode(callSuper = true) @Schema(description = "AI告警记录") -public class AiAlert { +public class AiAlert extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") private Long id; diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java index 453fcd4b..b80dcc99 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java @@ -1,14 +1,22 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_algo_template") +@EqualsAndHashCode(callSuper = true) @Schema(description = "算法参数模板") -public class AiAlgoTemplate { +public class AiAlgoTemplate extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") - private Integer id; + private Long id; @Schema(description = "模板唯一ID") private String templateId; @@ -24,10 +32,4 @@ public class AiAlgoTemplate { @Schema(description = "描述") private String description; - - @Schema(description = "创建时间") - private String createTime; - - @Schema(description = "更新时间") - private String updateTime; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java index c87a0959..8bc83dcd 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java @@ -1,14 +1,22 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_algorithm") +@EqualsAndHashCode(callSuper = true) @Schema(description = "算法注册表") -public class AiAlgorithm { +public class AiAlgorithm extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") - private Integer id; + private Long id; @Schema(description = "算法编码") private String algoCode; @@ -30,10 +38,4 @@ public class AiAlgorithm { @Schema(description = "最后同步时间") private String syncTime; - - @Schema(description = "创建时间") - private String createTime; - - @Schema(description = "更新时间") - private String updateTime; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java index ed66d3ac..9f4fb480 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java @@ -1,12 +1,20 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_config_log") +@EqualsAndHashCode(callSuper = true) @Schema(description = "配置变更日志") -public class AiConfigLog { +public class AiConfigLog extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") private Long id; diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java index b06d4d3d..7546682b 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java @@ -1,12 +1,20 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_config_snapshot") +@EqualsAndHashCode(callSuper = true) @Schema(description = "配置版本快照") -public class AiConfigSnapshot { +public class AiConfigSnapshot extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") private Long id; @@ -34,6 +42,6 @@ public class AiConfigSnapshot { @Schema(description = "操作人") private String createdBy; - @Schema(description = "创建时间") + @Schema(description = "创建时间(业务字段,记录快照生成时间)") private String createdAt; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java index 9d6c7b5d..b0b84add 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java @@ -1,14 +1,22 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_edge_device") +@EqualsAndHashCode(callSuper = true) @Schema(description = "边缘设备状态") -public class AiEdgeDevice { +public class AiEdgeDevice extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") - private Integer id; + private Long id; @Schema(description = "设备唯一ID") private String deviceId; @@ -37,6 +45,6 @@ public class AiEdgeDevice { @Schema(description = "当前配置版本") private String configVersion; - @Schema(description = "更新时间") + @Schema(description = "更新时间(业务字段)") private String updatedAt; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java index cc9e894c..f22a632d 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java @@ -1,14 +1,22 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_roi") +@EqualsAndHashCode(callSuper = true) @Schema(description = "ROI区域配置") -public class AiRoi { +public class AiRoi extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") - private Integer id; + private Long id; @Schema(description = "UUID,与FastAPI端同步用") private String roiId; @@ -45,10 +53,4 @@ public class AiRoi { @Schema(description = "描述") private String description; - - @Schema(description = "创建时间") - private String createTime; - - @Schema(description = "更新时间") - private String updateTime; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java index b0f5efb6..567c786a 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java @@ -1,14 +1,22 @@ package com.viewsh.module.video.aiot.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.viewsh.framework.tenant.core.db.TenantBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@TableName("wvp_ai_roi_algo_bind") +@EqualsAndHashCode(callSuper = true) @Schema(description = "ROI算法绑定") -public class AiRoiAlgoBind { +public class AiRoiAlgoBind extends TenantBaseDO { + @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") - private Integer id; + private Long id; @Schema(description = "UUID,同步用") private String bindId; @@ -33,10 +41,4 @@ public class AiRoiAlgoBind { @Schema(description = "覆盖模板的局部参数JSON") private String paramOverride; - - @Schema(description = "创建时间") - private String createTime; - - @Schema(description = "更新时间") - private String updateTime; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlertController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlertController.java index 528fff0e..510741de 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlertController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlertController.java @@ -3,7 +3,7 @@ package com.viewsh.module.video.aiot.controller; import com.alibaba.fastjson2.JSON; import com.viewsh.module.video.aiot.bean.AiAlert; import com.viewsh.module.video.aiot.service.IAiAlertService; -import com.github.pagehelper.PageInfo; +import com.viewsh.framework.common.pojo.PageResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -27,7 +27,7 @@ public class AiAlertController { @Operation(summary = "告警列表(分页、筛选)") @GetMapping("/list") - public PageInfo queryList( + public PageResult queryList( @Parameter(description = "摄像头ID") @RequestParam(required = false) String cameraId, @Parameter(description = "告警类型") @RequestParam(required = false) String alertType, @Parameter(description = "开始时间") @RequestParam(required = false) String startTime, diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlgorithmController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlgorithmController.java index 1b08ee85..78dd5769 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlgorithmController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiAlgorithmController.java @@ -27,7 +27,7 @@ public class AiAlgorithmController { @Operation(summary = "启用/禁用算法") @PostMapping("/toggle/{id}") - public void toggleActive(@PathVariable Integer id, @RequestParam Integer isActive) { + public void toggleActive(@PathVariable Long id, @RequestParam Integer isActive) { algorithmService.toggleActive(id, isActive); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigController.java index 4efc0edb..e3a35db5 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigController.java @@ -6,7 +6,7 @@ import com.viewsh.module.video.aiot.dao.AiEdgeDeviceMapper; import com.viewsh.module.video.aiot.dao.AiRoiMapper; import com.viewsh.module.video.aiot.service.IAiConfigService; import com.viewsh.module.video.aiot.service.IAiConfigSnapshotService; -import com.github.pagehelper.PageInfo; +import com.viewsh.framework.common.pojo.PageResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -66,7 +66,7 @@ public class AiConfigController { @Operation(summary = "查询版本列表") @GetMapping("/versions") - public PageInfo queryVersions( + public PageResult queryVersions( @Parameter(description = "范围类型:CAMERA/ROI/BIND") @RequestParam(required = false) String scopeType, @Parameter(description = "范围ID") @RequestParam(required = false) String scopeId, @Parameter(description = "摄像头ID") @RequestParam(required = false) String cameraId, diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigLogController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigLogController.java index 0a7445d1..5e5a6da1 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigLogController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiConfigLogController.java @@ -2,7 +2,7 @@ package com.viewsh.module.video.aiot.controller; import com.viewsh.module.video.aiot.bean.AiConfigLog; import com.viewsh.module.video.aiot.service.IAiConfigLogService; -import com.github.pagehelper.PageInfo; +import com.viewsh.framework.common.pojo.PageResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -21,7 +21,7 @@ public class AiConfigLogController { @Operation(summary = "分页查询变更日志") @GetMapping("/list") - public PageInfo queryList( + public PageResult queryList( @Parameter(description = "配置类型") @RequestParam(required = false) String configType, @Parameter(description = "配置ID") @RequestParam(required = false) String configId, @RequestParam int page, diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiEdgeDeviceController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiEdgeDeviceController.java index a620ab60..8635d6bf 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiEdgeDeviceController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiEdgeDeviceController.java @@ -3,7 +3,7 @@ package com.viewsh.module.video.aiot.controller; import com.viewsh.module.video.aiot.bean.AiEdgeDevice; import com.viewsh.module.video.aiot.service.IAiEdgeDeviceService; import com.viewsh.module.video.vmanager.bean.WVPResult; -import com.github.pagehelper.PageInfo; +import com.viewsh.framework.common.pojo.PageResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -36,11 +36,11 @@ public class AiEdgeDeviceController { @Operation(summary = "边缘设备分页查询") @GetMapping("/page") - public WVPResult> queryPage( + 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); + PageResult pageInfo = edgeDeviceService.queryPage(pageNo, pageSize, status); return WVPResult.success(pageInfo); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiRoiController.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiRoiController.java index 0e2b90d8..64b26fd4 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiRoiController.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/controller/AiRoiController.java @@ -5,7 +5,7 @@ import com.viewsh.module.video.aiot.bean.AiRoiAlgoBind; import com.viewsh.module.video.aiot.bean.AiRoiDetail; import com.viewsh.module.video.aiot.service.IAiRoiService; import com.viewsh.module.video.aiot.service.IAiScreenshotService; -import com.github.pagehelper.PageInfo; +import com.viewsh.framework.common.pojo.PageResult; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -35,7 +35,7 @@ public class AiRoiController { @Operation(summary = "分页查询ROI列表") @GetMapping("/list") - public PageInfo queryList( + public PageResult queryList( @Parameter(description = "通道国标编号") @RequestParam(required = false) String cameraId, @Parameter(description = "设备国标编号") @RequestParam(required = false) String deviceId, @Parameter(description = "关键字") @RequestParam(required = false) String query, @@ -46,7 +46,7 @@ public class AiRoiController { @Operation(summary = "ROI详情(含关联算法)") @GetMapping("/{id}") - public AiRoiDetail queryDetail(@PathVariable Integer id) { + public AiRoiDetail queryDetail(@PathVariable Long id) { return roiService.queryDetail(id); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java index 9bf0989d..2e9c7765 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java @@ -1,21 +1,21 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiAlert; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @Mapper -public interface AiAlertMapper { +public interface AiAlertMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_alert (alert_id, camera_id, roi_id, bind_id, alert_type, target_class, " + - "confidence, bbox, message, image_path, duration_minutes, extra_data, received_at) " + - "VALUES (#{alertId}, #{cameraId}, #{roiId}, #{bindId}, #{alertType}, #{targetClass}, " + - "#{confidence}, #{bbox}, #{message}, #{imagePath}, #{durationMinutes}, #{extraData}, #{receivedAt})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiAlert alert); - - @Select("SELECT COUNT(1) FROM wvp_ai_alert WHERE alert_id=#{alertId}") + @Select("SELECT COUNT(1) FROM wvp_ai_alert WHERE alert_id=#{alertId} AND deleted=0") int countByAlertId(@Param("alertId") String alertId); @Select("SELECT a.*, r.name AS roi_name, " + @@ -23,7 +23,7 @@ public interface AiAlertMapper { "FROM wvp_ai_alert a " + "LEFT JOIN wvp_ai_roi r ON a.roi_id = r.roi_id " + "LEFT JOIN wvp_stream_proxy sp ON a.camera_id = sp.camera_code " + - "WHERE a.alert_id=#{alertId}") + "WHERE a.alert_id=#{alertId} AND a.deleted=0") @Results({ @Result(property = "roiName", column = "roi_name"), @Result(property = "cameraName", column = "camera_name") @@ -36,7 +36,7 @@ public interface AiAlertMapper { "FROM wvp_ai_alert a " + "LEFT JOIN wvp_ai_roi r ON a.roi_id = r.roi_id " + "LEFT JOIN wvp_stream_proxy sp ON a.camera_id = sp.camera_code " + - "WHERE 1=1 " + + "WHERE a.deleted=0 " + " AND a.camera_id=#{cameraId} " + " AND a.alert_type=#{alertType} " + " AND a.received_at >= #{startTime} " + @@ -47,30 +47,20 @@ public interface AiAlertMapper { @Result(property = "roiName", column = "roi_name"), @Result(property = "cameraName", column = "camera_name") }) - List queryList(@Param("cameraId") String cameraId, - @Param("alertType") String alertType, - @Param("startTime") String startTime, - @Param("endTime") String endTime); - - @Delete("DELETE FROM wvp_ai_alert WHERE alert_id=#{alertId}") - int deleteByAlertId(@Param("alertId") String alertId); - - @Delete(value = {""}) - int deleteByAlertIds(@Param("alertIds") List alertIds); + IPage queryList(IPage page, + @Param("cameraId") String cameraId, + @Param("alertType") String alertType, + @Param("startTime") String startTime, + @Param("endTime") String endTime); @Select("SELECT alert_type, COUNT(*) as cnt FROM wvp_ai_alert " + - "WHERE received_at >= #{startTime} GROUP BY alert_type") + "WHERE received_at >= #{startTime} AND deleted=0 GROUP BY alert_type") List> statisticsByType(@Param("startTime") String startTime); @Select("SELECT camera_id, COUNT(*) as cnt FROM wvp_ai_alert " + - "WHERE received_at >= #{startTime} GROUP BY camera_id ORDER BY cnt DESC") + "WHERE received_at >= #{startTime} AND deleted=0 GROUP BY camera_id ORDER BY cnt DESC") List> statisticsByCamera(@Param("startTime") String startTime); - @Update("UPDATE wvp_ai_alert SET duration_minutes=#{durationMinutes} WHERE alert_id=#{alertId}") + @Update("UPDATE wvp_ai_alert SET duration_minutes=#{durationMinutes} WHERE alert_id=#{alertId} AND deleted=0") int updateDuration(@Param("alertId") String alertId, @Param("durationMinutes") double durationMinutes); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgoTemplateMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgoTemplateMapper.java index f6e4df47..85577e90 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgoTemplateMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgoTemplateMapper.java @@ -1,33 +1,36 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiAlgoTemplate; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper -public interface AiAlgoTemplateMapper { +public interface AiAlgoTemplateMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_algo_template (template_id, template_name, algo_code, params, " + - "description, create_time, update_time) " + - "VALUES (#{templateId}, #{templateName}, #{algoCode}, #{params}, " + - "#{description}, #{createTime}, #{updateTime})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiAlgoTemplate template); + default int add(AiAlgoTemplate template) { + return insert(template); + } - @Update("UPDATE wvp_ai_algo_template SET template_name=#{templateName}, algo_code=#{algoCode}, " + - "params=#{params}, description=#{description}, update_time=#{updateTime} " + - "WHERE template_id=#{templateId}") - int updateByTemplateId(AiAlgoTemplate template); + default int updateByTemplateId(AiAlgoTemplate template) { + return update(template, new LambdaQueryWrapper() + .eq(AiAlgoTemplate::getTemplateId, template.getTemplateId())); + } - @Delete("DELETE FROM wvp_ai_algo_template WHERE template_id=#{templateId}") - int deleteByTemplateId(@Param("templateId") String templateId); + default int deleteByTemplateId(String templateId) { + return delete(AiAlgoTemplate::getTemplateId, templateId); + } - @Select("SELECT * FROM wvp_ai_algo_template WHERE template_id=#{templateId}") - AiAlgoTemplate queryByTemplateId(@Param("templateId") String templateId); + default AiAlgoTemplate queryByTemplateId(String templateId) { + return selectOne(AiAlgoTemplate::getTemplateId, templateId); + } @Select(value = {""}) diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java index eb5c5c98..e12cd105 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java @@ -1,40 +1,44 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiAlgorithm; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import java.util.List; @Mapper -public interface AiAlgorithmMapper { +public interface AiAlgorithmMapper extends BaseMapperX { - @Select("SELECT * FROM wvp_ai_algorithm ORDER BY id") - List queryAll(); + default List queryAll() { + return selectList(new LambdaQueryWrapper().orderByAsc(AiAlgorithm::getId)); + } - @Select("SELECT * FROM wvp_ai_algorithm WHERE is_active=1 ORDER BY id") - List queryActive(); + default List queryActive() { + return selectList(new LambdaQueryWrapper() + .eq(AiAlgorithm::getIsActive, 1) + .orderByAsc(AiAlgorithm::getId)); + } - @Select("SELECT * FROM wvp_ai_algorithm WHERE algo_code=#{algoCode}") - AiAlgorithm queryByCode(@Param("algoCode") String algoCode); + default AiAlgorithm queryByCode(String algoCode) { + return selectOne(AiAlgorithm::getAlgoCode, algoCode); + } - @Select("SELECT * FROM wvp_ai_algorithm WHERE id=#{id}") - AiAlgorithm queryById(@Param("id") Integer id); + default AiAlgorithm queryById(Long id) { + return selectById(id); + } - @Insert("INSERT INTO wvp_ai_algorithm (algo_code, algo_name, target_class, param_schema, " + - "description, is_active, sync_time, create_time, update_time) " + - "VALUES (#{algoCode}, #{algoName}, #{targetClass}, #{paramSchema}, " + - "#{description}, #{isActive}, #{syncTime}, #{createTime}, #{updateTime})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiAlgorithm algorithm); + default int add(AiAlgorithm algorithm) { + return insert(algorithm); + } - @Update("UPDATE wvp_ai_algorithm SET algo_name=#{algoName}, target_class=#{targetClass}, " + - "param_schema=#{paramSchema}, description=#{description}, is_active=#{isActive}, " + - "sync_time=#{syncTime}, update_time=#{updateTime} WHERE algo_code=#{algoCode}") - int updateByCode(AiAlgorithm algorithm); + default int updateByCode(AiAlgorithm algorithm) { + return update(algorithm, new LambdaQueryWrapper() + .eq(AiAlgorithm::getAlgoCode, algorithm.getAlgoCode())); + } - @Update("UPDATE wvp_ai_algorithm SET is_active=#{isActive}, update_time=#{updateTime} WHERE id=#{id}") - int updateActive(@Param("id") Integer id, @Param("isActive") Integer isActive, @Param("updateTime") String updateTime); - - @Delete("DELETE FROM wvp_ai_algorithm WHERE id=#{id}") - int delete(@Param("id") Integer id); + @Update("UPDATE wvp_ai_algorithm SET is_active=#{isActive}, update_time=#{updateTime} WHERE id=#{id} AND deleted=0") + int updateActive(@Param("id") Long id, @Param("isActive") Integer isActive, @Param("updateTime") String updateTime); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java index d8043dad..da9abd50 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java @@ -1,24 +1,28 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiConfigLog; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper -public interface AiConfigLogMapper { +public interface AiConfigLogMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_config_log (config_type, config_id, old_value, new_value, updated_by, updated_at) " + - "VALUES (#{configType}, #{configId}, #{oldValue}, #{newValue}, #{updatedBy}, #{updatedAt})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiConfigLog log); + default int add(AiConfigLog log) { + return insert(log); + } @Select(value = {""}) - List queryList(@Param("configType") String configType, - @Param("configId") String configId); + IPage queryList(IPage page, + @Param("configType") String configType, + @Param("configId") String configId); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigSnapshotMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigSnapshotMapper.java index 2232fa3d..05dbe246 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigSnapshotMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigSnapshotMapper.java @@ -1,41 +1,44 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiConfigSnapshot; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper -public interface AiConfigSnapshotMapper { +public interface AiConfigSnapshotMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_config_snapshot (version, scope_type, scope_id, camera_id, snapshot, " + - "change_type, change_desc, created_by, created_at) " + - "VALUES (#{version}, #{scopeType}, #{scopeId}, #{cameraId}, #{snapshot}, " + - "#{changeType}, #{changeDesc}, #{createdBy}, #{createdAt})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiConfigSnapshot snapshot); + default int add(AiConfigSnapshot snapshot) { + return insert(snapshot); + } + + default AiConfigSnapshot queryById(Long id) { + return selectById(id); + } @Select("SELECT COALESCE(MAX(version), 0) FROM wvp_ai_config_snapshot " + - "WHERE scope_type=#{scopeType} AND scope_id=#{scopeId}") + "WHERE scope_type=#{scopeType} AND scope_id=#{scopeId} AND deleted=0") int getMaxVersion(@Param("scopeType") String scopeType, @Param("scopeId") String scopeId); - @Select("SELECT * FROM wvp_ai_config_snapshot WHERE id=#{id}") - AiConfigSnapshot queryById(@Param("id") Long id); - @Select("SELECT * FROM wvp_ai_config_snapshot " + - "WHERE scope_type=#{scopeType} AND scope_id=#{scopeId} AND version=#{version}") + "WHERE scope_type=#{scopeType} AND scope_id=#{scopeId} AND version=#{version} AND deleted=0") AiConfigSnapshot queryByVersion(@Param("scopeType") String scopeType, @Param("scopeId") String scopeId, @Param("version") Integer version); @Select(value = {""}) - List queryList(@Param("scopeType") String scopeType, - @Param("scopeId") String scopeId, - @Param("cameraId") String cameraId); + IPage queryList(IPage page, + @Param("scopeType") String scopeType, + @Param("scopeId") String scopeId, + @Param("cameraId") String cameraId); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiEdgeDeviceMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiEdgeDeviceMapper.java index 62da5cc1..97dad081 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiEdgeDeviceMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiEdgeDeviceMapper.java @@ -1,57 +1,60 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiEdgeDevice; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @Mapper -public interface AiEdgeDeviceMapper { +public interface AiEdgeDeviceMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_edge_device (device_id, status, last_heartbeat, uptime_seconds, " + - "frames_processed, alerts_generated, stream_stats, stream_count, config_version, updated_at) " + - "VALUES (#{deviceId}, #{status}, #{lastHeartbeat}, #{uptimeSeconds}, " + - "#{framesProcessed}, #{alertsGenerated}, #{streamStats}, #{streamCount}, #{configVersion}, #{updatedAt})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiEdgeDevice device); + default int add(AiEdgeDevice device) { + return insert(device); + } - @Update("UPDATE wvp_ai_edge_device SET status=#{status}, last_heartbeat=#{lastHeartbeat}, " + - "uptime_seconds=#{uptimeSeconds}, frames_processed=#{framesProcessed}, " + - "alerts_generated=#{alertsGenerated}, stream_stats=#{streamStats}, " + - "stream_count=#{streamCount}, config_version=#{configVersion}, " + - "updated_at=#{updatedAt} WHERE device_id=#{deviceId}") - int updateByDeviceId(AiEdgeDevice device); + default int updateByDeviceId(AiEdgeDevice device) { + return update(device, new LambdaQueryWrapper() + .eq(AiEdgeDevice::getDeviceId, device.getDeviceId())); + } - @Select("SELECT * FROM wvp_ai_edge_device WHERE device_id=#{deviceId}") - AiEdgeDevice queryByDeviceId(@Param("deviceId") String deviceId); + default AiEdgeDevice queryByDeviceId(String deviceId) { + return selectOne(AiEdgeDevice::getDeviceId, deviceId); + } - @Select("SELECT * FROM wvp_ai_edge_device ORDER BY updated_at DESC") - List queryAll(); + default List queryAll() { + return selectList(new LambdaQueryWrapper().orderByDesc(AiEdgeDevice::getUpdatedAt)); + } @Update("UPDATE wvp_ai_edge_device SET status='offline', updated_at=#{now} " + - "WHERE status='online' AND last_heartbeat < #{threshold}") + "WHERE status='online' AND last_heartbeat < #{threshold} AND deleted=0") int markOffline(@Param("threshold") String threshold, @Param("now") String now); - @Delete("DELETE FROM wvp_ai_edge_device WHERE device_id != #{keepDeviceId}") + @Update("UPDATE wvp_ai_edge_device SET deleted=1 WHERE device_id != #{keepDeviceId} AND deleted=0") int deleteAllExcept(@Param("keepDeviceId") String keepDeviceId); - @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 id=#{id} AND deleted=0") + int renameDeviceId(@Param("id") Long id, @Param("newDeviceId") String newDeviceId); - @Update("UPDATE wvp_ai_edge_device SET device_id=#{newDeviceId} WHERE device_id=#{oldDeviceId}") + @Update("UPDATE wvp_ai_edge_device SET device_id=#{newDeviceId} WHERE device_id=#{oldDeviceId} AND deleted=0") int renameByDeviceId(@Param("oldDeviceId") String oldDeviceId, @Param("newDeviceId") String newDeviceId); @Select({""}) - List queryPage(@Param("status") String status); + IPage queryPage(IPage page, @Param("status") String status); - @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE status=#{status}") + @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE status=#{status} AND deleted=0") int countByStatus(@Param("status") String status); - @Select("SELECT COUNT(*) FROM wvp_ai_edge_device") + @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE deleted=0") int countAll(); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java index 27c3bcf4..8b810a21 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java @@ -1,48 +1,54 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiRoiAlgoBind; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper -public interface AiRoiAlgoBindMapper { +public interface AiRoiAlgoBindMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_roi_algo_bind (bind_id, roi_id, algo_code, params, priority, enabled, " + - "template_id, param_override, create_time, update_time) " + - "VALUES (#{bindId}, #{roiId}, #{algoCode}, #{params}, #{priority}, #{enabled}, " + - "#{templateId}, #{paramOverride}, #{createTime}, #{updateTime})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiRoiAlgoBind bind); + default int add(AiRoiAlgoBind bind) { + return insert(bind); + } - @Update("UPDATE wvp_ai_roi_algo_bind SET params=#{params}, priority=#{priority}, " + - "enabled=#{enabled}, template_id=#{templateId}, param_override=#{paramOverride}, " + - "update_time=#{updateTime} WHERE bind_id=#{bindId}") - int updateByBindId(AiRoiAlgoBind bind); + default int updateByBindId(AiRoiAlgoBind bind) { + return update(bind, new LambdaQueryWrapper() + .eq(AiRoiAlgoBind::getBindId, bind.getBindId())); + } - @Delete("DELETE FROM wvp_ai_roi_algo_bind WHERE bind_id=#{bindId}") - int deleteByBindId(@Param("bindId") String bindId); + default int deleteByBindId(String bindId) { + return delete(AiRoiAlgoBind::getBindId, bindId); + } - @Delete("DELETE FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId}") - int deleteByRoiId(@Param("roiId") String roiId); + default int deleteByRoiId(String roiId) { + return delete(AiRoiAlgoBind::getRoiId, roiId); + } - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} ORDER BY priority DESC, id") + @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} AND deleted=0 ORDER BY priority DESC, id") List queryByRoiId(@Param("roiId") String roiId); - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE bind_id=#{bindId}") - AiRoiAlgoBind queryByBindId(@Param("bindId") String bindId); + default AiRoiAlgoBind queryByBindId(String bindId) { + return selectOne(AiRoiAlgoBind::getBindId, bindId); + } - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} AND algo_code=#{algoCode}") + @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} AND algo_code=#{algoCode} AND deleted=0") AiRoiAlgoBind queryByRoiIdAndAlgoCode(@Param("roiId") String roiId, @Param("algoCode") String algoCode); - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE template_id=#{templateId}") - List queryByTemplateId(@Param("templateId") String templateId); + default List queryByTemplateId(String templateId) { + return selectList(AiRoiAlgoBind::getTemplateId, templateId); + } @Select("SELECT b.* FROM wvp_ai_roi_algo_bind b " + "INNER JOIN wvp_ai_roi r ON b.roi_id = r.roi_id " + - "WHERE r.camera_id=#{cameraId} ORDER BY b.priority DESC, b.id") + "WHERE r.camera_id=#{cameraId} AND b.deleted=0 AND r.deleted=0 ORDER BY b.priority DESC, b.id") List queryByCameraId(@Param("cameraId") String cameraId); - @Select("SELECT * FROM wvp_ai_roi_algo_bind ORDER BY priority DESC, id") - List queryAll(); + default List queryAll() { + return selectList(new LambdaQueryWrapper().orderByDesc(AiRoiAlgoBind::getPriority).orderByAsc(AiRoiAlgoBind::getId)); + } } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java index 518ce799..87b4b783 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java @@ -1,76 +1,83 @@ package com.viewsh.module.video.aiot.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.viewsh.framework.mybatis.core.mapper.BaseMapperX; import com.viewsh.module.video.aiot.bean.AiRoi; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @Mapper -public interface AiRoiMapper { +public interface AiRoiMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_ai_roi (roi_id, camera_id, channel_db_id, device_id, name, roi_type, " + - "coordinates, color, priority, enabled, extra_params, description, create_time, update_time) " + - "VALUES (#{roiId}, #{cameraId}, #{channelDbId}, #{deviceId}, #{name}, #{roiType}, " + - "#{coordinates}, #{color}, #{priority}, #{enabled}, #{extraParams}, #{description}, #{createTime}, #{updateTime})") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - int add(AiRoi roi); + default int add(AiRoi roi) { + return insert(roi); + } - @Update("UPDATE wvp_ai_roi SET camera_id=#{cameraId}, channel_db_id=#{channelDbId}, device_id=#{deviceId}, " + - "name=#{name}, roi_type=#{roiType}, coordinates=#{coordinates}, color=#{color}, " + - "priority=#{priority}, enabled=#{enabled}, extra_params=#{extraParams}, " + - "description=#{description}, update_time=#{updateTime} WHERE id=#{id}") - int update(AiRoi roi); + default int update(AiRoi roi) { + return updateById(roi); + } - @Delete("DELETE FROM wvp_ai_roi WHERE roi_id=#{roiId}") - int deleteByRoiId(@Param("roiId") String roiId); + default int deleteByRoiId(String roiId) { + return delete(AiRoi::getRoiId, roiId); + } - @Select("SELECT * FROM wvp_ai_roi WHERE id=#{id}") - AiRoi queryById(@Param("id") Integer id); + default AiRoi queryById(Long id) { + return selectById(id); + } - @Select("SELECT * FROM wvp_ai_roi WHERE roi_id=#{roiId}") - AiRoi queryByRoiId(@Param("roiId") String roiId); + default AiRoi queryByRoiId(String roiId) { + return selectOne(AiRoi::getRoiId, roiId); + } @Select(value = {""}) - List queryList(@Param("cameraId") String cameraId, - @Param("deviceId") String deviceId, - @Param("query") String query); + IPage queryList(IPage page, + @Param("cameraId") String cameraId, + @Param("deviceId") String deviceId, + @Param("query") String query); - @Select("SELECT * FROM wvp_ai_roi WHERE camera_id=#{cameraId} AND enabled=1 ORDER BY priority DESC") + @Select("SELECT * FROM wvp_ai_roi WHERE camera_id=#{cameraId} AND enabled=1 AND deleted=0 ORDER BY priority DESC") List queryByCameraId(@Param("cameraId") String cameraId); - @Select("SELECT * FROM wvp_ai_roi WHERE camera_id=#{cameraId} ORDER BY priority DESC") + @Select("SELECT * FROM wvp_ai_roi WHERE camera_id=#{cameraId} AND deleted=0 ORDER BY priority DESC") List queryAllByCameraId(@Param("cameraId") String cameraId); - @Select("SELECT * FROM wvp_ai_roi ORDER BY priority DESC, id DESC") - List queryAll(); + default List queryAll() { + return selectList(new LambdaQueryWrapper().orderByDesc(AiRoi::getPriority).orderByDesc(AiRoi::getId)); + } - @Select("SELECT DISTINCT camera_id FROM wvp_ai_roi WHERE device_id=#{deviceId}") + @Select("SELECT DISTINCT camera_id FROM wvp_ai_roi WHERE device_id=#{deviceId} AND deleted=0") List queryDistinctCameraIdsByDeviceId(@Param("deviceId") String deviceId); - @Select("SELECT DISTINCT device_id FROM wvp_ai_roi WHERE camera_id=#{cameraId} AND device_id IS NOT NULL LIMIT 1") + @Select("SELECT DISTINCT device_id FROM wvp_ai_roi WHERE camera_id=#{cameraId} AND device_id IS NOT NULL AND deleted=0 LIMIT 1") String queryDeviceIdByCameraId(@Param("cameraId") String cameraId); - @Update("UPDATE wvp_ai_roi SET device_id=#{deviceId} WHERE device_id IS NULL OR device_id=''") + @Update("UPDATE wvp_ai_roi SET device_id=#{deviceId} WHERE (device_id IS NULL OR device_id='') AND deleted=0") int backfillDeviceId(@Param("deviceId") String deviceId); - @Update("UPDATE wvp_ai_roi SET device_id=#{deviceId}") + @Update("UPDATE wvp_ai_roi SET device_id=#{deviceId} WHERE deleted=0") int updateAllDeviceId(@Param("deviceId") String deviceId); /** * 将 ROI 表中 camera_id 从 app/stream 格式更新为 camera_code */ - @Update("UPDATE wvp_ai_roi SET camera_id = #{cameraCode} WHERE camera_id = #{oldCameraId}") + @Update("UPDATE wvp_ai_roi SET camera_id = #{cameraCode} WHERE camera_id = #{oldCameraId} AND deleted=0") int updateCameraId(@Param("oldCameraId") String oldCameraId, @Param("cameraCode") String cameraCode); /** * 查询使用非 camera_code 格式的 ROI(即 camera_id 不以 cam_ 开头的记录) */ - @Select("SELECT * FROM wvp_ai_roi WHERE camera_id NOT LIKE 'cam_%'") + @Select("SELECT * FROM wvp_ai_roi WHERE camera_id NOT LIKE 'cam_%' AND deleted=0") List queryWithLegacyCameraId(); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlertService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlertService.java index 99d45bca..da1f270b 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlertService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlertService.java @@ -1,7 +1,7 @@ package com.viewsh.module.video.aiot.service; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiAlert; -import com.github.pagehelper.PageInfo; import java.util.List; import java.util.Map; @@ -12,7 +12,7 @@ public interface IAiAlertService { AiAlert queryByAlertId(String alertId); - PageInfo queryList(String cameraId, String alertType, String startTime, String endTime, int page, int count); + PageResult queryList(String cameraId, String alertType, String startTime, String endTime, int page, int count); void delete(String alertId); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlgorithmService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlgorithmService.java index aa1e6a97..55e96983 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlgorithmService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiAlgorithmService.java @@ -10,7 +10,7 @@ public interface IAiAlgorithmService { List queryActive(); - void toggleActive(Integer id, Integer isActive); + void toggleActive(Long id, Integer isActive); void syncFromEdge(); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigLogService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigLogService.java index a63aa2a4..29e37621 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigLogService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigLogService.java @@ -1,11 +1,11 @@ package com.viewsh.module.video.aiot.service; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiConfigLog; -import com.github.pagehelper.PageInfo; public interface IAiConfigLogService { void addLog(String configType, String configId, String oldValue, String newValue, String updatedBy); - PageInfo queryList(String configType, String configId, int page, int count); + PageResult queryList(String configType, String configId, int page, int count); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigSnapshotService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigSnapshotService.java index 2c721ac9..2868d41a 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigSnapshotService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiConfigSnapshotService.java @@ -1,7 +1,7 @@ package com.viewsh.module.video.aiot.service; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiConfigSnapshot; -import com.github.pagehelper.PageInfo; import java.util.Map; @@ -16,7 +16,7 @@ public interface IAiConfigSnapshotService { /** * 查询版本列表 */ - PageInfo queryVersions(String scopeType, String scopeId, String cameraId, int page, int count); + PageResult queryVersions(String scopeType, String scopeId, String cameraId, int page, int count); /** * 查看快照详情 diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiEdgeDeviceService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiEdgeDeviceService.java index 5a4f7793..826295af 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiEdgeDeviceService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiEdgeDeviceService.java @@ -1,7 +1,7 @@ package com.viewsh.module.video.aiot.service; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiEdgeDevice; -import com.github.pagehelper.PageInfo; import java.util.List; import java.util.Map; @@ -16,7 +16,7 @@ public interface IAiEdgeDeviceService { void checkOffline(); - PageInfo queryPage(int page, int count, String status); + PageResult queryPage(int page, int count, String status); Map getStatistics(); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiRoiService.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiRoiService.java index 81ba6e51..bc35f245 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiRoiService.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/IAiRoiService.java @@ -1,9 +1,9 @@ package com.viewsh.module.video.aiot.service; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiRoi; import com.viewsh.module.video.aiot.bean.AiRoiAlgoBind; import com.viewsh.module.video.aiot.bean.AiRoiDetail; -import com.github.pagehelper.PageInfo; import java.util.List; @@ -13,11 +13,11 @@ public interface IAiRoiService { void delete(String roiId); - AiRoiDetail queryDetail(Integer id); + AiRoiDetail queryDetail(Long id); List queryByCameraId(String cameraId); - PageInfo queryList(String cameraId, String deviceId, String query, int page, int count); + PageResult queryList(String cameraId, String deviceId, String query, int page, int count); void bindAlgo(AiRoiAlgoBind bind); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlertServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlertServiceImpl.java index 1b15c5b8..4a07d5ed 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlertServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlertServiceImpl.java @@ -1,11 +1,12 @@ package com.viewsh.module.video.aiot.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiAlert; import com.viewsh.module.video.aiot.dao.AiAlertMapper; import com.viewsh.module.video.aiot.service.IAiAlertService; import com.viewsh.module.video.aiot.util.CosUtil; -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.stereotype.Service; @@ -38,7 +39,7 @@ public class AiAlertServiceImpl implements IAiAlertService { log.debug("[AiAlert] 告警已存在, 跳过: alertId={}", alert.getAlertId()); return; } - alertMapper.add(alert); + alertMapper.insert(alert); log.info("[AiAlert] 告警入库: alertId={}, type={}, camera={}", alert.getAlertId(), alert.getAlertType(), alert.getCameraId()); } @@ -48,21 +49,21 @@ public class AiAlertServiceImpl implements IAiAlertService { } @Override - public PageInfo queryList(String cameraId, String alertType, String startTime, String endTime, int page, int count) { - PageHelper.startPage(page, count); - List list = alertMapper.queryList(cameraId, alertType, startTime, endTime); - return new PageInfo<>(list); + public PageResult queryList(String cameraId, String alertType, String startTime, String endTime, int page, int count) { + IPage ipage = new Page<>(page, count); + IPage result = alertMapper.queryList(ipage, cameraId, alertType, startTime, endTime); + return new PageResult<>(result.getRecords(), result.getTotal()); } @Override public void delete(String alertId) { - alertMapper.deleteByAlertId(alertId); + alertMapper.delete(AiAlert::getAlertId, alertId); } @Override public void deleteBatch(List alertIds) { if (alertIds != null && !alertIds.isEmpty()) { - alertMapper.deleteByAlertIds(alertIds); + alertMapper.deleteBatch(AiAlert::getAlertId, alertIds); } } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgoTemplateServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgoTemplateServiceImpl.java index adb78a40..2acb57c6 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgoTemplateServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgoTemplateServiceImpl.java @@ -15,8 +15,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.*; @Slf4j @@ -35,14 +33,9 @@ public class AiAlgoTemplateServiceImpl implements IAiAlgoTemplateService { @Autowired private IAiRedisConfigService redisConfigService; - private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - @Override @Transactional public void save(AiAlgoTemplate template) { - String now = LocalDateTime.now().format(FORMATTER); - template.setUpdateTime(now); - if (!ObjectUtils.isEmpty(template.getTemplateId())) { AiAlgoTemplate existing = templateMapper.queryByTemplateId(template.getTemplateId()); if (existing != null) { @@ -57,7 +50,6 @@ public class AiAlgoTemplateServiceImpl implements IAiAlgoTemplateService { if (ObjectUtils.isEmpty(template.getTemplateId())) { template.setTemplateId(UUID.randomUUID().toString()); } - template.setCreateTime(now); templateMapper.add(template); log.info("[AiTemplate] 创建模板: templateId={}", template.getTemplateId()); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgorithmServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgorithmServiceImpl.java index ea533347..6134935a 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgorithmServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiAlgorithmServiceImpl.java @@ -59,7 +59,6 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { @PostConstruct public void initPresetAlgorithms() { - String now = LocalDateTime.now().format(FORMATTER); for (Map.Entry entry : PRESET_ALGORITHMS.entrySet()) { String code = entry.getKey(); String[] vals = entry.getValue(); @@ -72,8 +71,6 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { algo.setDescription(vals[2]); algo.setParamSchema(vals[3]); algo.setIsActive(1); - algo.setCreateTime(now); - algo.setUpdateTime(now); algorithmMapper.add(algo); log.info("[AI算法] 初始化预置算法: {}", code); } else { @@ -81,7 +78,6 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { existing.setTargetClass(vals[1]); existing.setDescription(vals[2]); existing.setParamSchema(vals[3]); - existing.setUpdateTime(now); algorithmMapper.updateByCode(existing); log.info("[AI算法] 校正预置算法数据: {}", code); } @@ -99,7 +95,7 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { } @Override - public void toggleActive(Integer id, Integer isActive) { + public void toggleActive(Long id, Integer isActive) { String now = LocalDateTime.now().format(FORMATTER); algorithmMapper.updateActive(id, isActive, now); configLogService.addLog("ALGORITHM", String.valueOf(id), @@ -131,7 +127,6 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { existing.setParamSchema(remote.get("param_schema") != null ? remote.get("param_schema").toString() : null); existing.setDescription((String) remote.get("description")); existing.setSyncTime(now); - existing.setUpdateTime(now); algorithmMapper.updateByCode(existing); } else { AiAlgorithm algo = new AiAlgorithm(); @@ -142,8 +137,6 @@ public class AiAlgorithmServiceImpl implements IAiAlgorithmService { algo.setDescription((String) remote.get("description")); algo.setIsActive(1); algo.setSyncTime(now); - algo.setCreateTime(now); - algo.setUpdateTime(now); algorithmMapper.add(algo); } } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigLogServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigLogServiceImpl.java index 87a6a8af..60ca80e4 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigLogServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigLogServiceImpl.java @@ -1,10 +1,11 @@ package com.viewsh.module.video.aiot.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.bean.AiConfigLog; import com.viewsh.module.video.aiot.dao.AiConfigLogMapper; import com.viewsh.module.video.aiot.service.IAiConfigLogService; -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.stereotype.Service; @@ -35,9 +36,9 @@ public class AiConfigLogServiceImpl implements IAiConfigLogService { } @Override - public PageInfo queryList(String configType, String configId, int page, int count) { - PageHelper.startPage(page, count); - List list = configLogMapper.queryList(configType, configId); - return new PageInfo<>(list); + public PageResult queryList(String configType, String configId, int page, int count) { + IPage ipage = new Page<>(page, count); + IPage result = configLogMapper.queryList(ipage, configType, configId); + return new PageResult<>(result.getRecords(), result.getTotal()); } } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigSnapshotServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigSnapshotServiceImpl.java index bfaeac17..b8ff0093 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigSnapshotServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiConfigSnapshotServiceImpl.java @@ -7,11 +7,12 @@ import com.viewsh.module.video.aiot.bean.*; import com.viewsh.module.video.aiot.dao.AiConfigSnapshotMapper; import com.viewsh.module.video.aiot.dao.AiRoiAlgoBindMapper; import com.viewsh.module.video.aiot.dao.AiRoiMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.viewsh.framework.common.pojo.PageResult; import com.viewsh.module.video.aiot.service.IAiConfigService; import com.viewsh.module.video.aiot.service.IAiConfigSnapshotService; import com.viewsh.module.video.aiot.service.IAiRedisConfigService; -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.context.annotation.Lazy; @@ -64,10 +65,10 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { } @Override - public PageInfo queryVersions(String scopeType, String scopeId, String cameraId, int page, int count) { - PageHelper.startPage(page, count); - List list = snapshotMapper.queryList(scopeType, scopeId, cameraId); - return new PageInfo<>(list); + public PageResult queryVersions(String scopeType, String scopeId, String cameraId, int page, int count) { + IPage ipage = new Page<>(page, count); + IPage result = snapshotMapper.queryList(ipage, scopeType, scopeId, cameraId); + return new PageResult<>(result.getRecords(), result.getTotal()); } @Override @@ -97,7 +98,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { } // 从快照恢复 - String now = LocalDateTime.now().format(FORMATTER); if (rois != null) { for (int i = 0; i < rois.size(); i++) { JSONObject roiJson = rois.getJSONObject(i); @@ -111,8 +111,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { JSON.toJSONString(roiJson.get("coordinates")) : null); roi.setEnabled(roiJson.getBooleanValue("enabled") ? 1 : 0); roi.setPriority(roiJson.getIntValue("priority")); - roi.setCreateTime(now); - roi.setUpdateTime(now); roiMapper.add(roi); JSONArray algos = roiJson.getJSONArray("algorithms"); @@ -130,8 +128,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { bind.setPriority(algoJson.getIntValue("priority")); bind.setTemplateId(algoJson.getString("template_id")); bind.setParamOverride(algoJson.getString("param_override")); - bind.setCreateTime(now); - bind.setUpdateTime(now); bindMapper.add(bind); } } @@ -172,7 +168,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { bindMapper.deleteByRoiId(roiId); // 更新ROI - String now = LocalDateTime.now().format(FORMATTER); AiRoi roi = roiMapper.queryByRoiId(roiId); if (roi == null) { roi = new AiRoi(); @@ -181,7 +176,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { // 填充 deviceId(新建 ROI 时需要) String deviceId = roiMapper.queryDeviceIdByCameraId(cameraId); roi.setDeviceId(deviceId); - roi.setCreateTime(now); } roi.setRoiType(roiJson.getString("roi_type")); roi.setName(roiJson.getString("name")); @@ -189,7 +183,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { JSON.toJSONString(roiJson.get("coordinates")) : null); roi.setEnabled(roiJson.getBooleanValue("enabled") ? 1 : 0); roi.setPriority(roiJson.getIntValue("priority")); - roi.setUpdateTime(now); if (roi.getId() != null) { roiMapper.update(roi); @@ -213,8 +206,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { bind.setPriority(algoJson.getIntValue("priority")); bind.setTemplateId(algoJson.getString("template_id")); bind.setParamOverride(algoJson.getString("param_override")); - bind.setCreateTime(now); - bind.setUpdateTime(now); bindMapper.add(bind); } } @@ -248,7 +239,6 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { JSONObject bindJson = JSON.parseObject(snapshot.getSnapshot()); String cameraId = snapshot.getCameraId(); - String now = LocalDateTime.now().format(FORMATTER); AiRoiAlgoBind bind = bindMapper.queryByBindId(bindId); if (bind == null) { @@ -256,14 +246,12 @@ public class AiConfigSnapshotServiceImpl implements IAiConfigSnapshotService { bind.setBindId(bindId); bind.setRoiId(bindJson.getString("roi_id")); bind.setAlgoCode(bindJson.getString("algo_code")); - bind.setCreateTime(now); } bind.setParams(bindJson.containsKey("params") ? JSON.toJSONString(bindJson.get("params")) : null); bind.setEnabled(bindJson.getBooleanValue("enabled") ? 1 : 0); bind.setPriority(bindJson.getIntValue("priority")); bind.setTemplateId(bindJson.getString("template_id")); bind.setParamOverride(bindJson.getString("param_override")); - bind.setUpdateTime(now); if (bind.getId() != null) { bindMapper.updateByBindId(bind); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiEdgeDeviceServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiEdgeDeviceServiceImpl.java index d19bf105..347a2a6b 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiEdgeDeviceServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiEdgeDeviceServiceImpl.java @@ -5,8 +5,9 @@ import com.alibaba.fastjson2.JSONObject; import com.viewsh.module.video.aiot.bean.AiEdgeDevice; import com.viewsh.module.video.aiot.dao.AiEdgeDeviceMapper; import com.viewsh.module.video.aiot.service.IAiEdgeDeviceService; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.viewsh.framework.common.pojo.PageResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -92,10 +93,10 @@ public class AiEdgeDeviceServiceImpl implements IAiEdgeDeviceService { } @Override - public PageInfo queryPage(int page, int count, String status) { - PageHelper.startPage(page, count); - List list = deviceMapper.queryPage(status); - return new PageInfo<>(list); + public PageResult queryPage(int page, int count, String status) { + IPage ipage = new Page<>(page, count); + IPage result = deviceMapper.queryPage(ipage, status); + return new PageResult<>(result.getRecords(), result.getTotal()); } @Override diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiRoiServiceImpl.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiRoiServiceImpl.java index f02d5b07..ac53d4a3 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiRoiServiceImpl.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/service/impl/AiRoiServiceImpl.java @@ -7,16 +7,15 @@ import com.viewsh.module.video.aiot.dao.AiRoiMapper; import com.viewsh.module.video.aiot.service.IAiConfigLogService; import com.viewsh.module.video.aiot.service.IAiRoiService; import com.viewsh.module.video.streamProxy.dao.StreamProxyMapper; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.viewsh.framework.common.pojo.PageResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -40,13 +39,9 @@ public class AiRoiServiceImpl implements IAiRoiService { @Autowired private IAiConfigLogService configLogService; - private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - @Override @Transactional public void save(AiRoi roi) { - String now = LocalDateTime.now().format(FORMATTER); - roi.setUpdateTime(now); // 自动填充 deviceId(边缘设备关联) if (ObjectUtils.isEmpty(roi.getDeviceId()) && !ObjectUtils.isEmpty(roi.getCameraId())) { @@ -68,7 +63,6 @@ public class AiRoiServiceImpl implements IAiRoiService { if (ObjectUtils.isEmpty(roi.getRoiId())) { roi.setRoiId(UUID.randomUUID().toString()); } - roi.setCreateTime(now); if (roi.getEnabled() == null) { roi.setEnabled(1); } @@ -116,7 +110,7 @@ public class AiRoiServiceImpl implements IAiRoiService { } @Override - public AiRoiDetail queryDetail(Integer id) { + public AiRoiDetail queryDetail(Long id) { AiRoi roi = roiMapper.queryById(id); if (roi == null) { return null; @@ -143,16 +137,15 @@ public class AiRoiServiceImpl implements IAiRoiService { } @Override - public PageInfo queryList(String cameraId, String deviceId, String query, int page, int count) { - PageHelper.startPage(page, count); - List list = roiMapper.queryList(cameraId, deviceId, query); - return new PageInfo<>(list); + public PageResult queryList(String cameraId, String deviceId, String query, int page, int count) { + IPage ipage = new Page<>(page, count); + IPage result = roiMapper.queryList(ipage, cameraId, deviceId, query); + return new PageResult<>(result.getRecords(), result.getTotal()); } @Override @Transactional public void bindAlgo(AiRoiAlgoBind bind) { - String now = LocalDateTime.now().format(FORMATTER); AiRoiAlgoBind existing = bindMapper.queryByRoiIdAndAlgoCode(bind.getRoiId(), bind.getAlgoCode()); if (existing != null) { throw new IllegalArgumentException("该ROI已绑定此算法"); @@ -166,8 +159,6 @@ public class AiRoiServiceImpl implements IAiRoiService { if (bind.getPriority() == null) { bind.setPriority(0); } - bind.setCreateTime(now); - bind.setUpdateTime(now); bindMapper.add(bind); configLogService.addLog("BIND", bind.getBindId(), null, toJson(bind), null); } @@ -186,7 +177,6 @@ public class AiRoiServiceImpl implements IAiRoiService { @Override @Transactional public void updateAlgoParams(AiRoiAlgoBind bind) { - String now = LocalDateTime.now().format(FORMATTER); AiRoiAlgoBind old = bindMapper.queryByBindId(bind.getBindId()); if (old == null) { throw new IllegalArgumentException("绑定关系不存在"); @@ -197,7 +187,6 @@ public class AiRoiServiceImpl implements IAiRoiService { if (bind.getEnabled() == null) bind.setEnabled(old.getEnabled()); if (bind.getTemplateId() == null) bind.setTemplateId(old.getTemplateId()); if (bind.getParamOverride() == null) bind.setParamOverride(old.getParamOverride()); - bind.setUpdateTime(now); bindMapper.updateByBindId(bind); configLogService.addLog("BIND", bind.getBindId(), toJson(old), toJson(bind), null); }