From ea64ca9c61846b1a792af775ae21d2e77e5ce03c Mon Sep 17 00:00:00 2001 From: lzh Date: Sun, 15 Mar 2026 10:33:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(ops):=20=E5=AE=89=E4=BF=9D=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=20admin-api/open-api=20=E8=A1=A5=E5=85=A8=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E3=80=81=E6=8F=90=E4=BA=A4=E3=80=81=E8=AF=AF=E6=8A=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit admin-api: - 新增 /false-alarm 误报标记接口(权限: ops:security-order:complete) - createOrder 移除 location 字段 open-api: - 新增 /confirm 确认工单(无需传 userId) - 新增 /submit 提交处理结果(结果描述 + 图片) - 新增 /false-alarm 误报标记 - createOrder 移除 location 字段 VO 优化: - 合并 SecurityOrderFalseAlarmReqVO 和 SecurityOrderOpenConfirmReqVO 为通用 SecurityOrderIdReqVO,消除重复定义 Co-Authored-By: Claude Opus 4.6 --- .../security/SecurityOrderController.java | 10 +++++- .../security/vo/SecurityOrderCreateReqVO.java | 3 -- .../vo/SecurityOrderFalseAlarmReqVO.java | 20 ----------- .../vo/SecurityOrderOpenConfirmReqVO.java | 20 ----------- .../security/SecurityOrderOpenController.java | 36 ++++++++++++++++++- 5 files changed, 44 insertions(+), 45 deletions(-) delete mode 100644 viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderFalseAlarmReqVO.java delete mode 100644 viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderOpenConfirmReqVO.java diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/SecurityOrderController.java b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/SecurityOrderController.java index 948ccc7..d908323 100644 --- a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/SecurityOrderController.java +++ b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/SecurityOrderController.java @@ -6,6 +6,7 @@ import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderAutoCompl import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderCompleteReqVO; import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderConfirmReqVO; import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderCreateReqVO; +import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderIdReqVO; import com.viewsh.module.ops.security.service.securityorder.SecurityOrderCompleteReqDTO; import com.viewsh.module.ops.security.service.securityorder.SecurityOrderCreateReqDTO; import com.viewsh.module.ops.security.service.securityorder.SecurityOrderService; @@ -48,7 +49,6 @@ public class SecurityOrderController { .description(reqVO.getDescription()) .priority(reqVO.getPriority()) .areaId(reqVO.getAreaId()) - .location(reqVO.getLocation()) .alarmId(reqVO.getAlarmId()) .alarmType(reqVO.getAlarmType()) .cameraId(reqVO.getCameraId()) @@ -90,4 +90,12 @@ public class SecurityOrderController { return success(true); } + @PostMapping("/false-alarm") + @Operation(summary = "误报标记", description = "将安保工单标记为误报并完成") + @PreAuthorize("@ss.hasPermission('ops:security-order:complete')") + public CommonResult falseAlarmOrder(@Valid @RequestBody SecurityOrderIdReqVO reqVO) { + securityOrderService.falseAlarmOrder(reqVO.getOrderId(), SecurityFrameworkUtils.getLoginUserId()); + return success(true); + } + } diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderCreateReqVO.java b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderCreateReqVO.java index 3719314..d0a1b96 100644 --- a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderCreateReqVO.java +++ b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderCreateReqVO.java @@ -28,9 +28,6 @@ public class SecurityOrderCreateReqVO { @NotNull(message = "区域ID不能为空") private Long areaId; - @Schema(description = "具体位置描述", example = "A栋3层东侧走廊") - private String location; - // ==================== 告警来源 ==================== @Schema(description = "关联告警ID", example = "ALM20260211001") diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderFalseAlarmReqVO.java b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderFalseAlarmReqVO.java deleted file mode 100644 index 9bf0cab..0000000 --- a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderFalseAlarmReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.viewsh.module.ops.controller.admin.security.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * 安保工单误报请求 VO - * - * @author lzh - */ -@Schema(description = "安保工单误报请求") -@Data -public class SecurityOrderFalseAlarmReqVO { - - @Schema(description = "工单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") - @NotNull(message = "工单ID不能为空") - private Long orderId; - -} diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderOpenConfirmReqVO.java b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderOpenConfirmReqVO.java deleted file mode 100644 index 8a5b35e..0000000 --- a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/admin/security/vo/SecurityOrderOpenConfirmReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.viewsh.module.ops.controller.admin.security.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * 安保工单开放接口确认请求 VO(无需传 userId,默认使用已分配人员) - * - * @author lzh - */ -@Schema(description = "安保工单确认请求(开放接口)") -@Data -public class SecurityOrderOpenConfirmReqVO { - - @Schema(description = "工单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") - @NotNull(message = "工单ID不能为空") - private Long orderId; - -} diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/open/security/SecurityOrderOpenController.java b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/open/security/SecurityOrderOpenController.java index fd550ca..aa20670 100644 --- a/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/open/security/SecurityOrderOpenController.java +++ b/viewsh-module-ops/viewsh-module-ops-server/src/main/java/com/viewsh/module/ops/controller/open/security/SecurityOrderOpenController.java @@ -3,7 +3,10 @@ package com.viewsh.module.ops.controller.open.security; import com.viewsh.framework.common.pojo.CommonResult; import com.viewsh.framework.signature.core.annotation.ApiSignature; import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderAutoCompleteReqVO; +import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderCompleteReqVO; import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderCreateReqVO; +import com.viewsh.module.ops.controller.admin.security.vo.SecurityOrderIdReqVO; +import com.viewsh.module.ops.security.service.securityorder.SecurityOrderCompleteReqDTO; import com.viewsh.module.ops.security.service.securityorder.SecurityOrderCreateReqDTO; import com.viewsh.module.ops.security.service.securityorder.SecurityOrderService; import io.swagger.v3.oas.annotations.Operation; @@ -48,7 +51,6 @@ public class SecurityOrderOpenController { .description(reqVO.getDescription()) .priority(reqVO.getPriority()) .areaId(reqVO.getAreaId()) - .location(reqVO.getLocation()) .alarmId(reqVO.getAlarmId()) .alarmType(reqVO.getAlarmType()) .cameraId(reqVO.getCameraId()) @@ -69,4 +71,36 @@ public class SecurityOrderOpenController { return success(true); } + @PostMapping("/confirm") + @Operation(summary = "确认工单", description = "由外部系统调用,确认安保人员已接单,无需传 userId(自动取已分配人员)") + @ApiSignature + @PermitAll + public CommonResult confirmOrder(@Valid @RequestBody SecurityOrderIdReqVO reqVO) { + securityOrderService.confirmOrder(reqVO.getOrderId(), null); + return success(true); + } + + @PostMapping("/submit") + @Operation(summary = "工单提交", description = "由外部系统调用,提交处理结果(描述 + 图片),完成工单") + @ApiSignature + @PermitAll + public CommonResult submitOrder(@Valid @RequestBody SecurityOrderCompleteReqVO reqVO) { + SecurityOrderCompleteReqDTO dto = SecurityOrderCompleteReqDTO.builder() + .orderId(reqVO.getOrderId()) + .result(reqVO.getResult()) + .resultImgUrls(reqVO.getResultImgUrls()) + .build(); + securityOrderService.manualCompleteOrder(dto); + return success(true); + } + + @PostMapping("/false-alarm") + @Operation(summary = "误报标记", description = "由外部系统调用,将工单标记为误报并完成") + @ApiSignature + @PermitAll + public CommonResult falseAlarmOrder(@Valid @RequestBody SecurityOrderIdReqVO reqVO) { + securityOrderService.falseAlarmOrder(reqVO.getOrderId(), null); + return success(true); + } + }