liuhr 2 years ago
commit d0bd1fee77

Binary file not shown.

@ -151,7 +151,7 @@ namespace PVDEMCS.Devices.Impl
while (true)
{
equipmentRecordService.RunEquipmentRecordTotal();
Thread.Sleep(1000 * 600);
Thread.Sleep(1000 * 1800);
}
});
}

@ -509,9 +509,29 @@ namespace PVDEMCS.Devices.Impl
private Result<T> ConvertResult<T>(OperateResult<T> result)
{
VerifyTimeOut(result);
var retResult = ModelTools.PubClone<OperateResult<T>, Result<T>>.Trans(result);
retResult.Content = result.Content;
return retResult;
}
/// <summary>
/// 判断连接是否中断
/// </summary>
/// <param name="result"></param>
private void VerifyTimeOut(OperateResult result)
{
var msg = result.Message;
if (result!=null && !result.IsSuccess)
{
var isTimeOut = msg.Contains("连接") && msg.Contains("失败") && msg.Contains("超时时间为");
if (isTimeOut)
{
IsConnected = false;
}
}
}
}
}

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\Source\PVDEMCS\PVDEMCS\PVDEMCS\bin\Release\net6.0\publish\</_PublishTargetUrl>
<History>True|2023-11-06T12:18:02.9796262Z;True|2023-11-06T17:16:40.7384677+08:00;True|2023-11-06T17:10:54.2886424+08:00;True|2023-11-06T15:15:13.8945359+08:00;True|2023-11-06T14:37:56.4570851+08:00;True|2023-11-04T09:50:29.5867049+08:00;</History>
<History>True|2023-11-07T09:29:34.5426043Z;True|2023-11-07T14:03:31.4977185+08:00;True|2023-11-06T20:18:02.9796262+08:00;True|2023-11-06T17:16:40.7384677+08:00;True|2023-11-06T17:10:54.2886424+08:00;True|2023-11-06T15:15:13.8945359+08:00;True|2023-11-06T14:37:56.4570851+08:00;True|2023-11-04T09:50:29.5867049+08:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

@ -1,4 +1,5 @@
using AngleSharp.Css.Values;
using AngleSharp.Dom;
using Masuit.Tools;
using Masuit.Tools.Models;
using Microsoft.EntityFrameworkCore;
@ -173,14 +174,16 @@ namespace PVDEMCS.Services.Repositories.Impl
var result = new Result();
using (var context = new EFContext())
{
var query = context.EquipmentRecords.Where(f => f.StartTime >= begDate && f.StartTime <= endDate).ToList();
var query = context.EquipmentRecords.Where(f => (f.StartTime >= begDate && f.StartTime <= endDate) || (f.EndTime >= begDate && f.EndTime <= endDate)).ToList();
//获取状态统计时间
var total = query.GroupBy(f => new { f.EquipmentId, f.State })
.Select(f => new TotalRecord
{
EquipmentId = f.Key.EquipmentId,
State = f.Key.State,
Value = f.Sum(ff => (ff.EndTime - ff.StartTime).TotalMinutes)
Value = Convert.ToDecimal(f.Sum(ff => (ff.EndTime - ff.StartTime).TotalMinutes)),
Date = DateTime.Parse(f.Min(ff => ff.StartTime).ToString("yyyy-MM-dd")),
}).ToList();
if (total.Count == 0)
@ -188,8 +191,18 @@ namespace PVDEMCS.Services.Repositories.Impl
result.Message = "没有汇总统计数据";
return result;
}
//出炉数量统计
const string furnaceNum = "FurnaceNum";
var furnaceQuy = (from q in query
join e in context.EquipmentInfos.Where(f => !f.IsDelete) on q.EquipmentId equals e.Id
where q.State == EquipmentState.Run
select new
{
q.EquipmentId,
e.EquipmentType,
q.StartTime,
q.EndTime
}).ToList();
//获取配置的设备的阈值
var balzersConfig = _configRepository.GetSysConfigDetailNameOrKey("", EquipmentType.Balzers).Content;
var cemeconConfig = _configRepository.GetSysConfigDetailNameOrKey("", EquipmentType.CemeCon).Content;
@ -209,119 +222,77 @@ namespace PVDEMCS.Services.Repositories.Impl
{
int.TryParse(ionbondConfig.ConfigValue, out ionbond);
}
//
var furnaceList = (from q in query
join e in context.EquipmentInfos.Where(f => !f.IsDelete) on q.EquipmentId equals e.Id
where q.State == EquipmentState.Run
select new
{
q.EquipmentId,
e.EquipmentType,
q.StartTime,
q.EndTime
}).ToList();
foreach (var item in furnaceList)
var minDate = total.Min(f => f.Date);
var maxDate = total.Max(f => f.Date);
var dayTotals = context.EquipmentRecordDayTotals.Where(f => f.TotalDay >= minDate && f.TotalDay <= maxDate).ToList();
foreach (var item in total.Select(f => new { f.EquipmentId, f.Date }).Distinct())
{
//是否有开炉数据
var furnaceVal = total.Where(f => f.EquipmentId == item.EquipmentId && f.State == furnaceNum).FirstOrDefault();
if (furnaceVal == null)
var value = dayTotals.Where(f => f.EquipmentId == item.EquipmentId && f.TotalDay == item.Date).FirstOrDefault();
if (value.IsNullOrEmpty())
{
furnaceVal = new TotalRecord
value = new EquipmentRecordDayTotalEntity
{
EquipmentId = item.EquipmentId,
State = furnaceNum,
Value = 0
TotalDay = item.Date,
};
total.Add(furnaceVal);
value.Create();
context.EquipmentRecordDayTotals.Add(value);
}
//计算开炉次数
var minutes = (item.EndTime - item.StartTime).TotalMinutes;
switch (item.EquipmentType)
else
{
case EquipmentType.Balzers:
if (minutes >= balzers)
{
furnaceVal.Value++;
}
break;
case EquipmentType.Ionbond:
if (minutes >= ionbond)
{
furnaceVal.Value++;
}
break;
case EquipmentType.CemeCon:
if (minutes >= cemecon)
{
furnaceVal.Value++;
}
break;
value.Update();
}
}
//记录统计时间
var list = context.EquipmentRecordDayTotals.Where(f => f.TotalDay == begDate).ToList();
//有记录
foreach (var item in list)
{
var records = total.Where(f => f.EquipmentId == item.EquipmentId).ToList();
foreach (var record in records)
//运行时间
var run = total.Where(f => f.EquipmentId == value.EquipmentId && f.Date == value.TotalDay && f.State == EquipmentState.Run).FirstOrDefault();
if (!run.IsNullOrEmpty())
{
switch (record.State)
{
case furnaceNum:
item.FurnaceNum = Convert.ToInt32(record.Value);
break;
case EquipmentState.Run:
item.TotalRunningTime = Convert.ToDecimal(record.Value);
break;
case EquipmentState.Alarm:
item.TotalAlarmTime = Convert.ToDecimal(record.Value);
break;
case EquipmentState.Stop:
item.TotalStopTime = Convert.ToDecimal(record.Value);
break;
default:
result.Message = "没有的设备状态:" + record.State.ToString();
break;
}
item.Update();
value.TotalRunningTime = run.Value;
}
}
//没有记录
var notRecords = total.Where(f => !list.Select(ff => ff.EquipmentId).ToList().Contains(f.EquipmentId)).ToList();
foreach (var equipmentId in notRecords.Select(f => f.EquipmentId).Distinct())
{
var records = total.Where(f => f.EquipmentId == equipmentId).ToList();
var item = new EquipmentRecordDayTotalEntity
//待机时间
var stop = total.Where(f => f.EquipmentId == value.EquipmentId && f.Date == value.TotalDay && f.State == EquipmentState.Stop).FirstOrDefault();
if (!stop.IsNullOrEmpty())
{
EquipmentId = equipmentId,
TotalDay = begDate
};
foreach (var record in records)
value.TotalStopTime = stop.Value;
}
//报警时间
var alarm = total.Where(f => f.EquipmentId == value.EquipmentId && f.Date == value.TotalDay && f.State == EquipmentState.Alarm).FirstOrDefault();
if (!alarm.IsNullOrEmpty())
{
switch (record.State)
value.TotalAlarmTime = alarm.Value;
}
value.FurnaceNum = 0;
//出炉数量
var furnaceList = furnaceQuy.Where(f => f.EquipmentId == value.EquipmentId && value.TotalDay.Value.ToString("yyyy-MM-dd")==f.StartTime.ToString("yyyy-MM-dd")).ToList();
foreach (var furnace in furnaceList)
{
//计算开炉次数
var minutes = (furnace.EndTime - furnace.StartTime).TotalMinutes;
switch (furnace.EquipmentType)
{
case furnaceNum:
item.FurnaceNum = Convert.ToInt32(record.Value);
break;
case EquipmentState.Run:
item.TotalRunningTime = Convert.ToDecimal(record.Value);
case EquipmentType.Balzers:
if (minutes >= balzers)
{
value.FurnaceNum++;
}
break;
case EquipmentState.Alarm:
item.TotalAlarmTime = Convert.ToDecimal(record.Value);
case EquipmentType.Ionbond:
if (minutes >= ionbond)
{
value.FurnaceNum++;
}
break;
case EquipmentState.Stop:
item.TotalStopTime = Convert.ToDecimal(record.Value);
break;
default:
result.Message = "没有的设备状态:" + record.State.ToString();
case EquipmentType.CemeCon:
if (minutes >= cemecon)
{
value.FurnaceNum++;
}
break;
}
item.Create();
}
context.EquipmentRecordDayTotals.Add(item);
}
context.SaveChanges();
return result;
@ -339,12 +310,12 @@ namespace PVDEMCS.Services.Repositories.Impl
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 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,
@ -378,10 +349,10 @@ namespace PVDEMCS.Services.Repositories.Impl
}
else
{
item.FurnaceNum += value.FurnaceNum;
item.TotalAlarmTime += value.TotalAlarmTime;
item.TotalRunningTime += value.TotalRunningTime;
item.TotalStopTime += value.TotalStopTime;
item.FurnaceNum = value.FurnaceNum;
item.TotalAlarmTime = value.TotalAlarmTime;
item.TotalRunningTime = value.TotalRunningTime;
item.TotalStopTime = value.TotalStopTime;
item.Update();
}
}
@ -397,7 +368,8 @@ namespace PVDEMCS.Services.Repositories.Impl
{
public string EquipmentId { get; set; }
public string State { get; set; }
public double Value { get; set; }
public decimal Value { get; set; }
public DateTime Date { get; set; }
}
#endregion

@ -1,4 +1,4 @@
# VITE_BASE_API=http://192.168.10.246:9001/smart
# VITE_BASE_API=http://10.34.48.206:9000/smart
VITE_BASE_API=http://192.168.2.241:5223/
VITE_BASE_API=http://192.168.10.241:5223/
Loading…
Cancel
Save