Initial commit: 宁夏智慧养殖监管平台
This commit is contained in:
88
backend/update-device-status.js
Normal file
88
backend/update-device-status.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* 更新设备状态脚本
|
||||
* 将设备状态更新为online、maintenance、offline三种状态
|
||||
*/
|
||||
|
||||
const { Device } = require('./models');
|
||||
|
||||
async function updateDeviceStatus() {
|
||||
try {
|
||||
console.log('开始更新设备状态...');
|
||||
|
||||
// 获取所有设备
|
||||
const devices = await Device.findAll();
|
||||
console.log(`找到 ${devices.length} 个设备`);
|
||||
|
||||
// 计算每种状态的设备数量
|
||||
const totalDevices = devices.length;
|
||||
const onlineCount = Math.floor(totalDevices * 0.6); // 60% 在线
|
||||
const maintenanceCount = Math.floor(totalDevices * 0.15); // 15% 维护
|
||||
const offlineCount = totalDevices - onlineCount - maintenanceCount; // 剩余离线
|
||||
|
||||
console.log(`计划分配: ${onlineCount} 在线, ${maintenanceCount} 维护, ${offlineCount} 离线`);
|
||||
|
||||
// 随机打乱设备数组
|
||||
const shuffledDevices = devices.sort(() => Math.random() - 0.5);
|
||||
|
||||
// 批量更新设备状态
|
||||
const updates = [];
|
||||
|
||||
// 设置在线设备
|
||||
for (let i = 0; i < onlineCount; i++) {
|
||||
updates.push(
|
||||
Device.update(
|
||||
{ status: 'online' },
|
||||
{ where: { id: shuffledDevices[i].id } }
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// 设置维护设备
|
||||
for (let i = onlineCount; i < onlineCount + maintenanceCount; i++) {
|
||||
updates.push(
|
||||
Device.update(
|
||||
{ status: 'maintenance' },
|
||||
{ where: { id: shuffledDevices[i].id } }
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// 设置离线设备
|
||||
for (let i = onlineCount + maintenanceCount; i < totalDevices; i++) {
|
||||
updates.push(
|
||||
Device.update(
|
||||
{ status: 'offline' },
|
||||
{ where: { id: shuffledDevices[i].id } }
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// 执行所有更新
|
||||
await Promise.all(updates);
|
||||
|
||||
// 验证更新结果
|
||||
const statusCount = await Device.findAll({
|
||||
attributes: [
|
||||
'status',
|
||||
[Device.sequelize.fn('COUNT', Device.sequelize.col('status')), 'count']
|
||||
],
|
||||
group: ['status'],
|
||||
raw: true
|
||||
});
|
||||
|
||||
console.log('\n更新完成!当前设备状态分布:');
|
||||
statusCount.forEach(item => {
|
||||
console.log(`${item.status}: ${item.count} 个设备`);
|
||||
});
|
||||
|
||||
console.log('\n设备状态更新成功!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('更新设备状态失败:', error);
|
||||
} finally {
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行更新
|
||||
updateDeviceStatus();
|
||||
Reference in New Issue
Block a user