package com.ltgk.boat.domain.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ltgk.common.core.page.BasePage;
import com.ltgk.common.validation.groups.Detail;
import com.ltgk.common.validation.groups.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 渔船检验记录表 (DsBoatCheckout)实体类
 *
 * @author Qi ChengBin
 * @date 2025-04-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "ds_boat_checkout")
@ApiModel(value = "渔船检验记录表对象", description = "DsBoatCheckout表")
public class DsBoatCheckout extends BasePage implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @NotBlank(message = "主键信息不能为空", groups = {Detail.class, Update.class})
    private String id;

    @ApiModelProperty(value = "渔船id")
    @TableField(value = "boat_id")
    private Long boatId;

    @ApiModelProperty(value = "船名")
    @TableField(value = "boat_name", condition = SqlCondition.LIKE)
    private String boatName;

    @ApiModelProperty(value = "船籍港")
    @TableField(value = "home_port", condition = SqlCondition.LIKE)
    private String homePort;

    @ApiModelProperty(value = "船体材质")
    @TableField(value = "boat_material", condition = SqlCondition.LIKE)
    private String boatMaterial;

    @ApiModelProperty(value = "标准船长")
    @TableField(value = "approval_length")
    private String approvalLength;

    @ApiModelProperty(value = "主机功率（KW）")
    @TableField(value = "main_power")
    private String mainPower;

    @ApiModelProperty(value = "标准总吨位")
    @TableField(value = "approval_tonnage")
    private String approvalTonnage;

    @ApiModelProperty(value = "船舶制造厂")
    @TableField(value = "shipyard", condition = SqlCondition.LIKE)
    private String shipyard;

    @ApiModelProperty(value = "船舶所有人")
    @TableField(value = "holder_name", condition = SqlCondition.LIKE)
    private String holderName;

    @ApiModelProperty(value = "申请者说明")
    @TableField(value = "apply_explain", condition = SqlCondition.LIKE)
    private String applyExplain;

    @ApiModelProperty(value = "计划建造开工时间")
    @TableField(value = "plan_build_start_time")
    private Date planBuildStartTime;

    @ApiModelProperty(value = "计划检验时间")
    @TableField(value = "plan_chack_time")
    private Date planChackTime;

    @ApiModelProperty(value = "计划检验地点")
    @TableField(value = "plan_chack_address")
    private String planChackAddress;

    @ApiModelProperty(value = "申请人主键id")
    @TableField(value = "apply_user_id")
    private Long applyUserId;

    @ApiModelProperty(value = "申请人名称")
    @TableField(value = "apply_user_name", condition = SqlCondition.LIKE)
    private String applyUserName;

    @ApiModelProperty(value = "申请人签名")
    @TableField(value = "applicant_signature")
    private String applicantSignature;

    @ApiModelProperty(value = "申请人联系电话")
    @TableField(value = "applicant_phone", condition = SqlCondition.LIKE)
    private String applicantPhone;

    @ApiModelProperty(value = "申请日期")
    @TableField(value = "applicant_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date applicantTime;

    @ApiModelProperty(value = "要求附赠的证明及材料")
    @TableField(value = "prove_files")
    private String proveFiles;

    @ApiModelProperty(value = "检验开始日期")
    @TableField(value = "check_start_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date checkStartTime;

    @ApiModelProperty(value = "检验完成日期")
    @TableField(value = "check_over_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date checkOverTime;

    @ApiModelProperty(value = "检验地点")
    @TableField(value = "check_address", condition = SqlCondition.LIKE)
    private String checkAddress;

    @ApiModelProperty(value = "检验种类")
    @TableField(value = "check_type")
    private String checkType;

    @ApiModelProperty(value = "检验人员")
    @TableField(value = "check_person")
    private String checkPerson;

    @ApiModelProperty(value = "检验组组长")
    @TableField(value = "check_leader")
    private String checkLeader;

    @ApiModelProperty(value = "检验费（元）")
    @TableField(value = "check_cost")
    private String checkCost;

    @ApiModelProperty(value = "证书有效开始时间")
    @TableField(value = "certificate_start_time")
    private Date certificateStartTime;

    @ApiModelProperty(value = "证书有效结束时间")
    @TableField(value = "certificate_end_time")
    private Date certificateEndTime;

    @ApiModelProperty(value = "证书签发批准人签字")
    @TableField(value = "certificate_approval")
    private String certificateApproval;

    @ApiModelProperty(value = "领证人签字")
    @TableField(value = "licensee_person")
    private String licenseePerson;

    @ApiModelProperty(value = "船壳有无缺陷")
    @TableField(value = "skin")
    private String skin;

    @ApiModelProperty(value = "艏柱有误缺陷")
    @TableField(value = "stem")
    private String stem;

    @ApiModelProperty(value = "水下船体是否存在裂纹")
    @TableField(value = "underwaterhull")
    private String underwaterhull;

    @ApiModelProperty(value = "身份标签是否合格")
    @TableField(value = "idtag")
    private String idtag;

    @ApiModelProperty(value = "救生衣、圈（件，个）")
    @TableField(value = "jacket_num")
    private String jacketNum;

    @ApiModelProperty(value = "救生衣是否损坏")
    @TableField(value = "jacket_ok")
    private String jacketOk;

    @ApiModelProperty(value = "救生筏个数")
    @TableField(value = "raft_num")
    private String raftNum;

    @ApiModelProperty(value = "救生筏是否存在破裂")
    @TableField(value = "raft_ok")
    private String raftOk;

    @ApiModelProperty(value = "救生筏下次检修时间")
    @TableField(value = "raft_next_check")
    private String raftNextCheck;

    @ApiModelProperty(value = "灭火器数量")
    @TableField(value = "fire_num")
    private String fireNum;

    @ApiModelProperty(value = "灭火器检修日期")
    @TableField(value = "fire_check_time")
    private String fireCheckTime;

    @ApiModelProperty(value = "桅灯、舷灯")
    @TableField(value = "sidelight")
    private String sidelight;

    @ApiModelProperty(value = "桅灯、舷灯效用")
    @TableField(value = "sidelight_ok")
    private String sidelightOk;

    @ApiModelProperty(value = "锚灯、失控灯")
    @TableField(value = "runaway")
    private String runaway;

    @ApiModelProperty(value = "锚灯、失控灯效用")
    @TableField(value = "runaway_ok")
    private String runawayOk;

    @ApiModelProperty(value = "拖网渔船上绿下白环照灯")
    @TableField(value = "trawllight")
    private String trawllight;

    @ApiModelProperty(value = "拖网渔船上绿下白环照灯效用")
    @TableField(value = "trawllight_ok")
    private String trawllightOk;

    @ApiModelProperty(value = "非拖网渔船上绿下白环照灯")
    @TableField(value = "notrawllight")
    private String notrawllight;

    @ApiModelProperty(value = "非拖网渔船上绿下白环照灯效用")
    @TableField(value = "notrawllight_ok")
    private String notrawllightOk;

    @ApiModelProperty(value = "手电筒、号、笛钟")
    @TableField(value = "fluteclock")
    private String fluteclock;

    @ApiModelProperty(value = "手电筒、号、笛钟外观检查")
    @TableField(value = "fluteclock_ok")
    private String fluteclockOk;

    @ApiModelProperty(value = "主机型号验")
    @TableField(value = "model_check")
    private String modelCheck;

    @ApiModelProperty(value = "主机功率验")
    @TableField(value = "power_check")
    private String powerCheck;

    @ApiModelProperty(value = "主机标签验")
    @TableField(value = "label_check")
    private String labelCheck;

    @ApiModelProperty(value = "主机是否正常")
    @TableField(value = "host_ok")
    private String hostOk;

    @ApiModelProperty(value = "离合箱是否正常")
    @TableField(value = "clutchbox_ok")
    private String clutchboxOk;

    @ApiModelProperty(value = "主机标签是否合格")
    @TableField(value = "lable_ok")
    private String lableOk;

    @ApiModelProperty(value = "电池电缆有无乱扯")
    @TableField(value = "cable_ok")
    private String cableOk;

    @ApiModelProperty(value = "北斗AIS对讲机1")
    @TableField(value = "beidouais1")
    private String beidouais1;

    @ApiModelProperty(value = "北斗AIS对讲机2")
    @TableField(value = "beidouais2")
    private String beidouais2;

    @ApiModelProperty(value = "船舶所有人签字")
    @TableField(value = "power_signature")
    private String powerSignature;

    @ApiModelProperty(value = "验船人员签字")
    @TableField(value = "check_person2")
    private String checkPerson2;

    @ApiModelProperty(value = "检验项目表填写日期")
    @TableField(value = "check_time")
    private Date checkTime;

    @ApiModelProperty(value = "检验登记号")
    @TableField(value = "check_code")
    private String checkCode;

    @ApiModelProperty(value = "船舶所有人住址")
    @TableField(value = "power_address")
    private String powerAddress;

    @ApiModelProperty(value = "操舵装置")
    @TableField(value = "gear")
    private String gear;

    @ApiModelProperty(value = "锚泊设备")
    @TableField(value = "equipment")
    private String equipment;

    @ApiModelProperty(value = "载重线标志")
    @TableField(value = "linemark")
    private String linemark;

    @ApiModelProperty(value = "增加干舷值")
    @TableField(value = "freeboard_value")
    private String freeboardValue;

    @ApiModelProperty(value = "能否有效阻挡水")
    @TableField(value = "blockwater")
    private String blockwater;

    @ApiModelProperty(value = "排水口未发生改变")
    @TableField(value = "drainoutlet")
    private String drainoutlet;

    @ApiModelProperty(value = "防污染设备")
    @TableField(value = "pollution")
    private String pollution;

    @ApiModelProperty(value = "是否更换过柴油机")
    @TableField(value = "chang_engine")
    private String changEngine;

    @ApiModelProperty(value = "维修改装情况")
    @TableField(value = "maintenance")
    private String maintenance;

    @ApiModelProperty(value = "水密完整性")
    @TableField(value = "water_integrity")
    private String waterIntegrity;

    @ApiModelProperty(value = "航行信号设备")
    @TableField(value = "signals")
    private String signals;

    @ApiModelProperty(value = "渔捞起重设备")
    @TableField(value = "lifting")
    private String lifting;

    @ApiModelProperty(value = "主辅机推进系统")
    @TableField(value = "auxiliary")
    private String auxiliary;

    @ApiModelProperty(value = "舱底水排系统")
    @TableField(value = "drainage")
    private String drainage;

    @ApiModelProperty(value = "安全防护")
    @TableField(value = "safety")
    private String safety;

    @ApiModelProperty(value = "船长签字")
    @TableField(value = "captain_signature")
    private String captainSignature;

    @ApiModelProperty(value = "船长联系方式")
    @TableField(value = "captain_tel")
    private String captainTel;

    @ApiModelProperty(value = "船舶所有人签字2")
    @TableField(value = "power_signature2")
    private String powerSignature2;

    @ApiModelProperty(value = "船舶所有人联系方式")
    @TableField(value = "power_tel")
    private String powerTel;

    @ApiModelProperty(value = "检查状态")
    @TableField(value = "check_status")
    private String checkStatus;

    @ApiModelProperty(value = "${column.comment}")
    @TableField(value = "picture1")
    private String picture1;

    @ApiModelProperty(value = "${column.comment}")
    @TableField(value = "picture2")
    private String picture2;

    @ApiModelProperty(value = "${column.comment}")
    @TableField(value = "picture3")
    private String picture3;

    @ApiModelProperty(value = "${column.comment}")
    @TableField(value = "picture4")
    private String picture4;

    @ApiModelProperty(value = "${column.comment}")
    @TableField(value = "picture5")
    private String picture5;

    @ApiModelProperty(value = "签名状态")
    @TableField(value = "sign_type")
    private Integer signType;

    @ApiModelProperty(value = "批准的造船文件")
    @TableField(value = "document1")
    private String document1;

    @ApiModelProperty(value = "设计图纸")
    @TableField(value = "document2")
    private String document2;

    @ApiModelProperty(value = "施工图纸")
    @TableField(value = "document3")
    private String document3;

    @ApiModelProperty(value = "购买合同")
    @TableField(value = "document4")
    private String document4;

    @ApiModelProperty(value = "船名号审批文件")
    @TableField(value = "document5")
    private String document5;

    @ApiModelProperty(value = "检验证书")
    @TableField(value = "document6")
    private String document6;

    @ApiModelProperty(value = "船籍注销")
    @TableField(value = "document7")
    private String document7;

    @ApiModelProperty(value = "申请人签名（pc）")
    @TableField(value = "applicant_signature_pc")
    private String applicantSignaturePc;

    @ApiModelProperty(value = "证书签发人签名（pc）")
    @TableField(value = "certificate_approval_pc")
    private String certificateApprovalPc;

    @ApiModelProperty(value = "领证人签名（pc）")
    @TableField(value = "licensee_person_pc")
    private String licenseePersonPc;

    @ApiModelProperty(value = "检验人员签字")
    @TableField(value = "check_person_pc")
    private String checkPersonPc;

    @ApiModelProperty(value = "检验组长签字")
    @TableField(value = "check_leader_pc")
    private String checkLeaderPc;

    @ApiModelProperty(value = "船舶所有人签字")
    @TableField(value = "power_signature_pc")
    private String powerSignaturePc;

    @ApiModelProperty(value = "验船人员签字")
    @TableField(value = "check_person2_pc")
    private String checkPerson2Pc;

    @ApiModelProperty(value = "船长签字")
    @TableField(value = "captain_signature_pc")
    private String captainSignaturePc;

    @ApiModelProperty(value = "船舶所有人签字2")
    @TableField(value = "power_signature2_pc")
    private String powerSignature2Pc;

    @ApiModelProperty(value = "灭火器是否合格")
    @TableField(value = "fire_check_ok")
    private String fireCheckOk;

    @ApiModelProperty(value = "船舶所有人户籍地")
    @TableField(value = "power_residence")
    private String powerResidence;

    @ApiModelProperty(value = "船长户籍地")
    @TableField(value = "captain_residence")
    private String captainResidence;

    @ApiModelProperty(value = "删除标志: 0-未删除, 1-已删除")
    @TableField(value = "del_flag")
    @TableLogic(delval = "1", value = "0")
    private Integer delFlag;

    @ApiModelProperty(value = "行政区域编码")
    @TableField(value = "area_code")
    private String areaCode;

    @ApiModelProperty(value = "行政区域名称")
    @TableField(value = "area_name")
    private String areaName;

    @ApiModelProperty(value = "创建人")
    @TableField(value = "create_by")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_at")
    private Date createAt;

    @ApiModelProperty(value = "更新人")
    @TableField(value = "update_by")
    private String updateBy;

    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_at")
    private Date updateAt;

    @ApiModelProperty(value = "备注")
    @TableField(value = "remark")
    private String remark;

    @ApiModelProperty(value = "开始时间")
    @TableField(exist = false)
    private String startTime;

    @ApiModelProperty(value = "结束时间")
    @TableField(exist = false)
    private String endTime;

    @ApiModelProperty(value = "审核状态")
    @TableField(value = "audit_status")
    private Integer auditStatus;

    @ApiModelProperty(value = "审核原因")
    @TableField(value = "audit_reason")
    private String auditReason;
}

