S8SceneTreeService.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Admin.NET.Plugin.AiDOP.Dto.S8;
  2. using Admin.NET.Plugin.AiDOP.Entity.S8;
  3. namespace Admin.NET.Plugin.AiDOP.Service.S8;
  4. public class S8SceneTreeService : ITransient
  5. {
  6. private readonly SqlSugarRepository<AdoS8SceneTree> _rep;
  7. public S8SceneTreeService(SqlSugarRepository<AdoS8SceneTree> rep) => _rep = rep;
  8. public async Task<List<AdoS8SceneTreeNodeDto>> GetSceneTreeAsync(long tenantId, long factoryId)
  9. {
  10. var nodes = await _rep.AsQueryable()
  11. .Where(x => (x.TenantId == 0 || x.TenantId == tenantId)
  12. && (x.FactoryId == 0 || x.FactoryId == factoryId)
  13. && x.Enabled)
  14. .OrderBy(x => x.SortNo)
  15. .OrderBy(x => x.Id)
  16. .ToListAsync();
  17. return BuildTree(nodes, null);
  18. }
  19. private static List<AdoS8SceneTreeNodeDto> BuildTree(List<AdoS8SceneTree> nodes, long? parentId) =>
  20. nodes
  21. .Where(n => n.ParentId == parentId)
  22. .Select(n => new AdoS8SceneTreeNodeDto
  23. {
  24. Id = n.Id,
  25. ParentId = n.ParentId,
  26. NodeCode = n.NodeCode,
  27. NodeName = n.NodeName,
  28. Level = n.Level,
  29. Path = n.Path,
  30. SModule = n.SModule,
  31. IsLeaf = n.IsLeaf,
  32. Disabled = !n.IsLeaf,
  33. Children = BuildTree(nodes, n.Id),
  34. })
  35. .ToList();
  36. }