新增物料类型处理逻辑,确保在保存和编辑称重记录时自动设置默认物料类型。更新前端表单以支持密炼物料的选择和显示,优化用户体验。添加分类字典和数据字典的事件广播功能,增强系统的实时数据同步能力。

This commit is contained in:
geht
2026-05-07 17:53:48 +08:00
parent ce9dc8efd8
commit f60a4fb203
55 changed files with 2968 additions and 375 deletions

View File

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