change-门体发泡数据库加载速度优化

dev
liuwf 1 year ago
parent 7861188d02
commit 8ca8957c67

@ -59,16 +59,25 @@ namespace Admin.Core.Repository
/// <returns></returns>
public bool GetConnectionState()
{
if (_db.CopyNew().Ado.IsValidConnection())
try
{
return true;
if (_db.CopyNew().Ado.IsValidConnection())
{
return true;
}
else
{
_db.Close();
_db.Open();
return false;
}
}
else
catch (Exception ex)
{
_db.Close();
_db.Open();
return true;
Console.WriteLine(ex.ToString());
return false;
}
}

@ -2,6 +2,7 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -51,17 +52,27 @@ namespace Aucma.Core.BoxFoam.ViewModels
[RelayCommand]
private void SaveSearchCriteria(Object window)
{
var config = ((Aucma.Core.BoxFoam.ViewModels.SearchCriteriaViewModel)((System.Windows.FrameworkElement)window).DataContext).Configurations;
var info = config.ToList();
string items = string.Empty;
foreach (var configuration in info)
try
{
items += configuration.ToString() + "%";
Console.WriteLine("==================初始配置文件数据"+ appConfig.searchItems);
Console.WriteLine("==================测试数据");
var config = ((Aucma.Core.BoxFoam.ViewModels.SearchCriteriaViewModel)((System.Windows.FrameworkElement)window).DataContext).Configurations;
var info = config.ToList();
Console.WriteLine("========待保存数据" + info.ToJson());
string items = string.Empty;
foreach (var configuration in info)
{
items += configuration.ToString() + "%";
}
appConfig.searchItems = string.Empty;
appConfig.searchItems = items;
Console.WriteLine("==========配置文件数据appConfig.searchItems" + appConfig.searchItems);
Init();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
appConfig.searchItems = string.Empty;
appConfig.searchItems = items;
Init();
}
#endregion

@ -99,7 +99,7 @@ namespace Aucma.Core.DoorFoam.Business
}
tempKeys.Add(kvPair.Key, record);
}
if (!kvPair.Value.MixpistOff.Equals(tempKeys[kvPair.Key].MixpistOff))
if (!kvPair.Value.MixpistOff.Equals(tempKeys[kvPair.Key].MixpistOff) && !kvPair.Value.MixpistOff.Equals("0"))
{
kvPair.Value.ProductLineCode = "CX_02";
kvPair.Value.StationNumber = "1004";

@ -44,80 +44,84 @@ namespace Aucma.Core.DoorFoam.Business
public void startCollect()
{
while (true)
Task.Run(() =>
{
//semaphore.WaitOne();
try
while (true)
{
Thread.Sleep(5000);
var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("DoorPlc"));
if (obj != null)
try
{
//读取所有模具状态
List<DoorFoamMachine> moldStatusList = ReadModeStatus(obj);
//读取所有模具型号
List<DoorFoamMachine> moldTypeList = ReadModeType(obj);
//读取所有模具产量
List<DoorFoamMachine> aDoorMoldOutPutList = ReadADoorModeProduct(obj);
List<DoorFoamMachine> bDoorMoldOutPutList = ReadBDoorModeProduct(obj);
Thread.Sleep(2000);
#region 读取设备状态1运行 2停机 3故障、生产节拍、节拍、设备报警
byte[] info = obj.plc.Read("DB490.646", 10);
int deviceStatus = 0;
float productTakt = 0;
float taktNum = 0;
if (info != null)
{
//设备状态1运行 2停机 3故障
deviceStatus = judgeStatus(ByteArrayToBinary(info.Skip(0).Take(1).ToArray()));
// 台车节拍
productTakt = int.Parse(StringChange.bytesToHexStr(info.Skip(2).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber);
//整圈节拍
taktNum = int.Parse(StringChange.bytesToHexStr(info.Skip(6).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber);
}
var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("DoorPlc"));
int deviceAlarm = obj.plc.ReadInt32("DB490.2136");
#endregion
if (obj != null)
{
//读取所有模具状态
List<DoorFoamMachine> moldStatusList = ReadModeStatus(obj);
//读取所有模具型号
List<DoorFoamMachine> moldTypeList = ReadModeType(obj);
//读取所有模具产量
List<DoorFoamMachine> aDoorMoldOutPutList = ReadADoorModeProduct(obj);
List<DoorFoamMachine> bDoorMoldOutPutList = ReadBDoorModeProduct(obj);
List<DoorFoamMachine> result = new List<DoorFoamMachine>();
var mergedCollection = from moldStatus in moldStatusList
join moldType in moldTypeList on new { moldStatus.StationTrolleyNumber } equals new { moldType.StationTrolleyNumber }
join moldOutPut_A in aDoorMoldOutPutList on new { moldStatus.StationTrolleyNumber } equals new { moldOutPut_A.StationTrolleyNumber }
join moldOutPut_B in bDoorMoldOutPutList on new { moldStatus.StationTrolleyNumber } equals new { moldOutPut_B.StationTrolleyNumber }
select new DoorFoamMachine
{
StationTrolleyNumber = moldStatus.StationTrolleyNumber,
GunNumber = moldStatus.GunNumber,
MoldStatus = moldStatus.MoldStatus,
MainId = moldStatus.MainId,
MoldType = moldType.MoldType.Replace("\b","").Replace("\u0001", "").Replace("\0", "").Trim(),
MoldProdutionA = moldOutPut_A.MoldProdutionA,
MoldProdutionB = moldOutPut_B.MoldProdutionB,
DeviceStatus = deviceStatus,
DeviceAlarm = deviceAlarm,
ProductTakt = productTakt,
Takt = taktNum,
CreateTime = DateTime.Now
};
result = mergedCollection.ToList();
if(result != null)
{
RefreshDoorFoamMachineEvent?.Invoke(result);
#region 读取设备状态1运行 2停机 3故障、生产节拍、节拍、设备报警
byte[] info = obj.plc.Read("DB490.646", 10);
int deviceStatus = 0;
float productTakt = 0;
float taktNum = 0;
if (info != null)
{
//设备状态1运行 2停机 3故障
deviceStatus = judgeStatus(ByteArrayToBinary(info.Skip(0).Take(1).ToArray()));
// 台车节拍
productTakt = int.Parse(StringChange.bytesToHexStr(info.Skip(2).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber);
//整圈节拍
taktNum = int.Parse(StringChange.bytesToHexStr(info.Skip(6).Take(4).ToArray(), 4), System.Globalization.NumberStyles.HexNumber);
}
int deviceAlarm = obj.plc.ReadInt32("DB490.2136");
#endregion
List<DoorFoamMachine> result = new List<DoorFoamMachine>();
var mergedCollection = from moldStatus in moldStatusList
join moldType in moldTypeList on new { moldStatus.StationTrolleyNumber } equals new { moldType.StationTrolleyNumber }
join moldOutPut_A in aDoorMoldOutPutList on new { moldStatus.StationTrolleyNumber } equals new { moldOutPut_A.StationTrolleyNumber }
join moldOutPut_B in bDoorMoldOutPutList on new { moldStatus.StationTrolleyNumber } equals new { moldOutPut_B.StationTrolleyNumber }
select new DoorFoamMachine
{
StationTrolleyNumber = moldStatus.StationTrolleyNumber,
GunNumber = moldStatus.GunNumber,
MoldStatus = moldStatus.MoldStatus,
MainId = moldStatus.MainId,
MoldType = moldType.MoldType.Replace("\b", "").Replace("\u0001", "").Replace("\0", "").Trim(),
MoldProdutionA = moldOutPut_A.MoldProdutionA,
MoldProdutionB = moldOutPut_B.MoldProdutionB,
DeviceStatus = deviceStatus,
DeviceAlarm = deviceAlarm,
ProductTakt = productTakt,
Takt = taktNum,
CreateTime = DateTime.Now
};
result = mergedCollection.ToList();
if (result != null)
{
RefreshDoorFoamMachineEvent?.Invoke(result);
var addFlag = _doorFoamMachineServices.AddAsync(result).Result;
}
var addFlag = _doorFoamMachineServices.AddAsync(result).Result;
}
}
}
catch (Exception ex)
{
catch (Exception ex)
{
Console.WriteLine($"门体发泡数据采集异常:{ex.Message}");
Console.WriteLine($"门体发泡数据采集异常:{ex.Message}");
}
}
}
});
}
/// <summary>
/// 读取模位状态

@ -7,7 +7,10 @@ using Admin.Core.Tasks;
using Aucma.Core.DoorFoam.Business;
using Aucma.Core.DoorFoam.Models;
using CommunityToolkit.Mvvm.ComponentModel;
using log4net;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Logging;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -20,6 +23,8 @@ namespace Aucma.Core.DoorFoam.ViewModels
public partial class FoamMachinesPageViewModel : ObservableObject
{
IBoxLastShotRecordServices _boxLastShotRecordServices;
private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(FoamMachinesPageViewModel));
public FoamMachinesPageViewModel()
{
@ -206,43 +211,53 @@ namespace Aucma.Core.DoorFoam.ViewModels
}
#region 加载DataGrid数据
private async Task LoadData()
private void LoadData()
{
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
try
{
LastShotRecordDataGrid.Clear();
int i = 1;
var list = await _boxLastShotRecordServices.QueryAsync();
var list = _boxLastShotRecordServices.QueryAsync(x => x.CreateTime >= System.DateTime.Now.AddDays(-1)).Result.Take(30).OrderByDescending(d => d.CreateTime);
if (list == null) return;
list.OrderByDescending(d => d.CreateTime).Take(30);
foreach (var item in list)
{
string system = string.Empty;
if (item.System == "1") { system = "1系统"; }
if (item.System == "2") { system = "2系统"; }
LastShotRecordModel model = new LastShotRecordModel();
if (LastShotRecordDataGrid.Count() == 0)
{
model.No = 1;
}
else
{
model.No = LastShotRecordDataGrid.Count() + 1;
}
model.No = i;
model.System = system;
model.GunHead = item.GunCode;
model.PolInjectionpressure = item.PolHp;
model.IsoInjectionpressure = item.IsoHp;
model.PolInjectiontemperature = item.PolTemp;
model.IsoInjectiontemperature = item.IsoTemp;
model.LastTime = item.CreateTime;
model.Createtime = item.CreateTime;
model.StationNumber = item.PourNu;
LastShotRecordDataGrid.Insert(0, model);
}
}));
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
{
LastShotRecordDataGrid.Clear();
int i = 1;
// var list = await _boxLastShotRecordServices.QueryAsync();
// list.OrderByDescending(d => d.CreateTime).Take(30);
foreach (var item in list)
{
string system = string.Empty;
if (item.System == "1") { system = "1系统"; }
if (item.System == "2") { system = "2系统"; }
LastShotRecordModel model = new LastShotRecordModel();
if (LastShotRecordDataGrid.Count() == 0)
{
model.No = 1;
}
else
{
model.No = LastShotRecordDataGrid.Count() + 1;
}
model.No = i;
model.System = system;
model.GunHead = item.GunCode;
model.PolInjectionpressure = item.PolHp;
model.IsoInjectionpressure = item.IsoHp;
model.PolInjectiontemperature = item.PolTemp;
model.IsoInjectiontemperature = item.IsoTemp;
model.LastTime = item.CreateTime;
model.Createtime = item.CreateTime;
model.StationNumber = item.PourNu;
LastShotRecordDataGrid.Insert(0, model);
}
}));
}
catch (Exception ex)
{
logHelper.Info(ex.Message.ToString());
}
}
#endregion

@ -40,17 +40,11 @@ namespace Aucma.Core.DoorFoam.ViewModels
RefreshDoorFoamMachineDataGrid(info);
};
Task.Run(() =>
{
Thread.Sleep(1000*10);
doorCollection.startCollect();
});
Task.Run(() =>
{
Thread.Sleep(1000 * 10);
collectionFoam.startCollect();
});
}
#region 获取今天的数据

Loading…
Cancel
Save