forked from ddrilling/AsbCloudServer
Рефакторинг WorkOperationDetection избавился от двух циклов внутри метода Action
This commit is contained in:
parent
3e84b1591f
commit
615771395d
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@ -34,31 +33,19 @@ public class WorkOperationDetection: Work
|
|||||||
var detectedOperationService = services.GetRequiredService<IDetectedOperationService>();
|
var detectedOperationService = services.GetRequiredService<IDetectedOperationService>();
|
||||||
|
|
||||||
var telemetryIds = (await telemetryRepository.GetAllAsync(token))
|
var telemetryIds = (await telemetryRepository.GetAllAsync(token))
|
||||||
.Select(t => t.Id);
|
.Select(t => t.Id)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
var lastDetectedDates = await detectedOperationRepository.GetLastDetectedDatesAsync(token);
|
var lastDetectedDates = await detectedOperationRepository.GetLastDetectedDatesAsync(token);
|
||||||
|
|
||||||
var beginDatesDetectOperations = new List<(int TelemetryId, DateTimeOffset? BeginDate)>();
|
for (var i = 0; i < telemetryIds.Length; i++)
|
||||||
|
|
||||||
foreach (var telemetryId in telemetryIds)
|
|
||||||
{
|
{
|
||||||
if (lastDetectedDates.TryGetValue(telemetryId, out var beginDate))
|
var telemetryId = telemetryIds[i];
|
||||||
{
|
|
||||||
beginDatesDetectOperations.Add((telemetryId, beginDate));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
beginDatesDetectOperations.Add((telemetryId, null));
|
var beginDate = lastDetectedDates.TryGetValue(telemetryId, out var date) ? date : (DateTimeOffset?)null;
|
||||||
}
|
|
||||||
|
|
||||||
var count = beginDatesDetectOperations.Count;
|
|
||||||
|
|
||||||
for (var i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
var (idTelemetry, beginDate) = beginDatesDetectOperations[i];
|
|
||||||
|
|
||||||
onProgressCallback($"Start detecting telemetry: {idTelemetry} from {beginDate}", i++ / count);
|
onProgressCallback($"Start detecting telemetry: {telemetryId} from {beginDate}", i++ / telemetryIds.Length);
|
||||||
var detectedOperations = await detectedOperationService.DetectOperationsAsync(idTelemetry, beginDate, token);
|
var detectedOperations = await detectedOperationService.DetectOperationsAsync(telemetryId, beginDate, token);
|
||||||
|
|
||||||
if (detectedOperations.Any())
|
if (detectedOperations.Any())
|
||||||
await detectedOperationRepository.InsertRangeAsync(detectedOperations, token);
|
await detectedOperationRepository.InsertRangeAsync(detectedOperations, token);
|
||||||
|
Loading…
Reference in New Issue
Block a user