package com.prolog.upcloud.base.wh.operate.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Digits;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

@Data
@ApiModel
public class MoveGspSaveVO {
    /**
     * 仓库ID
     */
    @ApiModelProperty(value = "仓库ID")
    @NotBlank(message = "{required}")
    private String warehouseId;

    @ApiModelProperty(value = "货主id")
    @NotBlank(message = "{required}")
    private String cargoOwnerId;

    /**
     * 库工ID
     */
    @ApiModelProperty(value = "库工ID")
    @NotBlank(message = "{required}")
    private String warehouseWorkerId;

    /**
     * 移出库位ID
     */
    @ApiModelProperty(value = "移出库位ID")
    @NotBlank(message = "{required}")
    private String outLocatorId;

    /**
     * 移出容器ID
     */
    @ApiModelProperty(value = "移出容器ID")
    private String outContainerCode = "N/A";

    /**
     * 移出货格
     */
    @ApiModelProperty(value = "移出货格")
    private String outGoodsCaseCode = "N/A";

    /**
     * 移入库位ID
     */
    @ApiModelProperty(value = "移入库位ID")
    @NotBlank(message = "{required}")
    private String inLocatorId;

    /**
     * 移入容器ID
     */
    @ApiModelProperty(value = "移入容器ID")
    private String inContainerCode = "N/A";

    /**
     * 移入货格
     */
    @ApiModelProperty(value = "移入货格")
    private String inGoodsCaseCode = "N/A";

    /**
     * 批次ID
     */
    @ApiModelProperty(value = "批次ID")
    @NotBlank(message = "{required}")
    private String batchId;

    /**
     * 上架库存状态
     */
    @ApiModelProperty(value = "上架库存状态")
    @NotBlank(message = "{required}")
    @Length(max = 32, message = "{noMoreThan}")
    private String inStockStatus;

    /**
     * 下架库存状态
     */
    @ApiModelProperty(value = "下架库存状态")
    @NotBlank(message = "{required}")
    @Length(max = 32, message = "{noMoreThan}")
    private String outStockStatus;

    /**
     * 零散数
     */
    @NotNull(message = "{required}")
    @ApiModelProperty(value = "零散数")
    @Digits(integer = 30, fraction = 4, message = "{invalid}")
    private BigDecimal oddPieceQuantity;

    /**
     * 数量
     */
    @NotNull(message = "{required}")
    @ApiModelProperty(value = "整件数")
    @Digits(integer = 30, fraction = 4, message = "{invalid}")
    private BigDecimal caseQuantity;

    /**
     * 移动原因
     */
    @ApiModelProperty(value = "移动原因")
    private String reason;

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

    /**
     * GSP 养护单ID
     */
    @NotBlank(message = "{required}")
    @ApiModelProperty(value = "养护单ID")
    private String gspBillId;

    /**
     * GSP 养护单号
     */
    @NotBlank(message = "{required}")
    @ApiModelProperty(value = "养护单号")
    private String gspBillNo;

    /**
     * GSP 养护子单号
     */
    @NotBlank(message = "{required}")
    @ApiModelProperty(value = "养护子单ID")
    private String gspLineId;
}
