fix(ops): 手动完单走完整责任链,补全队列同步、设备状态、事件发布等缺失环节

原手动完单逻辑直接更新 DB 状态,绕过了 OrderLifecycleManager 责任链,
导致队列未清理、工牌设备状态未恢复 IDLE、自动派发下一任务未触发、
事件表缺少操作人信息等问题。

改动:
- CleanWorkOrderServiceImpl.manualCompleteOrder 改为委托 OrderLifecycleManager
- OrderLifecycleManager 新增 completeOrder(orderId, operatorId, operatorType, remark) 重载
- Controller 注入 SecurityFrameworkUtils.getLoginUserId() 填充操作人
- EventPublishHandler 修复 OrderCompletedEvent.assigneeId 兜底逻辑
- 新增已完成幂等返回和已取消拒绝校验

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-02-25 17:12:01 +08:00
parent 3e54094c3d
commit 161f55007b
6 changed files with 64 additions and 39 deletions

View File

@@ -1,6 +1,7 @@
package com.viewsh.module.ops.controller.admin.clean;
import com.viewsh.framework.common.pojo.CommonResult;
import com.viewsh.framework.security.core.util.SecurityFrameworkUtils;
import com.viewsh.module.ops.api.clean.OrderTimelineRespDTO;
import com.viewsh.module.ops.environment.dal.dataobject.ManualCompleteOrderReqDTO;
import com.viewsh.module.ops.environment.dal.dataobject.UpgradePriorityReqDTO;
@@ -49,6 +50,8 @@ public class CleanWorkOrderController {
public CommonResult<Boolean> manualCompleteOrder(
@Valid @RequestBody ManualCompleteOrderReqDTO req) {
// 注入当前登录用户ID作为操作人
req.setOperatorId(SecurityFrameworkUtils.getLoginUserId());
cleanWorkOrderService.manualCompleteOrder(req);
return success(true);
}