From 79506c16fac1c89286ffaff5294f46741fbe755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=B6=E8=AE=AD?= Date: Fri, 1 May 2026 12:16:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BB=A5=E4=B8=8A=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../disburse/bo/StateTransitionResult.java | 63 ---- .../DisburseStatusTransitionContext.java | 48 --- .../enums/DisburseActionAllowRuleEnum.java | 320 ------------------ .../disburse/enums/DisburseActionEnum.java | 69 ---- .../enums/DisburseDenyReasonEnum.java | 19 -- .../enums/DisburseRevokeStatusEnum.java | 43 --- .../disburse/enums/DisburseStateEnum.java | 52 --- .../executor/StateTransitionExecutor.java | 97 ------ .../example/workutils/demo/package-info.java | 2 - 9 files changed, 713 deletions(-) delete mode 100644 src/main/java/com/example/workutils/demo/disburse/bo/StateTransitionResult.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/context/DisburseStatusTransitionContext.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionAllowRuleEnum.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionEnum.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/enums/DisburseDenyReasonEnum.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/enums/DisburseRevokeStatusEnum.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/enums/DisburseStateEnum.java delete mode 100644 src/main/java/com/example/workutils/demo/disburse/executor/StateTransitionExecutor.java delete mode 100644 src/main/java/com/example/workutils/demo/package-info.java diff --git a/src/main/java/com/example/workutils/demo/disburse/bo/StateTransitionResult.java b/src/main/java/com/example/workutils/demo/disburse/bo/StateTransitionResult.java deleted file mode 100644 index 5d19eca..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/bo/StateTransitionResult.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.example.workutils.demo.disburse.bo; - - -import com.example.workutils.demo.disburse.enums.DisburseRevokeStatusEnum; -import com.example.workutils.demo.disburse.enums.DisburseStateEnum; -import lombok.Getter; - -/** - * @desc: 状态机流转结果 - * @author: zhaoyuhang - * @date: 2026-04-28 10:01:13 - */ -@Getter -public class StateTransitionResult { - - /** - * 状态流转是否成功 - */ - private final boolean success; - - /** - * 流转后的放款状态 - */ - private final DisburseStateEnum transitionAfterState; - - /** - * 挂起标识 - * false:未挂起,true:已挂起 - */ - private final Boolean suspendedFlag; - - /** - * 撤销状态 - */ - private final DisburseRevokeStatusEnum revokeStatus; - - /** - * 操作拒绝原因 - */ - private final String failReason; - - - private StateTransitionResult(boolean success, DisburseStateEnum transitionAfterState, - Boolean suspendedFlag, DisburseRevokeStatusEnum revokeStatus, - String failReason) { - this.success = success; - this.transitionAfterState = transitionAfterState; - this.suspendedFlag = suspendedFlag; - this.revokeStatus = revokeStatus; - this.failReason = failReason; - } - - public static StateTransitionResult allow(DisburseStateEnum transitionAfterState, - Boolean suspended, - DisburseRevokeStatusEnum revokeStatus) { - return new StateTransitionResult(true, transitionAfterState, suspended, revokeStatus, null); - } - - public static StateTransitionResult deny(String reason) { - return new StateTransitionResult(false, null, null, null, reason); - } - -} diff --git a/src/main/java/com/example/workutils/demo/disburse/context/DisburseStatusTransitionContext.java b/src/main/java/com/example/workutils/demo/disburse/context/DisburseStatusTransitionContext.java deleted file mode 100644 index 0596ac5..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/context/DisburseStatusTransitionContext.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.example.workutils.demo.disburse.context; - -import com.example.workutils.demo.disburse.enums.DisburseRevokeStatusEnum; -import com.example.workutils.demo.disburse.enums.DisburseStateEnum; -import lombok.Getter; - -/** - * @desc: 放款状态流转上下文类 - * @author: zhaoyuhang - * @date: 2026-04-28 10:06:37 - */ -@Getter -public class DisburseStatusTransitionContext { - - /** - * 放款状态枚举 - */ - private final DisburseStateEnum currentDisburseState; - - /** - * 挂起标识 - * false:未挂起,true:已挂起 - */ - private final boolean suspendedFlag; - - /** - * 撤销状态 - */ - private final DisburseRevokeStatusEnum revokeStatus; - - /** - * 达到冷静期标识 - * false:未达到冷静期,true:已达到冷静期 - */ - private final boolean coolingReachedFlag; - - - public DisburseStatusTransitionContext(DisburseStateEnum currentDisburseState, - boolean suspendedFlag, - DisburseRevokeStatusEnum revokeStatus, - boolean coolingReachedFlag) { - this.currentDisburseState = currentDisburseState; - this.suspendedFlag = suspendedFlag; - this.revokeStatus = revokeStatus; - this.coolingReachedFlag = coolingReachedFlag; - } - -} diff --git a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionAllowRuleEnum.java b/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionAllowRuleEnum.java deleted file mode 100644 index 614e3ca..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionAllowRuleEnum.java +++ /dev/null @@ -1,320 +0,0 @@ -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 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 getRulesByAction(DisburseActionEnum action) { - return Arrays.stream(values()) - .filter(rule -> rule.getDisburseActionEnum() == action) - .collect(Collectors.toList()); - } - - /** - * 拼接同操作所有允许规则的放款状态描述 - */ - public static String buildAllowedStatesDesc(List rules) { - return rules.stream() - .filter(r -> r.getAllowDisburseStates() != null) - .flatMap(r -> r.getAllowDisburseStates().stream()) - .map(DisburseStateEnum::getDesc) - .distinct() - .collect(Collectors.joining("、")); - } -} diff --git a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionEnum.java b/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionEnum.java deleted file mode 100644 index a4af01b..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseActionEnum.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.example.workutils.demo.disburse.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @Description: 放款操作枚举 - * @Author:zhaoyuhang - * @Date: 2026/4/28 - **/ -@Getter -@AllArgsConstructor -public enum DisburseActionEnum { - - /** - * 提交 - */ - COMMIT("提交"), - - /** - * 确认 - */ - CONFIRM("确认"), - - /** - * 审核 - */ - AUDIT("审核"), - - /** - * 放款成功 - */ - DISBURSE_SUCCESS("放款成功"), - - /** - * 放款失败 - */ - DISBURSE_FAIL("放款失败"), - - /** - * 挂起 - */ - SUSPEND("挂起"), - - /** - * 挂起恢复 - */ - SUSPEND_RESUME("挂起恢复"), - - /** - * 撤销 - */ - REVOKE("撤销"), - - /** - * 撤销成功 - */ - REVOKE_SUCCESS("撤销成功"), - - /** - * 撤销失败 - */ - REVOKE_FAIL("撤销失败"); - - /** - * 描述 - */ - private String desc; -} diff --git a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseDenyReasonEnum.java b/src/main/java/com/example/workutils/demo/disburse/enums/DisburseDenyReasonEnum.java deleted file mode 100644 index a57e51a..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseDenyReasonEnum.java +++ /dev/null @@ -1,19 +0,0 @@ -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; -} diff --git a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseRevokeStatusEnum.java b/src/main/java/com/example/workutils/demo/disburse/enums/DisburseRevokeStatusEnum.java deleted file mode 100644 index d8e4843..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseRevokeStatusEnum.java +++ /dev/null @@ -1,43 +0,0 @@ -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; -} diff --git a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseStateEnum.java b/src/main/java/com/example/workutils/demo/disburse/enums/DisburseStateEnum.java deleted file mode 100644 index 1605c82..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/enums/DisburseStateEnum.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.example.workutils.demo.disburse.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - - -/** - * @Description: 放款状态枚举 - * @Author:zhaoyuhang - * @Date: 2026/4/28 - **/ -@Getter -@AllArgsConstructor -public enum DisburseStateEnum { - - /** - * 初始化 - */ - INIT("初始化"), - - /** - * 待确认 - */ - PENDING_CONFIRM("待确认"), - - /** - * 待审核 - */ - PENDING_AUDIT("待审核"), - - /** - * 放款中 - */ - DISBURSING("放款中"), - - /** - * 放款成功 - */ - DISBURSE_SUCCESS("放款成功"), - - /** - * 放款失败 - */ - DISBURSE_FAILED("放款失败"), - ; - - /** - * 描述 - */ - private String desc; - -} \ No newline at end of file diff --git a/src/main/java/com/example/workutils/demo/disburse/executor/StateTransitionExecutor.java b/src/main/java/com/example/workutils/demo/disburse/executor/StateTransitionExecutor.java deleted file mode 100644 index 862cf23..0000000 --- a/src/main/java/com/example/workutils/demo/disburse/executor/StateTransitionExecutor.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.example.workutils.demo.disburse.executor; - -import com.example.workutils.demo.disburse.bo.StateTransitionResult; -import com.example.workutils.demo.disburse.context.DisburseStatusTransitionContext; -import com.example.workutils.demo.disburse.enums.DisburseActionAllowRuleEnum; -import com.example.workutils.demo.disburse.enums.DisburseActionEnum; -import com.example.workutils.demo.disburse.enums.DisburseDenyReasonEnum; -import com.example.workutils.demo.disburse.enums.DisburseRevokeStatusEnum; -import com.example.workutils.demo.disburse.enums.DisburseStateEnum; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @desc: 状态机流转执行器 - * @author: zhaoyuhang - * @date: 2026-04-28 10:01:13 - */ -@Slf4j -@Component -public class StateTransitionExecutor { - - - public StateTransitionResult transitionState(DisburseStatusTransitionContext context, DisburseActionEnum action) { - // 1. 查找该操作的所有允许规则 - List rules = DisburseActionAllowRuleEnum.getRulesByAction(action); - if (rules.isEmpty()) { - log.error("放款操作未命中任何决策规则,放款操作:{}不合法!", action.name()); - return StateTransitionResult.deny(DisburseDenyReasonEnum.NO_RULE_MATCHED.getReason()); - } - - // 2. 根据上下文参数匹配唯一规则:放款状态 + 挂起 + 撤销 + 冷静期 - for (DisburseActionAllowRuleEnum rule : rules) { - if (isConditionMatched(rule, context)) { - return executeRule(context, rule); - } - } - - // 3. 无匹配规则 → 拼接允许规则说明 - String reason = "当前状态不允许执行" + action.getDesc() - + ",允许的放款状态:" + DisburseActionAllowRuleEnum.buildAllowedStatesDesc(rules); - log.info(reason); - return StateTransitionResult.deny(reason); - } - - /** - * 检查规则的所有条件是否与上下文匹配 - */ - private boolean isConditionMatched(DisburseActionAllowRuleEnum rule, - DisburseStatusTransitionContext context) { - if (!isStateAllowed(rule, context.getCurrentDisburseState())) { - return false; - } - if (rule.getExpectSuspended() != null - && !rule.getExpectSuspended().equals(context.isSuspendedFlag())) { - return false; - } - if (rule.getExpectRevokeStatus() != null - && !rule.getExpectRevokeStatus().equals(context.getRevokeStatus())) { - return false; - } - if (rule.getExpectCoolingReached() != null - && !rule.getExpectCoolingReached().equals(context.isCoolingReachedFlag())) { - return false; - } - return true; - } - - /** - * 判断当前状态是否在规则的允许状态列表中 - */ - private boolean isStateAllowed(DisburseActionAllowRuleEnum rule, DisburseStateEnum currentState) { - return rule.getAllowDisburseStates() == null - || rule.getAllowDisburseStates().contains(currentState); - } - - /** - * 执行匹配的允许规则,计算目标状态 - */ - private StateTransitionResult executeRule(DisburseStatusTransitionContext context, - DisburseActionAllowRuleEnum rule) { - DisburseStateEnum targetState = rule.getTargetDisburseState() != null - ? rule.getTargetDisburseState() - : context.getCurrentDisburseState(); - - Boolean targetSuspended = rule.getTargetSuspended() != null - ? rule.getTargetSuspended() - : context.isSuspendedFlag(); - - DisburseRevokeStatusEnum targetRevokeStatus = rule.getTargetRevokeStatus() != null - ? rule.getTargetRevokeStatus() - : context.getRevokeStatus(); - - return StateTransitionResult.allow(targetState, targetSuspended, targetRevokeStatus); - } -} diff --git a/src/main/java/com/example/workutils/demo/package-info.java b/src/main/java/com/example/workutils/demo/package-info.java deleted file mode 100644 index 732b079..0000000 --- a/src/main/java/com/example/workutils/demo/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.example.workutils.demo; -// 非该项目代码,仅用于代码片段的编写和AI优化 \ No newline at end of file