package com.sckw.transport.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * @author zk
 * @desc MongoDB-物流订单信息
 * @date 2023/7/8
 */
@Data
public class SckwLogisticsOrderVO {


    /**
     * 物流订单ID
     */
    private Long lOrderId;

    /**
     * 物流订单编号
     */
    private String lOrderNo;

    /**
     * 分包上级物流订单id
     */
    private Long lOrderPid;

    /**
     * 单据下所有的id(包含一二三级订单id“,”隔开)
     */
    private String lOrderPids;

    /**
     * 对账是否绑定 0未绑定 1已绑定
     */
    private String bindStatus;


    /**
     * 交易订单id（kwo_trade_order）
     */
    private Long tOrderId;

    /**
     * 交易订单编号（kwo_trade_order）
     */
    private String tOrderNo;

    /**
     * 物流订单类型（1 贸易订单生成物流订单、2 自建物流订单）
     */
    private Integer type;

    /**
     * 结算周期(周结、月结、季结)
     */
    private Long settlementCycle;

    /**
     * 结算周期(周结、月结、季结)
     */
    private String settlementCycleLabel;

    /**
     * 运价
     */
    private BigDecimal price;

    /**
     * 运价方式(元/吨、元/车）
     */
    private Long priceType;

    /**
     * 已委托量
     */
    private BigDecimal amount;

    /**
     * 单位（吨、方、箱、件）
     */
    private String unit;

    /**
     * 单位（吨、方、箱、件）
     */
    private String unitLabel;

    /**
     * 合理损耗
     */
    private BigDecimal loss;

    /**
     * 合理损耗单位(‰/kG)
     */
    private String lossUnit;
    /**
     * 合理损耗单位(‰/kG)
     */
    private String lossUnitLabel;

    /**
     * 商品价值（扣亏货值）
     */
    private BigDecimal goodsPrice;

    /**
     * 商品价值（扣亏货值）单位
     */
    private String goodsPriceUnit;

    /**
     * 商品价值（扣亏货值）单位
     */
    private String goodsPriceUnitLabel;

    /**
     * 卸货日期
     */
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date unloadTime;

    /**
     * 装货日期
     */
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    private Date loadTime;

    /**
     * 分包量
     */
    private BigDecimal subcontractAmount;

    /**
     * 已委托量（自己承运量）
     */
    private BigDecimal entrustAmount;

    /**
     * 卸货量（自己承运总卸货量）
     */
    private BigDecimal unloadAmount;

    /**
     * 装货量（自己承运总装货量）
     */
    private BigDecimal loadAmount;

    /**
     * 忽略剩余量
     */
    private BigDecimal ignoreAmount;

    /**
     * 亏吨量（自己承运总亏吨量）
     */
    private BigDecimal deficitAmount;

    /**
     * 亏吨扣款（自己承运总亏吨扣款）
     */
    private BigDecimal deficitPrice;

    /**
     * 总卸货量（自己承运总卸货量+分包承运总卸货量）
     */
    private BigDecimal totalUnloadAmount;

    /**
     * 总装货量（自己承运总装货量+分包承运总装货量）
     */
    private BigDecimal totalLoadAmount;

    /**
     * 总亏吨量（自己承运总亏吨量+分包承运总亏吨量）
     */
    private BigDecimal totalDeficitAmount;

    /**
     * 总亏吨扣款（自己承运总亏吨扣款+分包承运总亏吨扣款）
     */
    private BigDecimal totalDeficitPrice;

    /**
     * 付款方式(预付款、线下支付、第三方支付）
     */
    private Long payment;

    /**
     * 付款方式(预付款、线下支付、第三方支付）
     */
    private String paymentLabel;

    /**
     * 发票税率（%）
     */
    private BigDecimal taxRate;

    /**
     * 备注
     */
    private String remark;

    /**
     * 业务状态
     */
    private String status;
    /**
     * 业务状态 label
     */
    private String statusLabel;

    /**
     * 企业id
     */
    private Long entId;

    /**
     * 企业名称
     */
    private String firmName;

    /**
     * 商品主键
     */
    private Long goodsId;

    /**
     * 商品编号
     */
    private String goodsCode;

    /**
     * 商品名称
     */
    private String goodsName;

    /**
     * 商品类型
     */
    private String goodsType;

    /**
     * 商品行业
     */
    private Long goodsIndustry;

    /**
     * 商品尺寸大小
     */
    private String goodsSpec;

    /**
     * 合同主键
     */
    private String contractId;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 合同mc
     */
    private String contractName;

    /**
     * 合同签约方式
     */
    private String contractSigningWay;

    /**
     * 托运企业主键ID
     */
    private Long checkId;

    /**
     * 托运企业主键ID
     */
    private Long checkEntId;

    /**
     * 托运一级企业主键ID
     */
    private Long checkTopEntId;

    /**
     * 托运企业名称
     */
    private String checkFirmName;

    /**
     * 托运企业联系人
     */
    private String checkContacts;

    /**
     * 托运企业联系电话
     */
    private String checkPhone;

    /**
     * 承运企业主键ID
     */
    private Long carrierId;

    /**
     * 承运企业主键ID
     */
    private Long carrierEntId;

    /**
     * 承运企业主键ID
     */
    private Long carrierTopEntId;

    /**
     * 承运企业名称
     */
    private String carrierFirmName;

    /**
     * 承运企业联系人
     */
    private String carrierContacts;

    /**
     * 承运企业联系电话
     */
    private String carrierPhone;

    /**
     * 发货单位
     */
    private String shipmentsUnitEntId;

    /**
     * 发货单位
     */
    private String shipmentsUnit;

    /**
     * 收货单位
     */
    private String receiveGoodsUnitEntId;

    /**
     * 收货单位
     */
    private String receiveGoodsUnit;

    /**
     * 装货地址类型
     */
    private Long loadType;

    /**
     * 装货联系人姓名
     */
    private String loadContacts;

    /**
     * 装货联系电话
     */
    private String loadPhone;

    /**
     * 装货所在地区
     */
    private Integer loadCityCode;

    /**
     * 装货所属区域名称
     */
    private String loadCityName;

    /**
     * 装货详细地址
     */
    private String loadDetailAddress;

    /**
     * 装货纬度
     */
    private String loadLat;

    /**
     * 装货纬度
     */
    private String loadLng;

    /**
     * 卸货地址类型
     */
    private Long unloadType;

    /**
     * 卸货联系人姓名
     */
    private String unloadContacts;

    /**
     * 卸货联系电话
     */
    private String unloadPhone;

    /**
     * 卸货所在地区
     */
    private Integer unloadCityCode;

    /**
     * 卸货所属区域名称
     */
    private String unloadCityName;

    /**
     * 卸货详细地址
     */
    private String unloadDetailAddress;

    /**
     * 卸货纬度
     */
    private String unloadLat;

    /**
     * 卸货纬度
     */
    private String unloadLng;

    /**
     * 创建人主键id
     */
    private Long createBy;

    /**
     * 创建人姓名
     */
    private String createByName;

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

    /**
     * 更新人主键id
     */
    private Long updateBy;

    /**
     * 更新人姓名
     */
    private String updateByName;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 是否删除（0未删除，1删除）
     */
    private String delFlag;

    /**
     * 车辆运单编号
     */
    private String wOrderNo;

    /**
     * 分配的承运量
     */
    private BigDecimal carryingCapacity;

    /**
     * 计费方式
     */
    private String billingMode;
    /**
     * 计费方式
     */
    private String billingModeLabel;

    /**
     * 计划开始时间
     */
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate startTime;
    /**
     * 计划结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate endTime;

    /**
     * 多装货地4.2
     */
    private List<String> loadNames;

    private List<String> loadAddresses;


    /**
     * 多卸货地4.2
     */
    private List<String> unloadNames;

    private List<String> unloadAddresses;


    /**
     * 多装货地4.2
     */
    private List<LoadAddressVo> loading;

    private List<UnLoadAddressVo> unloading;
}
