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);