From a66412700b68dbc44e7519414a801d383907645d Mon Sep 17 00:00:00 2001 From: dell Date: Wed, 19 Apr 2023 15:34:22 +0800 Subject: [PATCH] =?UTF-8?q?v1.0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReportManage/MetaTagAlarmService.cs | 26 ++- .../Controllers/MetaTagAlarmController.cs | 14 +- .../Views/MetaTagAlarm/Index.cshtml | 174 +++++++++++++++--- HT.Cloud.Web/Views/Home/Default.cshtml | 8 +- HT.Cloud.Web/wwwroot/report/报表预设模板.xlsx | Bin 14770 -> 14772 bytes 5 files changed, 191 insertions(+), 31 deletions(-) diff --git a/HT.Cloud.Service/ReportManage/MetaTagAlarmService.cs b/HT.Cloud.Service/ReportManage/MetaTagAlarmService.cs index 02e4135..e4b42ee 100644 --- a/HT.Cloud.Service/ReportManage/MetaTagAlarmService.cs +++ b/HT.Cloud.Service/ReportManage/MetaTagAlarmService.cs @@ -118,6 +118,19 @@ namespace HT.Cloud.Service.ReportManage var valuelist = DataTableConvertModel.ConvertDataTableToList(dt); return valuelist.ToJson(); + } + //GetAlarmRecordQuickDesc + public async Task GetAlarmRecordQuickDesc(string hhour) + { + int Hhour = int.Parse(hhour); + SugarParameter[] sqlParameters = + { + new SugarParameter("@Hhour",Hhour) + }; + var dt = _context.Ado.UseStoredProcedure().GetDataTable("Query_Tag_Alarm_History", sqlParameters); + var valuelist = DataTableConvertModel.ConvertDataTableToList(dt); + return valuelist.ToJson(); + } public async Task GetAlarmSubSystem(string alarmName) { @@ -131,12 +144,23 @@ namespace HT.Cloud.Service.ReportManage 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; } diff --git a/HT.Cloud.Web/Areas/ReportManage/Controllers/MetaTagAlarmController.cs b/HT.Cloud.Web/Areas/ReportManage/Controllers/MetaTagAlarmController.cs index c5d86c0..922649a 100644 --- a/HT.Cloud.Web/Areas/ReportManage/Controllers/MetaTagAlarmController.cs +++ b/HT.Cloud.Web/Areas/ReportManage/Controllers/MetaTagAlarmController.cs @@ -58,7 +58,15 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers var data = await _metaTagAlarmService.GetAlarmRecordQuick(Alarmtype, StartTime, EndTime); return Content(data); } - [HttpPost] + [HttpPost] + public async Task GetAlarmRecordQuickDesc(Alarm_Quick_Desc_Params alarm_Quick_Desc_Params) + { + var hhour = alarm_Quick_Desc_Params.Hhour; + + var data = await _metaTagAlarmService.GetAlarmRecordQuickDesc(hhour); + return Content(data); + } + [HttpPost] public async Task GetAlarmSubSystem(SubSystem_Params subSystem_Params) { var AlarmName = subSystem_Params.AlarmName; @@ -119,6 +127,10 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers public string StartTime { get; set; } public string EndTime { get; set; } } + public class Alarm_Quick_Desc_Params + { + public string Hhour { get; set; } + } } } diff --git a/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml b/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml index 206a019..17ab879 100644 --- a/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml +++ b/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml @@ -25,6 +25,9 @@ //权限控制(js是值传递) //toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML); + + + element.render(); element.on('tab(Chang)',function(data){ if(firstInit){ @@ -41,6 +44,11 @@ //}); }); + var argumentFormSiemens = document.getElementById('recentMd'); + argumentFormSiemens.style.display = 'block'; + var argumentFormSiemens = document.getElementById('classifyMd'); + argumentFormSiemens.style.display = 'none'; + form.on('select(quickTime)', function (data) { var selectValue = data.value; @@ -332,6 +340,18 @@ form.on('select(quickType)', function (data) { var selectValue = data.value; + if (selectValue == 'recent'){ + var argumentFormSiemens = document.getElementById('recentMd'); + argumentFormSiemens.style.display = 'block'; + var argumentFormSiemens = document.getElementById('classifyMd'); + argumentFormSiemens.style.display = 'none'; + }else{ + var argumentFormSiemens = document.getElementById('recentMd'); + argumentFormSiemens.style.display = 'none'; + var argumentFormSiemens = document.getElementById('classifyMd'); + argumentFormSiemens.style.display = 'block'; + } + function getFormatDate(date) { let year = date.getFullYear(); let month = date.getMonth() + 1; @@ -867,32 +887,65 @@ //} showTableQuick = async function () { - showLoading1(); - var showdata = await GetAlarmRecordQuick(); - table.render({ - elem: '#result1', - height: 'full-150', - data: showdata, - //editTrigger:'dblclick', - cols: [[ - //{ type: 'checkbox' }, - //{ field: 'Subsystem', title: '子系统', edit: 'text'}, + debugger; + if (selectType.value == "recent") { + showLoading1(); + var showdata = await GetAlarmRecordQuickDesc(); + table.render({ + elem: '#result1', + height: 'full-150', + data: showdata, + //editTrigger:'dblclick', + cols: [[ + //{ type: 'checkbox' }, + //{ field: 'Subsystem', title: '子系统', edit: 'text'}, - { field: 'Description', title: '报警名称' }, - //{ field: 'TagName' , title:'变量编码' , edit:'text'}, - //{ field: 'Address', title: '起始地址', edit: 'text' }, - //{ field: 'DataType' , title:'数值类型' , edit:'text'}, + { field: 'Description', title: '报警名称' }, + //{ field: 'TagName' , title:'变量编码' , edit:'text'}, + //{ field: 'Address', title: '起始地址', edit: 'text' }, + //{ field: 'DataType' , title:'数值类型' , edit:'text'}, + { field: 'Typename', title: '报警类型' }, + { field: 'Startdt', title: '开始时间' }, + { field: 'Enddt', title: '结束时间' }, + //{ field: 'RtValue' , title:'当前值' , edit:'text'}, + //{ field: 'hcount', title: '报警次数' }, + { field: 'Hztime', title: '报警总时长(秒)' }, + //{ title: '操作', width: 120, toolbar: '#currentTableBar', align: "center", fixed: 'right' }, - //{ field: 'RtValue' , title:'当前值' , edit:'text'}, - { field: 'hcount', title: '报警次数' }, - { field: 'hztime', title: '报警总时长(秒)' }, - { title: '操作', width: 120, toolbar: '#currentTableBar', align: "center", fixed: 'right' }, + ]], + page: true, + limit: 16, + }); + completeLoading1(); + } + else{ + showLoading1(); + var showdata = await GetAlarmRecordQuick(); + table.render({ + elem: '#result1', + height: 'full-150', + data: showdata, + //editTrigger:'dblclick', + cols: [[ + //{ type: 'checkbox' }, + //{ field: 'Subsystem', title: '子系统', edit: 'text'}, - ]], - page: true, - limit: 16, - }); - completeLoading1(); + { field: 'Description', title: '报警名称' }, + //{ field: 'TagName' , title:'变量编码' , edit:'text'}, + //{ field: 'Address', title: '起始地址', edit: 'text' }, + //{ field: 'DataType' , title:'数值类型' , edit:'text'}, + + //{ field: 'RtValue' , title:'当前值' , edit:'text'}, + { field: 'hcount', title: '报警次数' }, + { field: 'hztime', title: '报警总时长(秒)' }, + { title: '操作', width: 120, toolbar: '#currentTableBar', align: "center", fixed: 'right' }, + + ]], + page: true, + limit: 16, + }); + completeLoading1(); + } } table.on('tool(currentTableFilter)', async function (obj) { @@ -997,9 +1050,46 @@ $.when(myajax).done(function (redata) { result = JSON.parse(redata); }); + return result; + } + //获取tagvalue + async function GetAlarmRecordQuickDesc() { + debugger; + let alarmTimeHorizon = $('#selectRecentQuick')[0].value; + let Hhour = 1; + if (alarmTimeHorizon == "onlyOneHour") { + Hhour = 1; + } else if (alarmTimeHorizon == "onlyThreeHour") { + Hhour = 3; + }else if (alarmTimeHorizon == "onlyEightHour") { + Hhour = 8; + } else if (alarmTimeHorizon == "onlyTwelveHour") { + Hhour = 12; + } else if (alarmTimeHorizon == "onlyOneDay") { + Hhour = 24; + } else { + Hhour = 1; + } + //getChecked + //var checkRow = $('#subsystemTagList').datalist("getChecked"); + let datapa = { "Hhour": Hhour }; + let result; + debugger; + myajax = await $.ajax({ + url: "/ReportManage/MetaTagAlarm/GetAlarmRecordQuickDesc", + type: "Post", + //dataType: "json", + data: datapa, + success: function (redata) { } + }); + debugger; + + $.when(myajax).done(function (redata) { + result = JSON.parse(redata); + }); return result; } @@ -1024,6 +1114,7 @@ //{ field: 'RtValue' , title:'当前值' , edit:'text'}, { field: 'startdt', title: '开始时间'}, { field: 'enddt', title: '结束时间' }, + { field: 'Hztime', title: '持续时间' }, ]], page:true, @@ -1125,8 +1216,11 @@
+ + + + + + + +
+ +
@@ -1351,6 +1474,7 @@
+
diff --git a/HT.Cloud.Web/Views/Home/Default.cshtml b/HT.Cloud.Web/Views/Home/Default.cshtml index 3238c3c..4d97535 100644 --- a/HT.Cloud.Web/Views/Home/Default.cshtml +++ b/HT.Cloud.Web/Views/Home/Default.cshtml @@ -309,7 +309,7 @@
-
喷煤量统计
+
给煤量统计
@@ -797,7 +797,7 @@ trigger: 'axis' }, legend: { - data: ['喷煤量(T)'] + data: ['给煤量(T)'] }, xAxis: { type: 'category', @@ -829,7 +829,7 @@ }, }, yAxis: { - name: '喷煤量(T)', + name: '给煤量(T)', nameLocation: 'center', axisTick: { show:true, @@ -869,7 +869,7 @@ }, series: [ { - name: '喷煤量(T)', type: 'line', + name: '给煤量(T)', type: 'line', data: yData, lineStyle: { normal: { diff --git a/HT.Cloud.Web/wwwroot/report/报表预设模板.xlsx b/HT.Cloud.Web/wwwroot/report/报表预设模板.xlsx index e7ccbebb4fb6625d144daa577e0cc84ce2be2576..1b07137059b9dc8bb5e3b508f815ca6fb4a251c6 100644 GIT binary patch delta 6552 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