新增原料入场记录功能,包含免密接口和数据同步,更新相关控制器、实体和服务,支持条码/批次号生成及管理,优化用户体验和系统实时数据处理能力。

This commit is contained in:
geht
2026-05-09 15:55:11 +08:00
parent 64e978a618
commit 16bb22a113
38 changed files with 2398 additions and 10 deletions

View File

@@ -15,6 +15,7 @@ public class DictSyncCoordinator : ISingletonDependency
public DictSyncCoordinator(
IEventAggregator eventAggregator,
IJeecgDictSyncService dictSyncService,
SyncPollManager pollManager,
ILoggerService logger)
{
_eventAggregator = eventAggregator;
@@ -26,6 +27,8 @@ public class DictSyncCoordinator : ISingletonDependency
_eventAggregator.GetEvent<NetworkStatusChangedEvent>()
.Subscribe(OnNetworkStatusChanged, ThreadOption.BackgroundThread);
pollManager.Register("数据字典", () => SyncAndPublishAsync("poll", null));
_logger.Information("[数据字典] DictSyncCoordinator 已启动");
_ = Task.Run(() => SyncAndPublishAsync("startup", null));
}

View File

@@ -82,6 +82,7 @@ public class JeecgDictSyncService : IJeecgDictSyncService, ISingletonDependency
const int pageSize = 500;
var pageNo = 1;
var synced = 0;
var seenIds = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
while (true)
{
@@ -111,6 +112,8 @@ public class JeecgDictSyncService : IJeecgDictSyncService, ISingletonDependency
continue;
}
seenIds.Add(id);
var existing = await _dbContext.Queryable<JeecgSysDictItem>()
.ClearFilter()
.Where(x => x.Id == id)
@@ -161,6 +164,15 @@ public class JeecgDictSyncService : IJeecgDictSyncService, ISingletonDependency
pageNo++;
}
// 删除本地存在但后端已移除的字典项(如后端删除重建导致 ID 变化)
if (seenIds.Count > 0)
{
var seenList = seenIds.ToList();
await _dbContext.Deleteable<JeecgSysDictItem>()
.Where(x => !seenList.Contains(x.Id))
.ExecuteCommandAsync();
}
return synced;
}