新增原料入场记录功能,包含免密接口和数据同步,更新相关控制器、实体和服务,支持条码/批次号生成及管理,优化用户体验和系统实时数据处理能力。
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user