新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。
This commit is contained in:
@@ -20,6 +20,7 @@ public class JeecgUserSyncCoordinator : IJeecgUserSyncCoordinator, ISingletonDep
|
||||
private CancellationTokenSource? _cts;
|
||||
private readonly object _lifecycleLock = new();
|
||||
private SubscriptionToken? _remoteCommandSubscription;
|
||||
private SubscriptionToken? _networkStatusSubscription;
|
||||
|
||||
public JeecgUserSyncCoordinator(
|
||||
IConfiguration configuration,
|
||||
@@ -52,7 +53,9 @@ public class JeecgUserSyncCoordinator : IJeecgUserSyncCoordinator, ISingletonDep
|
||||
{
|
||||
CancelAndDisposeCts();
|
||||
UnsubscribeRemoteCommand();
|
||||
UnsubscribeNetworkStatus();
|
||||
_remoteCommandSubscription = _eventAggregator.GetEvent<RemoteCommandReceivedEvent>().Subscribe(OnRemoteCommand, ThreadOption.BackgroundThread);
|
||||
_networkStatusSubscription = _eventAggregator.GetEvent<NetworkStatusChangedEvent>().Subscribe(OnNetworkStatusChanged, ThreadOption.BackgroundThread);
|
||||
|
||||
_cts = new CancellationTokenSource();
|
||||
token = _cts.Token;
|
||||
@@ -83,6 +86,7 @@ public class JeecgUserSyncCoordinator : IJeecgUserSyncCoordinator, ISingletonDep
|
||||
lock (_lifecycleLock)
|
||||
{
|
||||
UnsubscribeRemoteCommand();
|
||||
UnsubscribeNetworkStatus();
|
||||
CancelAndDisposeCts();
|
||||
}
|
||||
}
|
||||
@@ -115,6 +119,36 @@ public class JeecgUserSyncCoordinator : IJeecgUserSyncCoordinator, ISingletonDep
|
||||
}
|
||||
}
|
||||
|
||||
private void UnsubscribeNetworkStatus()
|
||||
{
|
||||
if (_networkStatusSubscription != null)
|
||||
{
|
||||
_eventAggregator.GetEvent<NetworkStatusChangedEvent>().Unsubscribe(_networkStatusSubscription);
|
||||
_networkStatusSubscription = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNetworkStatusChanged(NetworkStatusChangedPayload payload)
|
||||
{
|
||||
if (payload is null || !payload.IsOnline)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_logger.Information("检测到网络恢复,入队一次用户全量拉取(断线重连补偿)。");
|
||||
_ = _mirrorOutbox.EnqueuePullAsync(
|
||||
JeecgUserMirrorOutbox.EventBoot,
|
||||
"{\"reason\":\"network-reconnected\"}",
|
||||
CancellationToken.None);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Warning($"网络恢复后入队用户同步失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelAndDisposeCts()
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user