This commit is contained in:
张成
2025-12-16 14:20:33 +08:00
parent 63ae5ffbab
commit 730137da3f

View File

@@ -306,9 +306,32 @@ class ScheduledJobs {
return; return;
} }
// 为每个设备发送任务状态摘要 // 离线阈值3分钟
const offlineThreshold = 3 * 60 * 1000; // 3分钟
const now = Date.now();
// 为每个在线设备发送任务状态摘要
for (const account of accounts) { for (const account of accounts) {
const sn_code = account.sn_code; const sn_code = account.sn_code;
// 检查设备是否在线
const device = deviceManager.devices.get(sn_code);
if (!device) {
// 设备从未发送过心跳,视为离线,跳过
continue;
}
// 检查最后心跳时间
const lastHeartbeat = device.lastHeartbeat || 0;
const isOnline = device.isOnline && (now - lastHeartbeat < offlineThreshold);
if (!isOnline) {
// 设备离线,跳过
continue;
}
// 设备在线,发送任务状态摘要
try { try {
await this.taskQueue.sendTaskStatusSummary(sn_code); await this.taskQueue.sendTaskStatusSummary(sn_code);
} catch (error) { } catch (error) {
@@ -540,7 +563,8 @@ class ScheduledJobs {
// 如果存在上次投递记录,检查是否已经过了间隔时间 // 如果存在上次投递记录,检查是否已经过了间隔时间
if (lastDeliverTask && lastDeliverTask.endTime) { if (lastDeliverTask && lastDeliverTask.endTime) {
const lastDeliverTime = new Date(lastDeliverTask.endTime); const lastDeliverTime = new Date(lastDeliverTask.endTime);
const elapsedTime = now.getTime() - lastDeliverTime.getTime();
const elapsedTime = new Date().getTime() - lastDeliverTime.getTime();
if (elapsedTime < interval_ms) { if (elapsedTime < interval_ms) {
const remainingMinutes = Math.ceil((interval_ms - elapsedTime) / (60 * 1000)); const remainingMinutes = Math.ceil((interval_ms - elapsedTime) / (60 * 1000));