package com.goldenwater.slgc.domain;

import com.goldenwater.common.annotation.Excel;
import com.goldenwater.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

@Schema(description = "堤防信息实体")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttDikeBase extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @Schema(description = "堤防编码")
    @Excel(name = "堤防代码", sort = 1, width = 20)
    private String dikeCode;
    @Schema(description = "采集日期")
    @Excel(name = "属性采集时间", sort = 22, dateFormat = "yyyy-MM-dd", type = Excel.Type.EXPORT)
    private Date collDate;
    @Schema(description = "堤防名称")
    @Excel(name = "堤防名称", sort = 2, width = 20)
    private String dikeName;
    @Schema(description = "起点经度")
    @Excel(name = "起点经度", sort = 23, cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal startLong;
    @Schema(description = "起点纬度")
    @Excel(name = "起点纬度", sort = 24, cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal startLat;
    @Schema(description = "终点经度")
    @Excel(name = "终点经度", sort = 25, cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal endLong;
    @Schema(description = "终点纬度")
    @Excel(name = "终点纬度", sort = 26, cellType = Excel.ColumnType.NUMERIC)
    private BigDecimal endLat;
    @Schema(description = "起点位置")
    @Excel(name = "起点所在位置", sort = 4, width = 30)
    private String startLoc;
    @Schema(description = "终点位置")
    @Excel(name = "终点所在位置", sort = 5, width = 30)
    private String endLoc;
    @Schema(description = "堤防等级")
    @Excel(name = "堤防级别", sort = 3, readConverterExp = "1=一级,2=二级,3=三级,4=四级,5=五级", combo = {"一级","二级","三级","四级","五级"})
    private String dikeGrad;
    @Schema(description = "堤防类型")
    @Excel(name = "堤防类型", sort = 6, readConverterExp = "1=江河堤防,2=湖堤,3=海堤,4=围堤,9=其他", combo = {"江河堤防","湖堤","海堤","围堤","其他"})
    private String dikeType;
    @Schema(description = "堤防结构")
    @Excel(name = "堤防型式", sort = 7, readConverterExp = "1=土堤,2=砌石堤,3=土石混合堤,4=钢筋混凝土防洪墙,9=其他", combo = {"土堤","砌石堤","土石混合堤","钢筋混凝土防洪墙","其他"})
    private String dikePatt;
    @Schema(description = "堤防长度")
    @Excel(name = "堤防长度", sort = 8, suffix = " m")
    private BigDecimal dikeLen;
    @Schema(description = "起始桩号")
    @Excel(name = "堤防起点桩号", sort = 9)
    private String dikeStartNum;
    @Schema(description = "终止桩号")
    @Excel(name = "堤防终点桩号", sort = 10)
    private String dikeEndNum;
    @Schema(description = "起点堤顶高程")
    @Excel(name = "起点堤顶高程", sort = 11, suffix = " m")
    private BigDecimal startDikeTopEl;
    @Schema(description = "终点堤顶高程")
    @Excel(name = "终点堤顶高程", sort = 12, suffix = " m")
    private BigDecimal endDikeTopEl;
    @Schema(description = "最小堤高")
    @Excel(name = "堤防最小高度", sort = 13, suffix = " m")
    private BigDecimal dikeHeigMin;
    @Schema(description = "最大堤高")
    @Excel(name = "堤防最大高度", sort = 14, suffix = " m")
    private BigDecimal dikeHeigMax;
    @Schema(description = "最小堤顶宽")
    @Excel(name = "堤顶最小宽度", sort = 15, suffix = " m")
    private BigDecimal dikeTopWidMin;
    @Schema(description = "最大堤顶宽")
    @Excel(name = "堤顶最大宽度", sort = 16, suffix = " m")
    private BigDecimal dikeTopWidMax;
    @Schema(description = "工程状态")
    @Excel(name = "工程建设情况", sort = 17, readConverterExp = "1=已建,2=在建,3=规划", combo = {"已建","在建","规划"})
    private String engStat;
    @Schema(description = "运行状态")
    @Excel(name = "运行状况", sort = 21, readConverterExp = "1=在用良好,2=在用故障,3=停用", combo = {"在用良好","在用故障","停用"})
    private String runStat;
    @Schema(description = "工程任务")
    @Excel(name = "工程任务", sort = 18)
    private String engTask;
    @Schema(description = "开工日期")
    @Excel(name = "开工时间", sort = 19, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @Schema(description = "竣工日期")
    @Excel(name = "建成时间", sort = 20, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date compDate;
    @Schema(description = "管理单位")
    @Excel(name = "归口管理部门", sort = 27, width = 20)
    private String admDep;
    @Schema(description = "备注")
    @Excel(name = "备注", sort = 28, width = 20)
    private String note;
    @Schema(description = "更新日期")
    @Excel(name = "属性更新时间", sort = 29, dateFormat = "yyyy-MM-dd", type = Excel.Type.EXPORT)
    private Date updDate;
    @Schema(description = "数据来源")
    private String source;
    @Schema(description = "堤防结构名称")
    private String dikePattName;
    @Schema(description = "临时编码")
    private String tempcode;
    @Schema(description = "类型")
    private String type;
    @Schema(description = "关键字")
    private String key;
}
