统计报表

main
zhangbin 2026-01-12 11:39:16 +08:00
parent 3e028d9e8c
commit 99d2a59be1
4 changed files with 138 additions and 11 deletions

View File

@ -1,4 +1,5 @@
using Infrastructure;
using DocumentFormat.OpenXml.Bibliography;
using Infrastructure;
using Infrastructure.Cache;
using Infrastructure.CloudSdk.minio;
using Infrastructure.Helpers;
@ -194,17 +195,26 @@ namespace OpenAuth.App.ServiceApp
/// <param name="limit"></param>
/// <param name="key"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<LasaTaskAiLog>>>> GetAiLogList(int page, int limit, string key)
public async Task<Response<PageInfo<List<LasaTaskAiLogResp>>>> GetAiLogList(int page, int limit, string key)
{
RefAsync<int> totalCount = 0;
using (var db = UnitWork.CreateContext())
{
var list = await db.LasaTaskAiLog.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(key), (a) => a.Data.Contains(key))
.LeftJoin<LasaTaskAi>((a,b)=>a.AiTaskId==b.Id)
.WhereIF(!string.IsNullOrEmpty(key), (a,b) => a.Data.Contains(key))
.Select((a,b)=>new LasaTaskAiLogResp()
{
AiTaskId = a.AiTaskId,
State = a.State,
CreateTime = a.CreateTime,
Data = a.Data,
Platform = b.Platform,
})
.ToPageListAsync(page, limit, totalCount);
return new Response<PageInfo<List<LasaTaskAiLog>>>
return new Response<PageInfo<List<LasaTaskAiLogResp>>>
{
Result = new PageInfo<List<LasaTaskAiLog>> { Items = list, Total = totalCount }
Result = new PageInfo<List<LasaTaskAiLogResp>> { Items = list, Total = totalCount }
};
}
}
@ -303,8 +313,8 @@ namespace OpenAuth.App.ServiceApp
var tomorrow = today.AddDays(1);
using (var db = UnitWork.CreateContext())
{
var list =await db.LasaTaskAi.AsQueryable()
.LeftJoin<LasaTaskAiLog>((t,p)=>t.AiTaskId==p.Id)
var list = await db.LasaTaskAi.AsQueryable()
.LeftJoin<LasaTaskAiLog>((t, p) => t.AiTaskId == p.Id)
.Where((t, p) => p.CreateTime >= today && p.CreateTime < tomorrow)
.GroupBy((t, p) => new { t.Platform, t.State })
.Select((t, p) => new
@ -314,7 +324,8 @@ namespace OpenAuth.App.ServiceApp
TodayPushCount = SqlFunc.AggregateCount(p.Id),
TodaySuccessCount = SqlFunc.AggregateSum(
SqlFunc.IIF(p.State == true, 1, 0)
)}).ToListAsync();
)
}).ToListAsync();
// 计算成功率
var result = list.Select(x => new PlatformDashboardResp
@ -323,7 +334,7 @@ namespace OpenAuth.App.ServiceApp
ConnectState = x.ConnectState,
TodayPushCount = x.TodayPushCount,
TodaySuccessCount = x.TodaySuccessCount,
SuccessRate = x.TodayPushCount == 0? 0: Math.Round((decimal)x.TodaySuccessCount / x.TodayPushCount * 100, 2)
SuccessRate = x.TodayPushCount == 0 ? 0 : Math.Round((decimal)x.TodaySuccessCount / x.TodayPushCount * 100, 2)
}).ToList();
@ -334,6 +345,47 @@ namespace OpenAuth.App.ServiceApp
};
}
}
public async Task<Response<List<WeekPushChartResp>>> GetWeekPushChart()
{
// 本周一 00:00
var weekStart = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + 1);
// 下周一 00:00
var weekEnd = weekStart.AddDays(7);
using (var db = UnitWork.CreateContext())
{
var list = await db.LasaTaskAi.AsQueryable()
.InnerJoin<LasaTaskAiLog>((t, p) => t.AiTaskId == p.AiTaskId)
.Where((t, p) => p.CreateTime >= weekStart && p.CreateTime < weekEnd)
.GroupBy((t, p) => new
{
Year = SqlFunc.DateValue(p.CreateTime, DateType.Year),
Month = SqlFunc.DateValue(p.CreateTime, DateType.Month),
Day = SqlFunc.DateValue(p.CreateTime, DateType.Day),
t.Platform
})
.Select((t, p) => new WeekPushChartResp
{
Year = SqlFunc.DateValue(p.CreateTime, DateType.Year),
Month = SqlFunc.DateValue(p.CreateTime, DateType.Month),
Day = SqlFunc.DateValue(p.CreateTime, DateType.Day),
Platform = t.Platform,
PushCount = SqlFunc.AggregateCount(p.Id)
}).MergeTable()
.OrderBy(it => it.Year)
.OrderBy(it => it.Month)
.OrderBy(it => it.Day)
.ToListAsync();
return new Response<List<WeekPushChartResp>>
{
Result = list,
Message = "获取数据成功"
};
}
}
#endregion
}
}

View File

@ -0,0 +1,37 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.Response
{
public class LasaTaskAiLogResp
{
/// <summary>
/// 主键
/// </summary>
public string Id { get; set; }
/// <summary>
/// ai任务id
/// </summary>
public string AiTaskId { get; set; }
/// <summary>
/// 状态
/// </summary>
public bool State { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 内容
/// </summary>
public string Data { get; set; }
/// <summary>
/// 平台名称
/// </summary>
public string Platform { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.Response
{
public class WeekPushChartResp
{
public int Year { get; set; }
public int Month { get; set; }
public int Day { get; set; }
public string Platform { get; set; }
public int PushCount { get; set; }
}
}

View File

@ -117,9 +117,9 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<PageInfo<List<LasaTaskAiLog>>>> GetAiLogList(int page, int limit, string key)
public async Task<Response<PageInfo<List<LasaTaskAiLogResp>>>> GetAiLogList(int page, int limit, string key)
{
var result = new Response<PageInfo<List<LasaTaskAiLog>>>();
var result = new Response<PageInfo<List<LasaTaskAiLogResp>>>();
try
{
result = await _app.GetAiLogList(page, limit, key);
@ -155,6 +155,26 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}
return result;
}
/// <summary>
/// 统计图表
/// </summary>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<List<WeekPushChartResp>>> GetWeekPushChart()
{
var result = new Response<List<WeekPushChartResp>>();
try
{
result = await _app.GetWeekPushChart();
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
#endregion
}
}