package com.aiotagro.cattletrade.business.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 运送清单表
 * </p>
 *
 * @author admin
 * @since 2024-12-26
 */
@Getter
@Setter
@TableName("delivery")
public class Delivery implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 订单ID（关联order表，多个订单ID用逗号分隔，如：1,2,3）
     */
    @TableField("order_id")
    private String orderId;

    /**
     * 运单号
     */
    @TableField("delivery_number")
    private String deliveryNumber;

    /**
     * 订单标题
     */
    @TableField("delivery_title")
    private String deliveryTitle;

    /**
     * 装车数量
     */
    @TableField("rated_quantity")
    private Integer ratedQuantity;

    /**
     * 供应商ID
     */
    @TableField("supplier_id")
    private String supplierId;

    /**
     * 资金方ID
     */
    @TableField("fund_id")
    private Integer fundId;

    /**
     * 司机ID
     */
    @TableField("driver_id")
    private Integer driverId;

    /**
     * 采购商ID
     */
    @TableField("buyer_id")
    private Integer buyerId;

    /**
     * 采购价格
     */
    @TableField("buyer_price")
    private Double buyerPrice;

    /**
     * 销售价格
     */
    @TableField("sale_price")
    private Double salePrice;

    /**
     * 约定单价
     */
    @TableField("firm_price")
    private Double firmPrice;

    /**
     * 状态，1-准备中，2-运输中，3-已结束
     */
    @TableField("status")
    private Integer status;

    /**
     * 车牌号
     */
    @TableField("license_plate")
    private String licensePlate;

    /**
     * 车头照片
     */
    @TableField("car_front_photo")
    private String carFrontPhoto;

    /**
     * 车尾照片
     */
    @TableField("car_behind_photo")
    private String carBehindPhoto;

    /**
     * 车视频
     */
    @TableField("car_video")
    private String carVideo;

    /**
     * 起始地
     */
    @TableField("start_location")
    private String startLocation;

    /**
     * 起始经度
     */
    @TableField("start_lat")
    private String startLat;

    /**
     * 起始纬度
     */
    @TableField("start_lon")
    private String startLon;

    /**
     * 送达目的地
     */
    @TableField("end_location")
    private String endLocation;

    /**
     *  目的地经度
     */
    @TableField("end_lat")
    private String endLat;

    /**
     * 目的地纬度
     */
    @TableField("end_lon")
    private String endLon;

    /**
     * 预计出发时间
     */
    @TableField("estimated_departure_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date estimatedDepartureTime;

    /**
     * 预计送达时间
     */
    @TableField("estimated_delivery_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date estimatedDeliveryTime;

    /**
     * 百度鹰眼终端名称（默认为车牌）
     */
    @TableField("yingyan_entity_name")
    private String yingyanEntityName;

    /**
     * 百度鹰眼最后同步时间
     */
    @TableField("yingyan_last_sync_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date yingyanLastSyncTime;

    /**
     * 实际到达时间（鹰眼自动回写）
     */
    @TableField("arrival_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date arrivalTime;

    /**
     * 登记智能耳标数
     */
    @TableField("registered_jbq_count")
    private Integer registeredJbqCount;

    /**
     * 已分配设备数量
     */
    @TableField(exist = false)
    private Integer bindJbqCount;

    /**
     * 已佩戴设备数量
     */
    @TableField(exist = false)
    private Integer wareCount;

    /**
     * 司机姓名
     */
    @TableField("driver_name")
    private String driverName;

    /**
     * 司机手机号
     */
    @TableField("driver_mobile")
    private String driverMobile;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 创建人
     */
    @TableField("created_by")
    private Integer createdBy;

    /**
     * 核验人
     */
    @TableField("check_by")
    private Integer checkBy;

    /**
     * 核验时间
     */
    @TableField("check_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date checkTime;

    /**
     * 核验视频
     */
    @TableField("check_video")
    private String checkVideo;

    /**
     * 空车过磅重量
     */
    @TableField("empty_weight")
    private String emptyWeight;

    /**
     * 装车过磅重量
     */
    @TableField("entruck_weight")
    private String entruckWeight;

    /**
     * 落地过磅重量
     */
    @TableField("landingEntruck_weight")
    private String landingEntruckWeight;

    /**
     * 司机运费（元）
     */
    @TableField("freight")
    private java.math.BigDecimal freight;

    /**
     * 检疫证号
     */
    @TableField("quarantine_tickey")
    private String quarantineTickey;

    /**
     * 检疫票
     */
    @TableField("quarantine_tickey_url")
    private String quarantineTickeyUrl;

    /**
     * 传纸质磅单（双章）
     */
    @TableField("pound_list_img")
    private String poundListImg;

    /**
     * 装车过磅视频
     */
    @TableField("entruck_weight_video")
    private String entruckWeightVideo;

    /**
     * 空车过磅视频
     */
    @TableField("empty_weight_video")
    private String emptyWeightVideo;

    /**
     * 上传装牛视频
     */
    @TableField("entruck_video")
    private String entruckVideo;

    /**
     * 控槽视频
     */
    @TableField("control_slot_video")
    private String controlSlotVideo;

    /**
     * 车辆空磅上磅车头照片
     */
    @TableField("empty_vehicle_front_photo")
    private String emptyVehicleFrontPhoto;

    /**
     * 装完牛绕车一圈视频
     */
    @TableField("cattle_loading_circle_video")
    private String cattleLoadingCircleVideo;

    /**
     * 车辆过重磅车头照片
     */
    @TableField("loaded_vehicle_front_photo")
    private String loadedVehicleFrontPhoto;

    /**
     * 车辆重磅照片
     */
    @TableField("loaded_vehicle_weight_photo")
    private String loadedVehicleWeightPhoto;

    /**
     * 驾驶员手持身份证站车头照片
     */
    @TableField("driver_id_card_photo")
    private String driverIdCardPhoto;

    /**
     * 到地纸质磅单（双章）
     */
    @TableField("destination_pound_list_img")
    private String destinationPoundListImg;

    /**
     * 到地车辆过重磅车头照片
     */
    @TableField("destination_vehicle_front_photo")
    private String destinationVehicleFrontPhoto;

    /**
     * 装牛视频
     */
    @TableField("cattle_loading_video")
    private String cattleLoadingVideo;

    /**
     * 卸牛视频
     */
    @TableField("unload_cattle_video")
    private String unloadCattleVideo;

    /**
     * 到地过磅视频
     */
    @TableField("destination_weight_video")
    private String destinationWeightVideo;

    /**
     * 主机设备编号
     */
    @TableField(exist = false)
    private String serverDeviceId;

    /**
     * 耳标设备编号
     */
    @TableField(exist = false)
    private List<String> deviceIds;

    /**
     * 是否需要核验，1：需要核验，2：不需要核验
     */
    @TableField(exist = false)
    private Integer ifCheck;

    /**
     * 预警类型
     */
    @TableField(exist = false)
    private String warningType;
    /**
     * 预警时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date warningTime;
    /**
     * 车内盘点数量
     */
    @TableField(exist = false)
    private Integer inventoryJbqCount;

    /**
     * 核验人姓名
     */
    @TableField(exist = false)
    private String checkByName;

    /**
     * 预警类型描述, 1-正常 2-盘点预警 3-距离预警
     */
    @TableField(exist = false)
    private String warningTypeDesc;

    @TableField(exist = false)
    private List<String> warningTypeList;

    /**
     * 创建人姓名
     */
    @TableField(exist = false)
    private String createByName;

    /**
     * 供应商名称
     */
    @TableField(exist = false)
    private String supplierName;

    /**
     * 资金方名称
     */
    @TableField(exist = false)
    private String fundName;

    /**
     * 采购商名称
     */
    @TableField(exist = false)
    private String buyerName;

    /**
     * 核验状态描述
     */
    @TableField(exist = false)
    private String statusDesc;

    /**
     * 耳标设备数量
     */
    @TableField(exist = false)
    private Integer earTagCount;

    /**
     * 供应商手机号（逗号分隔）
     */
    @TableField(exist = false)
    private String supplierMobile;

    /**
     * 资金方手机号
     */
    @TableField(exist = false)
    private String fundMobile;

    /**
     * 采购商手机号
     */
    @TableField(exist = false)
    private String buyerMobile;

    /**
     * 订单信息（关联查询，不存储在数据库中）
     */
    @TableField(exist = false)
    private Order orderInfo;
}
