feat(all): ! Критические изменения логики работы всех сервисорв, База Данных имееет неокончательную версию. Template, Scheduler переведены на работу с Unit+Job+JobGroup вместо Host+ApplicationsInWork
This commit is contained in:
@@ -40,88 +40,88 @@ namespace PARR.API.Controllers.V1.Statistics
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Статистика загрузки РР по всем ЗО
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet(ApiRoutes.StatResponseAreaWorkLoad.GetAll)]
|
||||
public async Task<IActionResult> GetAll([FromQuery] WorkloadBaseQuery requestQuery)
|
||||
{
|
||||
var response = await GetStatisticsAsync(requestQuery);
|
||||
///// <summary>
|
||||
///// Статистика загрузки РР по всем ЗО
|
||||
///// </summary>
|
||||
///// <returns></returns>
|
||||
//[HttpGet(ApiRoutes.StatResponseAreaWorkLoad.GetAll)]
|
||||
//public async Task<IActionResult> GetAll([FromQuery] WorkloadBaseQuery requestQuery)
|
||||
//{
|
||||
// var response = await GetStatisticsAsync(requestQuery);
|
||||
|
||||
return Ok(new Response<List<StatResponseAreaWorkLoadResponse>>(response, true));
|
||||
}
|
||||
// return Ok(new Response<List<StatResponseAreaWorkLoadResponse>>(response, true));
|
||||
//}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Статистика загрузки РР по списку ЗО
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost(ApiRoutes.StatResponseAreaWorkLoad.GetByResponseAreas)]
|
||||
public async Task<IActionResult> GetByResponseAreas([FromBody] StatResponseAreaWorkloadRequest request)
|
||||
{
|
||||
var response = await GetStatisticsAsync(request.Filter, request.ResponseAreas);
|
||||
///// <summary>
|
||||
///// Статистика загрузки РР по списку ЗО
|
||||
///// </summary>
|
||||
///// <returns></returns>
|
||||
//[HttpPost(ApiRoutes.StatResponseAreaWorkLoad.GetByResponseAreas)]
|
||||
//public async Task<IActionResult> GetByResponseAreas([FromBody] StatResponseAreaWorkloadRequest request)
|
||||
//{
|
||||
// var response = await GetStatisticsAsync(request.Filter, request.ResponseAreas);
|
||||
|
||||
return Ok(new Response<List<StatResponseAreaWorkLoadResponse>>(response, true));
|
||||
}
|
||||
// return Ok(new Response<List<StatResponseAreaWorkLoadResponse>>(response, true));
|
||||
//}
|
||||
|
||||
|
||||
private async Task<List<StatResponseAreaWorkLoadResponse>> GetStatisticsAsync(WorkloadBaseQuery requestQuery, List<int>? responseAreas = null)
|
||||
{
|
||||
var daysList = workLoadService.GetDatesForPeriod(requestQuery);
|
||||
//private async Task<List<StatResponseAreaWorkLoadResponse>> GetStatisticsAsync(WorkloadBaseQuery requestQuery, List<int>? responseAreas = null)
|
||||
//{
|
||||
// var daysList = workLoadService.GetDatesForPeriod(requestQuery);
|
||||
|
||||
IQueryable<DAL.Models.Template> query = templateService.Get()
|
||||
.Include(t => t.Host).ThenInclude(t => t.WorkGroup);
|
||||
// IQueryable<DAL.Models.Template> query = templateService.Get()
|
||||
// .Include(t => t.Host).ThenInclude(t => t.WorkGroup);
|
||||
|
||||
query = workLoadService.FilterTemplatesQuery(query, requestQuery);
|
||||
// query = workLoadService.FilterTemplatesQuery(query, requestQuery);
|
||||
|
||||
if (responseAreas != null && responseAreas.Count() > 0)
|
||||
query = query.Where(t => responseAreas.Any(x => x == t.Host.WorkGroup.ResponseAreaCode));
|
||||
// if (responseAreas != null && responseAreas.Count() > 0)
|
||||
// query = query.Where(t => responseAreas.Any(x => x == t.Host.WorkGroup.ResponseAreaCode));
|
||||
|
||||
//var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode })
|
||||
var groupedQuery = query.GroupBy(t => new { t.NextRun.AddHours(requestQuery.TimeZoneOffsetHours).DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode })
|
||||
.Select(t => new
|
||||
{
|
||||
ResponseAreaCode = t.Key.ResponseAreaCode,
|
||||
Date = t.Key.Date,
|
||||
TemplateCount = t.Count()
|
||||
// //var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode })
|
||||
// var groupedQuery = query.GroupBy(t => new { t.NextRun.AddHours(requestQuery.TimeZoneOffsetHours).DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode })
|
||||
// .Select(t => new
|
||||
// {
|
||||
// ResponseAreaCode = t.Key.ResponseAreaCode,
|
||||
// Date = t.Key.Date,
|
||||
// TemplateCount = t.Count()
|
||||
|
||||
});
|
||||
// });
|
||||
|
||||
var queryResult = await groupedQuery.ToListAsync();
|
||||
// var queryResult = await groupedQuery.ToListAsync();
|
||||
|
||||
var responseAreaQuery = responseAreaService.Get();
|
||||
// var responseAreaQuery = responseAreaService.Get();
|
||||
|
||||
if (responseAreas != null && responseAreas.Count() > 0)
|
||||
responseAreaQuery = responseAreaQuery.Where(t => responseAreas.Any(x => x == t.Code));
|
||||
// if (responseAreas != null && responseAreas.Count() > 0)
|
||||
// responseAreaQuery = responseAreaQuery.Where(t => responseAreas.Any(x => x == t.Code));
|
||||
|
||||
var allResponseArea = await responseAreaQuery.ToListAsync();
|
||||
// var allResponseArea = await responseAreaQuery.ToListAsync();
|
||||
|
||||
//if (!allResponseArea.Any())
|
||||
// return NoContent();
|
||||
// //if (!allResponseArea.Any())
|
||||
// // return NoContent();
|
||||
|
||||
var response = new List<StatResponseAreaWorkLoadResponse>();
|
||||
// var response = new List<StatResponseAreaWorkLoadResponse>();
|
||||
|
||||
allResponseArea.ForEach(respArea =>
|
||||
{
|
||||
var workLoads = daysList.Select(t => new StatWorkLoadDataResponse
|
||||
{
|
||||
Date = t,
|
||||
TemplateCount = queryResult.FirstOrDefault(x => x.ResponseAreaCode == respArea.Code && DateOnly.FromDateTime(x.Date) == t)?.TemplateCount ?? 0
|
||||
}).OrderBy(t => t.Date).ToList();
|
||||
// allResponseArea.ForEach(respArea =>
|
||||
// {
|
||||
// var workLoads = daysList.Select(t => new StatWorkLoadDataResponse
|
||||
// {
|
||||
// Date = t,
|
||||
// TemplateCount = queryResult.FirstOrDefault(x => x.ResponseAreaCode == respArea.Code && DateOnly.FromDateTime(x.Date) == t)?.TemplateCount ?? 0
|
||||
// }).OrderBy(t => t.Date).ToList();
|
||||
|
||||
response.Add(
|
||||
new StatResponseAreaWorkLoadResponse
|
||||
{
|
||||
ResponseArea = mapper.Map<ResponseAreaResponse>(respArea),
|
||||
WorkLoad = workLoads
|
||||
});
|
||||
});
|
||||
// response.Add(
|
||||
// new StatResponseAreaWorkLoadResponse
|
||||
// {
|
||||
// ResponseArea = mapper.Map<ResponseAreaResponse>(respArea),
|
||||
// WorkLoad = workLoads
|
||||
// });
|
||||
// });
|
||||
|
||||
response = response.OrderBy(t => t.ResponseArea.Code).ToList();
|
||||
// response = response.OrderBy(t => t.ResponseArea.Code).ToList();
|
||||
|
||||
return response;
|
||||
}
|
||||
// return response;
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user