package cn.timer.api.dto.jxgl;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.google.gson.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 PerformanceAppraisal implements Serializable{

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

    @Id
    @GeneratedValue
    @TableId (type = IdType.AUTO)
	
	@ApiModelProperty(value="编号 编号",example="10")
    private Integer id;
	
	@ApiModelProperty(value="企业id 企业id",example="10")
    private Integer orgCode;
	
	@NotBlank(message = ValidationMsg.NOTBLANK)
	@ApiModelProperty(value="名称",example="名称")
    private String name;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value="周期 0月 1季 2年 3半年",example="10")
    private Integer period;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value="开始时间",example="2020-10-10 10:10:10")
    private Date appraisalStartTime;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value="结束时间",example="2020-10-10 10:10:10")
    private Date appraisalEndTime;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@Min(value = 0,message = ValidationMsg.MIN)
	@Max(value = 1,message = ValidationMsg.MAX)
	@ApiModelProperty(value="是否可见 0是 1否。评分及评分结果能否被员工看见",example="1")
    private Integer isVisible;
	
//	@NotNull(message = ValidationMsg.NOTNULL)
//	@Min(value = 0,message = ValidationMsg.MIN)
//	@Max(value = 4,message = ValidationMsg.MAX)
	@ApiModelProperty(value="状态 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核",example="10")
    private Integer sts;
	
	@ApiModelProperty(value="范围",example="部门名称、被考核人名称")
    private String scope;
	
	@NotBlank(message = ValidationMsg.NOTBLANK)
	@ApiModelProperty(value="考核模板名称",example="考核模板名称")
    private String appraisalTName;
	
	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value="考核模板id",example="1")
	private Integer appraisalTId;
	
	@ApiModelProperty(value="考核人数 考核人数",example="10")
    private Integer appraisalPersonNum;
	
	@Valid
	@ApiModelProperty(value="流程节点",example="")
    private List<ProcessNode> processNode;

	@Valid
	@NotNull(message = ValidationMsg.NOTNULL)
	@ApiModelProperty(value="被考核人员",example="")
    private List<BeingAppraisalPerson> beingAppraisalPerson;
	
}