package com.persagy.dmp.define.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.persagy.dmp.common.model.entity.AuditableEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;

/**
 * 信息点定义
 * @author Charlie Yu
 * @date 2021-06-25
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "dt_define_info", autoResultMap = true)
public class ObjectInfoDefine extends AuditableEntity {
    /** 项目ID */
    private String projectId;
    /** 信息点编码 */
    @NotNull(message = "编码不允许为空")
    @Length(max = 40)
    private String code;
    /** 信息点名称 */
    @NotNull(message = "名称不允许为空")
    @Length(max = 200)
    private String name;
    /** 别名编码 */
    @NotNull(message = "别名编码不允许为空")
    @Length(max = 40)
    private String aliasCode;
    /** 别名名称 */
    @NotNull(message = "别名名称不允许为空")
    @Length(max = 200)
    private String aliasName;
    /** 类型编码 */
    @NotNull(message = "类型编码不允许为空")
    private String classCode;
    /** 集团编码 */
    private String groupCode;
    /** 信息点分类:STATIC-静态,PULSE-脉冲,GRADATION-阶段,SEQUENTIAL-时序 */
    private String category;
    /** 管理层级:common-平台级,group-集团级,project-项目级 */
    //private String type;
    /** 一级标签 */
    private String firstTag;
    /** 二级标签 */
    private String secondTag;
    /** 优先级 */
    private String priority;
    /** 输入方式 */
    private String inputMode;
    /** 单位 */
    private String unit;
    /** 数据类型 */
    private String dataType;
    /** 复数标识 */
    private Boolean isMultiple = false;
    /** 区间标识 */
    private Boolean isRegion = false;
    /** 数据格式 */
    private String formater;
    /** 取值范围 */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private ArrayNode dataSource;
    /** 备注 */
    private String remark;
    /** 子分类标记 */
    private Boolean subFlag;
    /** 虚点 */
    private Boolean weakPoint;
    /** 显示顺序 */
    private Long showOrder;
    /** 版本 */
    private String version;
    /** 信息点来源  0-common */
    private Integer sourceFrom;
}
