diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enums/DeviceCellStatusEnum.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enums/DeviceCellStatusEnum.cs
index df5e490..04b2c4f 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enums/DeviceCellStatusEnum.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enums/DeviceCellStatusEnum.cs
@@ -34,5 +34,11 @@ namespace NCC.Extend.Entitys.Enums
///
[Description("已租接")]
已租接 = 5,
+
+ ///
+ /// 充电完成
+ ///
+ [Description("充电完成")]
+ 充电完成 = 6,
}
}
\ No newline at end of file
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/UavDeviceService.cs b/netcore/src/Modularity/Extend/NCC.Extend/UavDeviceService.cs
index 7e87d29..ad391f0 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/UavDeviceService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/UavDeviceService.cs
@@ -684,7 +684,6 @@ namespace NCC.Extend.UavDevice
}
#endregion
-
#region 机柜获取MQTT配置
///
/// 机柜获取MQTT配置
@@ -989,5 +988,101 @@ namespace NCC.Extend.UavDevice
return PageResult.SqlSugarPageResult(data);
}
#endregion
+
+ #region 修改时间超个半小时的无人机改为充电完成
+
+ ///
+ /// 将超过30分钟充电状态的无人机格子状态改为充电完成
+ ///
+ ///
+ [HttpPost("UpdateChargingStatusToComplete")]
+ public async Task UpdateChargingStatusToComplete()
+ {
+ try
+ {
+ // 计算30分钟前的时间
+ var thirtyMinutesAgo = DateTime.Now.AddMinutes(-30);
+
+ // 查询状态为充电且更新时间超过30分钟的无人机格子
+ var chargingCells = await _db.Queryable().Where(x => x.Status == DeviceCellStatusEnum.充电.GetHashCode() && x.UpdateTime.HasValue &&
+ x.UpdateTime.Value < thirtyMinutesAgo)
+ .ToListAsync();
+
+ if (chargingCells == null || chargingCells.Count == 0)
+ {
+ return new { success = true, message = "没有需要更新的充电状态格子", updatedCount = 0 };
+ }
+
+ // 批量更新状态为充电完成
+ var updateCount = await _db.Updateable()
+ .SetColumns(x => new UavDeviceCellEntity
+ {
+ Status = DeviceCellStatusEnum.充电完成.GetHashCode()
+ })
+ .Where(x => chargingCells.Select(c => c.Id).Contains(x.Id))
+ .ExecuteCommandAsync();
+
+ Log.Information($"成功将 {updateCount} 个充电状态超过30分钟的无人机格子状态更新为充电完成");
+
+ return new
+ {
+ success = true,
+ message = $"成功更新 {updateCount} 个无人机格子状态为充电完成",
+ updatedCount = updateCount,
+ updatedCells = chargingCells.Select(x => new { id = x.Id, cellCode = x.CellCode, deviceId = x.DeviceId })
+ };
+ }
+ catch (Exception ex)
+ {
+ Log.Error($"更新充电状态失败: {ex.Message}");
+ return new { success = false, message = $"更新失败: {ex.Message}", updatedCount = 0 };
+ }
+ }
+
+ ///
+ /// 定时任务:自动更新超过30分钟的充电状态
+ ///
+ ///
+ [HttpPost("AutoUpdateChargingStatus")]
+ public async Task AutoUpdateChargingStatus()
+ {
+ try
+ {
+ // 计算30分钟前的时间
+ var thirtyMinutesAgo = DateTime.Now.AddMinutes(-30);
+
+ // 查询并更新状态
+ var updateCount = await _db.Updateable()
+ .SetColumns(x => new UavDeviceCellEntity
+ {
+ Status = DeviceCellStatusEnum.充电完成.GetHashCode(),
+ UpdateTime = DateTime.Now
+ })
+ .Where(x => x.Status == DeviceCellStatusEnum.充电.GetHashCode() &&
+ x.UpdateTime.HasValue &&
+ x.UpdateTime.Value < thirtyMinutesAgo)
+ .ExecuteCommandAsync();
+
+ if (updateCount > 0)
+ {
+ Log.Information($"定时任务:自动将 {updateCount} 个充电状态超过30分钟的无人机格子状态更新为充电完成");
+ }
+
+ return new
+ {
+ success = true,
+ message = $"自动更新完成,共更新 {updateCount} 个格子",
+ updatedCount = updateCount,
+ updateTime = DateTime.Now
+ };
+ }
+ catch (Exception ex)
+ {
+ Log.Error($"自动更新充电状态失败: {ex.Message}");
+ return new { success = false, message = $"自动更新失败: {ex.Message}", updatedCount = 0 };
+ }
+ }
+
+ #endregion
}
}