package com.njzscloud.supervisory.order.pojo.result;

import com.njzscloud.supervisory.biz.constant.AuditStatus;
import com.njzscloud.supervisory.biz.constant.BizObj;
import com.njzscloud.supervisory.goods.contant.MoneyStrategy;
import com.njzscloud.supervisory.order.contant.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

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

@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderPagingResult {
    // region 用户信息
    /**
     * 昵称
     */
    private String nickname;
    private Integer stationType;

    /**
     * 手机号
     */
    private String userPhone;
    private String companyName;
    private String uscc;
    private BizObj bizObj;
    // endregion
    // region 订单信息
    /**
     * 订单 Id
     */
    private Long id;
    /**
     * 对方站点 Id; 短驳单有值
     */
    private Long targetStationId;

    /**
     * 对方订单 Id; 短驳单有值
     */
    private Long targetOrderId;
    /**
     * 准运证编号
     */
    private String certificateSn;
    /**
     * 订单编号
     */
    private String sn;
    private String projectName;
    private String settlementWay;
    private String settlementWayTxt;
    private LocalDateTime checkTime;
    private LocalDateTime transTime;
    private LocalDateTime assignmentTransTime;
    private LocalDateTime assignmentDriverTime;
    private LocalDateTime driverConfirmTime;
    private String quAuditPicture;
    private String shiAuditPicture;
    /**
     * 站点 Id
     */
    private Long stationId;

    /**
     * 车道
     */
    private String lane;

    /**
     * 项目 Id
     */
    private Long projectId;

    /**
     * 装货地址 Id
     */
    private Long cargoPlaceId;

    /**
     * 清运公司 Id
     */
    private Long transCompanyId;

    /**
     * 下单人 Id; sys_user.id
     */
    private Long userId;
    /**
     * 联系人
     */
    private String contacts;

    /**
     * 联系方式
     */
    private String phone;

    /**
     * 审核状态; 字典代码：audit_status
     */
    private AuditStatus auditStatus;

    /**
     * 审核时间
     */
    private LocalDateTime shiAuditTime;
    private LocalDateTime quAuditTime;
    /**
     * 区审核人
     */
    private Long quAuditUserId;

    /**
     * 市审核人
     */
    private Long shiAuditUserId;
    /**
     * 区审核人
     */
    private String quAuditUserName;

    /**
     * 市审核人
     */
    private String shiAuditUserName;
    /**
     * 期望运输时间
     */
    private String expectTime;

    /**
     * 预估量
     */
    private String estimatedQuantity;
    /**
     * 审核备注
     */
    private String shiAuditMemo;
    private String quAuditMemo;
    private String checkerName;
    private String checkerPhone;


    /**
     * 订单类型; 字典代码：order_category
     */
    private OrderCategory orderCategory;

    /**
     * 订单状态; 字典代码：order_status
     */
    private OrderStatus orderStatus;

    /**
     * 看料员 Id; sys_user.id
     */
    private Long checkerId;

    /**
     * 看料状态; 字典代码：check_status
     */
    private CheckStatus checkStatus;

    /**
     * 车辆 Id
     */
    private Long truckId;

    /**
     * 司机 Id
     */
    private Long driverId;

    /**
     * 产品 Id; order_goods.id
     */
    private Long goodsId;

    /**
     * 优惠金额; 有正负
     */
    private BigDecimal discountMoney;

    /**
     * 手动修正金额; 有正负
     */
    private BigDecimal reviseMoney;

    /**
     * 结算金额; 正
     */
    private BigDecimal settleMoney;

    /**
     * 已退款金额
     */
    private BigDecimal refundMoney;

    /**
     * 付款方资金账户 Id
     */
    private Long payer;

    /**
     * 支付方类型; 字典代码：payer_category
     */
    private PayerCategory payerCategory;

    /**
     * 支付状态; 字典代码：payment_status
     */
    private PaymentStatus paymentStatus;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 退款时间
     */
    private LocalDateTime refundTime;

    /**
     * 客户备注
     */
    private String customerMemo;

    /**
     * 看料员备注
     */
    private String checkerMemo;

    /**
     * 装车照片
     */
    private List<String> cargoPhoto;

    /**
     * 看料照片
     */
    private List<String> checkPhoto;
    /**
     * 现场照片
     */
    private List<String> sitePhotos;
    /**
     * 进出场信息
     */
    private Long carInOutId;

    // endregion

    // region 产品信息
    /**
     * 产品类型 Id
     */
    private Long goodsCategoryId;

    /**
     * 产品 Id
     */
    private Long originGoodsId;
    private String categoryName;

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

    /**
     * 单价; 单位：元
     */
    private BigDecimal unitPrice;

    /**
     * 单位; 字典代码：unit
     */
    private String unit;

    /**
     * 计费策略; 字典代码：money_strategy
     */
    private MoneyStrategy moneyStrategy;

    private String moneyWay;

    /**
     * 计费配置 Id
     */
    private Long moneyConfigId;

    /**
     * 图片
     */
    private String picture;

    /**
     * 税率
     */
    private BigDecimal taxRate;

    /**
     * 数量
     */
    private Integer quantity;

    /**
     * 总金额; 单位：元
     */
    private BigDecimal totalMoney;
    private LocalDateTime createTime;
    // endregion

    // region 装货地址

    /**
     * 省; 代码
     */
    private String province;

    /**
     * 市; 代码
     */
    private String city;

    /**
     * 区县; 代码
     */
    private String area;

    /**
     * 乡镇街道; 代码
     */
    private String town;

    /**
     * 省; 名称
     */
    private String provinceName;

    /**
     * 市; 名称
     */
    private String cityName;

    /**
     * 区县; 名称
     */
    private String areaName;

    /**
     * 乡镇街道; 名称
     */
    private String townName;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 经度
     */
    private Double lng;

    /**
     * 纬度
     */
    private Double lat;
    // endregion

    // region 进出场信息

    /**
     * 毛重; 单位：千克
     */
    private Integer roughWeight;

    /**
     * 皮重; 单位：千克
     */
    private Integer tareWeight;

    /**
     * 净重
     */
    private Integer settleWeight;

    /**
     * 进场车头照片
     */
    private String inFrontPhoto;

    /**
     * 进场车斗照片
     */
    private String inBodyPhoto;

    /**
     * 出场车头照片
     */
    private String outFrontPhoto;

    /**
     * 出场车斗照片
     */
    private String outBodyPhoto;

    /**
     * 进场时间
     */
    private LocalDateTime inTime;

    /**
     * 出场时间
     */
    private LocalDateTime outTime;
    // endregion

    // region 车辆信息
    /**
     * 车牌号
     */
    private String licensePlate;
    private List<String> truckLicenseDate;
    private List<String> truckQualificationDate;
    /**
     * 车辆类型
     */
    private String truckCategory;
    /**
     * 行驶证
     */
    private List<String> truckLicense;
    private String truckPicture;

    /**
     * 车辆识别号
     */
    private String vnCode;

    /**
     * 车辆资质
     */
    private List<String> qualification;

    /**
     * 载重; 单位：吨
     */
    private Integer carryingCapacity;

    /**
     * 空重; 单位：吨
     */
    private Integer historyTareWeight;

    // endregion

    // region 司机信息
    /**
     * 司机姓名
     */
    private String driverName;
    /**
     * 驾驶证编号
     */
    private String drivingLicenceNo;
    private LocalDate driverLicenceStartTime;
    private LocalDate driverLicenceEndTime;
    /**
     * 手机号
     */
    private String driverPhone;

    private Long driverUserId;

    /**
     * 驾驶证
     */
    private String drivingLicence;

    /**
     * 驾驶证开始时间
     */
    private LocalDate licenceStartTime;

    /**
     * 驾驶证结束时间
     */
    private LocalDate licenceEndTime;
    // endregion

    // region 企业信息
    private String transUscc;
    private String transCompanyName;
    private String transBusinessLicense;
    private LocalDate transLicenseStartTime;
    private LocalDate transLicenseEndTime;
    private String transLegalRepresentative;
    private String transProvince;
    private String transCity;
    private String transArea;
    private String transTown;
    private String transProvinceName;
    private String transCityName;
    private String transAreaName;
    private String transTownName;
    private String transAddress;
    private Double transLng;
    private Double transLat;
    private String transContacts;
    private String transPhone;
    private String transIdcard;
    private String transIdcardStartTime;
    private String transIdcardEndTime;
    private String transIdcardFront;
    private String transIdcardBack;
    // endregion
    // region 站点信息
    /**
     * 站点名称
     */
    private String stationName;
    /**
     * 站点公司名称
     */
    private String stationCompanyName;
    private String stationAddress;
    private String stationUscc;
    private String stationContacts;
    private String stationPhone;
    private Double stationLng;
    private Double stationLat;
    private List<String> route;
    // endregion

    /**
     * 派车方式：项目-->project 平台-->platform  自选-->optional
     */
    private CarWay carWay;

    /**
     * 区审批人角色名称
     */
    private String roleName;

    /**
     * gps设备编码
     */
    private String gps;

    /**
     * 设备分类
     */
    private String localizerCategory;

}
