package com.casic.missiles.model.workbench;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * <p>
 * 审批通过通知消息
 * </p>
 *
 * @author wangpeng
 * @since 2023-02-24
 */
@Data
@TableName("workbench_approval_message")
public class WorkbenchApprovalMessage implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId("id")
    private Long id;

    /**
     * 通知的用户id
     */
    @TableField("notice_id")
    private Long noticeId;

    /**
     * 通知的用户部门id
     */
    @TableField("notice_dept_id")
    private Long noticeDeptId;

    /**
     * 消息标题
     */
    @TableField("message_title")
    private String messageTitle;

    /**
     * 消息内容（表单名字）
     */
    @TableField("message_content")
    private String messageContent;

    @DictCodeField(message = "消息的业务类型不合法", cacheName = MeterDictCode.MESSAGE_TYPE)
    @ApiModelProperty(value = "消息的业务类型（字典code）", dataType = "String")
    @TableField("message_type")
    private String messageType;

    @ApiModelProperty(value = "消息的业务类型（字典value）", dataType = "String")
    @TableField(exist = false)
    private String messageTypeName;

    @DictCodeField(message = "来源模块不合法", cacheName = MeterDictCode.MESSAGE_SOURCE_MODULE)
    @ApiModelProperty(value = "来源模块（字典code）", dataType = "String")
    @TableField("message_source_module")
    private String messageSourceModule;

    @ApiModelProperty(value = "来源模块（字典value）", dataType = "String")
    @TableField(exist = false)
    private String messageSourceModuleName;

    /**
     * 前端表单id（用于区分业务类型及页面跳转）
     */
    @TableField("form_id")
    private String formId;

    /**
     * 1已读0未读
     */
    @TableField("status")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private String createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private String updateTime;

    /**
     * 业务表主键，前端跳转审批详情使用
     */
    @TableField("business_id")
    private String businessId;

    /**
     * 流程实例id，前端跳转审批详情使用
     */
    @TableField("process_id")
    private String processId;

    /**
     * 前端跳转审批详情使用
     */
    @TableField(exist = false)
    private String taskId;
    /**
     * 前端跳转审批详情使用
     */
    @TableField(exist = false)
    private Integer decisionItem;

    @ApiModelProperty(value = "其他跳转参数", dataType = "Object")
    @TableField(exist = false)
    private Object skipParamsObject = new Object();

    //删除标志，用于删除在库中已删除的数据
    @ApiModelProperty(hidden = true)
    @TableField(exist = false)
    private int del = 0;
}
