2023-08-22 17:24:56 +08:00
using HT.Cloud.Code ;
using HT.Cloud.Domain.DevicesManage ;
using HT.Cloud.Domain.ReportManage ;
using Quartz ;
using SqlSugar ;
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Linq ;
using System.Reflection.PortableExecutable ;
using System.Text ;
using System.Threading.Tasks ;
namespace HT.Cloud.Service.ReportManage
{
public class HistoryAlarmService : BaseService < HistoryAlarmEntity > , IDenpendency
{
2023-08-24 09:28:09 +08:00
/// <summary>
/// 绑定数据仓库的数据库ID
/// </summary>
private string dataDBNumber = GlobalContext . SystemConfig . DataDBNumber ;
public HistoryAlarmService ( ISqlSugarClient context ) : base ( context )
2023-08-22 17:24:56 +08:00
{
}
public async Task < string > GetDriverGroupList ( )
{
2023-08-24 09:28:09 +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<Ht_History_ReportEntity>($"SELECT * FROM HT_{driverName}_{groupName}_ALARM");
2023-08-22 17:24:56 +08:00
List < GroupNameList > subsystems = new List < GroupNameList > ( ) ;
2023-08-24 09:28:09 +08:00
var list_group = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . ToList ( ) ;
2023-08-22 17:24:56 +08:00
int i = 0 ;
foreach ( var group in list_group )
{
subsystems . Add ( new GroupNameList ( ) { Lable = "a" + i , Value = group . GroupDescription } ) ;
i + + ;
}
return subsystems . ToJson ( ) ;
}
public async Task < string > GetAllSubsystemTag ( string systemName )
{
2023-08-24 09:28:09 +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 < HistoryAlarmEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_ALARM" ) ;
2023-08-22 17:24:56 +08:00
List < SubsysytemNameList > subsystems = new List < SubsysytemNameList > ( ) ;
2023-08-24 09:28:09 +08:00
//var grouped = _context.AsTenant().QueryableWithAttr<HistoryAlarmEntity>().ToList();
List < string > list_name_two = list . Select ( t = > t . Subsystem ) . GroupBy ( c = > c ) . Select ( c = > c . First ( ) ) . ToList ( ) ;
2023-08-22 17:24:56 +08:00
int i = 0 ;
foreach ( var Meta_Tag in list_name_two )
{
subsystems . Add ( new SubsysytemNameList ( ) { Lable = "a" + i , Value = Meta_Tag } ) ;
i + + ;
}
return subsystems . ToJson ( ) ;
}
public async Task < string > GetSubsystemAllTag ( string subsysytemName , string systemName )
{
2023-08-24 09:28:09 +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 < HistoryAlarmEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_ALARM" ) ;
2023-08-22 17:24:56 +08:00
var subsysname = subsysytemName ;
var response = list . Where ( x = > x . Subsystem = = subsysname ) . Select ( x = > new { x . TagID , x . Description , x . Units } ) . ToList ( ) ;
var reList = new List < SubAllTagReturn > ( ) ;
foreach ( var subsystem in response )
{
reList . Add (
new SubAllTagReturn ( )
{
TagID = ( short ) subsystem . TagID ,
Description = subsystem . Description ,
Units = subsystem . Units
}
) ;
}
return reList . ToJson ( ) ;
}
public async Task < string > GetAlarmRecord ( short tagid , string startdt , string enddt , string systemName )
{
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@Henddt" , enddt ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Htagid" , tagid )
} ;
2023-08-24 09:28:09 +08:00
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "Query_Tag_Alarm" , sqlParameters ) ;
2023-08-22 17:24:56 +08:00
var valuelist = DataTableConvertModel < AlarmValue > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
// var testdata = new List<AlarmValue>
// {
// new AlarmValue() {
// Description= "测试标题",
// StartTime = "08点37分",
// EndTime = "08点38分"
// },
// new AlarmValue() {
// Description= "测试标题",
// StartTime = "08点37分",
// EndTime = "08点38分"
// },
// new AlarmValue() {
// Description= "测试标题",
// StartTime = "08点37分",
// EndTime = "08点38分"
// },
// new AlarmValue() {
// Description= "测试标题",
// StartTime = "08点37分",
// EndTime = "08点38分"
// }
//};
// return testdata.ToJson();
//var resultlist = new List<ChartData>();
//foreach (var value in valuelist)
//{
// resultlist.Add(new ChartData()
// {
// name = value.HDATETIME,
// value = value.VALUE
// });
//}
//return resultlist.ToJson();
}
2023-12-20 15:51:03 +08:00
public async Task < string > GetAlarmRecordForTagName ( string Description , string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
var driverID = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupName = = groupName ) . First ( ) . DriverID ;
var driverName = _context . AsTenant ( ) . QueryableWithAttr < MetaDriverEntity > ( ) . Where ( x = > x . DriverID = = driverID ) . First ( ) . DriverName ;
//short tagid = (short)_context.AsTenant().QueryableWithAttr<MetaTagEntity>().Where(x => x.Description == Description).First().TagID;
var alarmList = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . SqlQuery < HistoryAlarmEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_ALARM" ) ;
int tagid = alarmList . Where ( x = > x . Description = = Description ) . First ( ) . TagID ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@Henddt" , enddt ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Htagid" , tagid )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "Query_Tag_Alarm" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmValue > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
2023-08-22 17:24:56 +08:00
public async Task < string > GetAlarmRecordQuick ( string HATYPE , string startdt , string enddt , string systemName )
{
2023-08-25 17:30:45 +08:00
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
2023-08-22 17:24:56 +08:00
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HATYPE" , HATYPE ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
2023-08-25 17:30:45 +08:00
new SugarParameter ( "@Henddt" , enddt ) ,
new SugarParameter ( "@HGROUPNAME" , groupName )
2023-08-22 17:24:56 +08:00
} ;
2023-08-24 09:28:09 +08:00
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "Query_Tag_Alarm_Count" , sqlParameters ) ;
2023-08-22 17:24:56 +08:00
var valuelist = DataTableConvertModel < AlarmValueCount > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
2023-12-20 15:51:03 +08:00
public async Task < string > GetAlarmHistory ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@Henddt" , enddt ) ,
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "Query_Tag_Alarm_PMHis" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmValueCountDesc > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
2023-08-22 17:24:56 +08:00
//GetAlarmRecordQuickDesc
public async Task < string > GetAlarmRecordQuickDesc ( string hhour , string systemName )
{
int Hhour = int . Parse ( hhour ) ;
2023-08-25 17:30:45 +08:00
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
2023-08-22 17:24:56 +08:00
SugarParameter [ ] sqlParameters =
{
2023-08-25 17:30:45 +08:00
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
2023-08-22 17:24:56 +08:00
new SugarParameter ( "@Hhour" , Hhour )
} ;
2023-08-24 09:28:09 +08:00
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "Query_Tag_Alarm_History" , sqlParameters ) ;
2023-08-22 17:24:56 +08:00
var valuelist = DataTableConvertModel < AlarmValueCountDesc > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
public async Task < string > GetAlarmSubSystem ( string alarmName , string systemName )
{
2023-08-24 09:28:09 +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 < HistoryAlarmEntity > ( $"SELECT * FROM HT_{driverName}_{groupName}_ALARM" ) ;
2023-08-22 17:24:56 +08:00
var subSystem = list . Where ( x = > x . Description = = alarmName ) . First ( ) . Subsystem ;
return subSystem . ToJson ( ) ;
}
2023-11-06 21:26:55 +08:00
public async Task < string > GetAlarm_ACC ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Henddt" , enddt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "HT_BI_Alarm_ACC" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmACC > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
public async Task < string > GetAlarm_Histogram ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Henddt" , enddt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "HT_BI_Alarm_Histogram" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmHistogram > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
public async Task < string > GetAlarm_Pie ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Henddt" , enddt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "HT_BI_Alarm_Pie" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmPie > . ConvertDataTableToList ( dt ) ;
return valuelist . ToJson ( ) ;
}
2023-12-20 15:51:03 +08:00
public async Task < string > GetAlarm_CS ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Henddt" , enddt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "HT_BI_Alarm_CS" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmCS > . ConvertDataTableToList ( dt ) ;
var result = new List < AlarmCS_Result > ( ) ;
var hdate = startdt + "至" + enddt ;
foreach ( var item in valuelist )
{
result . Add ( new AlarmCS_Result ( )
{
HDATE = hdate ,
Tagname = item . Tagname ,
Description = item . Description ,
Hcount = item . Hcount ,
} ) ;
}
return valuelist . ToJson ( ) ;
}
public async Task < string > GetAlarm_Ztime ( string startdt , string enddt , string systemName )
{
var groupName = _context . AsTenant ( ) . QueryableWithAttr < MetaGroupEntity > ( ) . Where ( x = > x . GroupDescription = = systemName ) . First ( ) . GroupName ;
SugarParameter [ ] sqlParameters =
{
new SugarParameter ( "@HGROUPNAME" , groupName ) ,
new SugarParameter ( "@Hstartdt" , startdt ) ,
new SugarParameter ( "@Henddt" , enddt )
} ;
var dt = _context . AsTenant ( ) . GetConnection ( dataDBNumber ) . Ado . UseStoredProcedure ( ) . GetDataTable ( "HT_BI_Alarm_Ztime" , sqlParameters ) ;
var valuelist = DataTableConvertModel < AlarmZtime > . ConvertDataTableToList ( dt ) ;
var result = new List < AlarmZtime_Result > ( ) ;
var hdate = startdt + "至" + enddt ;
foreach ( var item in valuelist )
{
result . Add ( new AlarmZtime_Result ( ) {
HDATE = hdate ,
TAGNAME = item . TAGNAME ,
Description = item . Description ,
Hztime = item . Hztime ,
} ) ;
}
return result . ToJson ( ) ;
}
2023-08-22 17:24:56 +08:00
private class AlarmValueCount
{
public string Alarmtype { get ; set ; }
public string Description { get ; set ; }
public int hcount { get ; set ; }
public int hztime { get ; set ; }
}
private class AlarmValueCountDesc
{
public string Tagname { get ; set ; }
public string Description { get ; set ; }
public string Alarmtype { get ; set ; }
public string Typename { get ; set ; }
public string Startdt { get ; set ; }
public string Enddt { get ; set ; }
public int Hztime { get ; set ; }
}
private class AlarmValue
{
public string Description { get ; set ; }
public string startdt { get ; set ; }
public string enddt { get ; set ; }
public int Hztime { get ; set ; }
}
private class SubsysytemNameList
{
public string Lable { get ; set ; }
public string Value { get ; set ; }
}
private class GroupNameList
{
public string Lable { get ; set ; }
public string Value { get ; set ; }
}
private class SubAllTagReturn
{
//x.TagID, x.Description, x.Units
public short TagID { get ; set ; }
public string Description { get ; set ; }
public string Units { get ; set ; }
}
2023-11-06 21:26:55 +08:00
private class AlarmACC
{
public string TAGNAME { get ; set ; }
public string Description { get ; set ; }
public int hcount { get ; set ; }
public int hztime { get ; set ; }
}
private class AlarmHistogram
{
public string HDATE { get ; set ; }
public string TAGNAME { get ; set ; }
public string Description { get ; set ; }
public int hcount { get ; set ; }
public int hztime { get ; set ; }
}
private class AlarmPie
{
public string TAGNAME { get ; set ; }
public string Description { get ; set ; }
public double Hpercent { get ; set ; }
}
2023-12-20 15:51:03 +08:00
private class AlarmCS
{
public string Tagname { get ; set ; }
public string Description { get ; set ; }
public int Hcount { get ; set ; }
}
private class AlarmCS_Result
{
public string HDATE { get ; set ; }
public string Tagname { get ; set ; }
public string Description { get ; set ; }
public int Hcount { get ; set ; }
}
private class AlarmZtime
{
public string TAGNAME { get ; set ; }
public string Description { get ; set ; }
public int Hztime { get ; set ; }
}
private class AlarmZtime_Result
{
public string HDATE { get ; set ; }
public string TAGNAME { get ; set ; }
public string Description { get ; set ; }
public int Hztime { get ; set ; }
}
2023-11-06 21:26:55 +08:00
}
2023-08-22 17:24:56 +08:00
}