package com.aegis.emergency.plan.domain;

import com.aegis.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

/**
 * 预案主表实体类 plan
 *
 * @author
 */
@Getter
@Setter
@ToString(callSuper = true)
@TableName("plan")
public class Plan extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 预案ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 预案编号（唯一） */
    private String planNo;

    /** 预案名称 */
    private String planName;

    /** 预案类型：overall/ special */
    private String planType;

    /** 适用事件类型 */
    private String eventType;

    /** 适用事件级别：I/II/III/IV */
    private String eventLevel;

    /** 版本号（如 v1.0） */
    private String version;

    /** 状态：draft/approving/approved/rejected/published/archived */
    private String status;

    /** 是否当前版本 */
    private Boolean isCurrent;

    /** 预案描述 */
    private String description;

    /** 创建人ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long creatorId;

    /** 审批人ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long approverId;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    /** 使用次数 */
    private Integer usageCount;

    /** 最后使用时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastUsedAt;

    /** 平均评分 */
    private Double averageRating;

    /** 最近一次引用来源：dispatch / disposal */
    private String referencedWorkbench;

    /** 最近反馈概要 */
    private String lastFeedbackSummary;

    /** 变更说明 */
    private String changeLog;

    /** 删除标志 */
    private String delFlag;
}