package cn.superdesk.uniorder.common.exception.constants;

public enum ExceptionMsg {
	/***
	 * Token 异常
	 */
	TOEKN_INVALID(400, "invalid token header"),
	TOKEN_EXPIRED(401, "Token过期"),
	TOKEN_VERIFY_ERROR(402, "Token验证异常"),

	/****************************************** 插入 start ******************************************/

	ILLEGAL_STATE(4001, "非法访问"),
	REQUEST_PARAM_REQUIRED(4002, "参数不能为空"),
	REQUEST_FORMAT_ILLEGAL(4003, "参数格式错误"),
	REQUEST_DUPLICATION(4004, "重复请求"),
	REQUEST_PARAM_ERROR(4005, "请求数据错误"),

	RECORD_NOT_EXIST(5001, "记录不存在"),
	RECORD_EXISTED(5002, "记录已存在"),
	RECORD_ILLEGAL_STATE(5003, "数据异常"),

	OPTER_NOT_ALLOW(5100, "不允许操作"),

	DB_ERROR(9001, "数据库异常"),
	SYSTEM_ERROR(9999, "系统异常"),

	/****************************************** 插入 start ******************************************/

	/**
	 * 用户异常
	 */
	USER_NOT_EXIST(10000, "用户不存在"),

	/***
	 * 签名生成失败
	 */
	DUPLICATION_ROLE(20010, "角色已存在!"),
	/***
	 * 上传资料不全!
	 */
	UPLOAD_INFO_ERROR(20009, "上传资料不全!"),
	/***
	 * 签名生成失败
	 */
	SIGN_CREATE_ERROR(20008, "签名生成失败"),
	/***
	 * 验证签名失败
	 */
	SYS_ERROR(20007, "系统错误"),
	/***
	 * 验证签名失败
	 */
	SIGN_CHECK_ERROR(20006, "验证签名失败"),
	/***
	 * 订单已被审核
	 */
	ALREADY_APPROVE(20005, "订单已被审核"),
	/***
	 * 签名验证不通过
	 */
	SIGN_CHECK_REFUSES(20004, "签名验证不通过"),
	/***
	 * 参数重复
	 */
	DUPLICATION_PARA_CODE(20003, "参数重复"),
	/***
	 * 类别编号重复
	 */
	DUPLICATION_CATEGORY_CODE(20000, "类别编号重复"),
	/***
	 * 存在子分类,无法删除
	 */
	CHILD_CATEGORY_EXSIT(20001, "存在子分类,无法删除"),
	/***
	 * 当前分类已被物料使用
	 */
	CHILD_CATEGORY_EXSIT_MATERIAL(20009, "当前分类已被物料使用"),
	/***
	 * 已存在物料,无法新增子分类
	 */
	CHILD_MATERIAL_EXSIT(20002, "已存在物料,无法新增子分类"),
	/***
	 * 仓库编号重复
	 */
	DUPLICATION_WAREHOUSE_CODE(30000, "仓库编号重复"),
	/***
	 * 已存在实体仓库
	 */
	EXIST_WAREHOUSE_ENTITY(30001, "已存在实体仓库"),
	/***
	 * 已存在实体仓库
	 */
	EXIST_WAREHOUSE_CHILD(30002, "存在下级仓库"),
	/***
	 * 已存在实体仓库
	 */
	NOT_WAREHOUSE_PAREND_CODE(30003, "没有父节点"),

	/**
	 * 个人仓库不存在
	 */
	PERSON_WAREHOUSE_NOT_EXIST(30004, "个人仓库不存在"),

	/**
	 * 物料不存在
	 */
	MATERIAL_NOT_EXSIT(30005, "物料不存在"),
	/**
	 * 获取ticket接口失败
	 */
	GET_TICKET_FAIL(30006, "获取ticket接口失败"),
	/**
	 * 获取orderNo失败
	 */
	GET_ORDERNO_FAIL(30007, "获取orderNo接口失败"),
	/***
	 * 存在库房为空的记录
	 */
	EMPTY_WAREHOUSE(30008, "存在库房为空的记录"),
	/***
	 * 存在料号为空的记录
	 */
	EMPTY_MATERIAL(30009, "存在料号为空的记录"),
	/***
	 * 存在重复的的记录
	 */
	REPEAT_MATERIAL(30010, "存在重复的的记录"),
	/***
	 * 当前库房已建账
	 */
	INITIAL_WAREHOUSE(30011, "当前库房已建账"),
	/**
	 * 实体仓库不存在
	 */
	WAREHOUSE_NOT_EXIST(30012, " 实体仓库不存在"),
	/**
	 * 订单类型错误
	 */
	ORDER_TYPE_ERRO(30013, "订单类型错误"),
	/**
	 * 当前库房已异动
	 */
	WAREHOUSE_IS_TRANSACTION(30014, " 当前库房已异动"),
	/**
	 * 当前库房已异动
	 */
	REFERENCE_NO_NOT_NULL(30015, "参考工单不能为空"),
	/**
	 * 派修项目不存在
	 */
	PROJECT_NOT_EIXST(30016, "派修项目不存在"),
	/**
	 * 生产盘点单编号失败
	 */
	CYCLE_CODE_FIAL(30017, "生产盘点单编号失败"),
	/**
	 * 盘点单已提交
	 */
	IS_CYCLE(30018, "盘点单已提交"),
	/**
	 * 盘点单已提交
	 */
	IS_CYCLE_NOT_EXITS(30019, "盘点单不存在"),
	/**
	 * 库存编码不存在
	 */
	IS_WAREHOUSE_NOT_EXITS(30020, "库存编码不存在"),
	/**
	 * 物料编号不存在
	 */
	IS_MATERIAL_NOT_EXITS(30021, "物料编号不存在"),
	/**
	 * 存在多个物料编号
	 */
	IS_MATERIAL_MORE(30022, "存在多个物料编号"),
	/**
	 * 存在多个盘点单
	 */
	IS_CYCLE_MORE(30023, "存在多个盘点单"),
	/**
	 * 上传文件数据为空
	 */
	CYCLE_FILE_UPLOAD_EMPTY(30024, "上传文件数据为空"),
	/**
	 * 上传文件数据格式错误
	 */
	CYCLE_UPLOAD_FORMAT_ERROR(30025, "上传文件数据格式错误"),
	/**
	 * 个人仓库内无可退物料
	 */
	PERSON_WAREHOUSE_NOT_RETURN_MATERIAL(30026, "个人仓库内无可退物料"),
	/**
	 * 生成退料单失败
	 */
	RETURN_MATERIAL_FAIL(30027, "生成退料单失败"),
	/**
	 * 上传文件无数据或格式错误
	 */
	CYCLE_UPLOAD_NODATA(30028, "上传文件无数据或格式错误"),
	/**
	 * 当前盘点单没有明细资料
	 */
	CYCLE_NOT_DETAIL_DATA(30029, "当前盘点单没有明细资料"),
	/**
	 * 盘点单不能为空
	 */
	CYCLE_CAN_NOT_EMPTY(30029, "盘点单不能为空"),
	/**
	 * 库房编码不能为空
	 */
	WAREHOUSE_CAN_NOT_EMPTY(30029, "库房编码不能为空"),
	/**
	 * 包含不存在的物料编号
	 */
	MATERIAL_IS_NOT_EXITS(30030, "包含不存在的物料编号"),
	/**
	 * 只允许实体仓建账
	 */
	ONLY_ALLOW_ENTITY_MASTER(30031, "只允许实体仓建账"),
	/**
	 * 库房编号失败
	 */
	WAREHOUSE_CODE_FIAL(30032, "库房编号失败"),
	/**
	 * 获取materialCode失败
	 */
	GET_MATERIALCODE_FAIL(30033, "获取materialCode失败"),
	/**
	 * 获取materialCode失败
	 */
	GET_CATEGORYCODE_FAIL(30034, "获取materialCode失败"),
	/**
	 * 获取materialCode失败
	 */
	CATEGORY_PARENT_NOT_EXIST(30035, "父类不存在"),
	/**
	 * 获取materialCode失败
	 */
	CANNOT_GET_MATERIAL_CODE(30036, "获取materialCode失败"),
	/**
	 * 此物料已添加过
	 */
	ORDER_TMP_MATERIAL_EXIST(30036, "此物料已添加过"),
	/**
	 * 当前物料已有库存信息,不能删除
	 */
	MATERIAL_EXIST_INVMASTER(30036, "当前物料已有库存信息,不能删除"),
	/**
	 * 同一父库房下,库房名字不能重复
	 */
	WAREHOUSENAME_EXIST_IN_PARENT(30037, "同一父库房下,库房名字不能重复"),

	INVOICENO_NOT_EMPTY(30100, "存在发票号为空"),
	INVOICENO_EXIST(30101, "发票号重复"),


	/**
	 * 50000-60000发票申请管理/发票管理/收款核销/银行流水
	 */
	GOODIDS_NOT_EMPTY(50000, "请选择商品"),
	INVOICE_HAVE_BACK(50001, "该发票已回款"),
	ID_NOT_EMPTY(50002, "ID为空"),
	WATER_CHECK(50003, "流水已经核销或部分核销"),
	WATER_NOT_EXIST(50004, "流水不存在"),
	WATER_LESS_COUNT(50004, "发票未核销金额小于所选申请金额"),
	INVOICE_EXIST(50001, "发票号已存在"),

	;
	private int    code;
	private String msg;

	ExceptionMsg(int code, String msg) {
		this.code = code;
		this.msg = msg;
	}

	public int getCode() {
		return code;
	}

	public String getMsg() {
		return msg;
	}

	public static ExceptionMsg getWeekdayByValue(int code) {
		for (ExceptionMsg c : ExceptionMsg.values()) {
			if (c.code == code) {
				return c;
			}
		}
		return null;
	}
}
