添加项目文件。

This commit is contained in:
2025-09-15 17:59:48 +08:00
parent 872f090cc2
commit e7adae128e
91 changed files with 14260 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
using MoviconWebApi.Entities;
namespace MoviconWebApi.API.DeviceAlarmApi
{
public static class DeviceAlarmData
{
/// <summary>
/// 获取设备报警列表
/// </summary>
public static async Task<List<DeviceAlarmResponse>> GetDeviceAlarmList(
IFreeSql freeSql,
DeviceAlarmRequest request)
{
try
{
var query = freeSql.Select<DeviceAlarm>()
.WhereIf(!string.IsNullOrWhiteSpace(request.DeviceCode),
a => a.DeviceCode == request.DeviceCode)
.WhereIf(request.DeviceState > 0,
a => a.DeviceState == request.DeviceState);
// 处理时间范围查询
if (!string.IsNullOrWhiteSpace(request.StartTime) && DateTime.TryParse(request.StartTime, out var startTime))
{
query = query.Where(a => a.StartTime >= startTime);
}
if (!string.IsNullOrWhiteSpace(request.EndTime) && DateTime.TryParse(request.EndTime, out var endTime))
{
query = query.Where(a => a.EndTime <= endTime);
}
var data = await query
.OrderByDescending(a => a.StartTime)
.ToListAsync(a => new DeviceAlarmResponse
{
DeviceCode = a.DeviceCode,
DeviceName = a.DeviceName,
DeviceState = a.DeviceState,
AlarmMessage = a.AlarmMessage,
StartTime = a.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
EndTime = a.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
});
return data ?? new List<DeviceAlarmResponse>();
}
catch (Exception ex)
{
throw new Exception($"获取设备报警数据失败: {ex.Message}", ex);
}
}
/// <summary>
/// 获取设备报警分页数据
/// </summary>
public static async Task<(List<DeviceAlarmResponse> Items, long Total)> GetDeviceAlarmPagedList(
IFreeSql freeSql,
DeviceAlarmPagedRequest request)
{
try
{
var query = freeSql.Select<DeviceAlarm>()
.WhereIf(!string.IsNullOrWhiteSpace(request.DeviceCode),
a => a.DeviceCode == request.DeviceCode)
.WhereIf(request.DeviceState > 0,
a => a.DeviceState == request.DeviceState);
// 处理时间范围查询
if (!string.IsNullOrWhiteSpace(request.StartTime) && DateTime.TryParse(request.StartTime, out var startTime))
{
query = query.Where(a => a.StartTime >= startTime);
}
if (!string.IsNullOrWhiteSpace(request.EndTime) && DateTime.TryParse(request.EndTime, out var endTime))
{
query = query.Where(a => a.EndTime <= endTime);
}
var total = await query.CountAsync();
var data = await query
.OrderByDescending(a => a.StartTime)
.Page(request.PageNumber, request.PageSize)
.ToListAsync(a => new DeviceAlarmResponse
{
DeviceCode = a.DeviceCode,
DeviceName = a.DeviceName,
DeviceState = a.DeviceState,
AlarmMessage = a.AlarmMessage,
StartTime = a.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
EndTime = a.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
});
return (data ?? new List<DeviceAlarmResponse>(), total);
}
catch (Exception ex)
{
throw new Exception($"获取设备报警分页数据失败: {ex.Message}", ex);
}
}
/// <summary>
/// 获取最新的设备报警记录
/// </summary>
public static async Task<DeviceAlarmResponse?> GetLatestDeviceAlarm(
IFreeSql freeSql,
DeviceAlarmRequest request)
{
try
{
var query = freeSql.Select<DeviceAlarm>()
.WhereIf(!string.IsNullOrWhiteSpace(request.DeviceCode),
a => a.DeviceCode == request.DeviceCode)
.WhereIf(request.DeviceState > 0,
a => a.DeviceState == request.DeviceState);
var data = await query
.OrderByDescending(a => a.StartTime)
.FirstAsync(a => new DeviceAlarmResponse
{
DeviceCode = a.DeviceCode,
DeviceName = a.DeviceName,
DeviceState = a.DeviceState,
AlarmMessage = a.AlarmMessage,
StartTime = a.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
EndTime = a.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
});
return data;
}
catch (Exception ex)
{
throw new Exception($"获取最新设备报警数据失败: {ex.Message}", ex);
}
}
/// <summary>
/// 获取指定设备的活动报警EndTime为最大值表示未结束
/// </summary>
public static async Task<List<DeviceAlarmResponse>> GetActiveAlarms(
IFreeSql freeSql,
string? deviceCode)
{
try
{
var query = freeSql.Select<DeviceAlarm>()
.WhereIf(!string.IsNullOrWhiteSpace(deviceCode),
a => a.DeviceCode == deviceCode)
.Where(a => a.EndTime == DateTime.MaxValue || a.EndTime > DateTime.Now);
var data = await query
.OrderByDescending(a => a.StartTime)
.ToListAsync(a => new DeviceAlarmResponse
{
DeviceCode = a.DeviceCode,
DeviceName = a.DeviceName,
DeviceState = a.DeviceState,
AlarmMessage = a.AlarmMessage,
StartTime = a.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
EndTime = a.EndTime.ToString("yyyy-MM-dd HH:mm:ss")
});
return data ?? new List<DeviceAlarmResponse>();
}
catch (Exception ex)
{
throw new Exception($"获取活动报警数据失败: {ex.Message}", ex);
}
}
}
}