package cn.axzo.workflow.common.model.dto.es;

import cn.axzo.workflow.common.enums.TimeQueryDirection;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * 历史流程实例的搜索对象
 *
 * @author wangli
 * @since 2024-09-27 14:03
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class HistoricProcessInstanceSearchForEsDTO {

    /**
     * 流程实例 ID
     */
    private String processInstanceId;

    /**
     * 业务传参关键
     */
    private String businessKey;

    /**
     * 流程定义 KEY
     */
    private String processDefinitionKey;

    /**
     * 流程实例名称
     */
    private String processInstanceName;

    /**
     * 流程实例状态
     */
    private String businessStatus;

    /**
     * 租户 ID
     */
    private String tenantId;

    /**
     * 实例是否已结束
     *
     */
    private Boolean finished;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 控制查询开始时间的方向,包含自身的时间点
     * <p>
     * 默认是查询开始时间之后
     */
    @Builder.Default
    private TimeQueryDirection startTimeDirection = TimeQueryDirection.AFTER;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 控制查询结束时间的方向,包含自身的时间点
     * <p>
     * 默认是查询结束时间点之前
     */
    @Builder.Default
    private TimeQueryDirection endTimeDirection = TimeQueryDirection.BEFORE;

    /**
     * 是否包含流程变量
     */
    @Builder.Default
    private Boolean hasVariables = false;

    /**
     * 用于覆盖同步逻辑中的PageSize,一般不需要传
     */
    @Builder.Default
    private Integer overPageSize = 50;

}

