package com.yida.data.common.core.entity.applyForm;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.enums.EnableStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 申请类型表单 Entity
 *
 * @author ZYJ
 * @date 2023/11/14
 */
@Data
@TableName("core_apply_form")
public class CoreApplyForm implements Serializable {

    private static final long serialVersionUID = 1092492140890088204L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 是否删除，1删除0未删除，默认0
     */
    @ApiModelProperty(value = "是否删除，1删除0未删除，默认0")
    @TableField("del_flag")
    @TableLogic(value = "0", delval = "1")
    private Integer delFlag;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_date", fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createDate;

    /**
     * 创建人id
     */
    @ApiModelProperty(value = "创建人id")
    @TableField(value = "create_id", fill = FieldFill.INSERT)
    private Long createId;

    /**
     * 最后修改时间
     */
    @ApiModelProperty(value = "最后修改时间")
    @TableField(value = "update_date", fill = FieldFill.UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateDate;

    /**
     * 最后修改人id
     */
    @ApiModelProperty(value = "最后修改人id")
    @TableField(value = "update_id", fill = FieldFill.UPDATE)
    private Long updateId;

    /**
     * 学校id
     */
    @ApiModelProperty(value = "学校id")
    @TableField("school_id")
    private Long schoolId;

    /**
     * 表单标题
     */
    @ApiModelProperty(value = "表单标题")
    @TableField("form_title")
    private String formTitle;

    /**
     * 表单类型
     */
    @ApiModelProperty(value = "表单类型")
    @TableField("form_type_id")
    private Long formTypeId;

    /**
     * 表单描述说明
     */
    @ApiModelProperty(value = "表单描述说明")
    @TableField("form_remark")
    private String formRemark;

    /**
     * 是否显示排序：1=是，0=否
     */
    @ApiModelProperty(value = "是否显示排序：1=是，0=否")
    @TableField("sorted")
    private String sorted;

    /**
     * 对应数据表
     */
    @ApiModelProperty(value = "对应数据表名称")
    @TableField("table_name")
    private String tableName;

    /**
     * 表单状态. 0为停用，1为启用 {@link EnableStatusEnum}
     */
    @ApiModelProperty(value = "表单状态. 0为停用，1为启用")
    @TableField("status")
    private Integer status;

    /**
     * 0为不开启一页一题，1为开启一页一题
     */
    @ApiModelProperty(value = "0为不开启一页一题，1为开启一页一题")
    @TableField("page_one_question")
    private Integer pageOneQuestion;

    /**
     * 0为开启进度条，1为关闭进度条
     */
    @ApiModelProperty(value = "0为开启进度条，1为关闭进度条")
    @TableField("progress_bar")
    private Integer progressBar;

    /**
     * 分页最大停留时间（单位秒）
     */
    @ApiModelProperty(value = "分页最大停留时间（单位秒）")
    @TableField("stop_max_time")
    private Integer stopMaxTime;

    /**
     * 分页最小停留时间（单位秒）
     */
    @ApiModelProperty(value = "分页最小停留时间（单位秒）")
    @TableField("stop_min_time")
    private Integer stopMinTime;

    /**
     * 背景图
     */
    @ApiModelProperty(value = "背景图")
    @TableField("background_img_url")
    private String backgroundImgUrl;

    /**
     * 头图
     */
    @ApiModelProperty(value = "头图")
    @TableField("header_img_url")
    private String headerImgUrl;

    /**
     * 导出模板文件地址
     */
    @ApiModelProperty(value = "导出模板文件地址")
    @TableField("template_file_url")
    private String templateFileUrl;

    @ApiModelProperty("组件集合")
    private transient List<CoreApplyFormItem> itemList;

    @ApiModelProperty("表单对应审核流程节点集合")
    private transient List<CoreApplyFormApprovalProcess> processList;
}
