package jnpf.bizcommon.audit.entity.model;
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import jnpf.base.Pagination;
|
import lombok.Data;
|
import lombok.EqualsAndHashCode;
|
|
import java.util.Date;
|
|
/**
|
* 审计事件分页查询入参(spec §7.1)。沿平台 Pagination 惯例继承分页基类
|
* (currentPage/pageSize 取自 {@link Pagination},默认 currentPage=1、pageSize=20)。
|
*/
|
@Data
|
@EqualsAndHashCode(callSuper = true)
|
public class AuditPageQuery extends Pagination {
|
|
/**
|
* 起止时间(Task D1 拍板,收 M2 遗留清单 §五-③)。
|
*
|
* <p>本类走 {@code @RequestBody} 由 Jackson 反序列化。**不加这个注解时,
|
* 传空格分隔的 {@code "yyyy-MM-dd HH:mm:ss"} 会报 `System abnormality`**——Jackson 默认只认
|
* ISO8601 与 epoch 数字,不认空格分隔(注意:平台的 `JsonUtil` 走 fastjson、认这个格式,
|
* 但那是**消息通道**的反序列化器,与 Web 入参不是同一条路,早前的排查在这里绕过弯)。
|
*
|
* <p>选择「加注解」而不是「让前端对齐 epoch 毫秒」的理由:`yyyy-MM-dd HH:mm:ss` 是本平台
|
* 前端日期控件的默认出参格式,`jnpf-flowable` / `jnpf-visualdata` 等模块的入参模型都是这么标的
|
* (如 `FlowableInstanceModel`),跟着平台惯例走比让每个接入方记住一个例外便宜。
|
*
|
* <p>⚠️ **两种格式都要能收**:既有脚本(`tasks/audit-test.sh` 等)传的是 epoch 毫秒**数字**。
|
* Jackson 的 `DateDeserializer` 对 `VALUE_NUMBER_INT` 先行短路、不过 pattern,故加 pattern
|
* 不影响数字形态——这一点**已用探针实测**而非推断,见 `tasks/audit-query-datefmt-probe.sh`。
|
* 但 epoch 毫秒若以**字符串**形态传(`"1785120484000"`)则会被 pattern 拒收,脚本勿改成那样。
|
*/
|
@Schema(description = "起始时间(含)。接受 \"yyyy-MM-dd HH:mm:ss\" 或 epoch 毫秒数字")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
private Date startTime;
|
|
@Schema(description = "结束时间(含)。接受 \"yyyy-MM-dd HH:mm:ss\" 或 epoch 毫秒数字")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
private Date endTime;
|
|
@Schema(description = "操作人姓名,模糊匹配")
|
private String operatorName;
|
|
@Schema(description = "应用名,如 jnpf-lims")
|
private String appName;
|
|
/**
|
* Codex 批次三a Important#1:spec §7.1 层 0 事件的 app_name 固定为 jnpf-visualdev(发起服务),
|
* 用户视角"按业务应用筛选"应落在 biz_module(业务模块标识,如 lims/eln)。app_name 保留供技术侧筛选。
|
*/
|
@Schema(description = "业务模块,如 lims/eln(用户视角应用筛选,区别于技术侧 app_name)")
|
private String bizModule;
|
|
@Schema(description = "事件类型:DATA_CHANGE / BIZ_ACTION / E_SIGNATURE")
|
private String eventType;
|
|
@Schema(description = "动作码:CREATE/UPDATE/DELETE/...")
|
private String actionCode;
|
|
@Schema(description = "目标表名")
|
private String targetTable;
|
|
@Schema(description = "业务单号")
|
private String bizCode;
|
|
@Schema(description = "业务对象类型")
|
private String bizType;
|
|
@Schema(description = "关键字,匹配 field_diffs 内容(pg_bigm 加速)")
|
private String keyword;
|
}
|