新增物料类型处理逻辑,确保在保存和编辑称重记录时自动设置默认物料类型。更新前端表单以支持密炼物料的选择和显示,优化用户体验。添加分类字典和数据字典的事件广播功能,增强系统的实时数据同步能力。
This commit is contained in:
@@ -9,24 +9,36 @@ namespace YY.Admin.Services.Service.MixerMaterial;
|
||||
public class MixerMaterialSyncCoordinator : ISingletonDependency
|
||||
{
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
private readonly IMixerMaterialService _mixerMaterialService;
|
||||
private readonly ILoggerService _logger;
|
||||
|
||||
public MixerMaterialSyncCoordinator(IEventAggregator eventAggregator, ILoggerService logger)
|
||||
public MixerMaterialSyncCoordinator(
|
||||
IEventAggregator eventAggregator,
|
||||
IMixerMaterialService mixerMaterialService,
|
||||
ILoggerService logger)
|
||||
{
|
||||
_eventAggregator = eventAggregator;
|
||||
_mixerMaterialService = mixerMaterialService;
|
||||
_logger = logger;
|
||||
|
||||
_eventAggregator.GetEvent<RemoteCommandReceivedEvent>()
|
||||
.Subscribe(OnRemoteCommand, ThreadOption.BackgroundThread);
|
||||
_eventAggregator.GetEvent<NetworkStatusChangedEvent>()
|
||||
.Subscribe(OnNetworkStatusChanged, ThreadOption.BackgroundThread);
|
||||
|
||||
_logger.Information("[密炼物料推送] MixerMaterialSyncCoordinator 已启动");
|
||||
_ = _mixerMaterialService.SyncFromRemoteAsync();
|
||||
}
|
||||
|
||||
private void OnNetworkStatusChanged(NetworkStatusChangedPayload payload)
|
||||
{
|
||||
if (!payload.IsOnline) return;
|
||||
_eventAggregator.GetEvent<MixerMaterialChangedEvent>()
|
||||
.Publish(new MixerMaterialChangedPayload { Action = "reconnect" });
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
await _mixerMaterialService.SyncFromRemoteAsync().ConfigureAwait(false);
|
||||
_eventAggregator.GetEvent<MixerMaterialChangedEvent>()
|
||||
.Publish(new MixerMaterialChangedPayload { Action = "reconnect" });
|
||||
});
|
||||
}
|
||||
|
||||
private void OnRemoteCommand(RemoteCommandPayload payload)
|
||||
@@ -43,16 +55,19 @@ public class MixerMaterialSyncCoordinator : ISingletonDependency
|
||||
doc.RootElement.TryGetProperty("action", out var actionEl);
|
||||
doc.RootElement.TryGetProperty("mixerMaterialId", out var idEl);
|
||||
if (idEl.ValueKind != JsonValueKind.String && doc.RootElement.TryGetProperty("id", out var id2El))
|
||||
{
|
||||
idEl = id2El;
|
||||
}
|
||||
|
||||
var changed = new MixerMaterialChangedPayload
|
||||
{
|
||||
Action = actionEl.GetString() ?? string.Empty,
|
||||
MixerMaterialId = idEl.ValueKind == JsonValueKind.String ? idEl.GetString() : null
|
||||
};
|
||||
_eventAggregator.GetEvent<MixerMaterialChangedEvent>().Publish(changed);
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
await _mixerMaterialService.SyncFromRemoteAsync().ConfigureAwait(false);
|
||||
_eventAggregator.GetEvent<MixerMaterialChangedEvent>().Publish(changed);
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -60,4 +75,3 @@ public class MixerMaterialSyncCoordinator : ISingletonDependency
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user