package cn.iocoder.yudao.module.order.dto;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 根据自编号的维度统计数据：
 * 1.是否结算：结算节点状态
 * 2.NO. 柜号：自编号，非货柜号
 * 3.应收款：自编号下所有订单的（收费数据*原价）+其他费用
 * 4.目的港实收金额：统计自编号下到付的费用明细累加(到付)
 * 5.中国实收金额：统计自编号下所有订单预付费用明细累加(预付)
 * 6.折扣：自编号下所有订单（所有品名线路原始价格*收费数据）-（成交单价*收费数据）
 */
@Data
@ApiModel("自编号费用汇总")
public class ContainerNumberSummaryDto {


    @ExcelIgnore
    @ApiModelProperty(value = "实收运费货币分组列表")
    private List<FeeGroupDto> netReceiptsFreightFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收运费(货币分组列表转换字符串)")
    private String netReceiptsFreightFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "实收运费总额(目的地货币换算)")
    private BigDecimal totalNetReceiptsFreightFee = BigDecimal.ZERO; // 实收运费总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "应收运费货币分组列表")
    private List<FeeGroupDto> receivableFreightFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "应收运费(货币分组列表转换字符串)")
    private String receivableFreightFeeGroup;

    @ExcelProperty(value = "应收运费总额", index = 2)
    @ApiModelProperty(value = "应收运费总额(目的地货币换算)")
    private BigDecimal totalReceivableFreightFee = BigDecimal.ZERO; // 应收运费总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付运费货币分组列表")
    private List<FeeGroupDto> netReceiptsCollectFreightFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付运费(货币分组列表转换字符串)")
    private String netReceiptsCollectFreightFeeGroup;

    @ExcelProperty(value = "实收到付运费", index = 5)
    @ApiModelProperty(value = "实收到付运费(目的地货币换算)")
    private BigDecimal totalNetReceiptsCollectFreightFee = BigDecimal.ZERO; // 实收到付运费总额

    @ExcelIgnore
    @ApiModelProperty(value = "实收预付运费货币分组列表")
    private List<FeeGroupDto> netReceiptsAdvanceFreightFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付运费(货币分组列表转换字符串)")
    private String netReceiptsAdvanceFreightFeeGroup;

    @ExcelProperty(value = "实收预付运费", index = 9)
    @ApiModelProperty(value = "实收预付运费总额(目的地货币换算)")
    private  BigDecimal totalNetReceiptsAdvanceFreightFee = BigDecimal.ZERO;

    @ExcelIgnore
    @ApiModelProperty(value = "运费优惠金额货币分组列表")
    private List<FeeGroupDto> discountFreightFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "运费优惠金额(货币分组列表转换字符串)")
    private String discountFreightFeeGroup;


    @ExcelProperty(value = "运费优惠金额", index = 13)
    @ApiModelProperty(value = "运费优惠金额(目的地货币换算)")
    private BigDecimal discountFreightFee;


    @ExcelIgnore
    @ApiModelProperty(value = "实收清关费货币分组列表")
    private List<FeeGroupDto> netReceiptsClearanceFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收清关费(货币分组列表转换字符串)")
    private String netReceiptsClearanceFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "实收清关费总额(目的地货币换算)")
    private BigDecimal totalNetReceiptsClearanceFee = BigDecimal.ZERO; // 应收清关费总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "应收清关费货币分组列表")
    private List<FeeGroupDto> receivableClearanceFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "应收清关费(货币分组列表转换字符串)")
    private String receivableClearanceFeeGroup;

    @ExcelProperty(value = "运费优惠金额", index = 3)
    @ApiModelProperty(value = "应收清关费总额(目的地货币换算)")
    private BigDecimal totalReceivableClearanceFee = BigDecimal.ZERO; // 应收清关费总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付清关费货币分组列表")
    private List<FeeGroupDto> netReceiptsCollectClearanceFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付清关费(货币分组列表转换字符串)")
    private String netReceiptsCollectClearanceFeeGroup;

    @ExcelProperty(value = "实收到付清关费", index = 6)
    @ApiModelProperty(value = "实收到付清关费(目的地货币换算)")
    private BigDecimal totalNetReceiptsCollectClearanceFee = BigDecimal.ZERO; // 实收到付清关费总额

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付清关费货币分组列表")
    private List<FeeGroupDto> netReceiptsAdvanceClearanceFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收预付清关费(货币分组列表转换字符串)")
    private String netReceiptsAdvanceClearanceFeeGroup;

    @ExcelProperty(value = "实收预付清关费", index = 10)
    @ApiModelProperty(value = "实收预付清关费(目的地货币换算)")
    private BigDecimal totalNetReceiptsAdvanceClearanceFee = BigDecimal.ZERO; // 实收预付清关费总额

    @ExcelIgnore
    @ApiModelProperty(value = "清关费优惠金额货币分组列表")
    private List<FeeGroupDto> discountClearanceFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "清关费优惠金额(货币分组列表转换字符串)")
    private String discountClearanceFeeGroup;

    @ExcelProperty(value = "清关费优惠金额", index = 14)
    @ApiModelProperty(value = "清关费优惠金额(目的地货币换算)")
    private BigDecimal discountClearanceFee;

    @ExcelIgnore
    @ApiModelProperty(value = "实收额外费用货币分组列表")
    private List<FeeGroupDto> netReceiptsOtherFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收额外费用(货币分组列表转换字符串)")
    private String netReceiptsOtherFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "实收额外费用(目的地货币换算)")
    private BigDecimal totalNetReceiptsOtherFee = BigDecimal.ZERO; // 实收额外费用总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "应收额外费用货币分组列表")
    private List<FeeGroupDto> receivableOtherFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "应收额外费用(货币分组列表转换字符串)")
    private String receivableOtherFeeGroup;

    @ExcelProperty(value = "应收额外费用", index = 4)
    @ApiModelProperty(value = "应收额外费用(目的地货币换算)")
    private BigDecimal totalReceivableOtherFee = BigDecimal.ZERO; // 应收额外费用总额(目的地货币换算)

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付额外费用货币分组列表")
    private List<FeeGroupDto> netReceiptsCollectOtherFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收到付额外费用(货币分组列表转换字符串)")
    private String netReceiptsCollectOtherFeeGroup;

    @ExcelProperty(value = "实收到付额外费用", index = 7)
    @ApiModelProperty(value = "实收到付额外费用(目的地本币换算)")
    private BigDecimal totalNetReceiptsCollectOtherFee = BigDecimal.ZERO; // 实收到付额外费用总额

    @ExcelProperty(value = "实收到付额外费用", index = 8)
    @ApiModelProperty(value = "实收到副付额外费用(目的地副币换算)")
    private BigDecimal totalNetReceiptsCollectAssistantOtherFee = BigDecimal.ZERO; // 实收到付额外费用总额

    @ExcelIgnore
    @ApiModelProperty(value = "实收预付额外费用货币分组列表")
    private List<FeeGroupDto> netReceiptsAdvanceOtherFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收预付额外费用(货币分组列表转换字符串)")
    private String netReceiptsAdvanceOtherFeeGroup;

    @ExcelProperty(value = "实收预付额外费用", index = 11)
    @ApiModelProperty(value = "实收预付额外费用(目的地本币换算)")
    private BigDecimal totalNetReceiptsAdvanceOtherFee = BigDecimal.ZERO; // 实收预付额外费用总额

    @ExcelProperty(value = "实收预付额外费用", index = 12)
    @ApiModelProperty(value = "实收预付额外费用(目的地副币换算)")
    private BigDecimal totalNetReceiptsAdvanceAssistantOtherFee = BigDecimal.ZERO; // 实收预付额外费用总额

    @ExcelIgnore
    @ApiModelProperty(value = "额外费用优惠金额货币分组列表")
    private List<FeeGroupDto> discountOtherFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "额外费用优惠金额(货币分组列表转换字符串)")
    private String discountOtherFeeGroup;

    @ExcelProperty(value = "额外费用优惠金额", index = 15)
    @ApiModelProperty(value = "额外费用优惠金额(目的地货币换算)")
    private BigDecimal discountOtherFee;


    @ExcelIgnore
    @ApiModelProperty(value = "应收总金额货币分组列表")
    private List<FeeGroupDto> receivableTotalFeeGroupDtoList;

    @ApiModelProperty(value = "应收总金额(货币分组列表转换字符串)")
    private String receivableTotalFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "应收总金额(汇率转换为美元计算)")
    private BigDecimal receivableTotalFee;

    @ExcelIgnore
    @ApiModelProperty(value = "实收总金额货币分组列表")
    private List<FeeGroupDto> netReceiptsTotalFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收总金额(货币分组列表转换字符串)")
    private String netReceiptsTotalFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "实收总金额(汇率转换为美元计算)")
    private BigDecimal netReceiptsTotalFee ; // 实收总金额(汇率转换为美元计算)

    @ExcelIgnore
    @ApiModelProperty(value = "实收总金额货币分组列表")
    private List<FeeGroupDto> discountTotalFeeGroupDtoList;

    @ExcelIgnore
    @ApiModelProperty(value = "实收总金额(货币分组列表转换字符串)")
    private String discountTotalFeeGroup;

    @ExcelIgnore
    @ApiModelProperty(value = "折扣总金额(汇率转换为美元计算)")
    private BigDecimal discountTotalFee ; // 折扣总金额(汇率转换为美元计算)

    @ExcelIgnore
    @ApiModelProperty(value = "总运费货币单位(英文名称)")
    private String totalFreightFeeCurrency ; // 总运费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "到付运费货币单位(英文名称)")
    private String netReceiptsCollectFreightFeeCurrency; // 到付运费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "到付运费货币单位(英文名称)")
    private String netReceiptsAdvanceFreightFeeCurrency; // 预付运费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "总清关费货币单位(英文名称)")
    private String totalClearanceFeeCurrency; // 总清关费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "到付清关费货币单位(英文名称)")
    private String netReceiptsCollectClearanceFeeCurrency; // 到付清关费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "预付清关费货币单位(英文名称)")
    private String netReceiptsAdvanceClearanceFeeCurrency; // 预付清关费货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "总额外费用货币单位(英文名称)")
    private String totalOtherFeeCurrency; // 总额外费用货币单位(英文名称)
    @ExcelIgnore
    @ApiModelProperty(value = "到付额外费用货币单位(英文名称)")
    private String netReceiptsCollectOtherFeeCurrency;
    @ExcelIgnore
    @ApiModelProperty(value = "到付额外费用副货币单位(英文名称)")
    private String netReceiptsCollectAssistantOtherFeeCurrency;
    @ExcelIgnore
    @ApiModelProperty(value = "预付额外费用货币单位(英文名称)")
    private String netReceiptsAdvanceOtherFeeCurrency;

    @ExcelIgnore
    @ApiModelProperty(value = "预付额外费用副货币单位(英文名称)")
    private String netReceiptsAdvanceAssistantOtherFeeCurrency;

    @ExcelIgnore
    @ApiModelProperty(value = "总金额货币单位(英文名称)")
    private String totalFeeCurrency;



}
