package cn.estsh.i3plus.pojo.base.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Description : Excel导出列 关系描述
 * @Reference :
 * @Author : yunhao
 * @CreateDate : 2019-01-08 10:42
 * @Modify:
 **/

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnoOutputColumn {

    // 列名称
    public String name() default "";

    // 关系对象显示的字段
    public String value() default "description";

    // 显示格式
    public FORMAT format() default FORMAT.STRING;

    // 关联关系对象的Key
    public String refForeignKey() default "value";

    // 关系对象
    public Class refClass() default Object.class;

    public boolean hidden() default false;

    // 是否必需
    boolean required() default true;

    // 敬请发挥
    public enum FORMAT{
        STRING("STRING","全部显示"),                    // String 类型
        STRING_50("STRING_50","显示前面50字符"),        // String 长度50
        DATE("DATE","yyyy-MM-dd"),                      // 日期
        DATE_TIME("DATE_TIME","yyyy-MM-dd HH:mm:ss");   // 日期及时间

        String name;
        String description;

        FORMAT(String name, String description) {
            this.name = name;
            this.description = description;
        }
    };
}

