package com.sy.coinage.workshop.req;

import com.sy.coinage.core.interceptor.Create;
import com.sy.coinage.core.interceptor.Update;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;

import org.hibernate.validator.constraints.Length;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;

import com.alibaba.fastjson2.annotation.JSONField;
import org.hibernate.validator.constraints.Range;
import lombok.Data;

/**
 * -添加请求bean
 */
@Data
public class WorkshopEntryDetailReq implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * -id -10
     */
    @NotNull(message = "id不能为空", groups = {Update.class})
    @Range(min = 1, groups = {Update.class})
    private Integer id;
    /**
     * -入库单ID -10
     */
    @ApiModelProperty(value = "入库单ID", required = true)
    @NotNull(message = "入库单ID不能为空")
    private Integer entryId;
    /**
     * -明细类型（每个拍子一条记录；零箱,零枚可能有一条记录） 1: 整拍 2: 零箱 3:零枚 -10
     */
    @ApiModelProperty(value = "明细类型（每个拍子一条记录；零箱,零枚可能有一条记录） 1: 整拍 2: 零箱 3:零枚", required = true)
    @NotNull(message = "明细类型（每个拍子一条记录；零箱,零枚可能有一条记录） 1: 整拍 2: 零箱 3:零枚不能为空")
    private Integer type;
    /**
     * -rfidEPC码:唯一对应 -12
     */
    @ApiModelProperty(value = "rfidEPC码:唯一对应", required = true)
    @NotBlank(message = "rfidEPC码:唯一对应不能为空")
    @Length(max = 12, message = "rfidEPC码:唯一对应长度12不正确")
    private String rfid;
    /**
     * -编号 -20
     */
    @ApiModelProperty(value = "编号", required = true)
    @NotBlank(message = "编号不能为空")
    @Length(max = 20, message = "编号长度20不正确")
    private String serialNumber;
    /**
     * -皮重 -10
     */
    @ApiModelProperty(value = "皮重", required = true)
    @NotNull(message = "皮重不能为空")
    private Double tareWeight;
    /**
     * -毛重 -10
     */
    @ApiModelProperty(value = "毛重", required = true)
    @NotNull(message = "毛重不能为空")
    private Double grossWeight;
    /**
     * -称重人id -10
     */
    @ApiModelProperty(value = "称重人id", required = true)
    @NotNull(message = "称重人id不能为空")
    private Integer weightorId;
    /**
     * -称重人 -20
     */
    @ApiModelProperty(value = "称重人", required = true)
    @NotBlank(message = "称重人不能为空")
    @Length(max = 20, message = "称重人长度20不正确")
    private String weightor;
    /**
     * -称重时间戳(yyyy-mm-dd hh24:mm:ss),封包线传递过来的称重打印时间 -19
     */
    @ApiModelProperty(value = "称重时间戳(yyyy-mm-dd hh24:mm:ss),封包线传递过来的称重打印时间", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "称重时间戳(yyyy-mm-dd hh24:mm:ss),封包线传递过来的称重打印时间不能为空")
    private Date weightTime;
    /**
     * -将rfid对应的冠字号范围，拼装成字符串，保存在此字端，用于页面展示 -100
     */
    @ApiModelProperty(value = "将rfid对应的冠字号范围，拼装成字符串，保存在此字端，用于页面展示", required = true)
    @NotBlank(message = "将rfid对应的冠字号范围，拼装成字符串，保存在此字端，用于页面展示不能为空")
    @Length(max = 100, message = "将rfid对应的冠字号范围，拼装成字符串，保存在此字端，用于页面展示长度100不正确")
    private String crownBetweenStr;
    /**
     * -冠字号范围：@开头的表示冠字号段 #开头的表示各个单独的冠字号（eg:@003-4970,003-5000;）(eg:#003-0005,003-0007) -100
     */
    @ApiModelProperty(value = "冠字号范围：@开头的表示冠字号段 #开头的表示各个单独的冠字号（eg:@003-4970,003-5000;）(eg:#003-0005,003-0007)",
                    required = true)
    @NotBlank(message = "冠字号范围：@开头的表示冠字号段 #开头的表示各个单独的冠字号（eg:@003-4970,003-5000;）(eg:#003-0005,003-0007)不能为空")
    @Length(max = 100,
                    message = "冠字号范围：@开头的表示冠字号段 #开头的表示各个单独的冠字号（eg:@003-4970,003-5000;）(eg:#003-0005,003-0007)长度100不正确")
    private String crownBetween;
    /**
     * -容器数量（拍子就是1，零箱的就是多少箱） -10
     */
    @ApiModelProperty(value = "容器数量（拍子就是1，零箱的就是多少箱）", required = true)
    @NotNull(message = "容器数量（拍子就是1，零箱的就是多少箱）不能为空")
    private Integer qty;
    /**
     * -枚数总数 -10
     */
    @ApiModelProperty(value = "枚数总数", required = true)
    @NotNull(message = "枚数总数不能为空")
    private Integer qtyTotal;
    /**
     * -车间内部状态：1.处于产成品库 2.处于剔除品库 3.上机台4.发往主库 -10
     */
    @ApiModelProperty(value = "车间内部状态：1.处于产成品库 2.处于剔除品库 3.上机台4.发往主库", required = true)
    @NotNull(message = "车间内部状态：1.处于产成品库 2.处于剔除品库 3.上机台4.发往主库不能为空")
    private Integer status;
    /**
     * -临时库库位ID -10
     */
    @ApiModelProperty(value = "临时库库位ID ", required = true)
    @NotNull(message = "临时库库位ID 不能为空")
    private Integer areaId;

}
