大版本更新推送

This commit is contained in:
dell
2023-11-06 21:26:55 +08:00
parent b94dc66092
commit 17b4e899ff
36 changed files with 3491 additions and 377 deletions

View File

@ -310,16 +310,46 @@ namespace HT.Cloud.Code
this IServiceCollection @this)
{
var ret = new List<Type>();
var assemblies = Directory.GetFiles(AppContext.BaseDirectory, "*.dll")
.Select(x => x.Substring(@"\").Substring(@"/").Replace(".dll", ""))
.Select(x => Assembly.Load(x)).ToArray();
//排除列表
var ignoreList= new List<string>{ "EventBusHostedService" };
foreach (var item in assemblies)
try
{
ret.AddRange(item.GetTypes() //获取当前类库下所有类型
.Where(t => typeof(BackgroundService).IsAssignableFrom(t)) //获取间接或直接继承t的所有类型
.Where(t => !t.IsAbstract && t.IsClass && !ignoreList.Contains(t.Name)));//获取非抽象类 排除接口继承
var listAssemblies = new List<Assembly>();
var assemblies1 = Directory.GetFiles(AppContext.BaseDirectory, "*.dll");
foreach( var assembly in assemblies1)
{
Console.WriteLine(assembly);
}
var assemblies = Directory.GetFiles(AppContext.BaseDirectory, "*.dll")
.Select(x => x.Substring(@"\").Substring(@"/").Replace(".dll", ""));
//.Select(x => Assembly.Load(x)).ToArray();
foreach (var assembliesFile in assemblies)
{
try
{
Console.WriteLine(assembliesFile+"\n");
listAssemblies.Add(Assembly.Load(assembliesFile));
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
var arrAssemblies = listAssemblies.ToArray();
//排除列表
var ignoreList = new List<string> { "EventBusHostedService" };
foreach (var item in arrAssemblies)
{
ret.AddRange(item.GetTypes() //获取当前类库下所有类型
.Where(t => typeof(BackgroundService).IsAssignableFrom(t)) //获取间接或直接继承t的所有类型
.Where(t => !t.IsAbstract && t.IsClass && !ignoreList.Contains(t.Name)));//获取非抽象类 排除接口继承
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
foreach (var item in ret)
{

View File

@ -9,7 +9,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SqlSugarCore" Version="5.1.3.45" />
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.3.45" />
</ItemGroup>
<ItemGroup>

View File

@ -9,7 +9,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SqlSugarCore" Version="5.1.3.45" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.0" />
<PackageReference Include="MySqlConnector" Version="2.2.5" />
<PackageReference Include="Npgsql" Version="5.0.7" />
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.3.45" />
</ItemGroup>
<ItemGroup>

View File

@ -0,0 +1,30 @@
using System;
using System.ComponentModel.DataAnnotations;
using SqlSugar;
namespace HT.Cloud.Domain.Entity.ReportManage
{
/// <summary>
/// 创 建cdl
/// 日 期2023-03-30 14:52
/// 描 述实时报表SQL转换实体类
/// </summary>
[SugarTable("HT_REALTIME_APPSTATE")]
[Tenant("1")]
public class RTApplicationStateEntity
{
/// <summary>
///
///</summary>
[SugarColumn(ColumnName = "ID", ColumnDescription = "", ColumnDataType = "int(10)")]
public int Id { get; set; }
/// <summary>
/// 显示名称
///</summary>
[SugarColumn(ColumnName = "ApplicationName", ColumnDescription = "", ColumnDataType = "int(128)", IsNullable = true)]
public string Description { get; set; }
}
}

View File

@ -10,7 +10,7 @@
<ItemGroup>
<PackageReference Include="MiniExcel" Version="1.30.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.3.45" />
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.3.45" />
</ItemGroup>
<ItemGroup>

View File

@ -14,6 +14,7 @@ using HT.Cloud.Domain.ReportManage;
using Quartz;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Security.Cryptography.Xml;
namespace HT.Cloud.Service.ChartsManage
{
@ -107,8 +108,9 @@ namespace HT.Cloud.Service.ChartsManage
return reList.ToJson();
}
public async Task<string> GetChartsTagValueInit(string[] charts_TagNames,string systemName)
public async Task<string> GetChartsTagValueInit(string[] charts_TagNames, string[] Tables, string systemName)
{
var tagName_list = new List<string>();
var result_list = new List<List<ChartData>>();
@ -121,7 +123,23 @@ namespace HT.Cloud.Service.ChartsManage
result_list.Add(new List<ChartData>());
}
var remoteRtDataServer = _context.AsTenant().QueryableWithAttr<RtTechChartsEntity>().First().remotertdataserver + $"?groupName={groupName}";
for (int i = 0; i < 3; i++)
/**/
var timeEnd = DateTime.Now.AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss");
var timeStart = DateTime.Now.AddHours(-2).ToString("yyyy-MM-dd HH:mm:ss");
var timeinterval = 1;
bool finish = false;
var initDbData = new List<List<ChartData>>();
Task.Run(() =>
{
GetTagValueInit_Backgroud(Tables, charts_TagNames, timeStart, timeEnd, timeinterval, out finish, out initDbData);
});
/**/
while (!finish)
{
var responseStr = RemoteHttpRequest.HttpGet(remoteRtDataServer);
@ -150,9 +168,52 @@ namespace HT.Cloud.Service.ChartsManage
}
Thread.Sleep(980);
}
return result_list.ToJson();
for(int ii =0;ii<initDbData.Count;ii++)
{
var item = result_list[ii].ToList();
initDbData[ii].AddRange(item);
}
return initDbData.ToJson();
}
public void GetTagValueInit_Backgroud(string[] tables, string[] tagNames, string startdt, string enddt, int timeinterval,out bool finish, out List<List<ChartData>> initDbData)
{
finish = false;
initDbData = new List<List<ChartData>>();
for(int i = 0;i<tagNames.Length;i++)
{
SugarParameter[] sqlParameters =
{
new SugarParameter("@HTable",tables[i]),
new SugarParameter("@HTagName",tagNames[i]),
new SugarParameter("@startdt",startdt),
new SugarParameter("@enddt",enddt),
new SugarParameter("@timeinterval",timeinterval)
};
var dt = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Chart_Tag", sqlParameters);
//*
//var ds = db.SqlQuery("Query_Report_Period", sqlParameters);///
var valuelist = DataTableConvertModel<HDATETIMEVALUE>.ConvertDataTableToList(dt);
var resultlist = new List<ChartData>();
foreach (var value in valuelist)
{
resultlist.Add(new ChartData()
{
name = value.HDATETIME,
value = value.VALUE
});
}
initDbData.Add(resultlist);
}
finish = true;
}
public async Task<string> GetChartsTagValue(string[] charts_TagNames, string systemName)
{
var tagName_list = new List<string>();
@ -227,5 +288,6 @@ namespace HT.Cloud.Service.ChartsManage
public String HDATETIME { get; set; }
public decimal VALUE { get; set; }
}
}
}
}

View File

@ -0,0 +1,80 @@
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 HT.Cloud.Domain.Entity.ReportManage;
using System.Diagnostics;
using System.Threading;
namespace HT.Cloud.Service.ReportManage
{
public class ApplicationStateService : BaseService<RTApplicationStateEntity>, IDenpendency
{
/// <summary>
/// 绑定数据仓库的数据库ID
/// </summary>
private string dataDBNumber = GlobalContext.SystemConfig.DataDBNumber;
public ApplicationStateService(ISqlSugarClient context) : base(context)
{
}
public async Task<string> GetApplicationList(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<RTMainPageEntity>($"SELECT * FROM HT_{driverName}_{groupName}_STATE");
return list.ToJson();
}
public async Task<string> GetRtApplicationState(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<RTMainPageEntity>($"SELECT * FROM HT_{driverName}_{groupName}_STATE");
var interval = 1000;
foreach ( var item in list )
{
var process = Process.GetProcessesByName("HT.Cloud.Web")[0];
var startTime = DateTime.UtcNow;
var startCpuUsage = process.TotalProcessorTime;
// Perform some work
Thread.Sleep(interval);
var endTime = DateTime.UtcNow;
var endCpuUsage = process.TotalProcessorTime;
var cpuUsage = (endCpuUsage - startCpuUsage) / (endTime - startTime) / Environment.ProcessorCount * 100;
var memory = process.WorkingSet64 / (1024 * 1024);
Console.WriteLine($"CPU usage: {cpuUsage}% Memory: {memory}MB");
}
return list.ToJson();
}
public class RealTimeDataFormat
{
public string Description { get; set; }
public string Value { get; set; }
public string RtTime { get; set; }
}
}
}

View File

@ -177,6 +177,49 @@ namespace HT.Cloud.Service.ReportManage
var subSystem = list.Where(x => x.Description == alarmName).First().Subsystem;
return subSystem.ToJson();
}
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();
}
private class AlarmValueCount
{
public string Alarmtype { get; set; }
@ -218,5 +261,27 @@ namespace HT.Cloud.Service.ReportManage
public string Description { get; set; }
public string Units { get; set; }
}
}
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; }
}
}
}

View File

@ -8,7 +8,7 @@ using HT.Cloud.DataBase;
using HT.Cloud.Domain.SystemManage;
using HT.Cloud.Code.Model;
using System.Globalization;
using NetTaste;
//using NetTaste;
namespace HT.Cloud.Service.SystemManage
{

View File

@ -691,6 +691,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -872,7 +873,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -285,6 +285,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),

View File

@ -20,8 +20,10 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiHistoryChartsController : BaseController
{
[HandlerLogin(needLogin:false)]
[HandlerAuthorize(needAuth:false)]
public class PenMeiHistoryChartsController : BaseController //BaseController
{
public HistoryChartsService _historyChartsService { get;set;}
/// <summary>
/// 绑定数据仓库的数据库ID

View File

@ -20,7 +20,9 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiHistoryTechChartsController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiHistoryTechChartsController : BaseController
{
public HistoryTechChartsService _historyTechChartsService { get;set;}
/// <summary>

View File

@ -20,7 +20,9 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiRtTechChartsController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiRtTechChartsController : BaseController
{
public RtTechChartsService _rtTechChartsService { get;set;}
/// <summary>
@ -65,10 +67,10 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
}
[HttpPost]
public async Task<ActionResult> GetChartsTagValueInit(string[] charts_TagNames)
public async Task<ActionResult> GetChartsTagValueInit(string[] charts_TagNames, string[] Tables)
{
var systemName = "喷煤系统";
var data = await _rtTechChartsService.GetChartsTagValueInit(charts_TagNames, systemName);
var data = await _rtTechChartsService.GetChartsTagValueInit(charts_TagNames, Tables, systemName);
return Content(data);
}

View File

@ -691,6 +691,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -872,7 +873,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -869,7 +869,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -816,6 +816,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -1029,7 +1030,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -478,18 +478,22 @@
//获取tagvalue
async function GetChartsTagValue() {
var chardatalist = new Array();
var tablesArr = [];
SelectTagNamelist.splice(0, SelectTagNamelist.length)
for (var si = 0; si < StaticSelectTagList.length; si++) {
SelectTagNamelist.push(StaticSelectTagList[si].TagName);
debugger;
tablesArr.push(StaticSelectTagList[si].Table);
}
myajax = await $.ajax({
url: "/PenMeiChartsManage/PenMeiRtTechCharts/GetChartsTagValueInit",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true
data: { charts_TagNames: SelectTagNamelist },
data: { charts_TagNames: SelectTagNamelist, Tables: tablesArr },
success: function (redata) { }
});
debugger;
@ -508,319 +512,6 @@
}
//showchart = async function () {
// //(document.getElementById('echarts-records'), 'walden');
// var myChart = echarts.init(document.getElementById('result'),'walden');
// myChart.hideLoading();
// myChart.showLoading();
// var chardatalist = await GetChartsTagValue();
// var unitsrc = new Array();
// var unitnames = new Array();
// var unitcolor = new Array();
// for(var ddi = 0;ddi<StaticSelectTagList.length;ddi++){
// var unit_now = StaticSelectTagList[ddi].Units;
// if (unitsrc.indexOf(unit_now) == -1) {
// debugger;
// unitsrc.push(unit_now);
// unitnames.push(StaticSelectTagList[ddi].UnitType + "(" + StaticSelectTagList[ddi].Units + ")");
// unitcolor.push(StaticSelectTagList[ddi].HTRGB);
// }
// }
// debugger;
// myChart.dispose();
// var xDataArr = new Array();
// var yDataArr = new Array();
// for (var listindex = 0; listindex < chardatalist.length; listindex++) {
// let ydata = chardatalist[listindex].map(x => { return x.value });
// let xdata = chardatalist[listindex].map(x => { return x.name });
// xDataArr.push(xdata);
// yDataArr.push(ydata);
// }
// var lightwhite = 0;
// if (unitsrc.length > 0) {
// lightwhite = (unitsrc.length ) * 40;
// }
// //var lightwhite = (chardatalist.length) * 100;
// var color = new Array();
// for (var colori = 0; colori < StaticSelectTagList.length; colori++) {
// //color.push(roundrgb())
// color.push(StaticSelectTagList[colori].HTRGB);
// //color.push("#000000");
// }
// var yAxis = new Array();
// debugger;
// var maxYs = unitsrc.length;
// for (var ci = 0; ci < unitsrc.length; ci++) {
// if (ci == 0)
// {
// let yAxisdata = {
// name: JSON.parse(JSON.stringify(unitnames[ci])),
// nameLocation: 'center',
// type: 'value',
// //position:'left',
// //坐标轴两边留白策略设置max、min后失效
// boundaryGap: ['5%', '2%'],
// // max: 700,
// // min: 0,
// // 让表格的刻度向靠里侧显示
// axisTick: {
// inside: true
// },
// axisLabel: {
// inside: true,
// align: 'left',
// verticalAlign: 'bottom',
// },
// // 设置刻度线的颜色等样式
// axisLine: {
// show: true,
// onZero: true,
// onZeroAxisIndex:0,
// lineStyle: {
// //color: color[ci],
// color: unitcolor[ci],
// width: 3
// }
// },
// splitLine: {
// show: true, //想要不显示网格线改为false
// lineStyle: {
// // 设置网格为虚线
// type: 'dashed'
// }
// },
// //offset: (ci - 1) * 100
// }
// yAxis.push(yAxisdata);
// }
// else {
// let yAxisdata = {
// name: JSON.parse(JSON.stringify(unitnames[ci])),
// nameLocation: 'center',
// // max: 800,
// // min: 0,
// type: 'value',
// position: 'left',
// //坐标轴两边留白策略设置max、min后失效
// boundaryGap: ['5%', '2%'],
// axisLabel: {
// inside: true,
// align: 'left',
// verticalAlign: 'bottom',
// },
// axisLine: {
// show: true,
// onZero: false,
// lineStyle: {
// //color: color[ci],
// color: unitcolor[ci],
// width: 3
// }
// },
// splitLine: {
// show: false //想要不显示网格线改为false
// },
// // 设置坐标轴偏移位置
// offset: (ci) * 40
// //offset: (ci) * 100
// }
// yAxis.push(yAxisdata);
// }
// }
// //for (var ci = 0; ci < StaticSelectTagList.length; ci++) {
// // if (ci == 0) {
// // let yAxisdata = {
// // name: JSON.parse(JSON.stringify(StaticSelectTagList[ci].Description)),
// // nameLocation: 'center',
// // type: 'value',
// // //坐标轴两边留白策略设置max、min后失效
// // boundaryGap: ['5%', '2%'],
// // // max: 700,
// // // min: 0,
// // // 让表格的刻度向靠里侧显示
// // axisTick: {
// // inside: true
// // },
// // axisLabel: {
// // inside: true,
// // align: 'left',
// // verticalAlign: 'bottom',
// // },
// // // 设置刻度线的颜色等样式
// // axisLine: {
// // show: true,
// // lineStyle: {
// // //color: color[ci],
// // color: StaticSelectTagList[ci].HTRGB,
// // width: 3
// // }
// // },
// // splitLine: {
// // show: true, //想要不显示网格线改为false
// // lineStyle: {
// // // 设置网格为虚线
// // type: 'dashed'
// // }
// // }
// // }
// // yAxis.push(yAxisdata);
// // }
// // else {
// // let yAxisdata = {
// // name: JSON.parse(JSON.stringify(StaticSelectTagList[ci].Description)),
// // nameLocation: 'center',
// // // max: 800,
// // // min: 0,
// // type: 'value',
// // //坐标轴两边留白策略设置max、min后失效
// // boundaryGap: ['5%', '2%'],
// // axisLabel: {
// // inside: true,
// // align: 'right',
// // verticalAlign: 'bottom',
// // },
// // axisLine: {
// // show: true,
// // lineStyle: {
// // //color: color[ci],
// // color: StaticSelectTagList[ci].HTRGB,
// // width: 3
// // }
// // },
// // splitLine: {
// // show: false //想要不显示网格线改为false
// // },
// // // 设置坐标轴偏移位置
// // offset: (ci - 1) * 100
// // //offset: (ci) * 100
// // }
// // yAxis.push(yAxisdata);
// // }
// //}
// var series = new Array();
// for (var si = 0; si < StaticSelectTagList.length; si++) {
// var unitIndex = 0;
// var unitss = StaticSelectTagList[si].Units;
// for(var ui = 0;ui<unitsrc.length;ui++){
// if (unitsrc[ui].Units == unitss){
// unitIndex = ui;
// break;
// }
// }
// debugger;
// //bool变量取消平滑采取折线
// let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
// let seriesdata = {
// data: yDataArr[si],
// // 曲线名
// name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
// // 设置参数对应的y坐标轴的索引
// yAxisIndex: unitIndex,
// type: 'line',
// // 曲线平滑设置
// smooth: issmooth
// }
// series.push(seriesdata);
// }
// // 设置鼠标hover时的提示信息
// var tooltip = {
// trigger: 'axis', // 有3个属性值 axis item none
// axisPointer: {
// type: 'cross',
// label: {
// backgroundColor: '#6a7985' //配置展示方块的背景颜色
// }
// }
// }
// // 调整表格两边的空白的区
// var grid = {
// //left:'20px'
// // 左侧
// //x: '150px',
// x: lightwhite+'px',
// // 上部
// y: 25,
// // 右侧
// //x2: lightwhite + 'px',
// x2:10,
// // 下部
// // y2: 35
// }
// var letest = ['tg', 'fe', 'wdf'];
// // 调整图样的名称 // 定义图样和每条曲线的颜色
// var legend = new Array();
// for (var li = 0; li < StaticSelectTagList.length; li++) {
// debugger;
// let legenddata = StaticSelectTagList[li].Description;
// legend.push(JSON.parse(JSON.stringify(legenddata)));
// }
// var dataZoom = {
// //type: 'slider'
// type: 'inside'
// }
// var option = {
// xAxis: {
// name: '时间',
// type: 'category',
// position: 'bottom',
// data: xDataArr[0],
// // boundaryGap: false, //x下标在刻度处显示
// splitLine: {
// show: true, //想要不显示网格线改为false
// lineStyle: {
// // 设置网格为虚线
// type: 'dashed'
// }
// },
// axisTick:{
// show:true,
// //alignWithLabel:true,
// //interval:'1'
// },
// // splitArea: { show: true }, //保留网格区域
// // 设置刻度线的颜色等样式
// axisLine: {
// onZero: false,
// lineStyle: {
// color: 'black',
// width: 3
// }
// }
// },
// yAxis: yAxis,
// series: series,
// tooltip: tooltip,
// grid: grid,
// legend: {
// data: legend,
// top: 'top',
// bottom: 'auto',
// left: 'center',
// right: 'auto'
// },
// dataZoom: dataZoom,
// color: color
// };
// setTimeout(bulidchart(option), 500);
//}
showchart = async function () {
//(document.getElementById('echarts-records'), 'walden');
var myChart = echarts.init(document.getElementById('result'), 'walden');
@ -1079,6 +770,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),

View File

@ -60,7 +60,7 @@
async function GetAllSubsystemTag() {
debugger;
$.ajax({
url: "/ChartsManage/Rtcharts/GetAllSubsystemTag",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetAllSubsystemTag",
type: "Get",
//dataType: "json",
//async: false,
@ -85,7 +85,7 @@
//var subsystemAllTag = await Call(api.DataHistoryCharts.GetSubsystemAllTag, para);
debugger;
myajax = $.ajax({
url: "/ChartsManage/Rtcharts/GetSubsystemAllTag",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetSubsystemAllTag",
type: "Post",
//dataType: "json",
data: para,
@ -154,7 +154,7 @@
//});
//debugger;
myajax = await $.ajax({
url: "/ChartsManage/Rtcharts/GetChartsTagValueInit",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetChartsTagValueInit",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true
@ -285,6 +285,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -395,7 +396,7 @@
var RtData = new Array();
myajax = await $.ajax({
url: "/ChartsManage/Rtcharts/GetChartsTagValue",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetChartsTagValue",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true

View File

@ -103,21 +103,66 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers
return (dt.ToString("yyyy/MM/dd HH:mm:ss"));
}
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
public string Gettime_(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
[HttpPost]
public async Task<ActionResult> GetAlarmACC(Alarm_ACC_Params alarm_ACC_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_ACC_Params.StartTime);
var EndTime = Gettime(alarm_ACC_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_ACC(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmHistogram(Alarm_Histogram_Params alarm_Histogram_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime_(alarm_Histogram_Params.StartTime);
var EndTime = Gettime_(alarm_Histogram_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Histogram(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmPie(Alarm_Pie_Params alarm_Pie_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_Pie_Params.StartTime);
var EndTime = Gettime(alarm_Pie_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Pie(StartTime, EndTime, systemName);
return Content(data);
}
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
{
public string SubsysytemName { get; set; }
}
@ -153,5 +198,22 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers
public string Hhour { get; set; }
}
public class Alarm_ACC_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Histogram_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Pie_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
}
}

View File

@ -0,0 +1,236 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using HT.Cloud.Code;
using HT.Cloud.Domain.ChartsManage;
using HT.Cloud.Service;
using Microsoft.AspNetCore.Authorization;
using HT.Cloud.Service.ChartsManage;
using HT.Cloud.Service.ReportManage;
using Serenity.Services;
namespace HT.Cloud.Web.Areas.ReportManage.Controllers
{
/// <summary>
/// 创 建cdl
/// 日 期2023-02-23 11:10
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiReportManage")]
public class PenMeiHistoryAlarmNewController : BaseController
{
public HistoryAlarmService _historyAlarmService { get;set;}
/// <summary>
/// 绑定数据仓库的数据库ID
/// </summary>
private string groupDescription = GlobalContext.SystemConfig.GroupDescription;
[HttpGet]
public async Task<ActionResult> GetDriverGroupList()
{
var data = await _historyAlarmService.GetDriverGroupList();
return Content(data);
}
[HttpGet]
public async Task<ActionResult> GetAllSubsystemTag()
{
string systemName = "喷煤系统";
var data = await _historyAlarmService.GetAllSubsystemTag(systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetSubsystemAllTag(ChartSubsysytemName chartSubsysytemName)
{
string systemName = "喷煤系统";
var data = await _historyAlarmService.GetSubsystemAllTag(chartSubsysytemName.SubsysytemName, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecord(Alarm_Params charts_Params)
{
string systemName = "喷煤系统";
short TagID = short.Parse(charts_Params.TagID);
var StartTime = Gettime(charts_Params.StartTime);
var EndTime = Gettime(charts_Params.EndTime);
var data = await _historyAlarmService.GetAlarmRecord(TagID, StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecordQuick(Alarm_Quick_Params alarm_Quick_Params)
{
string systemName = "喷煤系统";
var Alarmtype = alarm_Quick_Params.Alarmtype;
var StartTime = Gettime(alarm_Quick_Params.StartTime);
var EndTime = Gettime(alarm_Quick_Params.EndTime);
var data = await _historyAlarmService.GetAlarmRecordQuick(Alarmtype, StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecordQuickDesc(Alarm_Quick_Desc_Params alarm_Quick_Desc_Params)
{
string systemName = "喷煤系统";
var hhour = alarm_Quick_Desc_Params.Hhour;
var data = await _historyAlarmService.GetAlarmRecordQuickDesc(hhour, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmSubSystem(SubSystem_Params subSystem_Params)
{
string systemName = "喷煤系统";
var AlarmName = subSystem_Params.AlarmName;
var data = await _historyAlarmService.GetAlarmSubSystem(AlarmName,systemName);
return Content(data);
}
public string Gettime(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy/MM/dd HH:mm:ss"));
}
public string Gettime_(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
[HttpPost]
public async Task<ActionResult> GetAlarmACC(Alarm_ACC_Params alarm_ACC_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_ACC_Params.StartTime);
var EndTime = Gettime(alarm_ACC_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_ACC(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmHistogram(Alarm_Histogram_Params alarm_Histogram_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime_(alarm_Histogram_Params.StartTime);
var EndTime = Gettime_(alarm_Histogram_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Histogram(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmPie(Alarm_Pie_Params alarm_Pie_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_Pie_Params.StartTime);
var EndTime = Gettime(alarm_Pie_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Pie(StartTime, EndTime, systemName);
return Content(data);
}
/*
* 一
* 1、重绘管理系统所有趋势曲线曲线的数据点上不在绘制图形圆点。
* 2、实时趋势开放拖动和JS代码添加可向前加载数据集的动态方法。
* 二
* 1、后台服务在获取实时趋势初始化数据时进行向前的数据获取为初始数据集添加一段历史数据。
* 2、参加公司组织的拍摄技术培训。
* 三
* 1、使用异步和函数回调来执行历史数据查询在实时数据获取后进行时间戳对其避免出现重复时间和漏掉时间。
* 2、报警分析柱图优化单日柱状图从堆叠图修改为平铺柱状图。
* 四
* 1、柱状图添加工具条可支持堆叠图、平铺图、折线图切换显示并支持下载功能。
* 2、添加图表联动功能增加柱状图和饼图的点击事件在柱状区域或饼状区域内点击可跳转至该报警信息的详细查询。
* 五
* 1、
* 2、整理管理系统以前相关的设计、宣传素材编写管理系统演示用ppt。
*/
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
{
public string SubsysytemName { get; set; }
}
//public class HDATETIMEVALUE
//{
// public String HDATETIME { get; set; }
// public decimal VALUE { get; set; }
//}
//public class ChartData
//{
// public decimal value { get; set; }
// public String name { get; set; }
//}
public class SubSystem_Params
{
public string AlarmName { get; set; }
}
public class Alarm_Params
{
public string TagID { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Quick_Params
{
public string Alarmtype { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Quick_Desc_Params
{
public string Hhour { get; set; }
}
public class Alarm_ACC_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Histogram_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Pie_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
}
}

View File

@ -15,7 +15,9 @@ using HT.Cloud.Code;
namespace HT.Cloud.Web.Areas.PenMeiReportManage.Controllers
{
[Area("PenMeiReportManage")]
public class PenMeiHistoryReportController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiHistoryReportController : BaseController
{
public HistoryReportService _historyReportService { get; set; }
/// <summary>

View File

@ -701,6 +701,60 @@
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeSD').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeSD').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeZhu').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeZhu').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeBing').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeBing').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
});
function getFormatDate(date) {
let year = date.getFullYear();
@ -1157,8 +1211,239 @@
return result;
}
ShowSDChart = async function() {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeSD')[0].value;
let datetimeend = $('#dateReEndTimeSD')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmACC",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
result = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultsandian'), 'walden');
myChart.dispose();
myChart = echarts.init(document.getElementById('resultsandian'), 'walden');
myChart.hideLoading();
myChart.showLoading();
var sdata = [];
var ldata = [];
// for (var i = 0; i < result.length; i++) {
for (var i = 0; i < 10; i++) {
sdata.push({
name: result[i].Description,
data:[result[i].hcount, result[i].hztime],
symbolSize: 50,
type:'scatter'
});
ldata.push(result[i].Description);
}
var option = {
xAxis: {
name: '报警次数',
nameGap: 16,
nameTextStyle: {
fontSize: 16
},
//max: 31,
splitLine: {
show: true
}
},
yAxis: {
name: '报警总时长',
nameLocation: 'end',
nameGap: 20,
nameTextStyle: {
fontSize: 16
},
splitLine: {
show: true
}
},
legend: {
data:ldata
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
series:sdata,
// series: [{
// SymbolSize:20,
// data:data,
// type:'scatter',
// },
//]
}
myChart.hideLoading();
myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
ShowZhuChart = async function () {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeZhu')[0].value;
let datetimeend = $('#dateReEndTimeZhu')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmHistogram",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
var data = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultzhu'));
myChart.dispose();
myChart = echarts.init(document.getElementById('resultzhu'));
myChart.hideLoading();
myChart.showLoading();
let date = []; //x轴日期
let lenged = []; //series的个数
let s = [];
data.map((item) => {
date.push(item['HDATE']);
lenged.push(item['Description']);
});
debugger;
date = [...new Set(date)]; //去重
lenged = [...new Set(lenged)];
console.log(date, lenged);
let series = [];
lenged.map((item) => {
//生成 series
let obj = {
name: item,
type: 'bar',
stack: 'As',
emphasis: {
focus: 'series'
},
data: []
};
series.push(obj);
});
data.map((item) => {
//对series 的data进行处理
series.map((item1) => {
if (item1.name == item['Description'] && date.indexOf(item['HDATE']) > -1) {
item1.data[date.indexOf(item['HDATE'])] = item['hztime'];
}
});
});
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: date
}
],
yAxis: [
{
type: 'value'
}
],
series: series
};
myChart.hideLoading();
option && myChart.setOption(option);
// myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
ShowBingChart = async function () {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeBing')[0].value;
let datetimeend = $('#dateReEndTimeBing')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmPie",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
result = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultbing'), 'walden');
myChart.dispose();
myChart = echarts.init(document.getElementById('resultbing'), 'walden');
myChart.hideLoading();
myChart.showLoading();
var data = [];
for (var i = 0; i < result.length; i++) {
data.push({ value: result[i].Hpercent, name: result[i].Description + "\n" + result[i].Hpercent + "%" });
}
debugger;
var option = {
title: {
text: '报警时长占比统计',
// subtext: '纯属虚构',
left: 'center'
},
series:[
{
type: 'pie',
data:data
}
]
}
myChart.hideLoading();
myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
});
@ -1166,15 +1451,297 @@
</script>
<html style="height:100%">
<body style="height:100%">
<script type="text/javascript" src="~/lib/echarts-5.3.0/dist/echarts.js"></script>
<div class="layui-tab layui-tab-card" lay-filter="Chang" style="height:100%" id="tab1">
@*<script type="text/javascript" src="~/lib/echarts-5.3.0/dist/echarts.js"></script>*@
<ul class="layui-tab-title">
<li class="layui-this" lay-id ="11">报警汇总</li>
<li class="layui-this" lay-id="sanding">散点图</li>
<li lay-id="zhu">柱状图</li>
<li lay-id="bing">饼图图</li>
<li lay-id ="11">报警汇总</li>
<li lay-id ="22">报警查询</li>
</ul>
<div class="layui-tab-content" style="height:90%">
<div class="layui-tab-item layui-show" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormSD">
<div id="grid_31" class="layui-form-item layui-row grid active" data-id="grid_31"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="0" data-parentindex="0">
<div id="ReStartTimeSD" class="layui-form-item active" data-id="ReStartTimeSD"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeSD" name="ndateReStartTimeSD" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeSD" class="layui-form-item active" data-id="ReEndTimeSD"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeSD" name="ndateReEndTimeSD" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdSD">
<div id="select_11SD" class="layui-form-item active" data-id="select_11SD" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickSD">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51SD" class="layui-form-item active" data-id="bottom_51SD" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchSD" type="button" class="layui-btn custom-zc" ; onclick="ShowSDChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelsandian">
<div class="layui-panel" id="gridpanelsandian" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultsandian" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormZhu">
<div id="grid_21Zhu" class="layui-form-item layui-row grid active" data-id="grid_21Zhu"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="1" data-parentindex="0">
<div id="ReStartTimeZhu" class="layui-form-item active" data-id="ReStartTimeZhu"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeZhu" name="ndateReStartTime" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeZhu" class="layui-form-item active" data-id="ReEndTimeZhu"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeZhu" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdZhu">
<div id="select_11Zhu" class="layui-form-item active" data-id="select_11Zhu" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickZhu">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51Zhu" class="layui-form-item active" data-id="bottom_51Zhu" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchZhu" type="button" class="layui-btn custom-zc" ; onclick="ShowZhuChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelZhu">
<div class="layui-panel" id="gridpanelzhu" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultzhu" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormBing">
<div id="grid_21Bing" class="layui-form-item layui-row grid active" data-id="grid_21Bing"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="1" data-parentindex="0">
<div id="ReStartTimeBing" class="layui-form-item active" data-id="ReStartTimeBing"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeBing" name="ndateReStartTime" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeBing" class="layui-form-item active" data-id="ReEndTimeBing"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeBing" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdBing">
<div id="select_11Bing" class="layui-form-item active" data-id="select_11Bing" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickBing">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51Bing" class="layui-form-item active" data-id="bottom_51Bing" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchBing" type="button" class="layui-btn custom-zc" ; onclick="ShowBingChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelBing">
<div class="layui-panel" id="gridpanelbing" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultbing" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
@*<div class="layui-col-md2 layui-col-xs3" style="height:100%;padding-right:12px;">
@ -1277,7 +1844,7 @@
<div id="ReEndTime1" class="layui-form-item active" data-id="ReEndTime1"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime1" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
@ -1429,7 +1996,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 150px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -75,7 +75,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -1279,7 +1279,7 @@
<div id="ReEndTime1" class="layui-form-item active" data-id="ReEndTime1"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime1" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
@ -1431,7 +1431,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -0,0 +1,402 @@
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Index.cshtml";
}
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment env
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style>
.layui-card {
border: 1px solid #f2f2f2;
border-radius: 5px;
}
.icon {
margin-right: 10px;
color: #1aa094;
}
.icon-cray {
color: #ffb800 !important;
}
.icon-blue {
color: #1e9fff !important;
}
.icon-tip {
color: #ff5722 !important;
}
.layuimini-qiuck-module {
text-align: center;
margin-top: 10px
}
.layuimini-qiuck-module a i {
display: inline-block;
width: 100%;
height: 60px;
line-height: 60px;
text-align: center;
border-radius: 2px;
font-size: 30px;
background-color: #F8F8F8;
color: #333;
transition: all .3s;
-webkit-transition: all .3s;
}
.layuimini-qiuck-module a cite {
position: relative;
top: 2px;
display: block;
color: #666;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
font-size: 14px;
}
.welcome-module {
width: 100%;
height: 210px;
}
.panel {
background-color: #fff;
border: 1px solid transparent;
border-radius: 3px;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
box-shadow: 0 1px 1px rgba(0,0,0,.05)
}
.panel-body {
padding: 10px
}
.panel-title {
margin-top: 0;
margin-bottom: 0;
font-size: 12px;
color: inherit
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
margin-top: .3em;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
margin-top: .3em;
}
.layui-red {
color: red
}
.main_btn > p {
height: 40px;
}
.layui-bg-number {
background-color: #F8F8F8;
}
.layuimini-notice:hover {
background: #f6f6f6;
}
.layuimini-notice {
padding: 7px 16px;
clear: both;
font-size: 12px !important;
cursor: pointer;
position: relative;
transition: background 0.2s ease-in-out;
}
.layuimini-notice-title, .layuimini-notice-label {
padding-right: 70px !important;
text-overflow: ellipsis !important;
overflow: hidden !important;
white-space: nowrap !important;
}
.layuimini-notice-title {
line-height: 28px;
font-size: 14px;
}
.layuimini-notice-extra {
position: absolute;
top: 50%;
margin-top: -8px;
right: 16px;
display: inline-block;
height: 16px;
color: #999;
}
</style>
<script>
layui.use(['layer', 'echarts', 'common'], function () {
var $ = layui.jquery,
layer = layui.layer,
common = layui.common,
echarts = layui.echarts;
common = layui.common;
common.iframeInterval(function () {
loadInfo();
}, 10000); //指定10秒刷新一次
$(function () {
loadInfo();
loadChart();
});
wcLoading.close();
function loadInfo() {
$.ajax({
url: "/SystemSecurity/ServerMonitoring/GetServerDataJson?v=" + new Date().Format("yyyy-MM-dd hh:mm:ss"),
dataType: "json",
success: function (data) {
$('#cpucout').html(data.CPU + "%");
$('#armcout').html(data.ARM + "%");
$('#TotalRAM').html(data.TotalRAM);
$('#OutIP').html(data.IP);
}
});
}
function loadChart() {
var myChart = echarts.init(document.getElementById('echarts-records'), 'walden');
var xData = [];
var armData = [];
var cpuData = [];
common.ajax({
url: "/SystemSecurity/ServerMonitoring/GetServerData",
dataType: "json",
async: false,
success: function (data) {
var length = data.length;
for (var i = 0; i < length; i++) {
if (data[i]['F_Date'] !== null) {
xData.push(new Date(data[i]['F_Date']).Format("yyyy-MM-dd"));
}
if (data[i]['F_ARM'] !== null) {
armData.push(data[i]['F_ARM']);
}
if (data[i]['F_CPU'] !== null) {
cpuData.push(data[i]['F_CPU']);
}
}
}
});
option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['CPU使用率', 'ARM使用率']
},
xAxis: {
type: 'category',
boundaryGap: false,
data: xData
},
yAxis: {
type: 'value'
},
series: [
{
name: 'CPU使用率', type: 'line',
data: cpuData,
lineStyle: {
normal: {
width: 2
}
},
smooth: true,
symbol: 'circle',
symbolSize: 10,
showAllSymbol: true,
color: '#2499F8',
},
{
name: 'ARM使用率', type: 'line',
data: armData,
lineStyle: {
normal: {
width: 2
}
},
smooth: true,
symbol: 'circle',
symbolSize: 10,
showAllSymbol: true,
color: '#F90',
}
]
};
myChart.setOption(option);
// echarts 窗口缩放自适应
window.onresize = function () {
myChart.resize();
}
};
})
</script>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-row layui-col-space15">
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-warning icon"></i>状态信息</div>
<div class="layui-card-body">
<div class="welcome-module">
<div class="layui-row layui-col-space10">
<div class="layui-col-xs6">
<div class="panel layui-bg-number" style="height:200px">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-blue">实时</span>
<h5>CPU使用率</h5>
</div>
<div class="panel-content">
<h1 class="no-margins" id="cpucout"></h1>
<small>当前记录</small>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="panel layui-bg-number" style="height:200px">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-cyan">实时</span>
<h5>ARM使用率</h5>
</div>
<div class="panel-content">
<h1 class="no-margins" id="armcout"></h1>
<small>当前记录</small>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-line-chart icon"></i>报表统计</div>
<div class="layui-card-body">
<div id="echarts-records" style="width: 100%;min-height:220px"></div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>服务器信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>服务器名称</td>
<td>
@Environment.MachineName
</td>
</tr>
<tr>
<td>总内存</td>
<td><span id="TotalRAM"></span></td>
</tr>
<tr>
<td>操作系统</td>
<td>@System.Runtime.InteropServices.RuntimeInformation.OSDescription</td>
</tr>
<tr>
<td>系统架构</td>
<td>@System.Runtime.InteropServices.RuntimeInformation.OSArchitecture</td>
</tr>
<tr>
<td>外网IP</td>
<td>
<span id="OutIP"></span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>.NET信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>环境变量</td>
<td>@Html.Raw(env.EnvironmentName)</td>
</tr>
<tr>
<td>ContentRootPath</td>
<td>
@Html.Raw(env.ContentRootPath)
</td>
</tr>
<tr>
<td>WebRootPath</td>
<td>@Html.Raw(env.WebRootPath)</td>
</tr>
<tr>
<td>.NET版本</td>
<td>
@Html.Raw(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription)
</td>
</tr>
<tr>
<td>启动时间</td>
<td>
@System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString("yyyy-MM-dd HH:mm:ss")
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -59,7 +59,6 @@ namespace HT.Cloud.Web
}
[HttpGet]
[HandlerAuthorize]
public virtual ActionResult Index()
{
return View();

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="e2f052f6-1509-4c55-84de-04eb742fe28f" version="1">
<creationDate>2023-10-26T06:08:18.4927965Z</creationDate>
<activationDate>2023-10-26T06:08:18.4519268Z</activationDate>
<expirationDate>2024-01-24T06:08:18.4519268Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>VfIzIpwFUHHKnUpgU9+YB6hSl0rbMsdUVz6nl/7btIoiBsd7lUY61AX4hKJrqQ9ACz4CSODJ4trRjmXnkSP3OA==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

View File

@ -11,6 +11,7 @@
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
<ServerGarbageCollection>false</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
@ -60,9 +61,10 @@
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.12" />
<PackageReference Include="MiniExcel" Version="1.30.0" />
<PackageReference Include="Quartz" Version="3.5.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.3.45" />
<PackageReference Include="Quartz.Serialization.Json" Version="3.5.0" />
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.3.45" />
<PackageReference Include="System.DirectoryServices.Protocols" Version="7.0.0" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="5.0.0" />
</ItemGroup>
<ItemGroup>

View File

@ -54,7 +54,7 @@ namespace HT.Cloud.Web
.ReviseSuperSysem()
.AddEventBus()
.AddRabbitMq()
.AddWorkerService()
//.AddWorkerService()//23/11/2注释修复初始化报错
.AddSignalR(options =>
{
//客户端发保持连接请求到服务端最长间隔默认30秒改成4分钟网页需跟着设置connection.keepAliveIntervalInMilliseconds = 12e4;即2分钟

View File

@ -572,6 +572,7 @@
legendArr.push(StaticChartList[ci].Description);
ySeries.push(
{
// symbol: "none",
name: StaticChartList[ci].Description,
type: 'line',
data: yData[ci],
@ -590,7 +591,7 @@
},
smooth: true,
symbol: 'circle',
symbolSize: 6,
symbolSize: 1,
showAllSymbol: true,
color: colorArr[ci],
}
@ -697,7 +698,8 @@
// show: true,
// position: 'top'
//},
type: 'value'
type: 'value',
scale: true
},
series:ySeries,
//series: [

View File

@ -165,6 +165,18 @@
绑定数据仓库的数据库ID
</summary>
</member>
<member name="T:HT.Cloud.Web.Areas.ReportManage.Controllers.PenMeiHistoryAlarmNewController">
<summary>
创 建cdl
日 期2023-02-23 11:10
描 述:历史趋势控制器类
</summary>
</member>
<member name="F:HT.Cloud.Web.Areas.ReportManage.Controllers.PenMeiHistoryAlarmNewController.groupDescription">
<summary>
绑定数据仓库的数据库ID
</summary>
</member>
<member name="F:HT.Cloud.Web.Areas.ReportManage.Controllers.HistoryReportController.groupDescription">
<summary>
绑定数据仓库的数据库ID

View File

@ -13,7 +13,7 @@
"LoginMultiple": false, // 是否允许一个账户在多处登录
"AllowCorsSite": "http://localhost:8058", // 允许的其他站点访问Api
"DBProvider": "SqlServer", //SqlServer //Oracle
"DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij/8Pt/tnmDwn+rE3IgYGjbmDk32vhkYsxag9amyZ1OOMwPA3yWW1gKjVgKPpDBSgVaiansOQtPtF5IQDwQ7q12LOaKRfCsNZGg56LRoA5R2eybLLG8j/xLWDC8/X7aDMHvZ2G8SWZzlDTt8jTQulouSVBP7JtlWXsAj1B5NVUxvlqn5yJiaz89ISUyPp1+A/XQ==",
"DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij6YiQpV5DIw6JRzXXsYlzoJ+bUF4h97SyChJobnKFm1EOA4aBGj+/Aje1MD7G13GOXplGKNnRzOB6qvav/vGq4xLAOc1EyKCHAMDCgWSEpu5uXl7LYv8gGNRQzIjv6UkUBLzX1Jetj7Hf9iYws19sCoRXI/1Vm5bZIVwLQThEctF8imcaVDPhGNcPCH1kr+h5A==",
"DBCommandTimeout": 180, // 数据库超时时间,单位秒
"CacheProvider": "Memory", // 缓存使用方式 Redis/Memory
"RedisConnectionString": "127.0.0.1:6379", //docker部署 172.17.0.1
@ -34,7 +34,7 @@
{
"DBNumber": "1",
"DBProvider": "SqlServer", //MySql //Oracle
"DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij/8Pt/tnmDwn+rE3IgYGjbnYiY85KP1HOOhZ7C60SCx1TwEmcNLYzAsnfEdOBXU0nU0Oy8su8Qtkf/CPFKNyOJYTJKdUqu23gKYXItXANHKYm37ayRrKmUCNtdRkxoN9I6Y8N+yLiP1Qjk207DBIXR4vgChSgSPr9USeuNmLVsiBiUuDY+4KnQF8uHwQxMBvWg=="
"DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij6YiQpV5DIw6JRzXXsYlzoJ+bUF4h97SyChJobnKFm1EOA4aBGj+/Aje1MD7G13GOXplGKNnRzOB6qvav/vGq4xLAOc1EyKCHAMDCgWSEpu5uXl7LYv8gGNRQzIjv6UkUBLzX1Jetj7Hf9iYws19sCoRXI/1Vm5bZIVwLQThEctF8imcaVDPhGNcPCH1kr+h5A=="
}
],
"RabbitMq": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB