package cn.iocoder.yudao.module.order.vo.orderCargoControl;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Data
@ApiModel(value = "订单控货相关审核信息")
public class OrderCargoControlApplyVO {


    @ApiModelProperty(value = "申请类型：此处应该是 61 放货限制修改申请 62 海外仓修改申请", required = true)
    @NotNull(message = "申请类型不能为空")
    private Integer applyType;

    @ExcelProperty("订单id")
    @ApiModelProperty(value = "订单id")
    @NotNull(message = "订单ID不能为空")
    private Long orderId;

    @ApiModelProperty(value = "订单编号")
    private String orderNo;

    @ApiModelProperty(value = "增值服务(多个使用','连接)：1 集运服务 2 海外仓")
    private String orderType;

    @ApiModelProperty(value = "提单号")
    private String tidanNo;

    @ApiModelProperty(value = "是否控货")
    private Boolean isCargoControl;

    @ApiModelProperty(value = "0 控货中；1 已放完货；2 部分控货")
    private Integer cargoControlStatus;

    @ApiModelProperty(value = "入仓数量")
    private Integer sumQuantity = 0;

    @ApiModelProperty(value = "入仓箱数")
    private Integer sumNum = 0;

    @ApiModelProperty(value = "入仓体积")
    private BigDecimal sumVolume = BigDecimal.ZERO;

    @ApiModelProperty(value = "入仓重量")
    private BigDecimal sumWeight = BigDecimal.ZERO;

    @ApiModelProperty(value = "已放货箱数")
    private Integer releaseNum = 0;

    @ApiModelProperty(value = "放货数量")
    private Integer pickQuantity = 0;

    @ApiModelProperty(value = "放货体积")
    private BigDecimal pickVolume = BigDecimal.ZERO;

    @ApiModelProperty(value = "放货重量")
    private BigDecimal pickWeight = BigDecimal.ZERO;

    @ApiModelProperty(value = "是否限制修改收货人")
    private Boolean isLimitUpdateConsignee;

    @ApiModelProperty(value = "放货锁定收货人天数")
    private Integer lockConsigneeDay;

    @ApiModelProperty(value = "放货锁定收货人到期时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private Date lockConsigneeTime;

    @ApiModelProperty(value = "卸柜/到仓时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private Date unloadTime;


    @ApiModelProperty(value = "新的是否限制修改收货人")
    private Boolean newIsLimitUpdateConsignee;

    @ApiModelProperty(value = "新的放货锁定收货人天数")
    private Integer newLockConsigneeDay;


    @ApiModelProperty(value = "原值是否海外仓")
    private Boolean orgIsOverseasWarehouse;

    @ApiModelProperty(value = "新值是否海外仓")
    private Boolean newIsOverseasWarehouse;


    @ApiModelProperty(value = "附件")
    private String annex;

    @ApiModelProperty(value = "修改原因")
    private String reasonZh;

    @ApiModelProperty(value = "审批状态: 0 初始化待处理 1 处理中  2 通过 3 不通过 4 已取消")
    private Integer applyStatus = 0;

    @ApiModelProperty(value = "抄送人(id逗号拼接)")
    private String ccIds;

    @ApiModelProperty(value = "流程表单实例ID")
    private String formId;

}
