package org.springblade.thirdparty.mk.pojo.dto.approval;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 *  mk流程列表查询参数
 * @author bfhuange
 * @since 2025/4/2
 */
@Data
public class MKProcessDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     *  登录名
     */
    private String loginName;
    /**
     * 查询数据模型 myAll(我的所有),myCreated(我创建的),myApproving(我的待办),myApproved(我的已办),myFollowed(我跟踪的),myReading(我待阅读),myReaded(我已阅读),myTransfer(我的转办),myCommunicate(我的沟通),myAuthorization(我的授权),my,myManage(我有特权人权限的)
     */
    private String mydoc;
    /**
     *  流程状态
     */
    private String status;
    /**
     *  搜索关键字
     */
    private String keyword;
    /**
     *  创建时间:起始
     */
    private Long createBeginTime;
    /**
     *  创建时间:截止
     */
    private Long createEndTime;
    /**
     *  处理时间筛选(开始)
     */
    @JsonProperty("fdHandleStartTime")
    private Long handleStartTime;
    /**
     *  处理时间筛选(结束)
     */
    @JsonProperty("fdHandleEndTime")
    private Long handleEndTime;
    /**
     *  阅读时间筛选(开始)
     */
    @JsonProperty("fdReadStartTime")
    private Long readStartTime;
    /**
     *  阅读时间筛选(结束)
     */
    @JsonProperty("fdReadEndTime")
    private Long readEndTime;
    /**
     *  接收时间筛选(开始)
     */
    @JsonProperty("fdReceiveStartTime")
    private Long receiveStartTime;
    /**
     *  接收时间筛选(结束)
     */
    @JsonProperty("fdReceiveEndTime")
    private Long receiveEndTime;
    /**
     *  当前处理人 ','隔开, 支持Mk系统的组织架构id和loginName
     */
    private String curHandlerIds;
    /**
     *  当前节点名称
     */
    @JsonProperty("fdCurNodeName")
    private String curNodeName;
    /**
     *  创建人, 支持Mk系统的组织架构id和loginName
     */
    @JsonProperty("fdCreator")
    private String creator;
    /**
     *  从第?条开始查询，起始值为0
     */
    private Integer offset;
    /**
     *  第？页
     */
    private Integer pageNo;
    /**
     *  每页?条
     */
    private Integer pageSize;
    /**
     *  创建时间正序(true)/倒序(false)
     */
    private Boolean asc = false;
    /**
     *  阅读时间正序(true)/倒序(false)
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean readTimeAsc;
    /**
     *  接收时间正序(true)/倒序(false)
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean receiveTimeAsc;
    /**
     *  处理时间正序(true)/倒序(false)
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean handleTimeAsc;

    public void setPage(Integer pageNo, Integer pageSize) {
        this.pageNo = pageNo;
        this.pageSize = pageSize;
        this.offset = (this.pageNo -1) * this.pageSize;
    }
}
