package com.prolog.rdc.tms.app.model.dto;

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 java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author yaohai
 * @version v1.0.0
 * @since 2023/08/28 14:04
 **/
@Data
@ApiModel("司机版APP-导航派车单列表查询DTO")
public class NavigationLoadingBillDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @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 = "仓库ID")
    private Long branchId;

    @ApiModelProperty(value = "仓库编码")
    private String branchCode;

    @ApiModelProperty(value = "仓库名称")
    private String branchName;

    @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 = "设备类型  数据字典 DEVICE_TYPE  1. GPS设备   2.    冷链设备")
    private Integer deviceType;

    @ApiModelProperty(value = "设备ID")
    private Long deviceId;

    @ApiModelProperty(value = "设备编码")
    private String deviceCode;

    @ApiModelProperty(value = "设备名称")
    private String deviceName;

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

    @ApiModelProperty(value = "待完成数")
    private Integer unShipbillNumber;

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

    @ApiModelProperty(value = "总站点数")
    private Integer siteNumber;

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

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

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

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

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

    @ApiModelProperty(value = "装车单状态 数据字典：LOADING_BILL_STATUS:10未审核 20已审核")
    private Integer status;

    @ApiModelProperty(value = "备注")
    private String memo;

    @ApiModelProperty(value = "所属组织ID")
    private Long organizationId;

    @ApiModelProperty(value = "所属组织编码")
    private String organizationCode;

    @ApiModelProperty(value = "所属组织名称")
    private String organizationName;

    @ApiModelProperty(value = "所属部门ID")
    private String departmentId;

    @ApiModelProperty(value = "所属部门编码")
    private String departmentCode;

    @ApiModelProperty(value = "所属部门名称")
    private String departmentName;

    @ApiModelProperty(value = "企业ID")
    private Long enterpriseId;

    @ApiModelProperty(value = "企业名称")
    private String enterpriseName;

    @ApiModelProperty(value = "字符属性扩展1")
    private String extStr1;

    @ApiModelProperty(value = "字符属性扩展2")
    private String extStr2;

    @ApiModelProperty(value = "字符属性扩展3")
    private String extStr3;

    @ApiModelProperty(value = "字符属性扩展4")
    private String extStr4;

    @ApiModelProperty(value = "字符属性扩展5")
    private String extStr5;

    @ApiModelProperty(value = "数值属性扩展1")
    private BigDecimal extNum1;

    @ApiModelProperty(value = "数值属性扩展2")
    private BigDecimal extNum2;

    @ApiModelProperty(value = "数值属性扩展3")
    private BigDecimal extNum3;

    @ApiModelProperty(value = "数值属性扩展4")
    private BigDecimal extNum4;

    @ApiModelProperty(value = "数值属性扩展5")
    private BigDecimal extNum5;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "日期属性扩展1")
    private Date extDate1;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "日期属性扩展2")
    private Date extDate2;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "日期属性扩展3")
    private Date extDate3;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "日期属性扩展4")
    private Date extDate4;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "日期属性扩展5")
    private Date extDate5;

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

    @ApiModelProperty(value = "创建人")
    private String createperson;

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

    @ApiModelProperty(value = "修改人")
    private String updateperson;

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

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

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

    @ApiModelProperty(value = "签收状态数据字典SIGN_IN_STATUS:S已签收P部分签收N未签收，默认N")
    private String signInStatus;

    @ApiModelProperty(value = "暂存位")
    private String stagingLocations;

    @ApiModelProperty(value = "车辆类别数据字典VEHICLE_TYPE_CATEGORY：1冷藏车、2平顶车、3厢式货车")
    private String vehicleTypeCategory;

    @ApiModelProperty(value = "车辆设备ID")
    private String vehicleDeviceId;

    @ApiModelProperty(value = "车辆设备CODE")
    private String vehicleDeviceCode;

    @ApiModelProperty(value = "车辆设备名称")
    private String vehicleDeviceName;

    @ApiModelProperty(value = "车辆隶属机构ID")
    private String vehicleAffiliationId;

    @ApiModelProperty(value = "车辆隶属机构CODE")
    private String vehicleAffiliationCode;

    @ApiModelProperty(value = "车辆隶属机构名称")
    private String vehicleAffiliationName;

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

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

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

    @ApiModelProperty(value = "托运经办人")
    private String consignmentAgen;

    @ApiModelProperty(value = "经办人联系方式")
    private String agenContactPhoneNumber;

    @ApiModelProperty(value = "身份证")
    private String driverIdCard;

    @ApiModelProperty(value = "图片")
    private String pictureUrl;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "托运交接时间")
    private Date consignmentHandoverDate;

    @ApiModelProperty(value = "扫描状态 数据字典SCAN_STATUS:10初始 20已装车扫描")
    private Integer scanStatus;

    @ApiModelProperty(value = "容器id")
    private String containerId;

    @ApiModelProperty(value = "容器编号")
    private String containerCode;

    @ApiModelProperty(value = "容器名称")
    private String containerName;

    @ApiModelProperty(value = "配送线路")
    private String deliveryLines;

    @ApiModelProperty(value = "地图总里程")
    private BigDecimal totalMileageMap;

    @ApiModelProperty(value = "系统标志")
    private String carrierSysFlag;

    @ApiModelProperty(value = "车辆归属")
    private Integer vehicleAscription;

    @ApiModelProperty(value = "总发货件数")
    private BigDecimal totalDeliveryPcs;

    @ApiModelProperty(value = "总发货体积")
    private BigDecimal totalDeliveryVolume;

    @ApiModelProperty(value = "总发货重量")
    private BigDecimal totalDeliveryWeight;

    @ApiModelProperty(value = "容器是否随车 数据字典:WHETHER 1是 0否")
    private BigDecimal containerWithVehicle;

    @ApiModelProperty(value = "超限单数")
    private Long transfiniteBillNumber;

    @ApiModelProperty(value = "是否过磅 0:否 1:是")
    private Integer isWeigh;

    @ApiModelProperty(value = "任务明细")
    private List<NavigationLoadingBillDetailDTO> detailDTOS;

    @ApiModelProperty(value = "起点市")
    private String startCity;

    @ApiModelProperty(value = "终点市")
    private String endtCity;

}
