|
@@ -80,9 +80,9 @@ public class MainDbService : IMainDbService
|
|
|
//private string connectionString;
|
|
|
private readonly QueueSemaphore startupSemaphore;
|
|
|
private readonly SemaphoreSlim opSemaphore;
|
|
|
- private GroupSingleHandler<StatusNotificationParam> statusNotificationHandler;
|
|
|
- private GroupSingleHandler<UpdateMachineBasicInfoParam> updateMachineBasicInfoHandler;
|
|
|
- private GroupSingleHandler<ServerMessage> addServerMessageHandler;
|
|
|
+ private GroupHandler<StatusNotificationParam> statusNotificationHandler;
|
|
|
+ private GroupHandler<UpdateMachineBasicInfoParam> updateMachineBasicInfoHandler;
|
|
|
+ private GroupHandler<ServerMessage> addServerMessageHandler;
|
|
|
|
|
|
public async Task<MachineAndCustomerInfo> GetMachineIdAndCustomerInfo(string ChargeBoxId)
|
|
|
{
|
|
@@ -376,7 +376,7 @@ public class MainDbService : IMainDbService
|
|
|
throw new Exception($"{nameof(InitUpdateConnectorStatusHandler)} should only called once");
|
|
|
}
|
|
|
|
|
|
- statusNotificationHandler = new GroupSingleHandler<StatusNotificationParam>(
|
|
|
+ statusNotificationHandler = new GroupHandler<StatusNotificationParam>(
|
|
|
handleFunc: BundleUpdateConnectorStatusDapper,
|
|
|
logger: loggerFactory.CreateLogger("StatusNotificationHandler"),
|
|
|
workerCnt: 1);
|
|
@@ -388,7 +388,7 @@ public class MainDbService : IMainDbService
|
|
|
throw new Exception($"{nameof(InitAddServerMessageHandler)} should only called once");
|
|
|
}
|
|
|
|
|
|
- addServerMessageHandler = new GroupSingleHandler<ServerMessage>(
|
|
|
+ addServerMessageHandler = new GroupHandler<ServerMessage>(
|
|
|
handleFunc: BundleAddServerMessage,
|
|
|
logger: loggerFactory.CreateLogger("AddServerMessageHandler"));
|
|
|
}
|
|
@@ -400,7 +400,7 @@ public class MainDbService : IMainDbService
|
|
|
throw new Exception($"{nameof(InitUpdateMachineBasicInfoHandler)} should only called once");
|
|
|
}
|
|
|
|
|
|
- updateMachineBasicInfoHandler = new GroupSingleHandler<UpdateMachineBasicInfoParam>(
|
|
|
+ updateMachineBasicInfoHandler = new GroupHandler<UpdateMachineBasicInfoParam>(
|
|
|
handleFunc: BundelUpdateMachineBasicInfo,
|
|
|
logger: loggerFactory.CreateLogger("UpdateMachineBasicInfoHandler"),
|
|
|
workerCnt: 10);
|
|
@@ -427,12 +427,12 @@ public class MainDbService : IMainDbService
|
|
|
//using var semaphoreWrapper = await startupSemaphore.GetToken();
|
|
|
}
|
|
|
|
|
|
- private async Task BundelUpdateMachineBasicInfo(IEnumerable<UpdateMachineBasicInfoParam> pams)
|
|
|
+ private async Task BundelUpdateMachineBasicInfo(BundleHandlerData<UpdateMachineBasicInfoParam> bundleHandlerData)
|
|
|
{
|
|
|
using var db = await contextFactory.CreateDbContextAsync();
|
|
|
using var trans = await db.Database.BeginTransactionAsync();
|
|
|
|
|
|
- pams = pams.DistinctBy(x => x.ChargeBoxId);
|
|
|
+ var pams = bundleHandlerData.Datas.DistinctBy(x => x.ChargeBoxId);
|
|
|
|
|
|
foreach (var pam in pams)
|
|
|
{
|
|
@@ -450,6 +450,8 @@ public class MainDbService : IMainDbService
|
|
|
|
|
|
await db.SaveChangesAsync();
|
|
|
await trans.CommitAsync();
|
|
|
+
|
|
|
+ bundleHandlerData.CompletedDatas.AddRange(bundleHandlerData.Datas);
|
|
|
}
|
|
|
|
|
|
private async Task UpdateConnectorStatusEF(string Id, ConnectorStatus Status)
|
|
@@ -638,11 +640,11 @@ public class MainDbService : IMainDbService
|
|
|
|
|
|
|
|
|
|
|
|
- private Task BundleUpdateConnectorStatusDapper(IEnumerable<StatusNotificationParam> statusNotifications)
|
|
|
+ private async Task BundleUpdateConnectorStatusDapper(BundleHandlerData<StatusNotificationParam> bundleHandlerData)
|
|
|
{
|
|
|
- using var conn = sqlConnectionFactory.Create();
|
|
|
+ using var conn = await sqlConnectionFactory.CreateAsync();
|
|
|
|
|
|
- foreach (var status in statusNotifications)
|
|
|
+ foreach (var status in bundleHandlerData.Datas)
|
|
|
{
|
|
|
|
|
|
var parameters = new DynamicParameters();
|
|
@@ -654,7 +656,7 @@ public class MainDbService : IMainDbService
|
|
|
parameters.Add("@VendorId", status.Status.VendorId, DbType.String, ParameterDirection.Input, 255);
|
|
|
parameters.Add("@VendorErrorCode", status.Status.VendorErrorCode, DbType.String, ParameterDirection.Input, 100);
|
|
|
|
|
|
- conn.Execute("""
|
|
|
+ await conn.ExecuteAsync("""
|
|
|
update ConnectorStatus
|
|
|
set
|
|
|
CreatedOn = @CreatedOn,
|
|
@@ -665,22 +667,24 @@ public class MainDbService : IMainDbService
|
|
|
VendorErrorCode = @VendorErrorCode
|
|
|
where Id = @Id
|
|
|
""", parameters);
|
|
|
+ bundleHandlerData.AddCompletedData(status);
|
|
|
}
|
|
|
- return Task.CompletedTask;
|
|
|
}
|
|
|
|
|
|
- private async Task BundleAddServerMessage(IEnumerable<ServerMessage> messages)
|
|
|
+ private async Task BundleAddServerMessage(BundleHandlerData<ServerMessage> bundleHandlerData)
|
|
|
{
|
|
|
using var db = await contextFactory.CreateDbContextAsync();
|
|
|
using var trans = await db.Database.BeginTransactionAsync();
|
|
|
|
|
|
- foreach (var message in messages)
|
|
|
+ foreach (var message in bundleHandlerData.Datas)
|
|
|
{
|
|
|
await db.ServerMessage.AddAsync(message);
|
|
|
}
|
|
|
|
|
|
await db.SaveChangesAsync();
|
|
|
await trans.CommitAsync();
|
|
|
+
|
|
|
+ bundleHandlerData.CompletedDatas.AddRange(bundleHandlerData.Datas);
|
|
|
//db.ChangeTracker.Clear();
|
|
|
}
|
|
|
|