2023-12-20 15:51:03 +08:00
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 ;
using Newtonsoft.Json ;
2024-01-12 08:54:55 +08:00
using HT.Cloud.Domain.SystemSecurity ;
2024-09-03 14:16:18 +08:00
using System.Net.NetworkInformation ;
2023-12-20 15:51:03 +08:00
namespace HT.Cloud.Service.SystemSecurity
{
2024-01-12 08:54:55 +08:00
public class RealTimeIOStateService : BaseService < RealTimeIOGroupEntity > , IDenpendency
2023-12-20 15:51:03 +08:00
{
/// <summary>
/// 绑定数据仓库的数据库ID
/// </summary>
private string dataDBNumber = GlobalContext . SystemConfig . DataDBNumber ;
2024-01-12 08:54:55 +08:00
public RealTimeIOStateService ( ISqlSugarClient context ) : base ( context )
2023-12-20 15:51:03 +08:00
{
}
2024-01-12 08:54:55 +08:00
public async Task < List < RealTimeIOGroupEntity > > GetIOGroup ( string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeIOGroupEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_IOGROUP" ) ;
return list ;
2024-09-03 14:16:18 +08:00
}
public async Task < List < RealTimeIOGroupEntity > > GetIOGroup ( string systemName , string iogroupid )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeIOGroupEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_IOGROUP_{iogroupid}" ) ;
return list ;
2024-01-12 08:54:55 +08:00
}
2024-09-03 14:16:18 +08:00
public async Task < List < RealTimeIOInfoEntity > > GetIOInfo ( string systemName )
2024-01-12 08:54:55 +08:00
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeIOInfoEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_IOINFO" ) ;
return list ;
}
2024-09-03 14:16:18 +08:00
public async Task < List < RealTimeIOInfoEntity > > GetIOInfo ( string systemName , string iogroupid )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeIOInfoEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_IOINFO_{iogroupid}" ) ;
return list ;
}
public async Task < List < RealTimeDevNetWorkEntity > > GetDevNetWork ( string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeDevNetWorkEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_DEVNETWORK" ) ;
return list ;
}
public async Task < List < RealTimeDevNetWorkEntity > > GetRealDevNetWork ( string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverId = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverId ) . First ( ) . DriverName ;
var list = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < RealTimeDevNetWorkEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_DEVNETWORK" ) ;
var listNT = new List < RealTimeDevNetWorkEntity > ( ) ;
foreach ( var dev in list )
{
var devNT = new RealTimeDevNetWorkEntity ( ) ;
devNT = dev ;
string message = "" ;
string address = devNT . DeviceIP ;
Ping ping = new Ping ( ) ;
try
{
PingReply pingReply = ping . Send ( address , 247 ) ;
if ( pingReply . Status = = IPStatus . Success )
{
devNT . DeviceNetWorkStatus = "True" ;
}
else
{
devNT . DeviceNetWorkStatus = "False" ;
}
}
catch ( Exception e )
{
devNT . DeviceNetWorkStatus = "False" ;
}
listNT . Add ( devNT ) ;
}
return listNT ;
}
2024-01-12 08:54:55 +08:00
2024-09-03 14:16:18 +08:00
public async Task < string > GetRtData ( string systemName )
2023-12-20 15:51:03 +08:00
{
2024-09-03 14:16:18 +08:00
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
2023-12-20 15:51:03 +08:00
//var driverId = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().DriverID;
//var driverName = _context.AsTenant().QueryableWithAttr<MetaDriverEntity>().Where(x => x.DriverID == driverId).First().DriverName;
//var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery<RTMainPageEntity>($"SELECT * FROM HT_{driverName}_{groupName}_MAINPAGE");
2024-09-03 14:16:18 +08:00
//var remoteRtDataServer = " http://localhost:5276/TestIOApi/";
2023-12-20 15:51:03 +08:00
2024-09-03 14:16:18 +08:00
var remoteRtDataServer = _context . AsTenant ( ) . QueryableWithAttr < RtchartsEntity > ( ) . First ( ) . remotertdataserver + $"?groupName={groupName}" ;
2023-12-20 15:51:03 +08:00
2024-09-03 14:16:18 +08:00
var responseStr = RemoteHttpRequest . HttpGet ( remoteRtDataServer ) ;
2023-12-20 15:51:03 +08:00
JObject valueJson = JObject . Parse ( responseStr ) ;
return valueJson . ToString ( 0 ) ;
//var srcTagRtValues = new List<SrcTagRtValue>();
//var dt = new Dictionary<string, string>();
//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 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 ; }
}
}
}