diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventListener.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventListener.java index ded725e..1d2bce4 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventListener.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/BadgeDeviceStatusEventListener.java @@ -13,9 +13,8 @@ import com.viewsh.module.ops.infrastructure.log.recorder.EventLogRecord; import com.viewsh.module.ops.infrastructure.log.recorder.EventLogRecorder; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; -import org.springframework.transaction.event.TransactionPhase; -import org.springframework.transaction.event.TransactionalEventListener; /** * 工牌设备状态事件监听器 @@ -23,7 +22,7 @@ import org.springframework.transaction.event.TransactionalEventListener; * 职责:监听工单状态变更事件,同步更新设备状态和工单关联 *

* 设计说明: - * - 使用 BEFORE_COMMIT 阶段,在事务提交前同步执行 + * - 使用 @EventListener 监听事件,在事务内同步执行 * - 确保 IoT 模块能实时查询到正确的设备工单信息 * - 只处理保洁类型的工单 *

@@ -59,10 +58,9 @@ public class BadgeDeviceStatusEventListener { /** * 监听工单状态变更事件,同步更新设备工单关联 *

- * 使用 BEFORE_COMMIT 阶段,在事务提交前同步执行 - * 确保 IoT 模块能实时查询到正确的设备工单信息 + * 使用 @EventListener,在事务内同步执行 */ - @TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) + @EventListener public void onOrderStateChanged(OrderStateChangedEvent event) { try { // 只处理保洁类型的工单 diff --git a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java index 4d03cbb..137584d 100644 --- a/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java +++ b/viewsh-module-ops/viewsh-module-environment-biz/src/main/java/com/viewsh/module/ops/environment/integration/listener/CleanOrderEventListener.java @@ -23,10 +23,9 @@ import com.viewsh.module.system.api.notify.NotifyMessageSendApi; import com.viewsh.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; 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; -import org.springframework.transaction.event.TransactionalEventListener; import java.time.LocalDateTime; import java.util.Map; @@ -52,7 +51,7 @@ import java.util.Map; * 设计说明: * - assigneeId 存储的是工牌设备ID(非保洁员ID) * - 使用异步处理,避免阻塞主流程 - * - 使用 @TransactionalEventListener(AFTER_COMMIT) 确保事务提交后再处理 + * - 使用 @EventListener 监听事件 * * @author lzh */ @@ -89,7 +88,7 @@ public class CleanOrderEventListener { /** * 监听工单创建事件,触发自动调度 */ - @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) + @EventListener public void onOrderCreated(OrderCreatedEvent event) { if (!"CLEAN".equals(event.getOrderType())) { return; @@ -203,7 +202,7 @@ public class CleanOrderEventListener { * 注意:设备状态由 BadgeDeviceStatusServiceImpl 统一管理 * 这里只处理扩展表时间记录和通知发送 */ - @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) + @EventListener public void onOrderStateChanged(OrderStateChangedEvent event) { if (!"CLEAN".equals(event.getOrderType())) { return; @@ -358,7 +357,7 @@ public class CleanOrderEventListener { *

* 触发自动调度下一个任务 */ - @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) + @EventListener public void onOrderCompleted(OrderCompletedEvent event) { if (!"CLEAN".equals(event.getOrderType())) { return;