package cn.axzo.msg.center.api.mq;

import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TodoType;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;

import java.util.Date;

/**
 * @author yanglin
 */
@Data
public class TodoInfo {
    /**
     * 待办id
     */
    private Long todoId;
    /**
     * 待办发起角度信息id
     */
    private Long todoBusinessId;
    /**
     * 消息的唯一标识
     */
    private String identityCode;

    /**
     * 源模板编码. 比如抄送, 保存审批流的待办模版code
     */
    private String srcTemplateCode;

    /**
     * 待办内容模板编码. 比如抄送, 保存审批流的待办模版code或抄送的待办模版code
     */
    private String templateCode;

    /**
     * 关联业务编码
     */
    private String bizCode;

    /**
     * 流程类待办的流程结点编码
     */
    private String subBizCode;

    /**
     * 待办类别. EXECUTABLE: 可执行的; COPIED_TO_ME: 抄送给我的
     */
    private TodoType type;

    /**
     * 待办状态
     */
    private PendingMessageStateEnum state;

    /**
     * 执行者的自然人ID
     */
    private Long executorPersonId;

    /**
     * 执行者ID
     */
    private Long executorId;

    /**
     * 执行者姓名
     */
    private String executorName;

    /**
     * 请求批次号
     */
    private String requestNo;

    /**
     * 执行者身份
     */
    private IdentityTypeEnum executorType;

    /**
     * 消息所属组织类型
     */
    private OrganizationTypeEnum orgType;

    /**
     * 业务描述eg:流程结点描述
     */
    private String bizDesc;

    /**
     * 业务标签
     */
    private String bizFlag;

    /**
     * 消息标题
     */
    private String title;

    /**
     * 消息内容
     */
    private String content;

    /**
     * 发起者ID
     */
    private Long promoterId;

    /**
     * 发起者的自然人ID
     */
    private Long promoterPersonId;

    /**
     * 发起者姓名
     */
    private String promoterName;

    /**
     * 发起者身份 WORKER:工人,WORKER_LEADER:班组长,PRACTITIONER:从业人员,REGULATOR:监管人员,OPERATOR:运营人员
     */
    private IdentityTypeEnum promoterType;

    /**
     * 业务状态
     */
    private BizFinalStateEnum bizFinalState;

    /**
     * 业务类型
     */
    private BizCategoryEnum bizCategory;

    /**
     * 业务扩展参数
     */
    private JSONObject bizExtParam;

    /**
     * 路由参数
     */
    private JSONObject routerParams;

    /**
     * 待办的截止时间
     */
    private Date deadline;

    /**
     * 执行人单位id
     */
    private Long executorOuId;

    /**
     * 执行人工作台id
     */
    private Long executorWorkspaceId;

    /**
     * 执行人工作台名称
     */
    private String executorWorkspaceName;

    /**
     * 发起人单位id
     */
    private Long promoterOuId;

    /**
     * 发起人工作台id
     */
    private Long promoterWorkspaceId;

    /**
     * 发起人工作台名称
     */
    private String promoterWorkspaceName;
}
