feat(ops): 新增手动操作枚举与模型定义

引入统一手动动作基础设施:
- ManualActionTypeEnum: 手动动作类型(创建/派单/取消/完单/升级)
- OrderActionSourceEnum: 动作来源(管理后台/开放接口)
- OrderAuditPayloadKeys: 审计 payload 标准化 key
- OrderEventTypeEnum: 事件类型枚举值对齐状态机(DISPATCHED/QUEUED/CONFIRMED)
- OperatorContext: 统一操作人上下文
- *Command: 手动动作命令模型(Dispatch/Cancel/Complete/UpgradePriority)
- OrderBusinessStrategy: 条线策略接口

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-27 15:53:20 +08:00
parent 4dffd21751
commit e1d967a65e
21 changed files with 1176 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
package com.viewsh.module.ops.controller.admin.security.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* 安保工单手动取消请求
*/
@Schema(description = "安保工单手动取消请求")
@Data
public class SecurityOrderCancelReqVO {
@Schema(description = "工单ID", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "工单ID不能为空")
private Long orderId;
@Schema(description = "取消原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "误报,无需处置")
@NotBlank(message = "取消原因不能为空")
private String reason;
}

View File

@@ -0,0 +1,27 @@
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 SecurityOrderDispatchReqVO {
@Schema(description = "工单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
@NotNull(message = "工单ID不能为空")
private Long orderId;
@Schema(description = "指定安保人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "144")
@NotNull(message = "安保人员ID不能为空")
private Long assigneeId;
@Schema(description = "派单备注", example = "紧急情况,指定该人员处理")
private String remark;
}

View File

@@ -0,0 +1,28 @@
package com.viewsh.module.ops.controller.admin.security.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* 安保工单优先级升级请求 VO
*
* @author lzh
*/
@Schema(description = "安保工单优先级升级请求")
@Data
public class SecurityOrderUpgradePriorityReqVO {
@Schema(description = "工单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
@NotNull(message = "工单ID不能为空")
private Long orderId;
@Schema(description = "目标优先级0=P0, 1=P1, 2=P2", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
@NotNull(message = "目标优先级不能为空")
@Min(value = 0, message = "优先级最小为0(P0)")
@Max(value = 2, message = "优先级最大为2(P2)")
private Integer priority;
}