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 WorkshopAccountReq 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;

    @ApiModelProperty(value = "部门名称", required = true)
    @NotBlank(message = "部门名称不能为空")
    @Length(max = 20, message = "部门名称长度20不正确")
    private String dept;

    @ApiModelProperty(value = "部门ID", required = true)
    @NotNull(message = "部门ID不能为空")
    private Integer deptId;

    @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;
    /**
     * -收入数量（枚） -10
     */
    @ApiModelProperty(value = "收入数量（枚）", required = true)
    @NotNull(message = "收入数量（枚）不能为空")
    private Integer incomeQty;
    /**
     * -付出（枚） -255
     */
    @ApiModelProperty(value = "付出（枚）", required = true)
    @NotNull(message = "付出（枚）不能为空")
    private Integer payQty;
    /**
     * -内部收入(枚) -10
     */
    @ApiModelProperty(value = "内部收入(枚)", required = true)
    @NotNull(message = "内部收入(枚)不能为空")
    private Integer innerIncomeQty;
    /**
     * -内部付出（枚） -10
     */
    @ApiModelProperty(value = "内部付出（枚）", required = true)
    @NotNull(message = "内部付出（枚）不能为空")
    private Integer innerPayQty;
    /**
     * -结存:实时实际库存数量（每笔需要进行增减计算） -10
     */
    @ApiModelProperty(value = "结存:实时实际库存数量（每笔需要进行增减计算）", required = true)
    @NotNull(message = "结存:实时实际库存数量（每笔需要进行增减计算）不能为空")
    private Integer inventory;
    /**
     * -操作员 -10
     */
    @ApiModelProperty(value = "操作员", required = true)
    @NotNull(message = "操作员不能为空")
    private Integer operatorId;
    /**
     * -操作员 -20
     */
    @ApiModelProperty(value = "操作员", required = true)
    @NotBlank(message = "操作员不能为空")
    @Length(max = 20, message = "操作员长度20不正确")
    private String operator;
    /**
     * -复核人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;
    /**
     * -来源地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他 -10
     */
    @ApiModelProperty(value = "来源地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他", required = true)
    @NotNull(message = "来源地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他不能为空")
    private Integer locFrom;
    /**
     * -目的地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他 -10
     */
    @ApiModelProperty(value = "目的地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他", required = true)
    @NotNull(message = "目的地 1: 总库2:机台 3:封箱成品4:剔除品 5:印花成品 6.造币二部 7造币三部 8 其他不能为空")
    private Integer locTo;
    /**
     * -创建时间 -19
     */
    @ApiModelProperty(value = "创建时间", required = true)
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "创建时间不能为空")
    private Date createTime;
    /**
     * -红冲标识 1:普通 2:红冲数据（抽检、返检） -10
     */
    @ApiModelProperty(value = "红冲标识 1:普通 2:红冲数据（抽检、返检）", required = true)
    @NotNull(message = "红冲标识 1:普通 2:红冲数据（抽检、返检）不能为空")
    private Integer redFlashFlag;
    /**
     * -统计台账类型：1.实物收发卡 2.封箱成品实物收发卡(车间) 3.剔除品实物收发卡(车间) 4.印花成品出入库台账 5.封箱成品出入库台账 -10
     */
    @ApiModelProperty(value = "统计台账类型：1.实物收发卡 2.封箱成品实物收发卡(车间) 3.剔除品实物收发卡(车间) 4.印花成品出入库台账 5.封箱成品出入库台账", required = true)
    @NotNull(message = "统计台账类型：1.实物收发卡 2.封箱成品实物收发卡(车间) 3.剔除品实物收发卡(车间) 4.印花成品出入库台账 5.封箱成品出入库台账不能为空")
    private Integer statType;
    /**
     * -关联单号（有关联的写入） -20
     */
    @ApiModelProperty(value = "关联单号（有关联的写入）", required = true)
    @NotBlank(message = "关联单号（有关联的写入）不能为空")
    @Length(max = 20, message = "关联单号（有关联的写入）长度20不正确")
    private String orderNo;
    /**
     * -备注 -60
     */
    @ApiModelProperty(value = "备注", required = true)
    @NotBlank(message = "备注不能为空")
    @Length(max = 60, message = "备注长度60不正确")
    private String remark;
    /**
     * -摘要（总库与车间的不同） -20
     */
    @ApiModelProperty(value = "摘要（总库与车间的不同）", required = true)
    @NotBlank(message = "摘要（总库与车间的不同）不能为空")
    @Length(max = 20, message = "摘要（总库与车间的不同）长度20不正确")
    private String digest;

}
