代码提交
This commit is contained in:
+320
@@ -0,0 +1,320 @@
|
|||||||
|
package com.example.workutils.demo.disburse.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 放款操作允许规则枚举(决策表)
|
||||||
|
* @Author:zhaoyuhang
|
||||||
|
* @Date: 2026/4/28
|
||||||
|
**/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum DisburseActionAllowRuleEnum {
|
||||||
|
|
||||||
|
// ==================== 挂起 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:挂起
|
||||||
|
* 允许操作的放款状态:初始化、待确认
|
||||||
|
* 期望挂起状态:未挂起
|
||||||
|
* 期望撤销状态:任意,不检查
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:保持不变
|
||||||
|
* 目标挂起状态:已挂起
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
SUSPEND(DisburseActionEnum.SUSPEND, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.INIT,
|
||||||
|
DisburseStateEnum.PENDING_CONFIRM), /* 允许状态 */
|
||||||
|
false, /* 期望挂起 */
|
||||||
|
null, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
null, /* 目标状态 */
|
||||||
|
true, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 挂起恢复 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:挂起恢复
|
||||||
|
* 允许操作的放款状态:任意,不检查
|
||||||
|
* 期望挂起状态:已挂起
|
||||||
|
* 期望撤销状态:任意,不检查
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:保持不变
|
||||||
|
* 目标挂起状态:未挂起
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
SUSPEND_RESUME(DisburseActionEnum.SUSPEND_RESUME, /* 操作 */
|
||||||
|
null, /* 允许状态 */
|
||||||
|
true, /* 期望挂起 */
|
||||||
|
null, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
null, /* 目标状态 */
|
||||||
|
false, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 提交 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:提交
|
||||||
|
* 允许操作的放款状态:初始化
|
||||||
|
* 期望挂起状态:未挂起
|
||||||
|
* 期望撤销状态:未撤销
|
||||||
|
* 期望冷静期状态:已达到
|
||||||
|
* 目标放款状态:待确认
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
COMMIT(DisburseActionEnum.COMMIT, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.INIT), /* 允许状态 */
|
||||||
|
false, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.NOT_REVOKED, /* 期望撤销状态 */
|
||||||
|
true, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.PENDING_CONFIRM, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 确认 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:确认
|
||||||
|
* 允许操作的放款状态:待确认
|
||||||
|
* 期望挂起状态:未挂起
|
||||||
|
* 期望撤销状态:未撤销
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:待审核
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
CONFIRM(DisburseActionEnum.CONFIRM, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.PENDING_CONFIRM), /* 允许状态 */
|
||||||
|
false, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.NOT_REVOKED, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.PENDING_AUDIT, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 审核 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:审核
|
||||||
|
* 允许操作的放款状态:待审核
|
||||||
|
* 期望挂起状态:未挂起
|
||||||
|
* 期望撤销状态:未撤销
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:放款中
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
AUDIT(DisburseActionEnum.AUDIT, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.PENDING_AUDIT), /* 允许状态 */
|
||||||
|
false, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.NOT_REVOKED, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.DISBURSING, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 放款成功 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:放款成功
|
||||||
|
* 允许操作的放款状态:放款中
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:任意,不检查
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:放款成功
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
DISBURSE_SUCCESS(DisburseActionEnum.DISBURSE_SUCCESS, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.DISBURSING), /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
null, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.DISBURSE_SUCCESS, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 放款失败 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:放款失败
|
||||||
|
* 允许操作的放款状态:放款中
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:任意,不检查
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:放款失败
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:保持不变
|
||||||
|
*/
|
||||||
|
DISBURSE_FAIL(DisburseActionEnum.DISBURSE_FAIL, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.DISBURSING), /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
null, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.DISBURSE_FAILED, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
null), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 撤销 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:撤销(放款前)
|
||||||
|
* 允许操作的放款状态:初始化、待确认、待审核
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:未撤销
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:放款失败
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:已撤销
|
||||||
|
*/
|
||||||
|
REVOKE_BEFORE_DISBURSE(DisburseActionEnum.REVOKE, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.INIT,
|
||||||
|
DisburseStateEnum.PENDING_CONFIRM,
|
||||||
|
DisburseStateEnum.PENDING_AUDIT), /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.NOT_REVOKED, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
DisburseStateEnum.DISBURSE_FAILED, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKED), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:撤销(放款后)
|
||||||
|
* 允许操作的放款状态:放款中、放款成功
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:未撤销
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:保持不变
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:处理中
|
||||||
|
*/
|
||||||
|
REVOKE_AFTER_DISBURSE(DisburseActionEnum.REVOKE, /* 操作 */
|
||||||
|
Arrays.asList(DisburseStateEnum.DISBURSING,
|
||||||
|
DisburseStateEnum.DISBURSE_SUCCESS), /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.NOT_REVOKED, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
null, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKING), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 撤销成功 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:撤销成功
|
||||||
|
* 允许操作的放款状态:任意,不检查
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:处理中
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:保持不变
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:撤销成功
|
||||||
|
*/
|
||||||
|
REVOKE_SUCCESS(DisburseActionEnum.REVOKE_SUCCESS, /* 操作 */
|
||||||
|
null, /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKING, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
null, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKE_SUCCESS), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
// ==================== 撤销失败 ====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作:撤销失败
|
||||||
|
* 允许操作的放款状态:任意,不检查
|
||||||
|
* 期望挂起状态:任意,不检查
|
||||||
|
* 期望撤销状态:处理中
|
||||||
|
* 期望冷静期状态:任意,不检查
|
||||||
|
* 目标放款状态:保持不变
|
||||||
|
* 目标挂起状态:保持不变
|
||||||
|
* 目标撤销状态:撤销失败
|
||||||
|
*/
|
||||||
|
REVOKE_FAIL(DisburseActionEnum.REVOKE_FAIL, /* 操作 */
|
||||||
|
null, /* 允许状态 */
|
||||||
|
null, /* 期望挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKING, /* 期望撤销状态 */
|
||||||
|
null, /* 期望冷静期 */
|
||||||
|
null, /* 目标状态 */
|
||||||
|
null, /* 目标挂起 */
|
||||||
|
DisburseRevokeStatusEnum.REVOKE_FAIL), /* 目标撤销状态 */
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 放款操作枚举
|
||||||
|
*/
|
||||||
|
private final DisburseActionEnum disburseActionEnum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 允许的当前放款状态列表,null表示任意状态
|
||||||
|
*/
|
||||||
|
private final List<DisburseStateEnum> allowDisburseStates;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 期望挂起状态
|
||||||
|
* false:未挂起,true:已挂起,null:不检查
|
||||||
|
*/
|
||||||
|
private final Boolean expectSuspended;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 期望撤销状态
|
||||||
|
* 指定期望的撤销状态,null表示不检查
|
||||||
|
*/
|
||||||
|
private final DisburseRevokeStatusEnum expectRevokeStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 期望达到冷静期
|
||||||
|
* false:未达到冷静期,true:已达到冷静期,null:不检查
|
||||||
|
*/
|
||||||
|
private final Boolean expectCoolingReached;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标放款状态,null表示保持当前状态不变
|
||||||
|
*/
|
||||||
|
private final DisburseStateEnum targetDisburseState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标挂起标识
|
||||||
|
* true:置为已挂起,false:置为未挂起,null:保持当前值不变
|
||||||
|
*/
|
||||||
|
private final Boolean targetSuspended;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标撤销状态
|
||||||
|
* 非null时设置为对应撤销状态,null表示保持当前值不变
|
||||||
|
*/
|
||||||
|
private final DisburseRevokeStatusEnum targetRevokeStatus;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据操作枚举获取匹配的允许规则列表(同一操作可能有多条规则)
|
||||||
|
*/
|
||||||
|
public static List<DisburseActionAllowRuleEnum> getRulesByAction(DisburseActionEnum action) {
|
||||||
|
return Arrays.stream(values())
|
||||||
|
.filter(rule -> rule.getDisburseActionEnum() == action)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拼接同操作所有允许规则的放款状态描述
|
||||||
|
*/
|
||||||
|
public static String buildAllowedStatesDesc(List<DisburseActionAllowRuleEnum> rules) {
|
||||||
|
return rules.stream()
|
||||||
|
.filter(r -> r.getAllowDisburseStates() != null)
|
||||||
|
.flatMap(r -> r.getAllowDisburseStates().stream())
|
||||||
|
.map(DisburseStateEnum::getDesc)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.joining("、"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.example.workutils.demo.disburse.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 放款操作拒绝原因枚举
|
||||||
|
* @Author:zhaoyuhang
|
||||||
|
* @Date: 2026/4/30
|
||||||
|
**/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum DisburseDenyReasonEnum {
|
||||||
|
|
||||||
|
NO_RULE_MATCHED("放款操作未命中任何决策规则"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String reason;
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.example.workutils.demo.disburse.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 撤销状态枚举
|
||||||
|
* @Author:zhaoyuhang
|
||||||
|
* @Date: 2026/4/30
|
||||||
|
**/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum DisburseRevokeStatusEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未撤销
|
||||||
|
*/
|
||||||
|
NOT_REVOKED("未撤销"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已撤销(放款前撤销的终态)
|
||||||
|
*/
|
||||||
|
REVOKED("已撤销"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理中(放款后撤销进入处理流程)
|
||||||
|
*/
|
||||||
|
REVOKING("处理中"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销成功
|
||||||
|
*/
|
||||||
|
REVOKE_SUCCESS("撤销成功"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销失败
|
||||||
|
*/
|
||||||
|
REVOKE_FAIL("撤销失败"),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String desc;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user