package ${packageName}.domain;

#foreach ($import in $importList)
import ${import};
#end
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.rchuing.sis.common.annotation.Excel;
#if($table.crud || $table.sub)
import com.rchuing.sis.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.fenghuang.common.core.domain.TreeEntity;
#end

/**
 * ${functionName}对象 ${tableName}
 *
 * @author ${author}
 * @date ${datetime}
 */
#if($table.crud || $table.sub)
    #set($Entity="BaseEntity")
#elseif($table.tree)
    #set($Entity="TreeEntity")
#end
@TableName(resultMap = "${packageName}.mapper.${ClassName}Mapper.${ClassName}Result")
public class ${ClassName} extends ${Entity}
        {
private static final long serialVersionUID = 1L;

    #foreach ($column in $columns)
        #if(!$table.isSuperColumn($column.javaField))
        /** $column.columnComment */
            #if($column.list)
                #set($parentheseIndex=$column.columnComment.indexOf("（"))
                #if($parentheseIndex != -1)
                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
                #else
                    #set($comment=$column.columnComment)
                #end
                #if($parentheseIndex != -1)
                @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
                #elseif($column.javaType == 'Date')
                @JsonFormat(pattern = "yyyy-MM-dd")
                @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
                #else
                @Excel(name = "${comment}")
                #end
            #end
            #if($column.isPk == 1)
            @TableId(value = "$column.columnName", type = IdType.AUTO)
            #end
        private $column.javaType $column.javaField;

        #end
    #end
    #if($table.sub)
    /** $table.subTable.functionName信息 */
    private List<${subClassName}> ${subclassName}List;

    #end
    #foreach ($column in $columns)
        #if(!$table.isSuperColumn($column.javaField))
            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
                #set($AttrName=$column.javaField)
            #else
                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
            #end
        public void set${AttrName}($column.javaType $column.javaField) {
            this.$column.javaField = $column.javaField;
        }

        public $column.javaType get${AttrName}() {
            return $column.javaField;
        }
        #end
    #end

    #if($table.sub)
    public List<${subClassName}> get${subClassName}List() {
        return ${subclassName}List;
    }

    public void set${subClassName}List(List<${subClassName}> ${subclassName}List) {
        this.${subclassName}List = ${subclassName}List;
    }

    #end
@Override
public String toString() {
    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
        #foreach ($column in $columns)
            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
                #set($AttrName=$column.javaField)
            #else
                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
            #end
        .append("${column.javaField}", get${AttrName}())
        #end
        #if($table.sub)
                .append("${subclassName}List", get${subClassName}List())
                #end
            .toString();
}
        }