新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。

This commit is contained in:
geht
2026-04-30 15:28:20 +08:00
parent 142a0bdaba
commit b03cbeff9b
121 changed files with 10540 additions and 424 deletions

View File

@@ -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