package com.sckw.transport.model.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.math3.util.RandomPivotingStrategy;

import java.io.Serial;
import java.io.Serializable;

/**
 * @author :chenXiaoFei
 * @version :1.0
 * @description : 物流订单详情返回参数
 * @create :2025-11-11 14:33:00
 */
@Data
public class LogisticsOrderDetailResp implements Serializable {
    @Serial
    private static final long serialVersionUID = 4964311980474791569L;
    /**
     * 合同信息
     */
    @Schema(description = "合同信息")
    private ContractInfoVO contractInfoVO;

    /**
     * 单位信息
     */
    @Schema(description = "单位信息")
    private UnitInfoVO unitInfoVO;
    /**
     * 货物信息
     */
    @Schema(description = "货物信息")
    private GoodsInfoVO goodsInfoVO;

    /**
     * 装卸货信息
     */
    @Schema(description = "装卸货信息")
    private LoadingInfoVO loadingInfoVO;

    /**
     * 履约信息
     */
    @Schema(description = "履约信息")
    private PerformanceInfoVO performanceInfoVO;
    /**
     * 物流订单信息
     */
    @Schema(description = "物流订单信息")
    private LogisticOrderInfo logisticOrderInfo;


    @Data
    public static class ContractInfoVO implements Serializable{
        @Serial
        private static final long serialVersionUID = 572103438745722443L;
        /**
         * 物流合同id
         */
        @Schema(description = "物流合同id")
        private Long contractId;
        /**
         * 物流合同编号
         */
        @Schema(description = "物流合同编号")
        private String contractNo;
        /**
         * 物流合同名称
         */
        @Schema(description = "物流合同名称")
        private String contractName;
    }
    @Data
    public static class UnitInfoVO implements Serializable{
        @Serial
        private static final long serialVersionUID = 4016114207957759200L;
        /**
         * 托运单位id
         */
        @Schema(description = "托运单位id")
        private String consignUnitId;
        /**
         * 托运单位名称
         */
        @Schema(description = "托运单位名称")
        private String consignUnitName;
        /**
         * 托运联系电话
         */
        @Schema(description = "托运联系电话")
        private String consignUnitPhone;
        /**
         * 承运单位id
         */
        @Schema(description = "承运单位id")
        private String carriageUnitId;
        /**
         * 承运单位名称
         */
        @Schema(description = "承运单位名称")
        private String carriageUnitName;
        /**
         * 承运联系电话
         */
        @Schema(description = "承运联系电话")
        private String carriageUnitPhone;
    }
    @Data
    public static class GoodsInfoVO implements Serializable{
        @Serial
        private static final long serialVersionUID = -7221514366256142223L;
        /**
         * 商品名称
         */
        @Schema(description = "商品名称")
        private String goodsName;
        /**
         * 运输单价
         */
        @Schema(description = "运输单价")
        private String unitPrice;
        /**
         * 订单总量
         */
        @Schema(description = "订单总量")
        private String orderAmount;
        /**
         * 运输费用 （运输单价*下单量）
         */
        @Schema(description = "运输费用")
        private String carriageCost;
    }
    @Data
    public static class LoadingInfoVO implements Serializable{
        @Serial
        private static final long serialVersionUID = 2756355297144901998L;
        /**
         * 装货地址
         */
        @Schema(description = "装货地址")
        private String loadAddress;
        /**
         * 卸货地址
         */
        @Schema(description = "卸货地址")
        private String unloadAddress;
        /**
         * 卸货联系人
         */
        @Schema(description = "卸货联系人")
        private String unloadContacts;
        /**
         * 卸货联系电话
         */
        @Schema(description = "卸货联系电话")
        private String unloadPhone;
        /**
         * 参考距离
         */
        @Schema(description = "参考距离")
        private String  referenceDistance;
    }
    @Data
    public static class PerformanceInfoVO implements Serializable{
        @Serial
        private static final long serialVersionUID = 910241778405169469L;
        /**
         * 计费方式
         */
        @Schema(description = "计费方式")
        private String billingMode;
        /**
         * 计费方式描述
         */
        @Schema(description = "计费方式描述")
        private String billingModeDesc;
        /**
         * 累计完成车次
         */
        @Schema(description = "累计完成车次")
        private String completedCarNum;
        /**
         * 已接单量
         */
        @Schema(description = "已接单量")
        private String orderAmount;
        /**
         * 累计装货量
         */
        @Schema(description = "累计装货量")
        private String loadAmount;
        /**
         * 累计卸货量
         */
        @Schema(description = "累计卸货量")
        private String unloadAmount;
        /**
         * 累计运费
         */
        @Schema(description = "累计运费")
        private String totalCarriageCost;
        /**
         * 订单余量
         */
        @Schema(description = "订单余量")
        private String surplusAmount;
    }
    @Data
    public static class LogisticOrderInfo implements Serializable {
        @Serial
        private static final long serialVersionUID = 2605319098769354575L;
        /**
         * 物流订单状态
         */
        @Schema(description = "物流订单状态")
        private String logisticsOrderStatus;
        /**
         * 订单状态描述
         */
        @Schema(description = "订单状态描述")
        private String logisticsOrderStatusDesc;

        /**
         * 开始时间
         */
        @Schema(description = "开始时间")
        private String  startTime;
        /**
         * 结束时间
         */
        @Schema(description = "结束时间")
        private String  endTime;

    }
}
