package cn.timer.api.bean.spmk;

import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.config.validation.Ranks;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author Tang 2020-04-17
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "spmk_approval_template")
@ApiModel("审批模板")
public class SpmkApprovalTemplate extends Model<SpmkApprovalTemplate> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@TableId(type = IdType.AUTO)
	@ApiModelProperty(value = "编号 编号", example = "101")
	@NotNull(groups = {Ranks.class},message = ValidationMsg.NOTNULL)
	private Integer id;

	@ApiModelProperty(value = "审批模板组id 当前用户ID", example = "101")
	private Integer approvalTemplateGId;

	@ApiModelProperty(value = "审批图标地址 ", example = "审批图标地址")
	private String iconUrl;

	@ApiModelProperty(value = "审批名称 ", example = "审批名称")
	private String name;

	@ApiModelProperty(value = "审批说明 ", example = "审批说明")
	private String description;

	@ApiModelProperty(value = "审批开关 0启用 1停用", example = "101")
	private Integer isOpen;

	@ApiModelProperty(value = "排序 由于区分关键字,命名后缀加s", example = "101")
	@NotNull(groups = {Ranks.class},message = ValidationMsg.NOTNULL)
	private Integer ranks;

	@ApiModelProperty(value = "审批意见 是否必填 意见 0是 1否", example = "101")
	private Integer isOpinion;

	@TableField(fill = FieldFill.UPDATE)
	@ApiModelProperty(value = "更新时间 ", example = "更新时间")
	private Date updateTime;

	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty(value = "创建时间 ", example = "创建时间")
	private Date createTime;
	
	@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4加班 5请假 6出差 7外出 8补卡 9调薪", example = "1")
	private Integer assoType;

	@ApiModelProperty(value = "审批表单 ", example = "审批表单")
	private byte[] froms;

	@ApiModelProperty(value = "审批流程 ", example = "审批流程")
	private byte[] router;

}