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

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.rdc.tms.model.dto.pay.BmsBillPayFeeDetailDTO;
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;

/**
 *
 * 盘点派车单查询DTO
 *
 * @className :DriverCloseAccountBillDTO
 * @author :fanzw
 * @date :2023/4/25
 * @description :
 *
 * @version :1.2.1
 *
 */
@Data
public class DriverCloseAccountBillDTO implements Serializable {

	private static final long serialVersionUID = 4788261585754574876L;

	@ApiModelProperty(value = "支出费用单ID")
	private Long id;

	@ApiModelProperty(value = "单据编号 运单编号/派车单编号")
	private String billNo;

	@ApiModelProperty(value = "单据ID")
	private Long billId;

	@ExcelProperty(value = "派车单号")
	@ApiModelProperty(value = "派车单号")
	private String loadingBillNo;

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

	@ApiModelProperty(value = "派车单状态")
	private String statusName;

	@ExcelProperty(value = "计费单据")
	@ApiModelProperty(value = "计费单据")
	private Integer feeCltType;

	@ExcelProperty(value = "计费单据")
	@ApiModelProperty(value = "计费单据")
	private String feeCltTypeName;

	@ApiModelProperty(value = "货主ID")
	private Long cargoOwnerId;

	@ApiModelProperty(value = "货主编码")
	private String cargoOwnerCode;

	@ExcelProperty(value = "货主")
	@ApiModelProperty(value = "货主名称")
	private String cargoOwnerName;

	@ApiModelProperty(value = "结算部门ID")
	private String settlementDepartmentId;

	@ApiModelProperty(value = "结算部门编码")
	private String settlementDepartmentCode;

	@ExcelProperty(value = "结算部门名称")
	@ApiModelProperty(value = "结算部门名称")
	private String settlementDepartment;

	@ExcelProperty(value = "调度日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "调度时间")
	private Date loadingDate;

	@ExcelProperty(value = "调度审核日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "调度审核时间")
	private Date loadingAuditDate;

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

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

	@ExcelProperty(value = "站点线路")
	@ApiModelProperty(value = "站点线路")
	private String stationLines;

	@ApiModelProperty(value = "地图公里数")
	private BigDecimal totalMileageMap;

	@ExcelProperty(value = "提货区域")
	@ApiModelProperty(value = "提货区域")
	private String pickUpAreas;

	@ExcelProperty(value = "配送区域")
	@ApiModelProperty(value = "配送区域")
	private String deliveryAreas;

	@ApiModelProperty(value = "支出件数")
	private BigDecimal totalPayPcs;

	@ApiModelProperty(value = "支出体积")
	private BigDecimal totalPayVolume;

	@ApiModelProperty(value = "支出重量")
	private BigDecimal totalPayWeight;

	@ApiModelProperty(value = "支出公里数")
	private BigDecimal totalPayMileage;

	@ApiModelProperty(value = "支出地图公里数")
	private BigDecimal totalPayMileageMap;

	@ApiModelProperty(value = "支出计费类型 10:按运单计费  20:按派车单计费 30:未匹配到价格")
	private Integer payFeeCltType;

	@ApiModelProperty(value = "支出计费类型 10:按运单计费  20:按派车单计费 30:未匹配到价格")
	private String payFeeCltTypeName;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	@ExcelProperty(value = "车辆归属")
	@ApiModelProperty(value = "车辆归属")
	private String vehicleAscriptionName;

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

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

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

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

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

	@ExcelProperty(value = "载重")
	@ApiModelProperty(value = "载重(kg)")
	private BigDecimal vehicleWeight;

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

	@ExcelProperty(value = "载方")
	@ApiModelProperty(value = "载方(m³)")
	private BigDecimal vehicleVolume;

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

	@ExcelProperty(value = "派车单备注")
	@ApiModelProperty(value = "备注")
	private String memo;

	@ApiModelProperty(value = "同步状态")
	private Integer synchronousStatus;

	@ExcelProperty(value = "同步状态")
	@ApiModelProperty(value = "同步状态")
	private String synchronousStatusName;

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

	@ApiModelProperty(value = "同步失败原因")
	private String synchronousFailReason;

	@ApiModelProperty(value = "支出计费状态 1：计费成功，2：计费失败")
	private Integer costStatus;

	@ExcelProperty(value = "支出计费状态")
	@ApiModelProperty(value = "计费状态 1：计费成功，2：计费失败")
	private String costStatusName;

	@ExcelProperty(value = "支出计费时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@ApiModelProperty(value = "支出计费时间")
	private Date costDate;

	@ExcelProperty(value = "支出计费合同")
	@ApiModelProperty(value = "支出计费合同")
	private String costContract;

	@ApiModelProperty(value = "支出核算状态 0:未核算，1：核算待提交，2：核算审批中，3:核算完成 ")
	private Integer settlementStatus;

	@ExcelProperty(value = "支出核算状态")
	@ApiModelProperty(value = "支出核算状态 0:未核算，1：核算待提交，2：核算审批中，3:核算完成 ")
	private String settlementStatusName;

	@ExcelProperty(value = "支出核算时间")
	@ApiModelProperty(value = "支出核算时间")
	private Date settlementDate;

	@ApiModelProperty(value = "支出总价 类型为支出的含税金额")
	private BigDecimal payAmount;

	@ApiModelProperty(value = "合同支出总价 类型为支出的来源是价格表生成 含税金额")
	private BigDecimal contractPayAmount;

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

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

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

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

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

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

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

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

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

	@ApiModelProperty(value = "包含的运单")
	private String shipbillNoList;

	@ApiModelProperty(value = "含税金额")
	private BigDecimal taxAmt;

	@ApiModelProperty(value = "无税金额")
	private BigDecimal noTaxAmt;

	@ApiModelProperty(value = "税额")
	private BigDecimal tax;

	@ApiModelProperty(value = "运单信息")
	private List<DriverledgerShipBillDTO> shipBillList;

	@ApiModelProperty(value = "费用信息")
	private List<BmsBillPayFeeDetailDTO> feeList;

}
