package com.ltgk.boat.domain.entity;


import com.baomidou.mybatisplus.annotation.*;
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 javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 渔船过户表 (DsBoatTransfer)实体类
 *
 * @author Qi ChengBin
 * @date 2025-07-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "ds_boat_transfer")
@ApiModel(value = "渔船过户表对象", description = "DsBoatTransfer表")
public class DsBoatTransfer 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 = "渔船主键")
    @TableField(value = "boat_id")
    private String boatId;

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

    @ApiModelProperty(value = "渔船编码")
    @TableField(value = "boat_code", condition = SqlCondition.LIKE)
    private String boatCode;

    @ApiModelProperty(value = "过户类型")
    @TableField(value = "transfer_type", condition = SqlCondition.LIKE)
    private String transferType;

    @ApiModelProperty(value = "旧船主")
    @TableField(value = "old_holder_name", condition = SqlCondition.LIKE)
    private String oldHolderName;

    @ApiModelProperty(value = "新船主")
    @TableField(value = "new_holder_name", condition = SqlCondition.LIKE)
    private String newHolderName;

    @ApiModelProperty(value = "旧船主电话")
    @TableField(value = "old_holder_phone", condition = SqlCondition.LIKE)
    private String oldHolderPhone;

    @ApiModelProperty(value = "新船主电话")
    @TableField(value = "new_holder_phone", condition = SqlCondition.LIKE)
    private String newHolderPhone;

    @ApiModelProperty(value = "养殖证编号")
    @TableField(value = "breeding_license_code")
    private String breedingLicenseCode;

    @ApiModelProperty(value = "船检时间")
    @TableField(value = "boat_inspection_time")
    private LocalDateTime boatInspectionTime;

    @ApiModelProperty(value = "原船所有权证书")
    @TableField(value = "old_boat_ownership")
    private String oldBoatOwnership;

    @ApiModelProperty(value = "渔船过户同意证明")
    @TableField(value = "agree_prove")
    private String agreeProve;

    @ApiModelProperty(value = "审核状态【0-未审核，1-审核通过，2-审核不通过】")
    @TableField(value = "audit_status")
    private Integer auditStatus;

    @ApiModelProperty(value = "审核时间")
    @TableField(value = "audit_time")
    private LocalDateTime auditTime;

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

    @ApiModelProperty(value = "买方身份证正面")
    @TableField(value = "new_holder_id_card_front")
    private String newHolderIdCardFront;

    @ApiModelProperty(value = "买方身份证反面")
    @TableField(value = "new_holder_id_card_reverse")
    private String newHolderIdCardReverse;

    @ApiModelProperty(value = "卖方身份证正面")
    @TableField(value = "old_holder_id_card_front")
    private String oldHolderIdCardFront;

    @ApiModelProperty(value = "卖方身份证反面")
    @TableField(value = "old_holder_id_card_reverse")
    private String oldHolderIdCardReverse;

    @ApiModelProperty(value = "申请者主键")
    @TableField(value = "apply_user_id")
    private String applyUserId;

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

    @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 LocalDateTime createAt;

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

    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_at")
    private LocalDateTime 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;
}

