package cn.timer.api.dto.spmk;

import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import cn.hutool.json.JSONObject;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SpmkApprovalTemplateDto {

	@ApiModelProperty(value = "编号 编号", example = "101")
	private Integer id;

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

	@NotBlank(message = ValidationMsg.NOTBLANK)
	@ApiModelProperty(value = "审批图标地址 ", example = "审批图标地址")
	private String iconUrl;

	@NotBlank(message = ValidationMsg.NOTBLANK)
	@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")
	private Integer ranks;

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

	@ApiModelProperty(value = "更新时间 ", example = "更新时间")
	private Date updateTime;

	@ApiModelProperty(value = "创建时间 ", example = "创建时间")
	private Date createTime;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@DecimalMax(value = "9",message = ValidationMsg.DECIMALMAX +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
	@DecimalMin(value = "0",message = ValidationMsg.DECIMALMIN +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
	@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4加班 5请假 6出差 7外出 8补卡 9调薪", example = "1")
	private Integer assoType;

	@NotEmpty(message = ValidationMsg.NOTEMPTY)
	@ApiModelProperty(value = "审批表单 ", example = "审批表单")
	private List<JSONObject> froms;

	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value = "审批流程 ", example = "审批流程")
	private Router router;
	
}