添加 设备记录统计功能实现

main
xiaoguo 2 years ago
parent ad76f74bad
commit 8c7ed8e5c5

Binary file not shown.

@ -88,20 +88,23 @@ namespace PVDEMCS.Devices.Impl
}
}
//
private void TaskRun()
{
//监控设备连接
Task.Run(() =>
{
while (true)
{
foreach (var item in monitors)
{
var task = item.StopAsync();
var task = item.StartAsync();
}
Thread.Sleep(5000);
}
});
//添加设备记录
Task.Run(() =>
{
while (true)
@ -112,16 +115,22 @@ namespace PVDEMCS.Devices.Impl
}
});
//设备记录日统计
Task.Run(() =>
{
while (true)
{
RunEquipmentRecordTotal();
equipmentRecordService.RunEquipmentRecordDayTotal(DateTime.Now);
Thread.Sleep(1000 * 60);
}
});
//设备记录统计
Task.Run(() =>
{
equipmentRecordService.RunEquipmentRecordTotal();
});
}
//记录设备数据
@ -169,12 +178,6 @@ namespace PVDEMCS.Devices.Impl
}
}
//记录设备数据统计
private void RunEquipmentRecordTotal()
{
equipmentRecordService.RunEquipmentRecordTotal(DateTime.Now);
}
private void DeviceMonitor_PointChnage(object sender, DevicePoint e)
{
}

@ -43,7 +43,6 @@ namespace PVDEMCS.Services
/// </summary>
/// <param name="equipmentId">设备Id</param>
/// <param name="state">设备状态,运行:Run待机:Stop报警:Alarm</param>
/// <param name="equipmentId">设备Id</param>
/// <returns></returns>
Result AddUpdateEquipmentRecord(string equipmentId, string state, DateTime dateTime);
@ -52,7 +51,13 @@ namespace PVDEMCS.Services
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
Result RunEquipmentRecordTotal(DateTime date);
Result RunEquipmentRecordDayTotal(DateTime date);
/// <summary>
/// 进行设备状态记录统计
/// </summary>
/// <returns></returns>
Result RunEquipmentRecordTotal();
#endregion

@ -73,9 +73,19 @@ namespace PVDEMCS.Services.Impl
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public Result RunEquipmentRecordTotal(DateTime date)
public Result RunEquipmentRecordDayTotal(DateTime date)
{
var result = this._equipmentRecordRepository.RunEquipmentRecordTotal(date);
var result = this._equipmentRecordRepository.RunEquipmentRecordDayTotal(date);
return result;
}
/// <summary>
/// 进行设备状态记录统计
/// </summary>
/// <returns></returns>
public Result RunEquipmentRecordTotal()
{
var result = this._equipmentRecordRepository.RunEquipmentRecordTotal();
return result;
}

@ -47,7 +47,6 @@ namespace PVDEMCS.Services.Repositories
/// </summary>
/// <param name="equipmentId">设备Id</param>
/// <param name="state">设备状态,运行:Run待机:Stop报警:Alarm</param>
/// <param name="equipmentId">设备Id</param>
/// <returns></returns>
Result AddUpdateEquipmentRecord(string equipmentId, string state, DateTime dateTime);
@ -56,7 +55,13 @@ namespace PVDEMCS.Services.Repositories
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
Result RunEquipmentRecordTotal(DateTime date);
Result RunEquipmentRecordDayTotal(DateTime date);
/// <summary>
/// 进行设备状态记录统计
/// </summary>
/// <returns></returns>
Result RunEquipmentRecordTotal();
#endregion

@ -151,7 +151,7 @@ namespace PVDEMCS.Services.Repositories.Impl
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public Result RunEquipmentRecordTotal(DateTime date)
public Result RunEquipmentRecordDayTotal(DateTime date)
{
var begDate = DateTime.Parse(date.ToString("yyyy-MM-dd"));
var endDate = begDate.AddDays(1).AddSeconds(-1);
@ -308,6 +308,69 @@ namespace PVDEMCS.Services.Repositories.Impl
}
}
/// <summary>
/// 进行设备状态记录统计
/// </summary>
/// <returns></returns>
public Result RunEquipmentRecordTotal()
{
using (var context = new EFContext())
{
var query = context.EquipmentRecordDayTotals.AsQueryable();
//获取最后更新时间
var list = context.EquipmentRecordTotals.ToList();
var maxDate = list.Max(f => f.UpdateAt);
//如果有记录
if (!maxDate.HasValue)
{
query = query.Where(f => f.UpdateAt > maxDate);
}
var values = query.GroupBy(f => f.EquipmentId).Select(f => new EquipmentRecordTotalEntity
{
EquipmentId = f.Key,
FurnaceNum = f.Sum(f=>f.FurnaceNum),
TotalRunningTime = f.Sum(f => f.TotalRunningTime),
TotalAlarmTime = f.Sum(f => f.TotalAlarmTime),
TotalStopTime = f.Sum(f => f.TotalStopTime),
}).ToList();
if (values.Count > 0)
{
if (list.IsNullOrEmpty())
{
foreach (var item in values)
{
item.Create();
}
context.EquipmentRecordTotals.AddRange(values);
}
else
{
foreach (var item in list)
{
var value = values.Where(f => f.EquipmentId == item.EquipmentId).FirstOrDefault();
if (value.IsNullOrEmpty())
{
value.Create();
context.EquipmentRecordTotals.Add(value);
}
else
{
item.FurnaceNum += value.FurnaceNum;
item.TotalAlarmTime += value.TotalAlarmTime;
item.TotalRunningTime += value.TotalRunningTime;
item.TotalStopTime += value.TotalStopTime;
item.Update();
}
}
}
context.SaveChanges();
}
return new Result();
}
}
class TotalRecord
{
public string EquipmentId { get; set; }

Loading…
Cancel
Save