wlzboy
2026-02-05 57e98ac3f59e9ca12d3fdbc6f89c9c0b1f86be4d
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -79,6 +79,9 @@
    @Autowired
    private ITaskDispatchSyncService taskDispatchSyncService;
    @Autowired
    private ITaskStatusPushService taskStatusPushService;
    /**
     * 查询任务管理列表(后台管理端)
     * 管理员权限,可以查看所有任务
@@ -704,4 +707,50 @@
            return error("同步异常: " + e.getMessage());
        }
    }
    /**
     * 手动同步任务状态到旧系统
     * 当任务状态变更后由于网络等原因未同步到旧系统时,可以通过此接口手动触发同步
     */
//    @PreAuthorize("@ss.hasPermi('task:general:edit')")
    @Log(title = "手动同步任务状态", businessType = BusinessType.UPDATE)
    @PostMapping("/syncTaskStatus/{taskId}")
    public AjaxResult syncTaskStatus(@PathVariable Long taskId) {
        try {
            // 查询任务信息
            SysTask task = sysTaskService.selectSysTaskByTaskId(taskId);
            if (task == null) {
                return error("任务不存在");
            }
            // 只支持急救转运任务
            if (!"EMERGENCY_TRANSFER".equals(task.getTaskType())) {
                return error("只有急救转运任务才能同步到旧系统");
            }
            // 查询急救转运扩展信息
            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
            if (emergency == null) {
                return error("急救转运扩展信息不存在");
            }
            // 必须先有调度单
            if (emergency.getLegacyDispatchOrdId() == null || emergency.getLegacyDispatchOrdId() <= 0) {
                return error("请先同步调度单,任务状态信息同步到旧系统的调度单中");
            }
            // 调用状态同步服务
            boolean success = taskStatusPushService.pushTaskStatusToLegacy(taskId);
            if (success) {
                return success("任务状态同步成功");
            } else {
                return error("任务状态同步失败,请查看日志获取详细信息");
            }
        } catch (Exception e) {
            logger.error("手动同步任务状态异常,taskId: {}", taskId, e);
            return error("同步异常: " + e.getMessage());
        }
    }
}