package com.ltgk.boat.domain.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.sql.Date;

/**
 * @Author: wan kun
 * @Description: 新增修改渔船信息请求参数
 * @Date: 2024/10/26 13:54
 * @Version: 1.0
 */
@Data
public class SaveBoatReq {

    @ApiModelProperty(value = "boatId")
    private String boatId;

    @ApiModelProperty(value = "地区code")
    @JsonProperty("areaCode")
    @NotBlank(message = "地区code不能为空")
    private String areaCode;

    @ApiModelProperty(value = "地区名称")
    @JsonProperty("areaName")
    @NotBlank(message = "地区名称不能为空")
    private String areaName;

    @ApiModelProperty(value = "渔船编码")
    @JsonProperty("boatCode")
    @NotBlank(message = "渔船编码不能为空")
    private String boatCode;

    @ApiModelProperty(value = "渔船名称")
    @JsonProperty("boatName")
    @NotBlank(message = "渔船名称不能为空")
    private String boatName;

    @ApiModelProperty(value = "渔船名称英文")
    @JsonProperty("boatNameEn")
    private String boatNameEn;

    @ApiModelProperty(value = "船长")
    @JsonProperty("length")
    private BigDecimal length;

    @ApiModelProperty(value = "型宽")
    @JsonProperty("width")
    private BigDecimal width;

    @ApiModelProperty(value = "型深")
    @JsonProperty("height")
    private BigDecimal height;

    @ApiModelProperty(value = "总吨位")
    @JsonProperty("tonnage")
    private BigDecimal tonnage;

    @ApiModelProperty(value = "净吨位")
    @JsonProperty("netTonnage")
    private BigDecimal netTonnage;

    @ApiModelProperty(value = "主机总功率")
    @JsonProperty("mainPower")
    private BigDecimal mainPower;

    @ApiModelProperty(value = "主机型号一")
    @JsonProperty("mainTypeOne")
    private String mainTypeOne;

    @ApiModelProperty(value = "主机型号二")
    @JsonProperty("mainTypeTwo")
    private String mainTypeTwo;

    @ApiModelProperty(value = "主机型号三")
    @JsonProperty("mainTypeThree")
    private String mainTypeThree;

    @ApiModelProperty(value = "主机功率一")
    @JsonProperty("mainPowerOne")
    private BigDecimal mainPowerOne;

    @ApiModelProperty(value = "主机功率二")
    @JsonProperty("mainPowerTwo")
    private BigDecimal mainPowerTwo;

    @ApiModelProperty(value = "主机功率三")
    @JsonProperty("mainPowerThree")
    private BigDecimal mainPowerThree;

    @ApiModelProperty(value = "船体材质")
    @JsonProperty("boatMaterial")
    private String boatMaterial;

    @ApiModelProperty(value = "船体材质英文")
    @JsonProperty("boatMaterialEn")
    private String boatMaterialEn;

    @ApiModelProperty(value = "建造完工开始日期")
    @JsonProperty("buildDateStart")
    private Date buildDateStart;

    @ApiModelProperty(value = "建造完工结束日期")
    @JsonProperty("buildDateEnd")
    private Date buildDateEnd;

    @ApiModelProperty(value = "建造完工日期")
    @JsonProperty("buildDate")
    private String buildDate;

    @ApiModelProperty(value = "主机数量")
    @JsonProperty("hostNum")
    private BigDecimal hostNum;

    @ApiModelProperty(value = "船舶呼号识别码")
    @JsonProperty("boatCallCode")
    private String boatCallCode;

    @ApiModelProperty(value = "子船主机数量")
    @JsonProperty("sonHostNum")
    private BigDecimal sonHostNum;

    @ApiModelProperty(value = "子船主机型号")
    @JsonProperty("sonType")
    private String sonType;

    @ApiModelProperty(value = "子船船名")
    @JsonProperty("sonName")
    private String sonName;

    @ApiModelProperty(value = "子船数量")
    @JsonProperty("sonNum")
    private BigDecimal sonNum;

    @ApiModelProperty(value = "子船总功率")
    @JsonProperty("sonPower")
    private BigDecimal sonPower;

    @ApiModelProperty(value = "海洋渔业捕捞许可证类别")
    @JsonProperty("fishingType")
    private String fishingType;

    @ApiModelProperty(value = "船舶所有人名称")
    @JsonProperty("holderName")
    private String holderName;

    @ApiModelProperty(value = "船舶所有人名称英文")
    @JsonProperty("holderNameEn")
    private String holderNameEn;

    @ApiModelProperty(value = "船舶所有人地址")
    @JsonProperty("holderAddress")
    private String holderAddress;

    @ApiModelProperty(value = "船舶所有人地址英文")
    @JsonProperty("holderAddressEn")
    private String holderAddressEn;

    @ApiModelProperty(value = "船舶所有人电话")
    @JsonProperty("holderPhone")
    private String holderPhone;

    @ApiModelProperty(value = "船舶所有人 统一社会信用代码/公民身份证号码")
    @JsonProperty("holderIdCard")
    private String holderIdCard;

    @ApiModelProperty(value = "船舶类型")
    @JsonProperty("boatType")
    private String boatType;

    @ApiModelProperty(value = "船舶类型英文")
    @JsonProperty("boatTypeEn")
    private String boatTypeEn;

    @ApiModelProperty(value = "主机机号一")
    @JsonProperty("mainMachineNumOne")
    private String mainMachineNumOne;

    @ApiModelProperty(value = "主机机号二")
    @JsonProperty("mainMachineNumTwo")
    private String mainMachineNumTwo;

    @ApiModelProperty(value = "主机机号三")
    @JsonProperty("mainMachineNumThree")
    private String mainMachineNumThree;

    @ApiModelProperty(value = "船网工具指标批准书编号")
    @JsonProperty("networkApprovalNum")
    private String networkApprovalNum;

    @ApiModelProperty(value = "双控功率")
    @JsonProperty("dualControlPower")
    private BigDecimal dualControlPower;

    @ApiModelProperty(value = "核准船长")
    @JsonProperty("approvalLength")
    private BigDecimal approvalLength;

    @ApiModelProperty(value = "核准总吨")
    @JsonProperty("approvalTonnage")
    private BigDecimal approvalTonnage;

    @ApiModelProperty(value = "备注")
    @JsonProperty("remarks")
    private String remarks;

    @ApiModelProperty(value = "是否是本地渔船：0是，1外省")
    @JsonProperty("isLocal")
    private Integer isLocal;

    @ApiModelProperty(value = "AIS 主键")
    @JsonProperty("aisId")
    @TableField(exist = false)
    private String aisId;

    @ApiModelProperty(value = "Beidou 主键")
    @JsonProperty("beidouId")
    @TableField(exist = false)
    private String beidouId;

    @ApiModelProperty(value = "AIS 终端号")
    @JsonProperty("aisCode")
    private String aisCode;

    @ApiModelProperty(value = "Beidou 终端号")
    @JsonProperty("beidouCode")
    private String beidouCode;
}
