package com.chinaweal.aiccs.aiccs.business.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 待办列表
 * </p>
 *
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021-01-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tstasklist")
public class TSTaskList extends Model<TSTaskList> {

    private static final long serialVersionUID = 1L;

    /**
     * 待办主键
     */
    @TableId(value = "TASKLISTID", type = IdType.ASSIGN_UUID)
    private String tasklistid;

    /**
     * 流程主键
     */
    @TableField("WORKFLOWID")
    private String workflowid;

    /**
     * 业务主键
     */
    @TableField("BIZSEQID")
    private String bizseqid;

    /**
     * 签收者ID
     */
    @TableField("SIGNUSERID")
    private String signuserid;

    /**
     * 发送机构ID
     */
    @TableField("SENDERORGID")
    private String senderorgid;

    /**
     * 发送者ID
     */
    @TableField("SENDERUSERID")
    private String senderuserid;

    /**
     * 发送到达机构ID
     */
    @TableField("SENDTOORGID")
    private String sendtoorgid;

    /**
     * 受理号
     */
    @TableField("ACCEPTNO")
    private String acceptno;

    /**
     * 业务名称
     */
    @TableField("BUSNAME")
    private String busname;

    /**
     * 签收/受理时间
     */
    @TableField("SIGNTIME")
    private LocalDateTime signtime;

    /**
     * 业务类型
     */
    @TableField("BUSTYPE")
    private String bustype;

    /**
     * 业务状态
     */
    @TableField("BUSSTATUS")
    private String busstatus;

    /**
     * 流程名称
     */
    @TableField("LINKNAME")
    private String linkname;

    /**
     * 当前审核部门
     */
    @TableField("AUDITDEPTTYPE")
    private String auditdepttype;

    /**
     * 是否签收
     */
    @TableField("ISSIGNON")
    private String issignon;

    /**
     * 签收者登入名
     */
    @TableField("SIGNLOGINNAME")
    private String signloginname;

    /**
     * 发送时间
     */
    @TableField("SENDERTIME")
    private LocalDateTime sendertime;

    /**
     * 发送者中文名
     */
    @TableField("SENDERNAME")
    private String sendername;

    /**
     * 接受组
     */
    @TableField("ACCEPTGROUPID")
    private String acceptgroupid;

    /**
     * 地区代码
     */
    @TableField("AREA_CODE")
    private String areaCode;

    /**
     * 最后更新时间
     */
    @TableField("LAUPTIME")
    private LocalDateTime lauptime;

    /**
     * 创建者id
     */
    @TableField("CREATEUSERID")
    private String createUserid;

    /**
     * 创建者中文名
     */
    @TableField("CREATEUSERNAME")
    private String createUsername;

    /**
     * 创建时间
     */
    @TableField("CREATETIME")
    private LocalDateTime createTime;

    /**
     * 是否超过工作时限'1'是 '0'否
     */
    @TableField("ISDEADLINE")
    private String isdeadline;

    /**
     * 工作时限时间
     */
    @TableField("deadlineDate")
    private LocalDateTime deadlineDate;

    /**
     * 备注
     */
    @TableField("REMARKS")
    private String remarks;

    /**
     * 2023-06-15 目前保存的是信用修复回退到移动端
     * 用于待办排序
     * 是否为回退，1：是，0：否
     */
    @TableField("ISBACK")
    private String isBack;

    /**
     * 是否智能办理（是否为智能办理）
     */
    @TableField("IS_SMART_PROCESSING")
    private String isSmartProcessing;

    /**
     * 数据来源，0或null：系统生成的数据（线下申请），1：年报系统（线上申请）
     */
    @TableField("ORIGIN")
    private String origin;

    /**
     * 主体类型
     */
    @TableField(exist = false)
    private String enterType;

    /**
     * 参数
     */
    @TableField(exist = false)
    private Map<String, Object> parameterMap;


    @Override
    protected Serializable pkVal() {
        return this.tasklistid;
    }

    public String getCurrentNode() {
        if (parameterMap == null) {
            return null;
        }
        return (String) parameterMap.get("currentNode");
    }

    public void setCurrentNode(String currentNode) {
        if (parameterMap == null) {
            parameterMap = new HashMap<String, Object>();
        }
        parameterMap.put("currentNode", currentNode);
    }

    public String getDefname() {
        if (parameterMap == null) {
            return null;
        }
        return (String) parameterMap.get("defname");
    }

    public void setDefname(String defname) {
        if (parameterMap == null) {
            parameterMap = new HashMap<String, Object>();
        }
        parameterMap.put("defname", defname);
    }


}
