fix 框架tenant问题;档案组和设备组特殊处理返回

This commit is contained in:
2024-03-05 16:45:15 +08:00
parent 40a0234bbf
commit 888460ea99
13 changed files with 139 additions and 105 deletions

View File

@@ -24,17 +24,6 @@ public class DeviceGroupsController : ControllerBase
_deviceGroupService = deviceGroupService;
}
/// <summary>
/// 设备组分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("page")]
public async Task<Pagination<DeviceGroupPageResponse>> GetPageAsync([FromQuery] DeviceGroupPageRequest request)
{
return await _deviceGroupService.GetPageAsync(request);
}
/// <summary>
/// 获取设备组树
/// </summary>
@@ -42,6 +31,7 @@ public class DeviceGroupsController : ControllerBase
/// <param name="type">分组类型</param>
/// <returns></returns>
[HttpGet("tree")]
[IgnoreTenant]
public async Task<List<DeviceGroupTreeResponse>> GetTreeAsync(bool showDevices, DeviceTypeEnumType? type)
{
return await _deviceGroupService.GetTreeAsync(showDevices, type);

View File

@@ -1,12 +0,0 @@
using Dlhis.Entity.Device.Enums;
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.Basic.Device.Request;
public class DeviceGroupPageRequest : PageDto
{
/// <summary>
/// 分组类型
/// </summary>
public DeviceTypeEnumType? Type { get; set; }
}

View File

@@ -1,5 +1,6 @@
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
using Newtonsoft.Json;
namespace Dlhis.Basic.Device.Response;
@@ -44,6 +45,9 @@ public class DeviceGroupTreeResponse
}
}
[JsonIgnore]
public string TenantId { get; set; }
/// <summary>
/// 下级
/// </summary>

View File

@@ -1,14 +1,11 @@
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Entity.Device.Enums;
using Kurisu.Core.DataAccess.Dto;
namespace Dlhis.Basic.Device.Services;
public interface IDeviceGroupService : IScopeDependency
{
Task<Pagination<DeviceGroupPageResponse>> GetPageAsync(DeviceGroupPageRequest request);
Task<List<DeviceGroupTreeResponse>> GetTreeAsync(bool showDevices, DeviceTypeEnumType? type);
Task SaveAsync(DeviceGroupSaveRequest request);

View File

@@ -5,8 +5,7 @@ using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.UnifyResultAndValidation;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
using Mapster;
@@ -16,21 +15,15 @@ public class DeviceGroupService : IDeviceGroupService
{
private readonly IDbContext _dbContext;
private readonly IDevicePermissionService _devicePermissionService;
private readonly ICurrentUser _currentUser;
public DeviceGroupService(IDbContext dbContext, IDevicePermissionService devicePermissionService)
public DeviceGroupService(IDbContext dbContext, IDevicePermissionService devicePermissionService, ICurrentUser currentUser)
{
_dbContext = dbContext;
_devicePermissionService = devicePermissionService;
_currentUser = currentUser;
}
public async Task<Pagination<DeviceGroupPageResponse>> GetPageAsync(DeviceGroupPageRequest request)
{
return await _dbContext.Queryable<DeviceGroupEntity>()
.WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search))
.WhereIF(request.Type.HasValue, x => x.Type == request.Type)
.Select<DeviceGroupPageResponse>()
.ToPageListAsync(request);
}
public async Task<List<DeviceGroupTreeResponse>> GetTreeAsync(bool showDevices, DeviceTypeEnumType? type)
{
@@ -206,15 +199,32 @@ public class DeviceGroupService : IDeviceGroupService
/// 递归获取树
/// </summary>
/// <param name="current"></param>
/// <param name="departments"></param>
/// <param name="deviceGroups"></param>
/// <param name="showDevices"></param>
private void RecursionGetNext(DeviceGroupTreeResponse current, List<DeviceGroupTreeResponse> departments, bool showDevices)
private void RecursionGetNext(DeviceGroupTreeResponse current, List<DeviceGroupTreeResponse> deviceGroups, bool showDevices)
{
var next = departments.Where(x => x.PCode == current.Code).ToList();
var currentTenantId = _currentUser.GetStringTenantId();
var next = deviceGroups.Where(x =>
{
if (x.PCode == current.Code)
{
if (x.TenantId.IsEmpty())
{
return true;
}
else
{
return x.TenantId == currentTenantId;
}
}
return false;
}).ToList();
current.Next = next;
foreach (var item in next)
{
RecursionGetNext(item, departments, showDevices);
RecursionGetNext(item, deviceGroups, showDevices);
}
//最后层级附加设备信息