package com.izouma.wenlvju.domain;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.izouma.wenlvju.annotations.Searchable;
import com.izouma.wenlvju.utils.excel.BooleanConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import javax.persistence.Entity;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@ApiModel("培训机构")
public class TrainingInstitution extends BaseEntity {
    @Searchable
    @ExcelProperty(value = "企业名称")
    @ApiModelProperty("企业名称")
    private String name;

    @Searchable
    @ExcelProperty(value = "注册号")
    @ApiModelProperty("注册号")
    private String uscc;

    @ApiModelProperty(value = "是否从事文化艺术类校外培训")
    @ExcelProperty(value = "是否从事文化艺术类校外培训", converter = BooleanConverter.class)
    private boolean engagedInTraining;

    @ExcelProperty(value = "经营范围")
    @Column(columnDefinition = "TEXT")
    @ApiModelProperty("经营范围")
    private String businessScope;

    @ExcelProperty(value = "企业住所")
    @ApiModelProperty("企业住所")
    private String address;

    @ExcelProperty(value = "生产经营场所")
    @ApiModelProperty("生产经营场所")
    private String businessPremise;

    @ExcelProperty(value = "法人姓名")
    @ApiModelProperty(value = "法人姓名")
    private String privacyPolicy;

    @ExcelIgnore
    @ApiModelProperty(value = "短信发送号码")
    private String phone;

    @ExcelProperty(value = "企业联系方式")
    @ApiModelProperty(value = "企业联系方式")
    private String contactPhone;

    @ExcelProperty(value = "所属管区")
    @ApiModelProperty(value = "所属管区")
    private String district;

    @ExcelProperty(value = "注册资本（万）")
    @ApiModelProperty(value = "注册资本（万）")
    private BigDecimal registeredCapital;

    @ExcelProperty(value = "单位性质")
    @ApiModelProperty(value = "单位性质")
    private String category;

    @ExcelProperty(value = "专业种类")
    @ApiModelProperty(value = "专业种类")
    private String specialty;

    @ExcelProperty(value = "培训点数量三楼及以下")
    @ApiModelProperty(value = "培训点数量三楼及以下")
    private int trainingSite;

    @ExcelProperty(value = "培训点数量四楼及以上")
    @ApiModelProperty(value = "培训点数量四楼及以上")
    private int trainingSiteFour;

    @ExcelProperty(value = "总面积")
    @ApiModelProperty(value = "总面积")
    private double area;

    @ExcelProperty(value = "教室数量")
    @ApiModelProperty(value = "教室数量")
    private int classroomNum;

    @ExcelProperty(value = "教师总数")
    @ApiModelProperty(value = "教师总数")
    private int teacherNum;

    @ExcelProperty(value = "专职数量")
    @ApiModelProperty(value = "专职数量")
    private int fullTimeNum;

    @ExcelProperty(value = "兼职数量")
    @ApiModelProperty(value = "兼职数量")
    private int partTimeNum;

    @ExcelProperty(value = "音乐类")
    @ApiModelProperty(value = "音乐类")
    private int musicNum;

    @ExcelProperty(value = "舞蹈类")
    @ApiModelProperty(value = "舞蹈类")
    private int danceNum;

    @ExcelProperty(value = "美术类")
    @ApiModelProperty(value = "美术类")
    private int artNum;

    @ExcelProperty(value = "戏剧戏曲类")
    @ApiModelProperty(value = "戏剧戏曲类")
    private int theatreOperaNum;

    @ExcelProperty(value = "曲艺类")
    @ApiModelProperty(value = "曲艺类")
    private int folkMusicNum;

    @ExcelProperty(value = "有教师资格证")
    @ApiModelProperty(value = "有教师资格证")
    private int qualificationNum;

    @ExcelProperty(value = "年培训人数")
    @ApiModelProperty(value = "年培训人数")
    private long traineesPerYearNum;

    @ExcelProperty(value = "是否是艺术水平考级考点", converter = BooleanConverter.class)
    @ApiModelProperty(value = "是否是艺术水平考级考点")
    private boolean examPoint;

    @ExcelProperty(value = "艺术水平考级机构名称")
    @ApiModelProperty(value = "艺术水平考级机构名称")
    private String gradingOrganization;

    @ExcelProperty(value = "备注")
    @Column(columnDefinition = "TEXT")
    @ApiModelProperty(value = "备注")
    private String remark;

    @ExcelIgnore
    private boolean submit;

    @ExcelProperty(value = "填写时间")
    private LocalDateTime firstWrite;
}
