| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using Admin.NET.Plugin.AiDOP.Dto.S8;
- using Admin.NET.Plugin.AiDOP.Entity.S8;
- namespace Admin.NET.Plugin.AiDOP.Service.S8;
- /// <summary>
- /// S8 业务维度元数据只读服务(S_STAGE / ORDER_FLOW)。
- /// TenantId=0 / FactoryId=0 表示全局基线,与 tenant/factory 数据并存。
- /// </summary>
- public class S8DimensionService : ITransient
- {
- private readonly SqlSugarRepository<AdoS8Dimension> _dimRep;
- private readonly SqlSugarRepository<AdoS8DimensionNode> _nodeRep;
- public S8DimensionService(
- SqlSugarRepository<AdoS8Dimension> dimRep,
- SqlSugarRepository<AdoS8DimensionNode> nodeRep)
- {
- _dimRep = dimRep;
- _nodeRep = nodeRep;
- }
- public async Task<List<AdoS8DimensionDto>> GetDimensionsAsync(long tenantId, long factoryId)
- {
- var rows = await _dimRep.AsQueryable()
- .Where(x => (x.TenantId == 0 || x.TenantId == tenantId)
- && (x.FactoryId == 0 || x.FactoryId == factoryId)
- && x.Enabled)
- .OrderBy(x => x.SortNo)
- .OrderBy(x => x.Id)
- .ToListAsync();
- return rows.Select(x => new AdoS8DimensionDto
- {
- DimensionCode = x.DimensionCode,
- DimensionName = x.DimensionName,
- Enabled = x.Enabled,
- SortNo = x.SortNo,
- Remark = x.Remark,
- }).ToList();
- }
- public async Task<List<AdoS8DimensionNodeDto>> GetDimensionNodesAsync(long tenantId, long factoryId, string? dimensionCode)
- {
- if (string.IsNullOrWhiteSpace(dimensionCode))
- return new List<AdoS8DimensionNodeDto>();
- var nodes = await _nodeRep.AsQueryable()
- .Where(x => (x.TenantId == 0 || x.TenantId == tenantId)
- && (x.FactoryId == 0 || x.FactoryId == factoryId)
- && x.DimensionCode == dimensionCode
- && x.Enabled)
- .OrderBy(x => x.SortNo)
- .OrderBy(x => x.Id)
- .ToListAsync();
- return BuildTree(nodes, null);
- }
- private static List<AdoS8DimensionNodeDto> BuildTree(List<AdoS8DimensionNode> nodes, long? parentId) =>
- nodes
- .Where(n => n.ParentId == parentId)
- .Select(n => new AdoS8DimensionNodeDto
- {
- Id = n.Id,
- DimensionCode = n.DimensionCode,
- NodeCode = n.NodeCode,
- NodeName = n.NodeName,
- ParentId = n.ParentId,
- Level = n.Level,
- Path = n.Path,
- IsSelectable = n.IsSelectable,
- Disabled = !n.IsSelectable,
- Enabled = n.Enabled,
- SortNo = n.SortNo,
- Remark = n.Remark,
- Children = BuildTree(nodes, n.Id),
- })
- .ToList();
- }
|