package com.sckw.transport.model.dto.ExeclDTO;

import jakarta.validation.constraints.*;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @author lfdc
 * @description 承运订单导入
 * @date 2023-12-17 16:12:02
 */
@Data
public class LogisticsOrderExcelImportDTO implements Serializable {
    private static final long serialVersionUID = 370622351109421619L;
    /**
     * 托运单位
     */
    @NotBlank(message = "托运单位不能为空")
    @Length(max = 32,message = "托运单位不能超过:{max}")
    private String consignCompany;
    /**
     * 承运单位
     */
    @NotBlank(message = "承运单位不能为空")
    @Length(max = 32,message = "承运单位不能超过:{max}")
    private String acceptCarriageCompany;
    /**
     * 货物名称
     */
    @NotBlank(message = "货物名称不能为空")
    private String goodsName;
    /**
     * 商品分类
     */
    @NotBlank(message = "商品分类不能为空")
    private String goodsModel;
    /**
     * 合同号
     */
    @NotBlank(message = "合同号不能为空")
    private String contract;
    /**
     * 计费方式
     */
    @NotBlank(message = "计费方式不能为空")
    private String billingMode;
    /**
     * 运价
     */
    @Digits(integer = 10, fraction = 2, message = "运价格式错误")
    @DecimalMin(value = "0.00", message = "运价最小值为{value}")
    private BigDecimal price;
    /**
     * 运价单位
     */
    @NotBlank(message = "总量单位不能为空")
    private String priceType;
    /**
     * 税率
     */
    @Digits(integer = 2, fraction = 2, message = "税率格式错误")
    @DecimalMin(value = "0.00", message = "税率最小值为{value}")
    private BigDecimal taxRate;
    /**
     * 运输总量
     */
    @Digits(integer = 10, fraction = 2, message = "运输总量格式错误")
    @DecimalMin(value = "0.00", message = "运输总量最小值为{value}")
    private BigDecimal amount;
    /**
     * 总量单位
     */
    @NotBlank(message = "总量单位不能为空")
    private String amountUnit;
    /**
     * 合理损耗
     */
    @Digits(integer = 5, fraction = 2, message = "合理损耗格式错误")
    @DecimalMin(value = "0.00", message = "合理损耗最小值为{value}")
    private BigDecimal loss;
    /**
     * 商品价值（扣亏货值）
     */
    @Digits(integer = 5, fraction = 2, message = "扣亏货值格式错误")
    @DecimalMin(value = "0.00", message = "扣亏货值最小值为{value}")
    private BigDecimal goodsPrice;
    /**
     * 商品价值（扣亏货值）单位
     */
//    @NotBlank(message = "扣亏货值不能为空")
    private String goodsPriceUnit;
    /**
     * 计划发货时间
     */
    @NotBlank(message = "计划发货时间不能为空")
    private String startTime;
    /**
     * 计划卸货时间
     */
    @NotBlank(message = "计划卸货时间不能为空")
    private String endTime;

    /**
     * 结算周期(周结、月结、季结)
     */
    @NotBlank(message = "结算周期不能为空")
    private String settlementCycle;

    /**
     * 支付方式
     */
    @NotBlank(message = "支付方式不能为空")
    private String payment;

    /**
     * 装货地址-名称
     */
    @NotBlank(message = "装货地址不能为空")
    private String loadAddress;
    /**
     * 卸货地址-名称
     */
    @NotBlank(message = "卸货地址不能为空")
    private String unloadAddress;

    /**
     * 备注
     */
    @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
    private String remark;
}
