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 CheckBackupReq 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;
    /**
     * -Epc码值 -12
     */
    @ApiModelProperty(value = "Epc码值", required = true)
    @NotBlank(message = "Epc码值不能为空")
    @Length(max = 12, message = "Epc码值长度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 Integer qty;
    /**
     * -冠字号列表,用逗号分隔 -255
     */
    @ApiModelProperty(value = "冠字号列表,用逗号分隔", required = true)
    @NotBlank(message = "冠字号列表,用逗号分隔不能为空")
    @Length(max = 255, message = "冠字号列表,用逗号分隔长度255不正确")
    private String crownList;
    /**
     * -抽检时间 -19
     */
    @ApiModelProperty(value = "抽检时间", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "抽检时间不能为空")
    private Date checkTime;
    /**
     * -抽检操作人 -20
     */
    @ApiModelProperty(value = "抽检操作人", required = true)
    @NotBlank(message = "抽检操作人不能为空")
    @Length(max = 20, message = "抽检操作人长度20不正确")
    private String checkOperatorCn;
    /**
     * -抽检复核人 -20
     */
    @ApiModelProperty(value = "抽检复核人", required = true)
    @NotBlank(message = "抽检复核人不能为空")
    @Length(max = 20, message = "抽检复核人长度20不正确")
    private String checker;
    /**
     * -车前抽检入库确认 -19
     */
    @ApiModelProperty(value = "车前抽检入库确认", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "车前抽检入库确认不能为空")
    private Date workshopCheckInTime;
    /**
     * -车间确认抽检入库操作人 -20
     */
    @ApiModelProperty(value = "车间确认抽检入库操作人", required = true)
    @NotBlank(message = "车间确认抽检入库操作人不能为空")
    @Length(max = 20, message = "车间确认抽检入库操作人长度20不正确")
    private String workshopCheckInOperatorCn;
    /**
     * -车间抽检确认入库复核人 -20
     */
    @ApiModelProperty(value = "车间抽检确认入库复核人", required = true)
    @NotBlank(message = "车间抽检确认入库复核人不能为空")
    @Length(max = 20, message = "车间抽检确认入库复核人长度20不正确")
    private String workshopCheckInCn;
    /**
     * -抽检车间出库确认时间 -19
     */
    @ApiModelProperty(value = "抽检车间出库确认时间", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "抽检车间出库确认时间不能为空")
    private Date workshopCheckOutTime;
    /**
     * -车间抽检出库操作人 -20
     */
    @ApiModelProperty(value = "车间抽检出库操作人", required = true)
    @NotBlank(message = "车间抽检出库操作人不能为空")
    @Length(max = 20, message = "车间抽检出库操作人长度20不正确")
    private String workshopCheckOutOperatorCn;
    /**
     * -车间抽检出库复核人 -20
     */
    @ApiModelProperty(value = "车间抽检出库复核人", required = true)
    @NotBlank(message = "车间抽检出库复核人不能为空")
    @Length(max = 20, message = "车间抽检出库复核人长度20不正确")
    private String workshopCheckOutCn;
    /**
     * -抽检返回时间 -19
     */
    @ApiModelProperty(value = "抽检返回时间", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "抽检返回时间不能为空")
    private Date checkBackTime;
    /**
     * -抽检返回操作人 -20
     */
    @ApiModelProperty(value = "抽检返回操作人", required = true)
    @NotBlank(message = "抽检返回操作人不能为空")
    @Length(max = 20, message = "抽检返回操作人长度20不正确")
    private String checkBackOperatorCn;
    /**
     * -主库抽检返回确认复核人 -20
     */
    @ApiModelProperty(value = "主库抽检返回确认复核人", required = true)
    @NotBlank(message = "主库抽检返回确认复核人不能为空")
    @Length(max = 20, message = "主库抽检返回确认复核人长度20不正确")
    private String checkBackCn;
    /**
     * -抽检登记: 1.库房抽检 2:车间抽检入库3.车间抽检出库4库房抽检返回确认 -10
     */
    @ApiModelProperty(value = "抽检登记: 1.库房抽检 2:车间抽检入库3.车间抽检出库4库房抽检返回确认", required = true)
    @NotNull(message = "抽检登记: 1.库房抽检 2:车间抽检入库3.车间抽检出库4库房抽检返回确认不能为空")
    private Integer status;
    /**
     * -抽检返回的冠字号，多个用分号分隔 -255
     */
    @ApiModelProperty(value = "抽检返回的冠字号，多个用分号分隔", required = true)
    @NotBlank(message = "抽检返回的冠字号，多个用分号分隔不能为空")
    @Length(max = 255, message = "抽检返回的冠字号，多个用分号分隔长度255不正确")
    private String returnCrownList;
    /**
     * -冠字号前缀 -10
     */
    @ApiModelProperty(value = "冠字号前缀", required = true)
    @NotBlank(message = "冠字号前缀不能为空")
    @Length(max = 10, message = "冠字号前缀长度10不正确")
    private String crownPrefix;
    /**
     * -仓库编号ID:主库的区域 -10
     */
    @ApiModelProperty(value = "仓库编号ID:主库的区域", required = true)
    @NotBlank(message = "仓库编号ID:主库的区域不能为空")
    @Length(max = 10, message = "仓库编号ID:主库的区域长度10不正确")
    private String wareId;
    /**
     * -仓库名称 -20
     */
    @ApiModelProperty(value = "仓库名称", required = true)
    @NotBlank(message = "仓库名称不能为空")
    @Length(max = 20, message = "仓库名称长度20不正确")
    private String wareCn;
    /**
     * -目的地部门 -10
     */
    @ApiModelProperty(value = "目的地部门", required = true)
    @NotNull(message = "目的地部门不能为空")
    private Integer deptId;
    /**
     * -目的地部门名称 -20
     */
    @ApiModelProperty(value = "目的地部门名称", required = true)
    @NotBlank(message = "目的地部门名称不能为空")
    @Length(max = 20, message = "目的地部门名称长度20不正确")
    private String dept;
    /**
     * -临时库库位区域：1:产成品区域2剔除品库区域（抽检单确认后默认选择2） -10
     */
    @ApiModelProperty(value = "临时库库位区域：1:产成品区域2剔除品库区域（抽检单确认后默认选择2） ", required = true)
    @NotNull(message = "临时库库位区域：1:产成品区域2剔除品库区域（抽检单确认后默认选择2） 不能为空")
    private Integer areaId;

}
