This commit is contained in:
张成
2025-12-16 14:52:27 +08:00
parent 730137da3f
commit f3e6413bfe

View File

@@ -1167,12 +1167,35 @@ class TaskQueue {
}
}
// 计算总待执行数:队列中的任务数 + 当前任务中剩余的步骤数
let totalPendingCount = queue ? queue.size() : 0;
// 如果当前任务存在且有进度信息,计算剩余步骤数
if (currentTask && currentTask.progress !== null && currentTask.progress !== undefined) {
// 根据进度计算剩余步骤(假设每个步骤占一定百分比)
// 如果进度是 45%,剩余就是 55%,可以估算剩余步骤数
const remainingProgress = 100 - currentTask.progress;
// 如果进度是整数百分比,可以估算剩余步骤
// 例如:如果进度是 45%,剩余 55%,假设每步 10%,则剩余约 5-6 步
// 这里简化处理:如果有进度且小于 100%,至少还有 1 个步骤在执行
if (remainingProgress > 0) {
// 估算剩余步骤数(基于进度百分比,假设每步约 10-20%
// 更准确的方式是从任务参数中获取步骤信息
const estimatedRemainingSteps = Math.max(1, Math.ceil(remainingProgress / 10));
totalPendingCount += estimatedRemainingSteps;
}
} else if (currentTask && currentTask.currentStep) {
// 如果只有步骤信息但没有进度,至少还有 1 个步骤在执行
totalPendingCount += 1;
}
return {
sn_code,
currentTask,
pendingTasks,
nextTaskTime,
pendingCount: queue ? queue.size() : 0,
pendingCount: queue ? queue.size() : 0, // 队列中的任务数
totalPendingCount: totalPendingCount, // 总待执行数(包括当前任务的剩余步骤)
mqttTopic: `task_status_${sn_code}`,
timestamp: new Date().toISOString()
};
@@ -1184,6 +1207,7 @@ class TaskQueue {
pendingTasks: [],
nextTaskTime: null,
pendingCount: 0,
totalPendingCount: 0,
mqttTopic: `task_status_${sn_code}`,
timestamp: new Date().toISOString()
};
@@ -1213,7 +1237,24 @@ class TaskQueue {
});
await mqttClient.publish(topic, message);
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=${summary.currentTask ? '有' : '无'}, 待执行=${summary.pendingCount}`);
// 改进日志输出,显示更详细的任务信息
if (summary.currentTask) {
const task = summary.currentTask;
const progressInfo = task.progress !== null && task.progress !== undefined
? `进度: ${task.progress}%`
: '';
const stepInfo = task.currentStep
? `步骤: ${task.currentStep}`
: '';
const detailInfo = [progressInfo, stepInfo].filter(Boolean).join(', ');
const detailStr = detailInfo ? ` (${detailInfo})` : '';
// 使用总待执行数(包括当前任务的剩余步骤)
const totalCount = summary.totalPendingCount !== undefined ? summary.totalPendingCount : summary.pendingCount;
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=${task.taskName || task.taskType || '未知任务'}${detailStr}, 待执行=${totalCount}`);
} else {
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=无, 待执行=${summary.pendingCount}`);
}
} catch (error) {
// 通知失败不影响任务执行,只记录日志
console.warn(`[任务队列] 发送任务状态摘要失败:`, error.message);