|
@@ -11,6 +11,7 @@ using Microsoft.Extensions.Configuration;
|
|
|
using EVCB_OCPP.TaskScheduler.Helper;
|
|
|
using EVCB_OCPP.Domain;
|
|
|
using EVCB_OCPP.TaskScheduler.Services;
|
|
|
+using Azure.Core;
|
|
|
|
|
|
namespace EVCB_OCPP.TaskScheduler.Jobs
|
|
|
{
|
|
@@ -62,7 +63,7 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
|
|
|
{
|
|
|
if (g.Key)
|
|
|
{
|
|
|
- _EVSEs = g.Where(x => !x.Online).ToList();
|
|
|
+ _EVSEs = g.Where(x => !x.Online).Take(20).ToList();
|
|
|
|
|
|
for (int evseIndex = 0; evseIndex < _EVSEs.Count; evseIndex++)
|
|
|
{
|
|
@@ -74,12 +75,17 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _EVSEs = g.Where(x => x.Online).ToList();
|
|
|
+ _EVSEs = g.Where(x => x.Online).Take(20).ToList();
|
|
|
var ChargeBoxIdOnlineRecordIdPairs = await GetOnlineRecordId(_EVSEs.Select(x=>x.ChargeBoxId).ToList());
|
|
|
|
|
|
for (int evseIndex = 0; evseIndex < _EVSEs.Count; evseIndex++)
|
|
|
{
|
|
|
var evse = _EVSEs[evseIndex];
|
|
|
+ if (!ChargeBoxIdOnlineRecordIdPairs.ContainsKey(evse.ChargeBoxId))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
saveTasks.Add(UpdateEVSECurrentStatus(evse.CustomerId.ToString(), evse.ChargeBoxId, false, evse.HeartbeatUpdatedOn));
|
|
|
var online_rowId = ChargeBoxIdOnlineRecordIdPairs[evse.ChargeBoxId];
|
|
|
if (online_rowId is not null)
|
|
@@ -255,7 +261,7 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
|
|
|
//lastrow = result.FirstOrDefault();
|
|
|
}
|
|
|
|
|
|
- toReturn = chargeBoxIds.ToDictionary<string,string,long?>(keySelector: x => x, elementSelector: x => queryResult.ContainsKey(x) ? queryResult[x] : null);
|
|
|
+ toReturn = chargeBoxIds.ToDictionary<string, string, long?>(keySelector: x => x, elementSelector: x => queryResult.ContainsKey(x) ? queryResult[x] : null);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -265,6 +271,35 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
|
|
|
return toReturn;
|
|
|
}
|
|
|
|
|
|
+ //private async Task<Dictionary<string, long?>> GetOnlineRecordId(List<string> chargeBoxIds)
|
|
|
+ //{
|
|
|
+ // Dictionary<string, long?> toReturn = new();
|
|
|
+ // string sqlString = """
|
|
|
+ // SELECT Id
|
|
|
+ // FROM [dbo].[EVSEOnlineRecord] s
|
|
|
+ // WHERE ChargeBoxId = @ChargeBoxId
|
|
|
+ // ORDER BY s.OnlineTime DESC
|
|
|
+ // """;
|
|
|
+
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // using var dbConn = await onlineLogDbConnectionFactory.CreateAsync();
|
|
|
+
|
|
|
+ // foreach(var chargeBoxId in chargeBoxIds)
|
|
|
+ // {
|
|
|
+ // var parms = new DynamicParameters();
|
|
|
+ // parms.Add("@ChargeBoxId", chargeBoxId, size: 36);
|
|
|
+ // var queryResult = await dbConn.QueryFirstOrDefaultAsync<long?>( sqlString, parms );
|
|
|
+ // toReturn.Add(chargeBoxId, queryResult);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // catch ( Exception e )
|
|
|
+ // {
|
|
|
+ // logger.LogError(e.ToString());
|
|
|
+ // }
|
|
|
+ // return toReturn;
|
|
|
+ //}
|
|
|
+
|
|
|
|
|
|
private bool IsOnlineNow(EVSECurrentStatus currentEVSE)
|
|
|
{
|