using MiniExcelLibs; using Serenity.Services; using SqlSugar; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using HT.Cloud.Domain.ReportManage; using Newtonsoft.Json.Linq; using System.Data; using HT.Cloud.Code; using HT.Cloud.Domain.ChartsManage; using HT.Cloud.Domain.DevicesManage; using Quartz; using Microsoft.Extensions.Logging; namespace HT.Cloud.Service.ReportManage { public class MainPageService : BaseService, IDenpendency { /// /// 绑定数据仓库的数据库ID /// private string dataDBNumber = GlobalContext.SystemConfig.DataDBNumber; public MainPageService(ISqlSugarClient context) : base(context) { } public async Task GetRtData(string systemName) { var groupName = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().GroupName; var driverId = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().DriverID; var driverName = _context.AsTenant().QueryableWithAttr().Where(x => x.DriverID == driverId).First().DriverName; var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery($"SELECT * FROM HT_{driverName}_{groupName}_MAINPAGE"); var remoteRtDataServer = _context.AsTenant().QueryableWithAttr().First().remotertdataserver + $"?groupName={groupName}"; var responseStr = RemoteHttpRequest.HttpGet(remoteRtDataServer); JObject valueJson = JObject.Parse(responseStr); var srcTagRtValues = new List(); var dt = new Dictionary(); foreach (var src in list) { string elementIndex = src.ElementIndex.ToString(); string Description = src.Description.ToString(); string TagName = src.TagName.ToString(); string srcValue = valueJson[TagName].ToString(); string hSig = src.Hsig.ToString(); string Value = ""; if (hSig == "SS") { if (srcValue == "True") Value = "开启"; else Value = "停止"; } else if (hSig == "OC") { if (srcValue == "True") Value = "开"; else Value = "关"; } else if (hSig == "VP") { Value = Convert.ToDouble(srcValue).ToString("f2"); } else if (hSig == "PE") { Value = srcValue + "%"; } else if (hSig == "YN") { if (srcValue == "True") Value = "是"; else Value = "否"; } else if (hSig == "AM") { if (srcValue == "True") Value = "自动"; else Value = "手动"; } dt.Add(elementIndex, Value); } return dt.ToJson(); } public async Task GetRtChartData(string systemName) { var groupName = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().GroupName; var driverId = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().DriverID; var driverName = _context.AsTenant().QueryableWithAttr().Where(x => x.DriverID == driverId).First().DriverName; var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery($"SELECT * FROM HT_{driverName}_{groupName}_MAINPAGE"); var dlist = list.Where(x => x.ElementIndex.Contains("C") && x.Hsig == "VP").ToList(); var rlist = new List(); var datetimeNow = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); foreach (var item in dlist) { var chartDataFormat = new ChartDataFormat(); chartDataFormat.TagName = item.TagName; chartDataFormat.Description = item.Description + $"({item.Units})"; var remoteRtDataServer = _context.AsTenant().QueryableWithAttr().First().remotertdataserver + $"?groupName={groupName}"; var responseStr = RemoteHttpRequest.HttpGet(remoteRtDataServer); JObject valueJson = JObject.Parse(responseStr); chartDataFormat.Value = valueJson[item.TagName].ToString(); chartDataFormat.RtTime = datetimeNow; rlist.Add(chartDataFormat); } return rlist.ToJson(); } public async Task GetMainPageInit(string systemName) { var groupName = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().GroupName; var driverId = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().DriverID; var driverName = _context.AsTenant().QueryableWithAttr().Where(x => x.DriverID == driverId).First().DriverName; var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery($"SELECT * FROM HT_{driverName}_{groupName}_MAINPAGE"); Dictionary dict = new Dictionary(); foreach (var item in list) { if (item.Hsig == "VP") { dict.Add(item.ElementIndex + "_Title", item.Description + "(" + item.Units + ")"); } else { dict.Add(item.ElementIndex + "_Title", item.Description); } } return dict.ToJson(); } public async Task GetMainPageChartInit(string systemName) { var groupName = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().GroupName; var driverId = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().DriverID; var driverName = _context.AsTenant().QueryableWithAttr().Where(x => x.DriverID == driverId).First().DriverName; var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery($"SELECT * FROM HT_{driverName}_{groupName}_MAINPAGE"); var dlist = list.Where(x=>x.ElementIndex.Contains("C")&&x.Hsig == "VP").ToList(); var rlist = new List(); var datetimeNow = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); foreach (var item in dlist) { var chartDataFormat = new ChartDataFormat(); chartDataFormat.TagName = item.TagName; chartDataFormat.Description = item.Description + $"({item.Units})"; var remoteRtDataServer = _context.AsTenant().QueryableWithAttr().First().remotertdataserver+ $"?groupName={groupName}"; var responseStr = RemoteHttpRequest.HttpGet(remoteRtDataServer); JObject valueJson = JObject.Parse(responseStr); chartDataFormat.Value = valueJson[item.TagName].ToString(); chartDataFormat.RtTime = datetimeNow; rlist.Add(chartDataFormat); } return rlist.ToJson(); } public class ChartDataFormat { public string TagName { get; set; } public string Description { get; set; } public string Value { get; set; } public string RtTime { get; set; } } public class SrcTagRtValue { public string TagName {get;set;} public string Description { get; set; } public string Value { get; set; } } } }