| | |
| | | import jakarta.validation.constraints.Size; |
| | | import com.ruoyi.common.core.domain.BaseEntity; |
| | | |
| | | /** 测试配置及其独立业务状态。 */ |
| | | /** |
| | | * 测试配置对象 t_test,含测试状态与接收状态两个并列的业务状态。 |
| | | * |
| | | * <p>测试状态描述测试流程,接收状态描述系统对该测试的数据归属;两者都不得反向改写设备事实。</p> |
| | | */ |
| | | public class TTest extends BaseEntity |
| | | { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** 测试主键。 */ |
| | | private Long testId; |
| | | /** 测试名称,由操作员填写,用于在同一电池组内区分测试。 */ |
| | | @NotBlank(message = "测试名称不能为空") |
| | | @Size(max = 100, message = "测试名称长度不能超过100个字符") |
| | | private String testName; |
| | | /** 创建人用户 ID,创建时取当前登录用户,后续修改不可变更。 */ |
| | | private Long creatorId; |
| | | /** 创建人显示名称,仅供列表展示,不作为身份判断依据。 */ |
| | | private String creatorName; |
| | | /** 当前操作人用户 ID,仅由服务入参带入用于校验,不序列化也不落库。 */ |
| | | @JSONField(serialize = false) |
| | | private transient Long operatorId; |
| | | /** 测试负责人用户 ID,负责关闭测试预警异常和停止测试。 */ |
| | | @NotNull(message = "测试负责人不能为空") |
| | | private Long principalId; |
| | | /** 测试负责人显示名称,仅供列表展示,不作为身份判断依据。 */ |
| | | private String principalName; |
| | | /** 测试类型主键,引用已启用的测试类型。 */ |
| | | @NotNull(message = "测试类型不能为空") |
| | | private Long testTypeId; |
| | | /** 测试类型显示名称,仅供列表展示。 */ |
| | | private String testTypeName; |
| | | /** 测试目的,由操作员填写。 */ |
| | | @NotBlank(message = "测试目的不能为空") |
| | | private String testPurpose; |
| | | /** |
| | | * 测试状态:WAITING 待测试、RUNNING 检测中、PAUSED 暂停、COMPLETED 检测完成。 |
| | | * 历史数据还可能出现 RUNNING_ABNORMAL(检测中(异常))、COMPLETION_PENDING(完成确认中)、 |
| | | * TERMINATED(已终止),只作兼容展示,新流程不再写入。 |
| | | */ |
| | | private String testStatus; |
| | | /** |
| | | * 接收状态:NOT_STARTED 未开始接收、RECEIVING 接收中、PAUSED 暂停接收、ENDED 已结束接收。 |
| | | * 它表示系统对本次测试的数据归属状态,与设备状态并列,不改变设备事实。 |
| | | */ |
| | | private String receptionStatus; |
| | | /** 监测超时分钟数,创建测试时缺省 30;控制台按该值展示,不参与设备控制。 */ |
| | | private Integer monitorTimeoutMinutes; |
| | | /** 首次开始接收动作建立的服务器时间;暂停后继续接收不再改写。 */ |
| | | @JsonFormat(shape = JsonFormat.Shape.NUMBER) |
| | | private Date startedAtUtc; |
| | | /** 最近一次开始或继续接收动作建立的服务器时间边界。 */ |
| | | @JsonFormat(shape = JsonFormat.Shape.NUMBER) |
| | | private Date receptionBoundaryAtUtc; |
| | | /** 停止测试(检测完成)动作的服务器时间;暂停不写入。 */ |
| | | @JsonFormat(shape = JsonFormat.Shape.NUMBER) |
| | | private Date endedAtUtc; |
| | | /** 是否从已运行设备的后续观测边界接入。 */ |
| | | private Boolean runtimeAttach; |
| | | /** 逻辑删除标识:0存在,1删除;测试整体删除按 ADR-0047 不写审计、修订或墓碑。 */ |
| | | private String delFlag; |
| | | /** 查询条件:按绑定电池号过滤;不落库。 */ |
| | | private String batteryNo; |
| | | /** 查询条件:创建时间起始值。 */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date beginCreateTime; |
| | | /** 查询条件:创建时间结束值。 */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date endCreateTime; |
| | | /** 查询结果:绑定电池号数量,由列表查询汇总得出,不落库。 */ |
| | | private Integer batteryCount; |
| | | /** 测试绑定的电池号及其通道配置;开始接收后配置整体只读。 */ |
| | | @Valid |
| | | @NotEmpty(message = "测试至少绑定一个电池号") |
| | | private List<TTestBattery> batteries; |
| | | /** 测试阈值规则,接收中按当前成功观测判定超限,不参与设备侧保护。 */ |
| | | @Valid |
| | | @NotEmpty(message = "阈值配置不能为空") |
| | | private List<TTestWarningThreshold> thresholds; |
| | | /** 逻辑工步映射的落库 JSON 原文。 */ |
| | | private String logicStepMappingsJson; |
| | | /** 逻辑工步映射对象,由 JSON 解析或查询组装,不单独落库。 */ |
| | | private List<TTestLogicStepMapping> logicStepMappings; |
| | | /** 工步图表中的测试补充详情,仅保存当前最新版。 */ |
| | | private String consoleDetailJson; |
| | | /** 测试补充详情对象,由上述 JSON 解析或查询组装,不单独落库。 */ |
| | | private TTestConsoleDetail consoleDetail; |
| | | |
| | | /** 测试业务时间输出毫秒,平台实体仍保留原有时间格式。 */ |