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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.rdc.tms.model.dto.common.BmsBaseDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 单据 收入费用主表 Model
 *
 * @author lhb
 * @since 2023-04-10 18:57
 */
@Data
public class BmsLoadingBillIncomeFeeDTO extends BmsBaseDTO {

    @ApiModelProperty(value = "ID")
    private Long id;

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

    @ApiModelProperty(value = "派车单/运单 主键ID")
    private Long billId;

    @ApiModelProperty(value = "单据类型  运单/派车单 10 运单, 20 派车单")
    private Integer billType;

    @ApiModelProperty(value = "结算状态 CHECK_STATUS 0：未结算，1：对账提交，2：对账确认，3：结算单生成 4 结算单审核")
    private Integer checkStatus;

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

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

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

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

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

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

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

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

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

    @ApiModelProperty(value = "计费失败原因")
    private String costFailReason;

    @ApiModelProperty(value = "结算公司")
    private String settlementCompany;

    @ApiModelProperty(value = "结算公司id")
    private String settlementCompanyId;

    @ApiModelProperty(value = "结算公司编码")
    private String settlementCompanyCode;

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

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

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

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

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

    @ApiModelProperty(value = "异常状态 0:非异常 1:异常")
    private Integer abnormalStatus;

    @ApiModelProperty(value = "扩展字段1")
    private String attrStr1;

    @ApiModelProperty(value = "扩展字段2")
    private String attrStr2;

    @ApiModelProperty(value = "扩展字段3")
    private String attrStr3;

    @ApiModelProperty(value = "扩展字段4")
    private String attrStr4;

    @ApiModelProperty(value = "扩展字段5")
    private String attrStr5;

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

    @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 = "费用计算类型")
    private Integer feeCltType;

    @ApiModelProperty(value = "导入批次号")
    private String importBatchNumber;

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

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

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "启运日期")
    private Date startDate;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @ApiModelProperty(value = "来源 数据字典SOURCE 1.新增 2.excel导入 3.接口导入")
    private Integer source;

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

    @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 = "所属组织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 = "车辆规格")
    private String vehicleSpec;

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

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

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

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

    @ApiModelProperty(value = "承运商类型")
    private String carrierTypeName;

    @ApiModelProperty(value = "来源")
    private String sourceName;

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

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

    @ApiModelProperty(value = "结算状态 CHECK_STATUS 0：未结算，1：对账提交，2：对账确认，3：结算单生成 4 结算单审核")
    private String checkStatusName;

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