安灯大屏

This commit is contained in:
quowingwang 2026-01-06 16:11:56 +08:00
parent b99fbd477f
commit 8967e58bab
3 changed files with 68 additions and 0 deletions

View File

@ -215,5 +215,17 @@ namespace ZR.Admin.WebApi.Controllers.andon
return response;
}
/// <summary>
/// 大屏表格-统计两周报警信息折线
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpGet("queryWeekAlarmLineChart")]
[ActionPermissionFilter(Permission = "business:andonalarmrecord:list")]
public ApiResult QueryWeekAlarmLineChart()
{
var response = _AndonAlarmRecordService.QueryWeekAlarmLineChart();
return response;
}
}
}

View File

@ -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<AndonAlarmRecordProcess>((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<AndonAlarmRecordDto> GetListToday(AndonAlarmRecordQueryDto parm)
{
var predicate = Expressionable.Create<AndonAlarmRecord>();

View File

@ -15,6 +15,8 @@ namespace ZR.Service.mes.andon.Iservice
PagedInfo<AndonAlarmRecordDto> GetList(AndonAlarmRecordQueryDto parm);
List<AndonAlarmRecordDto> GetListToWeek();
ApiResult QueryMonthAlarmCountByType();
ApiResult QueryWeekAlarmLineChart();
PagedInfo<AndonAlarmRecordDto> GetListToday(AndonAlarmRecordQueryDto parm);
AndonAlarmRecord GetInfo(int Id);