diff --git a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java index c46342e..c517d57 100644 --- a/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java +++ b/viewsh-module-ops/viewsh-module-security-biz/src/main/java/com/viewsh/module/ops/security/integration/listener/SecurityOrderEventListener.java @@ -21,6 +21,7 @@ import com.viewsh.module.ops.security.dal.dataobject.workorder.OpsOrderSecurityE import com.viewsh.module.ops.security.dal.mysql.workorder.OpsOrderSecurityExtMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.transaction.event.TransactionPhase; @@ -116,8 +117,14 @@ public class SecurityOrderEventListener { /** * 状态变更事件 - 记录扩展表时间点 + 业务日志 + *
+ * 使用 @EventListener 而非 @TransactionalEventListener(AFTER_COMMIT), + * 确保 autoDispatchNext 在 AFTER_COMMIT 中派发下一单时发布的 DISPATCHED + * 事件也能被捕获。各 handler 方法使用 @Async 异步执行。 + *
+ * 参考保洁模块 CleanOrderEventListener 的实现模式。 */ - @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) + @EventListener public void onOrderStateChanged(OrderStateChangedEvent event) { if (!ORDER_TYPE_SECURITY.equals(event.getOrderType())) { return;