package com.aiotagro.cattletrade.business.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.List;

/**
 * 运送清单创建DTO
 * 
 * @author System
 * @date 2025-10-11
 */
@Data
public class DeliveryCreateDto {
    /** 关联订单ID */
    private Integer orderId;
    
    /**
     * 发货方ID
     */
    private Integer shipperId;
    
    /**
     * 采购方ID
     */
    private Integer buyerId;
    
    /**
     * 车牌号
     */
    @NotBlank(message = "车牌号不能为空")
    private String plateNumber;
    
    /**
     * 司机ID（从司机表查询）
     */
    private Integer driverId;
    
    /**
     * 司机姓名
     */
    @NotBlank(message = "司机姓名不能为空")
    private String driverName;
    
    /**
     * 司机电话
     */
    @NotBlank(message = "司机电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String driverPhone;
    
    /**
     * 主机设备ID
     */
    private Integer serverId;
    
    /**
     * 耳标设备ID列表
     */
    private List<Integer> eartagIds;
    
    /**
     * 项圈设备ID列表
     */
    private List<Integer> collarIds;
    
    /**
     * 预计出发时间
     */
    @NotNull(message = "预计出发时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date estimatedDepartureTime;
    
    /**
     * 预计到达时间
     */
    @NotNull(message = "预计到达时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date estimatedArrivalTime;
    
    /**
     * 起点地址
     */
    @NotBlank(message = "起点地址不能为空")
    private String startLocation;
    /** 起点经度 */
    private String startLon;
    /** 起点纬度 */
    private String startLat;
    
    /**
     * 目的地地址
     */
    @NotBlank(message = "目的地地址不能为空")
    private String endLocation;
    /** 目的地经度 */
    private String endLon;
    /** 目的地纬度 */
    private String endLat;
    
    /**
     * 牛只数量
     */
    @NotNull(message = "牛只数量不能为空")
    @Min(value = 1, message = "牛只数量至少为1")
    private Integer cattleCount;
    
    /**
     * 检疫证号
     */
    private String quarantineCertNo;
    
    /**
     * 备注
     */
    @Size(max = 500, message = "备注不能超过500字")
    private String remark;

    /** 空车过磅重量 */
    private String emptyWeight;
    /** 装车过磅重量 */
    private String entruckWeight;
    /** 落地过磅重量 */
    private String landingEntruckWeight;
    
    /**
     * 检疫票照片
     */
    private String quarantineTickeyUrl;
    
    /**
     * 传纸质磅单（双章）
     */
    private String poundListImg;
    
    /**
     * 车辆空磅上磅车头照片
     */
    private String emptyVehicleFrontPhoto;
    
    /**
     * 车辆过重磅车头照片
     */
    private String loadedVehicleFrontPhoto;
    
    /**
     * 车辆重磅照片
     */
    private String loadedVehicleWeightPhoto;
    
    /**
     * 驾驶员手持身份证站车头照片
     */
    private String driverIdCardPhoto;
    
    /**
     * 到地纸质磅单（双章）
     */
    private String destinationPoundListImg;
    
    /**
     * 到地车辆过重磅车头照片
     */
    private String destinationVehicleFrontPhoto;
    
    /**
     * 装车过磅视频
     */
    private String entruckWeightVideo;
    
    /**
     * 空车过磅视频
     */
    private String emptyWeightVideo;
    
    /**
     * 装牛视频
     */
    private String cattleLoadingVideo;
    
    /**
     * 控槽视频
     */
    private String controlSlotVideo;
    
    /**
     * 装完牛绕车一圈视频
     */
    private String cattleLoadingCircleVideo;
    
    /**
     * 卸牛视频
     */
    private String unloadCattleVideo;
    
    /**
     * 到地过磅视频
     */
    private String destinationWeightVideo;
}

