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 WorkshopLogReq 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;
    /**
     * -rfid标签值 -12
     */
    @ApiModelProperty(value = "rfid标签值", required = true)
    @NotBlank(message = "rfid标签值不能为空")
    @Length(max = 12, message = "rfid标签值长度12不正确")
    private String rfid;
    /**
     * -编号 -20
     */
    @ApiModelProperty(value = "编号", required = true)
    @NotBlank(message = "编号不能为空")
    @Length(max = 20, message = "编号长度20不正确")
    private String serialNumber;
    /**
     * -租户ID -10
     */
    @ApiModelProperty(value = "部门ID", required = true)
    @NotNull(message = "部门ID不能为空")
    private Integer deptId;
    /**
     * -租户名称 -10
     */
    @ApiModelProperty(value = "部门名称", required = true)
    @NotBlank(message = "部门名称不能为空")
    @Length(max = 10, message = "部门名称长度10不正确")
    private String dept;
    /**
     * -绑定的品名ID -10
     */
    @ApiModelProperty(value = "绑定的品名ID", required = true)
    @NotNull(message = "绑定的品名ID不能为空")
    private Integer securitiesId;
    /**
     * -品名名称 -20
     */
    @ApiModelProperty(value = "品名名称", required = true)
    @NotBlank(message = "品名名称不能为空")
    @Length(max = 20, message = "品名名称长度20不正确")
    private String securities;
    /**
     * -将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;
    /**
     * -皮重(kg) -10
     */
    @ApiModelProperty(value = "皮重(kg)", required = true)
    @NotNull(message = "皮重(kg)不能为空")
    private Double tareWeight;
    /**
     * -毛重（kg） -10
     */
    @ApiModelProperty(value = "毛重（kg）", required = true)
    @NotNull(message = "毛重（kg）不能为空")
    private Double grossWeight;
    /**
     * -称重人id -10
     */
    @ApiModelProperty(value = "称重人id", required = true)
    @NotNull(message = "称重人id不能为空")
    private Integer weightorId;
    /**
     * -称重人 -2
     */
    @ApiModelProperty(value = "称重人", required = true)
    @NotBlank(message = "称重人不能为空")
    @Length(max = 2, message = "称重人长度2不正确")
    private String weightor;
    /**
     * -产品称重时间(即打印时间) -19
     */
    @ApiModelProperty(value = "产品称重时间(即打印时间)", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "产品称重时间(即打印时间)不能为空")
    private Date weightTime;
    /**
     * -来源地1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域 -10
     */
    @ApiModelProperty(value = "来源地1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域", required = true)
    @NotNull(message = "来源地1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域不能为空")
    private Integer locFrom;
    /**
     * -目的地 1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域 -10
     */
    @ApiModelProperty(value = "目的地 1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域", required = true)
    @NotNull(message = "目的地 1:主库一2:主库二 3:机台 4:临时库产品库区域 5 临时库剔除品区域不能为空")
    private Integer locTo;
    /**
     * -目的地部门ID -10
     */
    @ApiModelProperty(value = "目的地部门ID", required = true)
    @NotNull(message = "目的地部门ID不能为空")
    private Integer locDeptId;
    /**
     * -目的地部门名称 -20
     */
    @ApiModelProperty(value = "目的地部门名称", required = true)
    @NotBlank(message = "目的地部门名称不能为空")
    @Length(max = 20, message = "目的地部门名称长度20不正确")
    private String locDept;
    /**
     * -零枚数量 -10
     */
    @ApiModelProperty(value = "零枚数量", required = true)
    @NotNull(message = "零枚数量不能为空")
    private Integer piecesTotal;
    /**
     * -操作人ID -10
     */
    @ApiModelProperty(value = "操作人ID", required = true)
    @NotNull(message = "操作人ID不能为空")
    private Integer operatorId;
    /**
     * -操作人 -20
     */
    @ApiModelProperty(value = "操作人", required = true)
    @NotBlank(message = "操作人不能为空")
    @Length(max = 20, message = "操作人长度20不正确")
    private String operatorCn;
    /**
     * -复核人ID -10
     */
    @ApiModelProperty(value = "复核人ID", required = true)
    @NotNull(message = "复核人ID不能为空")
    private Integer checkId;
    /**
     * -复核人姓名 -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 createTime;
    /**
     * -操作类型： 1:机台入产成品库（机台->成品）（车间入库） 2.机台入剔除品库（机台->剔除品）（车间入库）3.车间成品库到主库（成品->主库）(解缴出库)
     * 4.返检入剔除品库（主库->剔除品）（返检红冲） 5抽检入剔除品库（主库->剔除品）（抽检入库） 6.抽检上机台（剔除品->机台）(抽检出库) 7.抽检入车间成品库(机台->成品)（抽检入库）
     * 8.抽检出成品库（成品-> 主库）（抽检出库） 9:车间产品库入剔除品库（成品->剔除品）（车间内部迁移） -10
     */
    @ApiModelProperty(
            value = "操作类型： 1:机台入产成品库（机台->成品）（车间入库） 2.机台入剔除品库（机台->剔除品）（车间入库）3.车间成品库到主库（成品->主库）(解缴出库)  4.返检入剔除品库（主库->剔除品）（返检红冲） 5抽检入剔除品库（主库->剔除品）（抽检入库）  6.抽检上机台（剔除品->机台）(抽检出库) 7.抽检入车间成品库(机台->成品)（抽检入库） 8.抽检出成品库（成品-> 主库）（抽检出库）  9:车间产品库入剔除品库（成品->剔除品）（车间内部迁移）",
            required = true)
    @NotNull(message = "操作类型： 1:机台入产成品库（机台->成品）（车间入库） 2.机台入剔除品库（机台->剔除品）（车间入库）3.车间成品库到主库（成品->主库）(解缴出库)  4.返检入剔除品库（主库->剔除品）（返检红冲） 5抽检入剔除品库（主库->剔除品）（抽检入库）  6.抽检上机台（剔除品->机台）(抽检出库) 7.抽检入车间成品库(机台->成品)（抽检入库） 8.抽检出成品库（成品-> 主库）（抽检出库）  9:车间产品库入剔除品库（成品->剔除品）（车间内部迁移）不能为空")
    private Integer opType;

}
