package com.emergency.avenue.storage.api.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "仓库信息-对接")
@TableName(value = "dock_warehouse_info",autoResultMap = true)
@EqualsAndHashCode
public class DockWarehouseInfoDO{

    @Schema(description = "仓库全称", example = "浙江测试仓库1", required = true)
    @NotNull(message = "仓库全称不能为空")
    private String warehouseName;

    @Schema(description = "仓库简称", example = "浙江测1")
    private String warehouseShortName;

    @Schema(description = "外部仓库编码", example = "55555", required = true)
    @NotNull(message = "外部仓库编码不能为空")
    private String outWarehouseNo;

    @Schema(description = "仓库类型 (见附录4.1仓库类型)", example = "06", required = true)
    @NotNull(message = "仓库类型不能为空")
    private String type;

    @Schema(description = "仓库级别 (见附录4.2仓库级别)", example = "03", required = true)
    @NotNull(message = "仓库级别不能为空")
    private String level;

    @Schema(description = "仓库所在省名称 (国标)", example = "浙江省", required = true)
    @NotNull(message = "仓库所在省名称不能为空")
    private String provinceName;

    @Schema(description = "仓库所在省编码 (国标)", example = "330000", required = true)
    @NotNull(message = "仓库所在省编码不能为空")
    private String provinceCode;

    @Schema(description = "仓库所在市名称 (国标)", example = "杭州市", required = true)
    @NotNull(message = "仓库所在市名称不能为空")
    private String cityName;

    @Schema(description = "仓库所在市编码 (国标)", example = "330100", required = true)
    @NotNull(message = "仓库所在市编码不能为空")
    private String cityCode;

    @Schema(description = "仓库所在区县名称 (国标)", example = "上城区", required = true)
    @NotNull(message = "仓库所在区县名称不能为空")
    private String countyName;

    @Schema(description = "仓库所在区县编码 (国标)", example = "330102", required = true)
    @NotNull(message = "仓库所在区县编码不能为空")
    private String countyCode;

    @Schema(description = "仓库所在乡镇名称 (国标)", example = "", required = false)
    private String townName;

    @Schema(description = "仓库所在乡镇编码 (国标)", example = "", required = false)
    private String townCode;

    @Schema(description = "详细地址", example = "上城区政府综合楼", required = true)
    @NotNull(message = "详细地址不能为空")
    private String address;

    @Schema(description = "省行政区划编号 (国标，级别省级，市级，县级，乡镇级录入)", example = "330000", required = true)
    @NotNull(message = "省行政区划编号不能为空")
    private String provinceAdminAreaNo;

    @Schema(description = "市行政区划编号 (国标，级别市级，县级，乡镇级录入)", example = "330100", required = false)
    private String cityAdminAreaNo;

    @Schema(description = "县行政区划编号 (国标，级别县级，乡镇级录入)", example = "330102", required = false)
    private String countyAdminAreaNo;

    @Schema(description = "行政区划名称 (数据格式：省/市/区县/乡镇 分隔，多个拼接)", example = "浙江省/杭州市", required = true)
    @NotNull(message = "行政区划名称不能为空")
    private String adminAreaName;

    @Schema(description = "行政区划编码 (输入最后一级的区划编码)", example = "330100", required = true)
    @NotNull(message = "行政区划编码不能为空")
    private String adminAreaNo;

    @Schema(description = "经度 (保留小数后四位)", example = "120.164862", required = true)
    @NotNull(message = "经度不能为空")
    private BigDecimal longitude;

    @Schema(description = "纬度 (保留小数后四位)", example = "30.24534", required = true)
    @NotNull(message = "纬度不能为空")
    private BigDecimal latitude;

    @Schema(description = "管理机构编码", example = "DEP202109240000171", required = true)
    @NotNull(message = "管理机构编码不能为空")
    private String orgNo;

    @Schema(description = "管理机构名称", example = "测试同步机构0924", required = true)
    @NotNull(message = "管理机构名称不能为空")
    private String orgName;

    @Schema(description = "授权管理机构编码 (多个英文逗号拼接)", example = "", required = false)
    private String superviseOrgNo;

    @Schema(description = "授权管理机构名称 (多个英文逗号拼接)", example = "", required = false)
    private String superviseOrgName;

    @Schema(description = "占地面积 (平方米)", example = "1", required = false)
    private BigDecimal area;

    @Schema(description = "仓储面积 (平方米)", example = "2", required = false)
    private BigDecimal wareArea;

    @Schema(description = "可用仓储面积 (平方米)", example = "3", required = false)
    private BigDecimal saleableArea;

    @Schema(description = "高度 (米)", example = "4", required = false)
    private BigDecimal height;

    @Schema(description = "库房容积 (立方米)", example = "5", required = false)
    private BigDecimal volume;

    @Schema(description = "可用库房容积 (立方米)", example = "6", required = false)
    private BigDecimal saleableVolume;

    @Schema(description = "建成年份", example = "", required = false)
    private String yearBuilt;

    @Schema(description = "保管类型 (01 普通 02 冷藏)", example = "", required = false)
    private String custodialType;

    @Schema(description = "火车货站", example = "", required = false)
    private String trainStation;

    @Schema(description = "权属性质 (01 自有 02 租用 03 临时储备点)", example = "", required = false)
    private String authType;

    @Schema(description = "储备物资概述", example = "", required = false)
    private String materialsOverview;

    @Schema(description = "联系人", example = "牛方方", required = true)
    @NotNull(message = "联系人不能为空")
    private String contacter;

    @Schema(description = "联系电话", example = "18888888888", required = true)
    @NotNull(message = "联系电话不能为空")
    private String contactPhone;

    @Schema(description = "联系邮箱", example = "", required = false)
    private String contactMail;

    @Schema(description = "传真", example = "", required = false)
    private String contactFax;

    @Schema(description = "办公电话", example = "", required = false)
    private String contactMobile;

    @Schema(description = "可访问的仓库图片路径")
    private String pictureFiles;

    @Schema(description = "仓库状态：1 启用 0 停用 (默认启用)", example = "1", required = false)
    private Integer status;

    @Schema(description = "上传接口返回的 fileName", example = "", required = true)
    @NotNull(message = "上传接口返回的 fileName 不能为空")
    private String objectKey;
}
