package cn.aihama.sys.constant;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * @author wwx
 * @since  2016-08
 * @version v1.0
 * 用于存放web模块常用变量，便于管理
 *
 */
public interface BusiConstant {
	
	/**
	 * 发布状态
	 * @author Administrator
	 *
	 */
	public abstract class  PublishState{
		/*** 草稿 */
		public static final int DRAFT = 0;
		/*** 已发布*/
		public static final int PUBLISH = 1;
		/*** 已下线*/
		public static final int OFFLINE = 2;
		
		public static Map<Integer, String> PublishStateMap = new HashMap<Integer, String>();
		static {
			PublishStateMap.put(DRAFT, "草稿");
			PublishStateMap.put(PUBLISH, "已发布");
			PublishStateMap.put(OFFLINE, "转账失败 ");
		}
	}
	
	/**
	 * 附件来源
	 * @author Administrator
	 *
	 */
	public abstract class  AttachSource{
		/*** 知识点  */
		public static final int KNOWLEDGE = 1;
		/*** 预算申请 */
		public static final int BUDGET = 2;
		/*** 漏打卡申请 */
		public static final int MISS_CLOCK = 3;
		/*** 请假申请 */
		public static final int LEAVE = 4;
		/*** 加班申请 */
		public static final int OVERTIME = 5;
		/*** 合同审批 */
		public static final int CONTRACT = 6;
		/*** 离职申请 */
		public static final int DIMISSION = 7;
		/*** 公告通知 */
		public static final int NOTICE = 8;
		/*** 付款申请 */
		public static final int PAYMENT = 9;
		/*** 采购申请 */
		public static final int PURCHASE = 10;
		/*** 申购申请 */
		public static final int PURCHASE_APPLY = 11;
		/*** 招聘申请 */
		public static final int RECRUIT = 12;
		/*** 转正申请*/
		public static final int REGULAR = 13;
		/*** 费用报销申请*/
		public static final int REIMBURSE = 14;
		/*** 调薪申请*/
		public static final int SALARY_CHANGE = 15;
		/*** 出差申请 */
		public static final int TRAVEL = 16;
		/*** 出差报销申请*/
		public static final int TRAVEL_REIMBURSE = 17;
		/*** 用车申请*/
		public static final int USE_CAR = 18;
		
		public static Map<Integer, String> AttachSourceMap = new HashMap<Integer, String>();
		static {
			AttachSourceMap.put(KNOWLEDGE, "busi_knowledge");
			AttachSourceMap.put(BUDGET, "busi_budget");
			AttachSourceMap.put(MISS_CLOCK, "busi_miss_clock");
			AttachSourceMap.put(LEAVE, "busi_leave");
			AttachSourceMap.put(OVERTIME, "busi_overtime");
			AttachSourceMap.put(CONTRACT, "busi_contract");
			AttachSourceMap.put(DIMISSION, "busi_dimission");
			AttachSourceMap.put(NOTICE, "busi_notice");
			AttachSourceMap.put(PAYMENT, "busi_payment");
			AttachSourceMap.put(PURCHASE, "busi_purchase");
			AttachSourceMap.put(PURCHASE_APPLY, "busi_purchase_apply");
			AttachSourceMap.put(RECRUIT, "busi_recruit");
			AttachSourceMap.put(REGULAR, "busi_regular");
			AttachSourceMap.put(REIMBURSE, "busi_reimburse");
			AttachSourceMap.put(SALARY_CHANGE, "busi_salary_change");
			AttachSourceMap.put(TRAVEL, "busi_travel");
			AttachSourceMap.put(TRAVEL_REIMBURSE, "busi_travel_reimburse");
			AttachSourceMap.put(USE_CAR, "busi_use_car");
		}
		
		public static Map<Integer, String> AttachSourceRemarkMap = new HashMap<Integer, String>();
		static {
			AttachSourceRemarkMap.put(KNOWLEDGE, "知识点附件");
			AttachSourceRemarkMap.put(BUDGET, "申请单附件");
			AttachSourceRemarkMap.put(MISS_CLOCK, "漏打卡申请单附件");
			AttachSourceRemarkMap.put(LEAVE, "请假申请单附件");
			AttachSourceRemarkMap.put(OVERTIME, "加班申请单附件");
			AttachSourceRemarkMap.put(CONTRACT, "合同审批单附件");
			AttachSourceRemarkMap.put(DIMISSION, "离职申请单附件");
			AttachSourceRemarkMap.put(NOTICE, "通知公告申请单附件");
			AttachSourceRemarkMap.put(PAYMENT, "付款申请单附件");
			AttachSourceRemarkMap.put(PURCHASE, "采购申请单附件");
			AttachSourceRemarkMap.put(PURCHASE_APPLY, "申购单附件");
			AttachSourceRemarkMap.put(RECRUIT, "招聘申请单附件");
			AttachSourceRemarkMap.put(REGULAR, "转正申请单附件");
			AttachSourceRemarkMap.put(REIMBURSE, "费用报销单附件");
			AttachSourceRemarkMap.put(SALARY_CHANGE, "调薪申请单附件");
			AttachSourceRemarkMap.put(TRAVEL, "出差外勤申请单附件");
			AttachSourceRemarkMap.put(TRAVEL_REIMBURSE, "出差报销单附件");
			AttachSourceRemarkMap.put(USE_CAR, "用车申请单附件");
		}
	}
	
	/**
	 * 附件状态
	 * @author Administrator
	 *
	 */
	public abstract class AttachState{
		/*** 作废 */
		public static final int CANCEL = 0;
		/*** 有效 */
		public static final int EFFECTIVE = 1;
		
		public static Map<Integer, String> AttachStateMap = new HashMap<Integer, String>();
		static {
			AttachStateMap.put(CANCEL, "作废");
			AttachStateMap.put(EFFECTIVE, "有效 ");
		}
	}
	
	/**
	 * 业务状态
	 * @author Administrator
	 *
	 */
	public abstract class BusiState{
		/*** 草稿 */
		public static final int DRAFT = 0;
		/*** 退回修改 */
		public static final int REBACK = -1;
		/*** 退回修改 */
		public static final int PERFECT_DATA = -2;
		/*** 审核中 */
		public static final int AUDIT_IN = 1;
		/*** 审核通过 */
		public static final int AUDIT_OK = 2;
		/*** 审核不通过 */
		public static final int AUDIT_NOT = 3;
		
		public static Map<Integer, String> AttachStateMap = new HashMap<Integer, String>();
		static {
			AttachStateMap.put(DRAFT, "草稿");
			AttachStateMap.put(REBACK, "退回修改");
			AttachStateMap.put(AUDIT_IN, "审核中");
			AttachStateMap.put(AUDIT_OK, "审核通过 ");
			AttachStateMap.put(AUDIT_NOT, "审核不通过 ");
		}
	}
	
	/**
	 * 流程操作类型
	 * @author Administrator
	 * 0 结束：            不同意并结束，审核不通过
	 *	1 同意：            同意并下发，流程未结束
	 *	2 同意并办结：      同意并结束，审核通过  
	 *	3 退回上一步：      退回上个任务节点
	 *	4 退回申请人修改：  退回申请人修改，更新业务状态
	 *	5 重新申请：        更新业务状态
	 *
	 */
	public abstract class ActionType{
		/*** 结束 */
		public static final int APPROVE_NOT = 0;
		/*** 同意 */
		public static final int APPROVE = 1;
		/*** 同意并办结 */
		public static final int APPROVE_END = 2;
		/*** 退回上一步 */
		public static final int BACK_PREVIOUS = 3;
		/*** 退回申请人修改 */
		public static final int BACK_APPLICANT = 4;
		/*** 重新申请 */
		public static final int APPLY_AGAIN = 5;
		
		public static Map<Integer, String> ActionTypeMap = new HashMap<Integer, String>();
		static {
			ActionTypeMap.put(APPROVE_NOT, "结束");
			ActionTypeMap.put(APPROVE, "同意");
			ActionTypeMap.put(APPROVE_END, "同意并办结 ");
			ActionTypeMap.put(BACK_PREVIOUS, "退回上一步 ");
			ActionTypeMap.put(BACK_APPLICANT, "退回申请人修改 ");
			ActionTypeMap.put(APPLY_AGAIN, "重新申请 ");
		}
	}
	
	/**
	 * 单号前缀
	 * @author Administrator
	 *
	 */
	public abstract class CodePrefix{
		/*** 预算申请单 */
		public static final String BUDGET = "BD";
		/*** 漏打卡申请单 */
		public static final String MISS_CLOCK = "MC";
		/*** 请假申请单 */
		public static final String LEAVE = "LE";
		/*** 加班申请单 */
		public static final String OVERTIME = "OT";
		/*** 合同审批 */
		public static final String CONTRACT = "CT";
		/*** 离职申请 */
		public static final String DIMISSION = "DN";
		/*** 公告通知 */
		public static final String NOTICE = "NE";
		/*** 付款申请 */
		public static final String PAYMENT = "PT";
		/*** 采购申请 */
		public static final String PURCHASE = "PE";
		/*** 申购申请 */
		public static final String PURCHASE_APPLY = "PA";
		/*** 招聘申请 */
		public static final String RECRUIT = "RT";
		/*** 转正申请*/
		public static final String REGULAR = "RR";
		/*** 费用报销申请*/
		public static final String REIMBURSE = "RE";
		/*** 调薪申请*/
		public static final String SALARY_CHANGE = "SC";
		/*** 出差申请 */
		public static final String TRAVEL = "TL";
		/*** 出差报销申请*/
		public static final String TRAVEL_REIMBURSE = "TR";
		/*** 用车申请*/
		public static final String USE_CAR = "UC";

		
		public static Map<String, String> CodePrefixMap = new HashMap<String, String>();
		static {
			CodePrefixMap.put(BUDGET, "预算单");
			CodePrefixMap.put(MISS_CLOCK, "漏打卡申请单 ");
			CodePrefixMap.put(LEAVE, "请假申请单 ");
			CodePrefixMap.put(OVERTIME, "加班申请单 ");
			CodePrefixMap.put(CONTRACT, "合同审批单 ");
			CodePrefixMap.put(DIMISSION, "离职申请单 ");
			CodePrefixMap.put(NOTICE, "公告通知单 ");
			CodePrefixMap.put(PAYMENT, "付款申请单 ");
			CodePrefixMap.put(PURCHASE, "采购申请单 ");
			CodePrefixMap.put(PURCHASE_APPLY, "申购单 ");
			CodePrefixMap.put(RECRUIT, "招聘申请单 ");
			CodePrefixMap.put(REGULAR, "转正申请单 ");
			CodePrefixMap.put(REIMBURSE, "费用报销申请单 ");
			CodePrefixMap.put(SALARY_CHANGE, "调薪申请单 ");
			CodePrefixMap.put(TRAVEL, "出差外勤申请单 ");
			CodePrefixMap.put(TRAVEL_REIMBURSE, "出差报销申请单 ");
			CodePrefixMap.put(USE_CAR, "用车申请单 ");
		}
		
		/**
		 * 订单对应的流程定义key
		 */
		public static Map<String, String> CodePrefixFlowKeyMap = new HashMap<String, String>();
		static {
			CodePrefixFlowKeyMap.put(BUDGET, "Budget");
			CodePrefixFlowKeyMap.put(MISS_CLOCK, "MissClock");
			CodePrefixFlowKeyMap.put(LEAVE, "Leave");
			CodePrefixFlowKeyMap.put(OVERTIME, "Overtime");
			CodePrefixFlowKeyMap.put(CONTRACT, "Contract");
			CodePrefixFlowKeyMap.put(DIMISSION, "Dimission");
			CodePrefixFlowKeyMap.put(NOTICE, "Notice");
			CodePrefixFlowKeyMap.put(PAYMENT, "Payment");
			CodePrefixFlowKeyMap.put(PURCHASE, "Purchase");
			CodePrefixFlowKeyMap.put(PURCHASE_APPLY, "PurchaseApply");
			CodePrefixFlowKeyMap.put(RECRUIT, "Recruit");
			CodePrefixFlowKeyMap.put(REGULAR, "Regular");
			CodePrefixFlowKeyMap.put(REIMBURSE, "Reimburse");
			CodePrefixFlowKeyMap.put(SALARY_CHANGE, "SalaryChange");
			CodePrefixFlowKeyMap.put(TRAVEL, "Travel");
			CodePrefixFlowKeyMap.put(TRAVEL_REIMBURSE, "TravelReimburse");
			CodePrefixFlowKeyMap.put(USE_CAR, "UseCar");
		}
		
	}
	
	
	
}
