修正DataLog无法查询IO数据的问题。

修改DataLog数据查询逻辑,所有机台保持统一。
This commit is contained in:
DESKTOP-GPE37UV\THINKAPD 2023-01-13 09:54:26 +08:00
parent 968147ab72
commit 0c48741f6c
1 changed files with 46 additions and 19 deletions

View File

@ -18,6 +18,7 @@ using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
@ -512,7 +513,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
}
else
{
// 如果节点名是IO数据库使用IO.[二级节点名]作为表名例如IO.PM1\IO.PM2\IO.TM\IO.System
// 如果节点名是IO使用其下一级节点查询,因为数据具体保存在哪个表中需要用下一级节点判断。
var subNodes = module.ChildNodes;
foreach (var subNode in subNodes)
@ -552,27 +553,53 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
var ts = dateRange.Diff;
for (var day = 0; day <= ts.Days; day++)
{
var tblName = $"{dateRange.Start.AddDays(day):yyyyMMdd}.{module}";
var tblNameDatePart = $"{dateRange.Start.AddDays(day):yyyyMMdd}";
var tblName = "";
var m = Regex.Match(module.FullName, @"^IO.(\S+)$");
// 如果节点名称以IO起头先检查有没有"IO."开头的表,
// 如果没有则使用PMx表查询。
if (m.Success)
{
tblName = $"{tblNameDatePart}.{module}";
if (CheckTableExists(tblName) == false) // 检查数据表是否存在,不存在则换名字查询
{
LOG.Error($"{tblName} does not exist in database.");
// 更换表名尝试。
tblName = $"{tblNameDatePart}.{m.Groups[1].Value}";
if (CheckTableExists(tblName) == false)
{
LOG.Error($"{tblName} does not exist in database.");
break;
}
}
}
else
{
tblName = $"{tblNameDatePart}.{module}";
if (CheckTableExists(tblName) == false)
{
LOG.Error($"{tblName} does not exist in database.");
break;
}
}
// 检查表名是否存在否则SQL执行出错。
if (CheckTableExists(tblName))
sql.Append("select \"time\" AS InternalTimeStamp");
var selectedParams = module.Flatten(true)
.Where(x => x.IsSelected == true);
// 添加待查询的列
foreach (var item in selectedParams)
{
sql.Append("select \"time\" AS InternalTimeStamp");
var selectedParams = module.Flatten(true)
.Where(x => x.IsSelected == true);
// 添加待查询的列
foreach (var item in selectedParams)
{
sql.Append("," + $"\"{item}\"");
}
sql.Append($" from \"{tblName}\" ");
if (day < ts.Days)
sql.Append(" UNION ");
sql.Append("," + $"\"{item}\"");
}
sql.Append($" from \"{tblName}\" ");
if (day < ts.Days)
sql.Append(" UNION ");
}
// 所有表名不可用,可能是日期范围错误
@ -598,7 +625,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
if (dataTable == null)
return null;
dataTable.TableName = module.Name;
dataTable.TableName = module.FullName;
return dataTable;
}