fix(security): sendCard 改为 DISPATCHED 状态变更时发送 + @EventListener
- 将 sendCard 从 onOrderCreated 移至 handleDispatched - 使用 @EventListener 替代 @TransactionalEventListener(AFTER_COMMIT) 确保 autoDispatchNext 场景的 DISPATCHED 事件也能触发 - PAUSED → DISPATCHED 恢复场景跳过重发 - 参考保洁模块 CleanOrderEventListener 的实现模式 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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 {
|
||||
|
||||
/**
|
||||
* 状态变更事件 - 记录扩展表时间点 + 业务日志
|
||||
* <p>
|
||||
* 使用 @EventListener 而非 @TransactionalEventListener(AFTER_COMMIT),
|
||||
* 确保 autoDispatchNext 在 AFTER_COMMIT 中派发下一单时发布的 DISPATCHED
|
||||
* 事件也能被捕获。各 handler 方法使用 @Async 异步执行。
|
||||
* <p>
|
||||
* 参考保洁模块 CleanOrderEventListener 的实现模式。
|
||||
*/
|
||||
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
|
||||
@EventListener
|
||||
public void onOrderStateChanged(OrderStateChangedEvent event) {
|
||||
if (!ORDER_TYPE_SECURITY.equals(event.getOrderType())) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user