package org.jeecg.module.custom.ocr.common.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.module.custom.ocr.common.dto.HistoricTaskInstanceDto;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class FlowModelVO {
    // 任务编号
    private String taskId;
    @ApiModelProperty(value = "业务表流水号")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long formid;
    
    @ApiModelProperty(value = "受理人主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userid;
    
    @ApiModelProperty(value = "受理人姓名")
    private String username;
    
    @ApiModelProperty(value = "是否归档，0：未归档，1：归档")
    private Integer guidang;
    @ApiModelProperty(value = "附件")
    private String fileannex;
    @ApiModelProperty(value = "流程类型")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long categoryid;
    
    @ApiModelProperty(value = "状态，审批状态 1:未提交 2:审批中 3:审批通过 ")
    private Integer states;
    
    @ApiModelProperty(value = "流程定义id")
    private String processdefinitionid;
    
    @ApiModelProperty(value = "流程部署id")
    private String deploymentid;
    
    @ApiModelProperty(value = "审批人姓名")
    private String assigneename;
    @ApiModelProperty(value = "审批人")
    private String assignee;
    @ApiModelProperty(value = "创建人，记录创建人的帐号")
    private String createuser;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Long createdate;
    @ApiModelProperty(value = "创建人姓名")
    private String createusername;

    //临时存放部门主键，用于审批部门，查询对应的审批人使用,当前审批主键与提交人所在部门无关，所以单独存放
    private Long toDeptid;
    
    //临时存放店面主键，用于审批店面，查询对应的审批人使用,当前审批主键与提交人所在部门无关，所以单独存放
    private Long toStoreid;
    
    // 任务名称
    private String taskName;
    
    //流程发起人Id
    private String startUserId;
    
    //流程发起人名称
    private String startUserName;
    
    //流程部署编号
    private String deployId;
    
    //流程ID
    private String procDefId;
    
    //流程定义名称
    private String procDefName;
    
    //流程定义内置使用版本
    private int procDefVersion;
    
    private String processInstanceId;
    
    //任务耗时
    private String duration;
    
    //节点描述
    private String documentation;
    
    //租户ID
    private Long tenantid;
    private Map<String, Object> variables;
    
    // 关联 任务的流程记录
    private List<HistoricTaskInstanceDto> transferRecords;
    
    // 任务发起时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date startTime;

}
