package com.ltgk.boat.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ltgk.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 巡查上报【渔港巡查、渔船巡查】对象 patrol_record
 *
 * @author Qi ChengBin
 * @date 2025-01-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("patrol_record")
@ApiModel(value = "巡查上报【渔港巡查、渔船巡查】对象", description = "巡查上报【渔港巡查、渔船巡查】表")
public class PatrolRecord extends Model<PatrolRecord> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "巡查上报【渔港巡查、渔船巡查】主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty(value = "巡检类型【0-渔港巡查，1-渔船巡查】")
    @TableField(value = "check_type")
    private Integer checkType;

    @ApiModelProperty(value = "渔港id")
    @TableField(value = "port_id")
    private String portId;

    @ApiModelProperty(value = "渔港名称")
    @TableField(value = "port_name", condition = SqlCondition.LIKE)
    @Excel(name = "渔港名称", sort = 0)
    private String portName;

    @ApiModelProperty(value = "渔港类型")
    @TableField(value = "port_type")
    @Excel(name = "港口类型", sort = 2)
    private String portType;

    @ApiModelProperty(value = "经营管理单位")
    @TableField(value = "manage_unit")
    @Excel(name = "经营管理单位", sort = 6)
    private String manageUnit;

    @ApiModelProperty(value = "渔港负责人")
    @TableField(value = "port_principal")
    @Size(max = 10, message = "渔港负责人长度不能超过10个字符")
    @Excel(name = "渔港负责人", sort = 7)
    private String portPrincipal;

    @ApiModelProperty(value = "渔港负责人联系电话")
    @TableField(value = "port_principal_tel")
    @Size(max = 10, message = "渔港负责人联系电话长度不能超过16个字符")
    @Excel(name = "渔港负责人联系电话", sort = 8)
    private String portPrincipalTel;

    @ApiModelProperty(value = "渔港所在街道办事处")
    @TableField(value = "port_street")
    @Excel(name = "渔港所在街道办事处", sort = 9)
    private String portStreet;

    @ApiModelProperty(value = "泊位数量")
    @TableField(value = "berth_num")
    private Integer berthNum;

    @ApiModelProperty(value = "现常驻渔船数量")
    @TableField(value = "current_boat_num")
    private Integer currentBoatNum;

    @ApiModelProperty(value = "是否有渔船进出港登记台账【0-有，1-没有】")
    @TableField(value = "have_regist_ledger")
    private Integer haveRegistLedger;

    @ApiModelProperty(value = "进出港检查船数")
    @TableField(value = "port_check_num")
    private Integer portCheckNum;

    @ApiModelProperty(value = "监控系统是否运行良好【0-是，1-否】")
    @TableField(value = "monitor_status")
    private Integer monitorStatus;

    @ApiModelProperty(value = "出入管理方式")
    @TableField(value = "access_manage_method")
    private String accessManageMethod;

    @ApiModelProperty(value = "渔港消防组织检查方式")
    @TableField(value = "fire_control_check_method")
    private String fireControlCheckMethod;

    @ApiModelProperty(value = "消防设施配备是否齐全【0-齐全，1-不齐全】")
    @TableField(value = "have_fire_fight_apparatus")
    private Integer haveFireFightApparatus;

    @ApiModelProperty(value = "是否配备回收及处理系统【0-是，1-否】")
    @TableField(value = "have_recovery_system")
    private Integer haveRecoverySystem;

    @ApiModelProperty(value = "码头环境")
    @TableField(value = "port_environment")
    private String portEnvironment;

    @ApiModelProperty(value = "港池环境")
    @TableField(value = "harbour_basin_environment")
    private String harbourBasinEnvironment;

    @ApiModelProperty(value = "是否设置安全生产管理专兼职人员【0-是，1-否】")
    @TableField(value = "have_security_officer")
    private Integer haveSecurityOfficer;

    @ApiModelProperty(value = "有无救生绳索【0-是，1-否】")
    @TableField(value = "have_life_rope")
    private Integer haveLifeRope;

    @ApiModelProperty(value = "救生衣件数")
    @TableField(value = "life_vest_num")
    private Integer lifeVestNum;

    @ApiModelProperty(value = "救生圈个数")
    @TableField(value = "life_buoy_num")
    private Integer lifeBuoyNum;

    @ApiModelProperty(value = "检查负责人")
    @TableField(value = "check_principal")
    @Size(max = 10, message = "检查负责人长度不能超过10个字符")
    @Excel(name = "检查负责人", sort = 2)
    private String checkPrincipal;

    @ApiModelProperty(value = "检查负责人联系电话")
    @TableField(value = "check_principal_tel")
    @Size(max = 16, message = "检查负责人联系电话长度不能超过16个字符")
    @Excel(name = "检查负责人联系电话", sort = 3)
    private String checkPrincipalTel;

    @ApiModelProperty(value = "检查人员")
    @TableField(value = "check_person")
    @Size(max = 10, message = "检查人员长度不能超过10个字符")
    @Excel(name = "检查人员", sort = 4)
    private String checkPerson;

    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty(value = "检查时间")
    @TableField(value = "check_time")
    @Excel(name = "检查时间", dateFormat = "yyyy-MM-dd", sort = 5)
    private Date checkTime;

    @ApiModelProperty(value = "检查地点")
    @TableField(value = "check_position")
    private String checkPosition;

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

    @ApiModelProperty(value = "船名号")
    @TableField(value = "boat_name")
    @Size(max = 60, message = "船名号长度不能超过10个字符")
    private String boatName;

    @ApiModelProperty(value = "船籍港主键")
    @TableField(value = "boat_port_id")
    private String boatPortId;

    @ApiModelProperty(value = "船籍港名称")
    @TableField(value = "boat_port_name")
    private String boatPortName;

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

    @ApiModelProperty(value = "所有人")
    @TableField(value = "owner_name")
    @Size(max = 50, message = "所有人长度不能超过50个字符")
    private String ownerName;

    @ApiModelProperty(value = "主机功率")
    @TableField(value = "total_power")
    private BigDecimal totalPower;

    @ApiModelProperty(value = "船舶状态")
    @TableField(value = "boat_status")
    private String boatStatus;

    @ApiModelProperty(value = "船舶状况-船舶证书")
    @TableField(value = "ship_certificate_situ")
    private String shipCertificateSitu;

    @ApiModelProperty(value = "船舶状况-证书合法性")
    @TableField(value = "ship_certificate_legal_situ")
    private String shipCertificateLegalSitu;

    @ApiModelProperty(value = "船舶状况-渔船标签【0-有，1-没有】")
    @TableField(value = "ship_lable_situ")
    private Integer shipLableSitu;

    @ApiModelProperty(value = "船舶状况-职务船员证书")
    @TableField(value = "duty_seaman_certificate_situ")
    private String dutySeamanCertificateSitu;

    @ApiModelProperty(value = "船舶状况-普通船员证书")
    @TableField(value = "common_seaman_certificate_situ")
    private String commonSeamanCertificateSitu;

    @ApiModelProperty(value = "船舶状况-船证对比")
    @TableField(value = "ship_certificate_contrast_situ")
    private String shipCertificateContrastSitu;

    @ApiModelProperty(value = "船舶状况-船名号或船名牌【0-有，1-没有】")
    @TableField(value = "ship_name_situ")
    private Integer shipNameSitu;

    @ApiModelProperty(value = "消防设备-灭火器情况【0-有，1-没有，2-有效，3-无效】")
    @TableField(value = "extinguisher_situ")
    private Integer extinguisherSitu;

    @ApiModelProperty(value = "消防设备-消防水带、水枪情况【0- 有， 1- 没有】")
    @TableField(value = "fire_hoses_situ")
    private Integer fireHosesSitu;

    @ApiModelProperty(value = "消防设备-是否有带绳消防水桶【0-是，1-否】")
    @TableField(value = "have_fire_bucket")
    private Integer haveFireBucket;

    @ApiModelProperty(value = "救生设备-救生衣情况【0-有，1-没有】")
    @TableField(value = "life_vest_situ")
    private Integer lifeVestSitu;

    @ApiModelProperty(value = "救生设备-救生圈情况【0-有，1-没有】")
    @TableField(value = "life_buoy_situ")
    private Integer lifeBuoySitu;

    @ApiModelProperty(value = "救生设备-救生筏情况【0-有，1-没有】")
    @TableField(value = "life_float_situ")
    private Integer lifeFloatSitu;

    @ApiModelProperty(value = "通导设备-有无cdma定位手机【0-是，1-否】")
    @TableField(value = "have_cdma_phone")
    private Integer haveCdmaPhone;

    @ApiModelProperty(value = "通导设备-有无北斗定位【0-是，1-否】")
    @TableField(value = "have_bd")
    private Integer haveBd;

    @ApiModelProperty(value = "通导设备-有无ai海区甚高频")
    @TableField(value = "have_vhf")
    private Integer haveVhf;

    @ApiModelProperty(value = "通导设备-有无ais防碰撞【0-是，1-否】")
    @TableField(value = "have_ais")
    private Integer haveAis;

    @ApiModelProperty(value = "通导设备-超短波对讲机【0-有，1-没有】")
    @TableField(value = "have_usw")
    private Integer haveUsw;

    @ApiModelProperty(value = "信号设备总体情况")
    @TableField(value = "signal_total_situ")
    private String signalTotalSitu;

    @ApiModelProperty(value = "信号设备-号灯情况")
    @TableField(value = "line_lamp_situ")
    private String lineLampSitu;

    @ApiModelProperty(value = "信号设备-号型情况")
    @TableField(value = "line_shape_situ")
    private String lineShapeSitu;

    @ApiModelProperty(value = "信号设备-雾灯情况")
    @TableField(value = "foglight_situ")
    private String foglightSitu;

    @ApiModelProperty(value = "渔船靠舶、锚泊时是否落实值班了望和显示号灯号型【0-是，1-否】")
    @TableField(value = "show_line_lamp")
    private Integer showLineLamp;

    @ApiModelProperty(value = "渔船是否编队生产【0-是，1-否】")
    @TableField(value = "is_format_production")
    private Integer isFormatProduction;

    @ApiModelProperty(value = "简易灭火器是否按规定放置【0-是，1-否】")
    @TableField(value = "is_extinguisher_position")
    private Integer isExtinguisherPosition;

    @ApiModelProperty(value = "是否在渔船上堆放易燃易爆物品【0-是，1-否】")
    @TableField(value = "have_inflammale")
    private Integer haveInflammale;

    @ApiModelProperty(value = "渔船上是否存在私拉乱接电线、电线老化现象【0-是，1-否】")
    @TableField(value = "have_fire_aging")
    private Integer haveFireAging;

    @ApiModelProperty(value = "是否超过渔船抗风等级航行作业【0-是，1-否】")
    @TableField(value = "is_exceed_wind")
    private Integer isExceedWind;

    @ApiModelProperty(value = "是否超过渔船限定航区出海作业【0-是，1-否】")
    @TableField(value = "is_navigate_zone")
    private Integer isNavigateZone;

    @ApiModelProperty(value = "是否按规定要求设置垃圾、油污储存设施【0-是，1-否】")
    @TableField(value = "have_garbage_storage")
    private Integer haveGarbageStorage;

    @ApiModelProperty(value = "防污染管理制度是否落实【0-是，1-否】")
    @TableField(value = "is_execute_antifouling")
    private Integer isExecuteAntifouling;

    @ApiModelProperty(value = "检查小结")
    @TableField(value = "check_summary")
    private String checkSummary;

    @ApiModelProperty(value = "处理结果")
    @TableField(value = "handle_result")
    private String handleResult;

    @ApiModelProperty(value = "整改情况")
    @TableField(value = "rectify_situ")
    private String rectifySitu;

    @ApiModelProperty(value = "船东")
    @TableField(value = "boat_owner_captain")
    private String boatOwnerCaptain;

    @ApiModelProperty(value = "巡检图片")
    @TableField(value = "images")
    private String images;

    @ApiModelProperty(value = "巡检签名")
    @TableField(value = "autograph")
    private String autograph;

    @ApiModelProperty(value = "检查巡查是否非本区渔船")
    @TableField(value = "nolocalvessels")
    private String nolocalvessels;

    @ApiModelProperty(value = "巡检视频")
    @TableField(value = "video_path")
    private String videoPath;

    @ApiModelProperty(value = "巡检视频名称")
    @TableField(value = "video_name")
    private String videoName;

    @ApiModelProperty(value = "是否存在加吊装作业【0-是，1-否】")
    @TableField(value = "is_lifting")
    private Integer isLifting;

    @ApiModelProperty(value = "是否涉及有限空间作业【0-是，1-否】")
    @TableField(value = "is_limit_space")
    private Integer isLimitSpace;

    @ApiModelProperty(value = "是否存在高处作业【0-是，1-否】")
    @TableField(value = "is_heights_work")
    private Integer isHeightsWork;

    @TableLogic(delval = "1", value = "0")
    @TableField(value = "del_flag")
    @ApiModelProperty(value = "删除标志: 0-未删除, 1-已删除")
    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;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_at")
    private Date createAt;

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

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_at")
    private Date updateAt;

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