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

import com.prolog.rdc.tms.model.entity.BmsFreightPriceConditionModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

@Data
public class FreightPriceDTO implements Serializable {

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

    @ApiModelProperty(value = "合同编号")
    private String contractNo;

    @ApiModelProperty(value = "费用ID")
    private Long expenseId;

    @ApiModelProperty(value = "费用名称")
    private String expenseName;

    @ApiModelProperty(value = "单价")
    private BigDecimal price;

    @ApiModelProperty(value = "价格编号")
    private String priceNo;

    @ApiModelProperty(value = "价格名称")
    private String priceName;

    @ApiModelProperty(value = "始发地省")
    private String shipperProvince;

    @ApiModelProperty(value = "始发地省名称")
    private String shipperProvinceName;

    @ApiModelProperty(value = "始发地市")
    private String shipperCity;

    @ApiModelProperty(value = "始发地市名称")
    private String shipperCityName;

    @ApiModelProperty(value = "始发地区")
    private String shipperDistrict;

    @ApiModelProperty(value = "始发地区名称")
    private String shipperDistrictName;

    @ApiModelProperty(value = "始发地详细地址")
    @NotEmpty(message = "始发地不能为空")
    private String shipperAddress;

    @ApiModelProperty(value = "目的地省")
    private String consigneeProvince;

    @ApiModelProperty(value = "目的地省名称")
    private String consigneeProvinceName;

    @ApiModelProperty(value = "目的地市")
    private String consigneeCity;

    @ApiModelProperty(value = "目的地市名称")
    private String consigneeCityName;

    @ApiModelProperty(value = "目的地区")
    private String consigneeDistrict;

    @ApiModelProperty(value = "目的地区名称")
    private String consigneeDistrictName;

    @ApiModelProperty(value = "目的地详细地址")
    @NotEmpty(message = "目的地不能为空")
    private String consigneeAddress;

    @ApiModelProperty(value = "时效(时)")
    private int aging;

    @ApiModelProperty(value = "里程(KM)")
    private BigDecimal mileage;

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

    @ApiModelProperty(value = "计费模式 SETTLEMENT_MODEL")
    @NotNull(message = "计费模式不能为空")
    private int settlementModel;
    private String settlementModelName;

    @ApiModelProperty(value = "阶梯方式 LADDER_TYPE")
    private Integer ladderType;
    private String ladderTypeName;

    @ApiModelProperty(value = "计费方式 SETTLEMENT_TYPE")
    private Integer settlementType;
    private String settlementTypeName;

    @ApiModelProperty(value = "时间策略")
    private Long timeStrategyId;
    private String timeStrategyName;

    @ApiModelProperty(value = "合并策略")
    private Long mergeStrategyId;
    private String mergeStrategyName;

    @ApiModelProperty(value = "比例策略")
    private Long proportionStrategyId;
    private String proportionStrategyName;

    @ApiModelProperty(value = "状态")
    private Integer status;
    private String statusName;

    @ApiModelProperty(value = "匹配条件")
    private String conditionListName;

    @ApiModelProperty(value = "匹配条件")
    private List<BmsFreightPriceConditionModel> conditionList;

    @ApiModelProperty(value = "阶梯计费")
    private List<BmsFreightPriceLadderDTO> ladderList;

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

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

    @ApiModelProperty(value = "计费单据 数据字典SETTLEMENT_ORDER_TYPE 1.运单 2.托运单/派车单")
    private Integer settlementOrderType;

    @ApiModelProperty(value = "计费单据 数据字典SETTLEMENT_ORDER_TYPE 1.运单 2.托运单/派车单")
    private String settlementOrderTypeName;

//    @ApiModelProperty(value = "体积价格")
//    private BigDecimal volumePrice;

}