优化科学计数法带来的时间损失;修改主采集循环为单个group一个timer
This commit is contained in:
@ -9,9 +9,11 @@ namespace HTCoreServiceApp.Common
|
|||||||
public class ScanTimer : System.Timers.Timer
|
public class ScanTimer : System.Timers.Timer
|
||||||
{
|
{
|
||||||
private List<ScanTagsPara> scanTagsParas;
|
private List<ScanTagsPara> scanTagsParas;
|
||||||
|
private ScanTagsPara scanTagsPara;
|
||||||
private AddressArg addressArg;
|
private AddressArg addressArg;
|
||||||
|
|
||||||
public List<ScanTagsPara> ScanTagsParas { get => scanTagsParas; set => scanTagsParas = value; }
|
public List<ScanTagsPara> ScanTagsParas { get => scanTagsParas; set => scanTagsParas = value; }
|
||||||
|
public ScanTagsPara ScanTagsPara { get => scanTagsPara; set => scanTagsPara = value; }
|
||||||
|
|
||||||
public AddressArg AddressArg { get => addressArg; set => addressArg = value; }
|
public AddressArg AddressArg { get => addressArg; set => addressArg = value; }
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7
|
|||||||
|
|
||||||
Client.SetConnectionType(0x3);
|
Client.SetConnectionType(0x3);
|
||||||
Client.ConnTimeout= Timeout;
|
Client.ConnTimeout= Timeout;
|
||||||
Client.RecvTimeout = 50;
|
Client.RecvTimeout = 200;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -168,21 +168,24 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7
|
|||||||
/// <param name="scanTagsParas"></param>
|
/// <param name="scanTagsParas"></param>
|
||||||
public void ScanConsecutive(List<ScanTagsPara> scanTagsParas)
|
public void ScanConsecutive(List<ScanTagsPara> scanTagsParas)
|
||||||
{
|
{
|
||||||
ScanTimer timerScan = new ScanTimer();
|
foreach (var scanTagsPara in scanTagsParas)
|
||||||
if (scanTagsParas[0].UpdateRate > 0)
|
|
||||||
{
|
{
|
||||||
timerScan.Interval = (double)scanTagsParas[0].UpdateRate;
|
ScanTimer timerScan = new ScanTimer();
|
||||||
}
|
if (scanTagsPara.UpdateRate > 0)
|
||||||
else
|
{
|
||||||
{
|
timerScan.Interval = (double)scanTagsPara.UpdateRate;
|
||||||
timerScan.Interval = 1000;
|
}
|
||||||
}
|
else
|
||||||
timerScan.ScanTagsParas= scanTagsParas;
|
{
|
||||||
|
timerScan.Interval = 1000;
|
||||||
|
}
|
||||||
|
timerScan.ScanTagsPara = scanTagsPara;
|
||||||
|
|
||||||
//timerScan.AddressArg = PLCHelper.GetAddressArg(scanTagsParas.ScanTags);
|
//timerScan.AddressArg = PLCHelper.GetAddressArg(scanTagsParas.ScanTags);
|
||||||
|
|
||||||
timerScan.Elapsed += new System.Timers.ElapsedEventHandler(TimerScanConsecutive_Elapsed);
|
timerScan.Elapsed += new System.Timers.ElapsedEventHandler(TimerScanConsecutive_Elapsed);
|
||||||
timerScan.Enabled = true;
|
timerScan.Enabled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 连续读取timer事件
|
/// 连续读取timer事件
|
||||||
@ -191,157 +194,157 @@ namespace HTCoreServiceApp.Communicate.DriverSiemensS7
|
|||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
private void TimerScanConsecutive_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
private void TimerScanConsecutive_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
|
long hdatetime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
|
||||||
ScanTimer timerScan = (ScanTimer)sender;
|
ScanTimer timerScan = (ScanTimer)sender;
|
||||||
List<ScanTagsPara> scanTagsParas = timerScan.ScanTagsParas;
|
ScanTagsPara scanTagsPara = timerScan.ScanTagsPara;
|
||||||
//AddressArg addressArg = timerScan.AddressArg;
|
//AddressArg addressArg = timerScan.AddressArg;
|
||||||
foreach (var scanTagsPara in scanTagsParas)
|
|
||||||
|
if (scanTagsPara.IsActive == false)
|
||||||
|
return;
|
||||||
|
if (Client.Connected)
|
||||||
{
|
{
|
||||||
if (scanTagsPara.IsActive == false)
|
|
||||||
break;
|
var addressArg = scanTagsPara.AddressArg;
|
||||||
if (Client.Connected)
|
|
||||||
|
//object _lock = new();
|
||||||
|
|
||||||
|
Task task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
|
lock (_lock)
|
||||||
var addressArg = scanTagsPara.AddressArg;
|
|
||||||
|
|
||||||
//object _lock = new();
|
|
||||||
|
|
||||||
Task task = Task.Run(() =>
|
|
||||||
{
|
{
|
||||||
lock (_lock)
|
try
|
||||||
{
|
{
|
||||||
try
|
var tcollstart = DateTime.Now;
|
||||||
|
//CodingTools.StartTime = DateTime.Now.Millisecond;//de
|
||||||
|
//scanTagsPara.ScanTags.Min(x => x.Address);
|
||||||
|
//scanTagsPara.ScanTags.Min(x => x.Address);提高速度应放在timer事件前,测试后更改
|
||||||
|
int startAdress = addressArg.Start;
|
||||||
|
int Area = 132;
|
||||||
|
int DBNumber = 0;
|
||||||
|
if (scanTagsPara.GroupName.Contains("DB"))
|
||||||
{
|
{
|
||||||
var tcollstart = DateTime.Now;
|
DBNumber = int.Parse(Regex.Replace(scanTagsPara.GroupName, "[a-z]", "", RegexOptions.IgnoreCase));
|
||||||
//CodingTools.StartTime = DateTime.Now.Millisecond;//de
|
}
|
||||||
//scanTagsPara.ScanTags.Min(x => x.Address);
|
else
|
||||||
//scanTagsPara.ScanTags.Min(x => x.Address);提高速度应放在timer事件前,测试后更改
|
{
|
||||||
int startAdress = addressArg.Start;
|
DBNumber = int.Parse(scanTagsPara.GroupName);
|
||||||
int Area = 132;
|
}
|
||||||
int DBNumber = 0;
|
int amount = addressArg.Length;
|
||||||
if (scanTagsPara.GroupName.Contains("DB"))
|
int WordLen = 2;
|
||||||
|
byte[] buffer = new byte[amount];
|
||||||
|
int pdu = PLCHelper.GetSiemensPDU(PLCType) * 2 - 18;
|
||||||
|
int Result = 0;
|
||||||
|
|
||||||
|
|
||||||
|
//byte[] bufferr = new byte[amount];
|
||||||
|
Result = ReadArea(Area, DBNumber, startAdress, amount, WordLen, ref buffer);
|
||||||
|
|
||||||
|
|
||||||
|
//if (amount <= pdu)
|
||||||
|
//{
|
||||||
|
// Result = ReadArea(Area, DBNumber, startAdress, amount, WordLen, ref buffer);
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// //int additional = amount- pdu;
|
||||||
|
// int forCount = (int)Math.Ceiling(float.Parse(((float)amount / (float)pdu).ToString()));
|
||||||
|
// List<byte[]> bytes= new List<byte[]>();
|
||||||
|
// for (int i = 0; i < forCount; i++)
|
||||||
|
// {
|
||||||
|
// if ((amount - (i * pdu)) > pdu)
|
||||||
|
// {
|
||||||
|
// int start = startAdress + i * pdu;
|
||||||
|
// byte[] bytes1 = new byte[pdu];
|
||||||
|
// Result = ReadArea(Area, DBNumber, start, pdu, WordLen, ref bytes1);
|
||||||
|
// bytes.Add(bytes1);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// int start = startAdress + i * pdu;
|
||||||
|
// byte[] bytes1 = new byte[amount - (i * pdu)];
|
||||||
|
// Result = ReadArea(Area, DBNumber, start, amount - (i * pdu), WordLen, ref bytes1);
|
||||||
|
// bytes.Add(bytes1);
|
||||||
|
// }
|
||||||
|
// Thread.Sleep(3);
|
||||||
|
// }
|
||||||
|
// var byetstemp = Array.Empty<byte>();
|
||||||
|
// foreach (var buff in bytes)
|
||||||
|
// {
|
||||||
|
// byetstemp = byetstemp.Concat(buff).ToArray();
|
||||||
|
// }
|
||||||
|
// buffer = byetstemp;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
var tcollend = DateTime.Now;
|
||||||
|
var timecolldiff = tcollend - tcollstart;
|
||||||
|
Console.WriteLine($"S7读取耗时:{timecolldiff},设备:{DriverName}变量组:{scanTagsPara.GroupName}");
|
||||||
|
//CodingTools.EndTime = DateTime.Now.Millisecond;//de
|
||||||
|
//var timess = (CodingTools.EndTime - CodingTools.StartTime).ToString();
|
||||||
|
//Console.WriteLine($"读取耗时:{timess}");
|
||||||
|
if (Result == 0)
|
||||||
|
{
|
||||||
|
var t1 = DateTime.Now;
|
||||||
|
Console.WriteLine(string.Join(",", buffer) + "S7读取完成:DB" + DBNumber.ToString() + ",字节数:" + amount.ToString());
|
||||||
|
//Task<int> saveResult = DataExtract.DataExtractCAsync(scanTagsPara.ScanTags, scanTagsPara.GroupName, scanTagsPara.DriverName, buffer, addressArg);
|
||||||
|
var ss = new DataExtract();
|
||||||
|
|
||||||
|
Task.Run(()=>
|
||||||
|
|
||||||
|
ss.DataExtractCAsync(scanTagsPara.ScanTags, scanTagsPara.SystemName, scanTagsPara.GroupName, scanTagsPara.DriverName, buffer, addressArg, hdatetime)
|
||||||
|
);
|
||||||
|
var t2 = DateTime.Now;
|
||||||
|
var timediff = t2- t1;
|
||||||
|
Console.WriteLine($"S7缓存和储存耗时:{timediff}");
|
||||||
{
|
{
|
||||||
DBNumber = int.Parse(Regex.Replace(scanTagsPara.GroupName, "[a-z]", "", RegexOptions.IgnoreCase));
|
//if (saveResult.Result == 0)
|
||||||
|
//{
|
||||||
|
// //logger
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// //logger
|
||||||
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
if(scanTagsPara.IncludeBChaned)
|
||||||
{
|
{
|
||||||
DBNumber = int.Parse(scanTagsPara.GroupName);
|
var BChanged = GetVlaue((short)DataType.BOOL, scanTagsPara.BChangedAddress, buffer, addressArg);
|
||||||
}
|
if(BChanged == "True")
|
||||||
int amount = addressArg.Length;
|
|
||||||
int WordLen = 2;
|
|
||||||
byte[] buffer = new byte[amount];
|
|
||||||
int pdu = PLCHelper.GetSiemensPDU(PLCType) * 2 - 18;
|
|
||||||
int Result = 0;
|
|
||||||
|
|
||||||
|
|
||||||
//byte[] bufferr = new byte[amount];
|
|
||||||
Result = ReadArea(Area, DBNumber, startAdress, amount, WordLen, ref buffer);
|
|
||||||
|
|
||||||
|
|
||||||
//if (amount <= pdu)
|
|
||||||
//{
|
|
||||||
// Result = ReadArea(Area, DBNumber, startAdress, amount, WordLen, ref buffer);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// //int additional = amount- pdu;
|
|
||||||
// int forCount = (int)Math.Ceiling(float.Parse(((float)amount / (float)pdu).ToString()));
|
|
||||||
// List<byte[]> bytes= new List<byte[]>();
|
|
||||||
// for (int i = 0; i < forCount; i++)
|
|
||||||
// {
|
|
||||||
// if ((amount - (i * pdu)) > pdu)
|
|
||||||
// {
|
|
||||||
// int start = startAdress + i * pdu;
|
|
||||||
// byte[] bytes1 = new byte[pdu];
|
|
||||||
// Result = ReadArea(Area, DBNumber, start, pdu, WordLen, ref bytes1);
|
|
||||||
// bytes.Add(bytes1);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// int start = startAdress + i * pdu;
|
|
||||||
// byte[] bytes1 = new byte[amount - (i * pdu)];
|
|
||||||
// Result = ReadArea(Area, DBNumber, start, amount - (i * pdu), WordLen, ref bytes1);
|
|
||||||
// bytes.Add(bytes1);
|
|
||||||
// }
|
|
||||||
// Thread.Sleep(3);
|
|
||||||
// }
|
|
||||||
// var byetstemp = Array.Empty<byte>();
|
|
||||||
// foreach (var buff in bytes)
|
|
||||||
// {
|
|
||||||
// byetstemp = byetstemp.Concat(buff).ToArray();
|
|
||||||
// }
|
|
||||||
// buffer = byetstemp;
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
var tcollend = DateTime.Now;
|
|
||||||
var timecolldiff = tcollend - tcollstart;
|
|
||||||
Console.WriteLine($"S7读取耗时:{timecolldiff},设备:{DriverName}变量组:{scanTagsPara.GroupName}");
|
|
||||||
//CodingTools.EndTime = DateTime.Now.Millisecond;//de
|
|
||||||
//var timess = (CodingTools.EndTime - CodingTools.StartTime).ToString();
|
|
||||||
//Console.WriteLine($"读取耗时:{timess}");
|
|
||||||
if (Result == 0)
|
|
||||||
{
|
|
||||||
var t1 = DateTime.Now;
|
|
||||||
Console.WriteLine(string.Join(",", buffer) + "S7读取完成:DB" + DBNumber.ToString() + ",字节数:" + amount.ToString());
|
|
||||||
//Task<int> saveResult = DataExtract.DataExtractCAsync(scanTagsPara.ScanTags, scanTagsPara.GroupName, scanTagsPara.DriverName, buffer, addressArg);
|
|
||||||
var ss = new DataExtract();
|
|
||||||
long hdatetime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
|
|
||||||
Task.Run(()=>
|
|
||||||
|
|
||||||
ss.DataExtractCAsync(scanTagsPara.ScanTags, scanTagsPara.SystemName, scanTagsPara.GroupName, scanTagsPara.DriverName, buffer, addressArg, hdatetime)
|
|
||||||
);
|
|
||||||
var t2 = DateTime.Now;
|
|
||||||
var timediff = t2- t1;
|
|
||||||
Console.WriteLine($"S7缓存和储存耗时:{timediff}");
|
|
||||||
{
|
{
|
||||||
//if (saveResult.Result == 0)
|
var ReadSetResult = StartReadSetupParameter();
|
||||||
//{
|
if (ReadSetResult == 0)
|
||||||
// //logger
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// //logger
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
|
||||||
if(scanTagsPara.IncludeBChaned)
|
|
||||||
{
|
|
||||||
var BChanged = GetVlaue((short)DataType.BOOL, scanTagsPara.BChangedAddress, buffer, addressArg);
|
|
||||||
if(BChanged == "True")
|
|
||||||
{
|
{
|
||||||
var ReadSetResult = StartReadSetupParameter();
|
SetDeviceData(scanTagsPara.GroupName, "BChanged", "0");
|
||||||
if (ReadSetResult == 0)
|
|
||||||
{
|
|
||||||
SetDeviceData(scanTagsPara.GroupName, "BChanged", "0");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Result != 0)
|
|
||||||
{
|
|
||||||
Console.WriteLine("S7读取失败:DB" + DBNumber.ToString() + ",ERRORCODE:" + Result.ToString());
|
|
||||||
LogHelper.LogWrite("S7读取失败:DB" + DBNumber.ToString() + ",ERRORCODE:" + Result.ToString());
|
|
||||||
//Close();
|
|
||||||
//Thread.Sleep(50);
|
|
||||||
//Connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else if (Result != 0)
|
||||||
{
|
{
|
||||||
LogHelper.LogWrite($"{DriverName}读取失败,S7错误信息{ex}");
|
Console.WriteLine("S7读取失败:DB" + DBNumber.ToString() + ",ERRORCODE:" + Result.ToString());
|
||||||
}
|
LogHelper.LogWrite("S7读取失败:DB" + DBNumber.ToString() + ",ERRORCODE:" + Result.ToString());
|
||||||
}
|
//Close();
|
||||||
|
//Thread.Sleep(50);
|
||||||
|
//Connect();
|
||||||
|
}
|
||||||
|
|
||||||
});
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
else
|
{
|
||||||
{
|
LogHelper.LogWrite($"{DriverName}读取失败,S7错误信息{ex}");
|
||||||
LogHelper.LogWrite($"{DriverName}读取失败,S7未连接");
|
}
|
||||||
//Connect();
|
}
|
||||||
}
|
|
||||||
Thread.Sleep(50);
|
});
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogHelper.LogWrite($"{DriverName}读取失败,S7未连接");
|
||||||
|
//Connect();
|
||||||
|
}
|
||||||
|
Thread.Sleep(50);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -36,16 +36,16 @@
|
|||||||
<None Remove="rd.xml" />
|
<None Remove="rd.xml" />
|
||||||
</ItemGroup>-->
|
</ItemGroup>-->
|
||||||
|
|
||||||
<!--<ItemGroup>
|
<ItemGroup>
|
||||||
<RdXmlFile Include="rd.xml" />
|
<RdXmlFile Include="rd.xml" />
|
||||||
</ItemGroup>-->
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="libplctag" Version="1.2.0" />
|
<PackageReference Include="libplctag" Version="1.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.123" />
|
<PackageReference Include="SqlSugarCore" Version="5.1.4.160" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ namespace HTCoreServiceApp
|
|||||||
builder.Services.AddTransient<DataExtract>();
|
builder.Services.AddTransient<DataExtract>();
|
||||||
builder.Services.AddSingleton<DeviceControl>();
|
builder.Services.AddSingleton<DeviceControl>();
|
||||||
|
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
#region <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>api
|
#region <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>api
|
||||||
@ -76,7 +77,17 @@ namespace HTCoreServiceApp
|
|||||||
|
|
||||||
#region <EFBFBD>ڵ<EFBFBD>api
|
#region <EFBFBD>ڵ<EFBFBD>api
|
||||||
#endregion
|
#endregion
|
||||||
|
dataLiveCacheApi.MapGet("/GetLiveSystemAllData/systemName={systemName}",
|
||||||
|
async (string systemName, DataLiveCache dlc)
|
||||||
|
=> Results.Content(await dlc.GetLiveSystemAllData(systemName)));
|
||||||
|
|
||||||
|
dataLiveCacheApi.MapGet("/GetLiveDriverAllData/driverName={driverName}",
|
||||||
|
async (string driverName, DataLiveCache dlc)
|
||||||
|
=> Results.Content(await dlc.GetLiveDriverAllData(driverName)));
|
||||||
|
|
||||||
|
dataLiveCacheApi.MapGet("/GetLiveGroupAllData/groupName={groupName}",
|
||||||
|
async (string groupName, DataLiveCache dlc)
|
||||||
|
=> Results.Content(await dlc.GetLiveGroupAllData(groupName)));
|
||||||
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>api
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>api
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
namespace HTCoreServiceApp.WebApi
|
namespace HTCoreServiceApp.WebApi
|
||||||
{
|
{
|
||||||
@ -34,27 +36,35 @@ namespace HTCoreServiceApp.WebApi
|
|||||||
|
|
||||||
public async Task<string> GetLiveSystemData(string systemName)
|
public async Task<string> GetLiveSystemData(string systemName)
|
||||||
{
|
{
|
||||||
var dict = new Dictionary<string, string>();
|
|
||||||
var json = new JObject();
|
|
||||||
var db = new SqlSugarClient(StaticLibrary.DBConfig);
|
var db = new SqlSugarClient(StaticLibrary.DBConfig);
|
||||||
var systemId = db.Queryable<MetaSystem>().Where(x => x.SystemName == systemName).First().SystemId;
|
var systemId = db.Queryable<MetaSystem>().Where(x => x.SystemName == systemName).First().SystemId;
|
||||||
var groupList = db.Queryable<MetaGroup>().Where(x => x.SystemId == systemId).ToList();
|
var groupList = db.Queryable<MetaGroup>().Where(x => x.SystemId == systemId).ToList();
|
||||||
|
|
||||||
|
var driverdataDict = new Dictionary<string, List<Dictionary<string, JToken>>>();
|
||||||
//var jlist = new List<JObject>();
|
//var jlist = new List<JObject>();
|
||||||
//var driverList = new List<string>();
|
//var driverList = new List<string>();
|
||||||
foreach (var group in groupList)
|
foreach (var group in groupList)
|
||||||
{
|
{
|
||||||
|
var groupdataDict = new Dictionary<string, JToken>();
|
||||||
|
|
||||||
var groupName = group.GroupName;
|
var groupName = group.GroupName;
|
||||||
|
|
||||||
|
|
||||||
var driverName = db.Queryable<MetaDriver>().Where(x => x.DriverId == group.DriverId).First().DriverName;
|
var driverName = db.Queryable<MetaDriver>().Where(x => x.DriverId == group.DriverId).First().DriverName;
|
||||||
|
|
||||||
|
|
||||||
var data = StaticLibrary.MemoryCacheHelper.GetString(groupName);
|
var data = JsonConvert.DeserializeObject(StaticLibrary.MemoryCacheHelper.GetString(groupName)); ;
|
||||||
|
|
||||||
|
|
||||||
json.Add(driverName, new JObject(groupName, data));
|
|
||||||
|
|
||||||
|
groupdataDict.Add( groupName, (JToken?)data );
|
||||||
|
|
||||||
|
if(driverdataDict.Keys.Contains(driverName))
|
||||||
|
{
|
||||||
|
driverdataDict[driverName].Add(groupdataDict);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
driverdataDict.Add(driverName,new List<Dictionary<string, JToken>>() { groupdataDict });
|
||||||
|
}
|
||||||
//driverList.Add(driverName);
|
//driverList.Add(driverName);
|
||||||
//if (json.ContainsKey(driverName))
|
//if (json.ContainsKey(driverName))
|
||||||
//{
|
//{
|
||||||
@ -63,7 +73,15 @@ namespace HTCoreServiceApp.WebApi
|
|||||||
//jlist.Add(new JObject(groupName, data));
|
//jlist.Add(new JObject(groupName, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.ToString();
|
var rejson = JsonConvert.SerializeObject(driverdataDict, Newtonsoft.Json.Formatting.Indented);
|
||||||
|
return rejson;
|
||||||
|
|
||||||
|
//var groupJson = new JObject
|
||||||
|
// {
|
||||||
|
// { groupName, (JToken?)data }
|
||||||
|
// };
|
||||||
|
|
||||||
|
//json.Add(driverName, groupJson);
|
||||||
}
|
}
|
||||||
public async Task<string> GetLiveDriverData(string driverName)
|
public async Task<string> GetLiveDriverData(string driverName)
|
||||||
{
|
{
|
||||||
@ -131,5 +149,73 @@ namespace HTCoreServiceApp.WebApi
|
|||||||
//var cache = StaticLibrary.MemoryCacheHelper.Get<List<LiveGroupDictionary>>(driverName).Where(x => x.GroupName == groupName).First();
|
//var cache = StaticLibrary.MemoryCacheHelper.Get<List<LiveGroupDictionary>>(driverName).Where(x => x.GroupName == groupName).First();
|
||||||
//return LiveJsonIntegrate.MetaTagValue2Json(cache, tagName);
|
//return LiveJsonIntegrate.MetaTagValue2Json(cache, tagName);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
public async Task<string> GetLiveSystemAllData(string systemName)
|
||||||
|
{
|
||||||
|
var json = new JObject();
|
||||||
|
var db = new SqlSugarClient(StaticLibrary.DBConfig);
|
||||||
|
var systemId = db.Queryable<MetaSystem>().Where(x => x.SystemName == systemName).First().SystemId;
|
||||||
|
var groupList = db.Queryable<MetaGroup>().Where(x => x.SystemId == systemId).ToList();
|
||||||
|
foreach (var group in groupList)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var data = JsonConvert.DeserializeObject(StaticLibrary.MemoryCacheHelper.GetString(group.GroupName));
|
||||||
|
json.Merge((JToken?)data);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return json.ToString();
|
||||||
|
|
||||||
|
//var groupJson = new JObject
|
||||||
|
// {
|
||||||
|
// { groupName, (JToken?)data }
|
||||||
|
// };
|
||||||
|
|
||||||
|
//json.Add(driverName, groupJson);
|
||||||
|
}
|
||||||
|
public async Task<string> GetLiveDriverAllData(string driverName)
|
||||||
|
{
|
||||||
|
var dict = new Dictionary<string, string>();
|
||||||
|
var json = new JObject();
|
||||||
|
var db = new SqlSugarClient(StaticLibrary.DBConfig);
|
||||||
|
var driverId = db.Queryable<MetaDriver>().Where(x => x.DriverName == driverName).First().DriverId;
|
||||||
|
var groupList = db.Queryable<MetaGroup>().Where(x => x.DriverId == driverId).ToList();
|
||||||
|
foreach (var group in groupList)
|
||||||
|
{
|
||||||
|
var groupName = group.GroupName;
|
||||||
|
var data = JsonConvert.DeserializeObject(StaticLibrary.MemoryCacheHelper.GetString(groupName));
|
||||||
|
json.Merge((JToken?)data);
|
||||||
|
}
|
||||||
|
return json.ToString();
|
||||||
|
}
|
||||||
|
//[HttpGet]
|
||||||
|
public async Task<string> GetLiveGroupAllData(string groupName)
|
||||||
|
{
|
||||||
|
//var cache = StaticLibrary.MemoryCacheHelper.Get<List<LiveGroupDictionary>>(driverName).Where(x=>x.GroupName == groupName).First();
|
||||||
|
//var val = new List<LiveGroupDictionary>();
|
||||||
|
//StaticLibrary.MemoryCacheHelper.TryGetValue(driverName,out val);
|
||||||
|
//return LiveJsonIntegrate.MetaValues2Json(val.FirstOrDefault());
|
||||||
|
|
||||||
|
//public static string StringToJson(string JsonString)
|
||||||
|
//{ // string 转换成Json JsonDocument jsonDocument = JsonDocument.Parse(JsonString);//这里序列化成json return JsonSerializer.Serialize(jsonDocument.RootElement); }//在main中调用
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//var result = StaticLibrary.MemoryCacheHelper.GetString(groupName);
|
||||||
|
|
||||||
|
//Console.WriteLine(result);
|
||||||
|
//return result;
|
||||||
|
//return valueJson.ToString();
|
||||||
|
return StaticLibrary.MemoryCacheHelper.GetString(groupName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return ex.Message;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user