package cn.timer.api.config.enuminterface;

import lombok.Getter;

public interface SpmkEnumInterface {

	/**
	 * 执行人状态
	 */
	@Getter
	enum ExecutorSts implements SpmkEnumInterface {
		NON_EXECUTION(0, "未执行"), IN_EXECUTION(1, "执行中"), AGREE(2, "同意"), REFUSE(3, "拒绝"), REDEPLOY(4, "转派");

		private Integer type;

		private String name;

		ExecutorSts(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 审批汇总状态
	 */
	@Getter
	enum ApproveSummarySts implements SpmkEnumInterface {
		IN(0, "审批中"), UNDONE(1, "已撤销"), FINISH(2, "通过/完成"), REFUSE(3, "已拒绝");
		private Integer type;
		
		private String name;
		
		ApproveSummarySts(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 是否可编辑 
	 */
	@Getter
	enum IsEditable implements SpmkEnumInterface {
		TRUE(0, "是"), FALSE(1, "否");
		
		private Integer type;
		
		private String name;
		
		IsEditable(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 是否启用
	 */
	@Getter
	enum IsOpen implements SpmkEnumInterface {
		TRUE(0, "是"), FALSE(1, "否");
		
		private Integer type;
		
		private String name;
		
		IsOpen(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 审批意见 是否必填
	 */
	@Getter
	enum IsOpinion implements SpmkEnumInterface {
		TRUE(0, "是"), FALSE(1, "否");
		
		private Integer type;
		
		private String name;
		
		IsOpinion(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 类型 0发起申请 1抄送人 2审批人
	 */
	@Getter
	enum ParticipatorType implements SpmkEnumInterface {
		INITIATOR(0, "发起申请"), COPY(1, "抄送人"), APPROVER(2, "审批人");
		private Integer type;
		
		private String name;
		
		ParticipatorType(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 执行记录状态
	 */
	@Getter
	enum ExecuteRecordSts implements SpmkEnumInterface {
		NON_EXECUTION(0, "未执行"), IN_EXECUTION(1, "执行中"), AGREE(2, "同意"), REFUSE(3, "拒绝");
		private Integer type;
		
		private String name;
		
		ExecuteRecordSts(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 可见范围 0部分可见 1所有可见 2禁用
	 */
	@Getter
	enum IsAllvisible implements SpmkEnumInterface {
		PORTION(0, "部分可见"), ALL(1, "所有可见"), DISABLED(2, "禁用");
		private Integer type;
		
		private String name;
		
		IsAllvisible(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	/**
	 * 发起人配置 类型 1员工 2部门 3岗位
	 */
	@Getter
	enum InitiatorConfigType implements SpmkEnumInterface {
		EMPLOYEE(0, "员工"), DEPARTMENT(1, "部门"), POST(2, "岗位");
		private Integer type;
		
		private String name;
		
		InitiatorConfigType(Integer type, String name) {
			this.type = type;
			this.name = name;
		}
		
	}
	
	
}