From 8967e58bab5e56463489ab8948a9527457400a5e Mon Sep 17 00:00:00 2001 From: quowingwang Date: Tue, 6 Jan 2026 16:11:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E7=81=AF=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/andon/AndonAlarmRecordController.cs | 12 +++++ .../mes/andon/AndonAlarmRecordService.cs | 54 +++++++++++++++++++ .../IService/IAndonAlarmRecordService.cs | 2 + 3 files changed, 68 insertions(+) diff --git a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs index e5936fd5..8b32f505 100644 --- a/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/andon/AndonAlarmRecordController.cs @@ -215,5 +215,17 @@ namespace ZR.Admin.WebApi.Controllers.andon return response; } + /// + /// 大屏表格-统计两周报警信息折线 + /// + /// + /// + [HttpGet("queryWeekAlarmLineChart")] + [ActionPermissionFilter(Permission = "business:andonalarmrecord:list")] + public ApiResult QueryWeekAlarmLineChart() + { + var response = _AndonAlarmRecordService.QueryWeekAlarmLineChart(); + return response; + } } } \ No newline at end of file diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index cc812e4e..9968029f 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -151,6 +151,60 @@ namespace ZR.Service.mes.andon return new ApiResult(200,"",queryList); } + public ApiResult QueryWeekAlarmLineChart() + { + DateTime now = DateTime.Now; + DateTime endTime = now; + DateTime startTime = now.AddDays(-14).Date; + + // 方法1:使用 ToDate 函数(确保按日期分组) + var dbStats = Queryable() + .Where(a => a.CreatedTime >= startTime && a.CreatedTime <= endTime) + .LeftJoin((a, p) => + a.AlarmCode == p.AlarmCode && p.Operate == "已处理") + .GroupBy((a, p) => SqlFunc.ToDate(a.CreatedTime).ToString("yyyy/MM/dd")) // 直接使用 Date 属性 + .Select((a, p) => new + { + DayDate = SqlFunc.ToDate(a.CreatedTime).ToString("yyyy/MM/dd"), // 存储为 DateTime + TotalCount = SqlFunc.AggregateCount(1), + HandledCount = SqlFunc.AggregateCount(p.Id) // 更简洁的写法 + }) + .ToList(); + + // 生成完整的14天日期序列(包含开始日期) + var allDates = Enumerable.Range(0, 14) + .Select(days => startTime.AddDays(days+1)) + .ToList(); + + // 转换为字典,使用 ToString("yyyy/MM/dd") 作为 Key + var statDict = dbStats.ToDictionary( + x => x.DayDate, + x => x + ); + + var chartData = new + { + // X轴:日期格式统一为 yyyy/MM/dd + xAxisData = allDates.Select(d => d.ToString("yyyy/MM/dd")).ToList(), + + // Y轴1:总报警数量 + yAxisData1 = allDates.Select(date => + { + var dateStr = date.ToString("yyyy/MM/dd"); + return statDict.ContainsKey(dateStr) ? statDict[dateStr].TotalCount : 0; + }).ToList(), + + // Y轴2:已处理报警数量 + yAxisData2 = allDates.Select(date => + { + var dateStr = date.ToString("yyyy/MM/dd"); + return statDict.ContainsKey(dateStr) ? statDict[dateStr].HandledCount : 0; + }).ToList(), + }; + + return new ApiResult(200, "查询成功", chartData); + } + public PagedInfo GetListToday(AndonAlarmRecordQueryDto parm) { var predicate = Expressionable.Create(); diff --git a/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs b/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs index 5bd8dc1a..e3c1c566 100644 --- a/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/IService/IAndonAlarmRecordService.cs @@ -15,6 +15,8 @@ namespace ZR.Service.mes.andon.Iservice PagedInfo GetList(AndonAlarmRecordQueryDto parm); List GetListToWeek(); ApiResult QueryMonthAlarmCountByType(); + + ApiResult QueryWeekAlarmLineChart(); PagedInfo GetListToday(AndonAlarmRecordQueryDto parm); AndonAlarmRecord GetInfo(int Id);