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

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
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_item")
public class CoreApplyFormItem implements Serializable {

    private static final long serialVersionUID = -5678726924637884908L;

    /**
     * 主键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("form_id")
    private Long formId;

    /**
     * 组件类型，radio,checkbox,singleInput,moreInput,date,time,dateTime,uploadPic,uploadFile
     */
    @ApiModelProperty(value = "组件类型，radio,checkbox,singleInput,moreInput,date,time,dateTime,uploadPic,uploadFile")
    @TableField("item_type")
    private String itemType;

    /**
     * 组件题干名称，如：姓名，性别。。
     */
    @ApiModelProperty(value = "组件题干名称，如：姓名，性别。。")
    @TableField("item_title")
    private String itemTitle;

    /**
     * 表单字段名称
     */
    @ApiModelProperty(value = "表单字段名称")
    @TableField("item_filed_name")
    private String itemFiledName;

    /**
     * 题干说明，子题干
     */
    @ApiModelProperty(value = "题干说明，子题干")
    @TableField("item_sub_title")
    private String itemSubTitle;

    /**
     * 是否必填. 1=是，0=否
     */
    @ApiModelProperty(value = "是否必填. 1=是，0=否")
    @TableField("needed")
    private String needed;

    /**
     * 是否唯一. 1=是，0=否
     */
    @ApiModelProperty(value = "是否唯一. 1=是，0=否")
    @TableField("onlyed")
    private String onlyed;

    /**
     * 图片、文件允许上传数量
     */
    @ApiModelProperty(value = "图片、文件允许上传数量")
    @TableField("file_num")
    private String fileNum;

    /**
     * 输入框宽度，默认
     */
    @ApiModelProperty(value = "输入框宽度，默认")
    @TableField("input_width")
    private Integer inputWidth;

    /**
     * 输入框高度
     */
    @ApiModelProperty(value = "输入框高度")
    @TableField("input_height")
    private Integer inputHeight;

    /**
     * 最少输入
     */
    @ApiModelProperty(value = "最少输入")
    @TableField("input_min")
    private Integer inputMin;

    /**
     * 最大输入
     */
    @ApiModelProperty(value = "最大输入")
    @TableField("input_max")
    private Integer inputMax;

    /**
     * 输入提示
     */
    @ApiModelProperty(value = "输入提示")
    @TableField("input_placeholder")
    private String inputPlaceholder;

    /**
     * 输入限制，0不限，1文本，2数字，3中文，4字母，5邮箱，6电话号码，7身份证，8网址
     */
    @ApiModelProperty(value = "输入限制，0不限，1文本，2数字，3中文，4字母，5邮箱，6电话号码，7身份证，8网址")
    @TableField("input_verify")
    private Integer inputVerify;

    /**
     * 默认值
     */
    @ApiModelProperty(value = "默认值")
    @TableField("default_value")
    private String defaultValue;

    /**
     * 选项布局，1单列，2两列，3三列
     */
    @ApiModelProperty(value = "选项布局，1单列，2两列，3三列")
    @TableField("layout")
    private Integer layout;

    @ApiModelProperty(value = "排序")
    @TableField("sort")
    private Integer sort;

    @ApiModelProperty("组件选项集合")
    private transient List<CoreApplyFormItemChildren> childrenList;
}
