From 0c48741f6c62b5d97a63d488d59e9f3bb93540e9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GPE37UV\\THINKAPD" Date: Fri, 13 Jan 2023 09:54:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3DataLog=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2IO=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82=20=E4=BF=AE=E6=94=B9DataLog=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=9C=BA=E5=8F=B0=E4=BF=9D=E6=8C=81=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataLogs/DataHistory/DataViewModel.cs | 65 +++++++++++++------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs index 2b91745..cfd0b36 100644 --- a/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs +++ b/FrameworkLocal/UIClient/CenterViews/DataLogs/DataHistory/DataViewModel.cs @@ -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; }