package com.prolog.rdc.tms.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @author hongbo.pan
 * @date 2022/11/28
 */
@Data
@ApiModel("派车单地图VO")
public class LoadingBillMapVO {

    @ApiModelProperty(value = "装车单ID")
    private String loadingBillId;

    @ApiModelProperty(value = "装车单编号")
    private String loadingBillNo;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "装车单时间")
    private Date loadingBillDate;

    @ApiModelProperty(value = "分组名称")
    private String groupName;

    @ApiModelProperty(value = "装车单类型 数据字典LOADING_BILL_TYPE:10.入库类型  20.出库类型 30其他类型")
    private Integer loadingBillType;

    @ApiModelProperty(value = "调度类型 数据字典SCHEDULE_TYPE:1.自有  2.承运商")
    private Integer scheduleType;

    @ApiModelProperty(value = "承运方类型 数据字典LINE_CARRIER_TYPE:1.承运商  2.司机")
    private Integer carrierType;

    @ApiModelProperty(value = "承运方ID")
    private Long carrierId;

    @ApiModelProperty(value = "承运方编码")
    private String carrierCode;

    @ApiModelProperty(value = "承运方名称")
    private String carrierName;

    @ApiModelProperty(value = "司机ID")
    private Long driverId;

    @ApiModelProperty(value = "司机编号")
    private String driverCode;

    @ApiModelProperty(value = "司机名称")
    private String driverName;

    @ApiModelProperty(value = "司机手机号")
    private String driverPhoneNumber;

    @ApiModelProperty(value = "副司机ID")
    private String viceDriverId;

    @ApiModelProperty(value = "副司机编号")
    private String viceDriverCode;

    @ApiModelProperty(value = "副司机名称")
    private String viceDriverName;

    @ApiModelProperty(value = "副司机手机号")
    private String viceDriverPhoneNumber;

    @ApiModelProperty(value = "车辆ID")
    private Long vehicleId;

    @ApiModelProperty(value = "车辆编号")
    private String vehicleCode;

    @ApiModelProperty(value = "车辆名称")
    private String vehicleName;

    @ApiModelProperty(value = "车牌号")
    private String vehiclePlateNumber;

    @ApiModelProperty(value = "车型ID")
    private Long vehicleTypeId;

    @ApiModelProperty(value = "车型编码")
    private String vehicleTypeCode;

    @ApiModelProperty(value = "车型名称")
    private String vehicleTypeName;

    @ApiModelProperty(value = "送货员ID")
    private Long deliverymanId;

    @ApiModelProperty(value = "送货员编号")
    private String deliverymanCode;

    @ApiModelProperty(value = "送货员名称")
    private String deliverymanName;

    @ApiModelProperty(value = "送货员手机号")
    private String deliverymanPhoneNumber;

    @ApiModelProperty(value = "副送货员ID")
    private String viceDeliverymanId;

    @ApiModelProperty(value = "副送货员编号")
    private String viceDeliverymanCode;

    @ApiModelProperty(value = "副送货员名称")
    private String viceDeliverymanName;

    @ApiModelProperty(value = "副送货员手机号")
    private String viceDeliverymanPhoneNumber;

    @ApiModelProperty(value = "运单数")
    private Integer shipbillNumber;

    @ApiModelProperty(value = "客户数")
    private Integer customerNumber;

    @ApiModelProperty(value = "总里程数")
    private BigDecimal totalMileage;

    @ApiModelProperty(value = "总件数")
    private BigDecimal totalPcs;

    @ApiModelProperty(value = "总体积")
    private BigDecimal totalVolume;

    @ApiModelProperty(value = "总重量")
    private BigDecimal totalWeight;

    @ApiModelProperty(value = "实际总件数")
    private BigDecimal actualTotalPcs;

    @ApiModelProperty(value = "实际总体积")
    private BigDecimal actualTotalVolume;

    @ApiModelProperty(value = "实际总重量")
    private BigDecimal actualTotalWeight;

    @ApiModelProperty(value = "总整件数")
    private BigDecimal totalWholePiece;

    @ApiModelProperty(value = "总拼箱数")
    private BigDecimal totalLclPiece;

    @ApiModelProperty(value = "配载体积装载率")
    private String volumeLoadingRate;

    @ApiModelProperty(value = "配载重量装载率")
    private String weightLoadingRate;

    @ApiModelProperty(value = "装车人员ID")
    private String loaderId;

    @ApiModelProperty(value = "装车人员名称")
    private String loaderName;

    @ApiModelProperty(value = "提货站点数")
    private Long pickupStations;

    @ApiModelProperty(value = "送货站点数")
    private Long deliveryStations;

    @ApiModelProperty(value = "总站点数")
    private Long totalStations;

    @ApiModelProperty(value = "冷链运单数")
    private Long coldShipbillNumber;

    @ApiModelProperty(value = "紧急运单数")
    private Long urgentShipbillNumber;

    @ApiModelProperty(value = "总货主数")
    private Long cargoOwnerNumber;

    @Valid
    @NotNull(message = "站点明细不能为空")
    @Size(min = 1, message = "站点明细不能为空集合")
    @ApiModelProperty(value = "站点明细")
    private List<LoadingBillDetailMapVO> loadingBillDetailMapList;
}
