package com.loan.system.domain.enums; import java.util.*; import static com.loan.system.domain.enums.RoleEnum.*; /** * 针对特殊环节的标识设置 * @author : EdwinXu * @date : Created in 2021/1/25 16:57 */ public enum StepPropertyEnum { /* ========== 环节定义 ========== */ BUSINESS_ACCEPT_PARENT(501, "业务受理", true), BUSINESS_ADD(502, "新增业务", false), BUSINESS_ACCEPT(503, "业务调查", false), PRE_TRIAL_PARENT(511, "预审环节", true), PRE_TRIAL(512, "预审处理", false), APPROVAL_PARENT(521, "审批环节", true), APPROVAL(522, "业务一审", false), APPROVAL_2(513, "业务二审", false), CONTRACT_SIGN_PARENT(531, "合同签订", true), CONTRACT_SIGN(532, "合同签署", false), COLLATERAL_RECEIVE(541, "押品取证", true), PLAN_SUBMISSION(542, "取证申报", false), APPROVAL_ASSIGNMENT(543, "取证派单", false), EVIDENCE_CONFIRMATION(544, "取证确认", false), // CHANNEL_PUSH(545, "推送渠道", false), // CHANNEL_CONFIRMATION(546, "渠道确认", false), DISBURSE_PARENT(551, "出帐环节", true), PLAN_REPORT(552, "出帐申报", false), PLAN_AUDIT(553, "出帐派单", false), DISBURSE_START(554, "出帐操作", false), DISBURSE_AUDIT(555, "出帐审批", false), FINANCE_DISBURSE(556, "财务复核", false), DISBURSE_CONFIRM(557, "出帐确认", false), COLLATERAL_DELIVERY(561, "押品送证", true), PLAN_SUBMISSION_2(562, "送证申报", false), APPROVAL_ASSIGNMENT_2(563, "送证派单", false), DELIVERY_CONFIRMATION(564, "送证确认", false), // CHANNEL_PUSH_2(565, "推送渠道", false), // CHANNEL_RECEIVE(566, "渠道接收", false), REPAY_PARENT(571, "回款环节", true), REPAY_START(572, "回款申报", false), REPAY_APPROVAL(573, "回款派单", false), BALANCE_REPAY(574, "回款操作", false), AUTO_REPAY(575, "主动回款", false), FINANCE_CONFIRM(576, "财务确认", false), REPAYMENT_COMPLETE(577, "完成回款", false), CASE_COMPLETE(578, "业务终结", false), CASE_ARCHIVE(579, "业务归档", false); /* ========== 字段 & 构造 ========== */ private final int code; private final String label; private final boolean parent; StepPropertyEnum(int code, String label, boolean parent) { this.code = code; this.label = label; this.parent = parent; } /* ========== getter ========== */ public int getCode() { return code; } public String getLabel() { return label; } public boolean isParent() { return parent; } public static List listAll() { return Arrays.asList(values()); // 顺序与源码声明一致 } public static Map> roleAndStep() { Map> map = new HashMap<>(); /* 1. 业务员 */ map.put(LEAD_SALES.getMsg(), Arrays.asList( BUSINESS_ADD.getLabel(), BUSINESS_ACCEPT.getLabel(), PRE_TRIAL.getLabel(), CONTRACT_SIGN.getLabel(), PLAN_SUBMISSION.getLabel(), EVIDENCE_CONFIRMATION.getLabel(), // CHANNEL_PUSH.getLabel(), PLAN_REPORT.getLabel(), DISBURSE_START.getLabel(), DISBURSE_CONFIRM.getLabel(), PLAN_SUBMISSION_2.getLabel(), DELIVERY_CONFIRMATION.getLabel(), // CHANNEL_CONFIRMATION.getLabel(), REPAY_START.getLabel(), BALANCE_REPAY.getLabel(), REPAYMENT_COMPLETE.getLabel() )); map.put(RoleEnum.ASSIST_SALES.getMsg(), Arrays.asList( BUSINESS_ADD.getLabel(), BUSINESS_ACCEPT.getLabel(), PRE_TRIAL.getLabel(), CONTRACT_SIGN.getLabel(), PLAN_SUBMISSION.getLabel(), EVIDENCE_CONFIRMATION.getLabel(), PLAN_REPORT.getLabel(), DISBURSE_START.getLabel(), DISBURSE_CONFIRM.getLabel(), PLAN_SUBMISSION_2.getLabel(), DELIVERY_CONFIRMATION.getLabel(), REPAY_START.getLabel(), BALANCE_REPAY.getLabel(), REPAYMENT_COMPLETE.getLabel() )); /* 2. 审批人 */ map.put(RoleEnum.APPROVER.getMsg(), Arrays.asList( APPROVAL.getLabel(), APPROVAL_2.getLabel(), APPROVAL_ASSIGNMENT.getLabel(), PLAN_AUDIT.getLabel(), DISBURSE_AUDIT.getLabel(), APPROVAL_ASSIGNMENT_2.getLabel(), REPAY_APPROVAL.getLabel() )); /* 3. 财务人员 */ map.put(RoleEnum.FINANCE.getMsg(), Arrays.asList( FINANCE_DISBURSE.getLabel(), // FINANCE_CHECK.getLabel(), FINANCE_CONFIRM.getLabel() )); // /* 4. 外部人员 */ // map.put(RoleEnum.EXTERNAL.getMsg(), Arrays.asList( // CHANNEL_CONFIRMATION.getLabel(), // CHANNEL_RECEIVE.getLabel() // )); /* 5. 综合员 */ map.put(RoleEnum.BACK_OFFICE.getMsg(), Arrays.asList( CASE_COMPLETE.getLabel() )); return map; } public static Map> stepAndRole() { Map> bizRoleMap = new HashMap<>(); /* 新增业务 */ bizRoleMap.put(BUSINESS_ADD.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 业务调查 */ bizRoleMap.put(BUSINESS_ACCEPT.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 预审处理 */ bizRoleMap.put(PRE_TRIAL.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 业务一审 / 二审 —— 仅审批人,无业务员 */ bizRoleMap.put(APPROVAL.getCode(), Arrays.asList(RoleEnum.APPROVER.getMsg())); bizRoleMap.put(APPROVAL_2.getCode(), Arrays.asList(RoleEnum.APPROVER.getMsg())); /* 合同签署 */ bizRoleMap.put(CONTRACT_SIGN.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 取证相关 */ bizRoleMap.put(PLAN_SUBMISSION.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(EVIDENCE_CONFIRMATION.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); // bizRoleMap.put(CHANNEL_PUSH.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(APPROVAL_ASSIGNMENT.getCode(), Arrays.asList(APPROVER.getMsg())); /* 渠道推送/接收 —— 外部人员,业务员不介入 */ // bizRoleMap.put(CHANNEL_CONFIRMATION.getCode(), Arrays.asList(EXTERNAL.getMsg())); // bizRoleMap.put(CHANNEL_RECEIVE.getCode(), Arrays.asList(EXTERNAL.getMsg())); /* 出帐环节 */ bizRoleMap.put(PLAN_REPORT.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(DISBURSE_START.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(DISBURSE_CONFIRM.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 出帐派单/审批 —— 审批人 */ bizRoleMap.put(PLAN_AUDIT.getCode(), Arrays.asList(APPROVER.getMsg())); bizRoleMap.put(DISBURSE_AUDIT.getCode(), Arrays.asList(APPROVER.getMsg())); /* 财务出帐 —— 财务人员 */ bizRoleMap.put(FINANCE_DISBURSE.getCode(), Arrays.asList(FINANCE.getMsg())); /* 送证环节 */ bizRoleMap.put(PLAN_SUBMISSION_2.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(DELIVERY_CONFIRMATION.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); // bizRoleMap.put(CHANNEL_PUSH_2.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 送证派单 —— 审批人 */ bizRoleMap.put(APPROVAL_ASSIGNMENT_2.getCode(), Arrays.asList(APPROVER.getMsg())); /* 回款环节 */ bizRoleMap.put(REPAY_START.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(BALANCE_REPAY.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); bizRoleMap.put(REPAYMENT_COMPLETE.getCode(), Arrays.asList(LEAD_SALES.getMsg(), ASSIST_SALES.getMsg())); /* 回款派单/财务核算/确认 —— 审批人/财务人员 */ bizRoleMap.put(REPAY_APPROVAL.getCode(), Arrays.asList(APPROVER.getMsg())); // bizRoleMap.put(FINANCE_CHECK.getCode(), Arrays.asList(FINANCE.getMsg())); bizRoleMap.put(FINANCE_CONFIRM.getCode(),Arrays.asList(FINANCE.getMsg())); /* 业务终结 —— 综合员 */ bizRoleMap.put(CASE_COMPLETE.getCode(), Arrays.asList(BACK_OFFICE.getMsg())); bizRoleMap.put(CASE_ARCHIVE.getCode(), Arrays.asList(BACK_OFFICE.getMsg())); return bizRoleMap; } public static List> seqList(){ List> list = new ArrayList<>(Arrays.asList( Arrays.asList(),//受理0 Arrays.asList(2), Arrays.asList(4), Arrays.asList(),//预审3 Arrays.asList(6), Arrays.asList(),//审批5 Arrays.asList(7), Arrays.asList(9), Arrays.asList(),//合同签约8 Arrays.asList(11,15,22), Arrays.asList(),//押品取证10 Arrays.asList(12), Arrays.asList(13), Arrays.asList(), Arrays.asList(),//出款14 Arrays.asList(16), Arrays.asList(17), Arrays.asList(18), Arrays.asList(19), Arrays.asList(20), Arrays.asList(26), Arrays.asList(),//送证21 Arrays.asList(23), Arrays.asList(24), Arrays.asList(), Arrays.asList(),//回款25 Arrays.asList(27), Arrays.asList(28,29), Arrays.asList(30), Arrays.asList(30), Arrays.asList(31), Arrays.asList(32), Arrays.asList(33), Arrays.asList() )); return list; } }