This commit is contained in:
2025-03-21 10:22:59 +08:00
parent e3cc31ec6a
commit e6dd90617c

View File

@@ -1,6 +1,7 @@
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Response;
using Dlhis.Basic.Organization.Services;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Device.Entities;
@@ -24,18 +25,21 @@ public class DevicePermissionService : IDevicePermissionService
private readonly IDbContext _dbContext;
private readonly ITenantApi _tenantApi;
private readonly INamedResolver _namedResolver;
private readonly IFactorySettingService _factorySettingService;
private readonly IDevicePermissionAnalyzeService _devicePermissionAnalyzeService;
private readonly ICurrentUser _currentUser;
public DevicePermissionService(IDbContext dbContext,
ITenantApi tenantApi,
INamedResolver namedResolver,
IFactorySettingService factorySettingService,
IDevicePermissionAnalyzeService devicePermissionAnalyzeService,
ICurrentUser currentUser)
{
_dbContext = dbContext;
_tenantApi = tenantApi;
_namedResolver = namedResolver;
_factorySettingService = factorySettingService;
_devicePermissionAnalyzeService = devicePermissionAnalyzeService;
_currentUser = currentUser;
}
@@ -284,16 +288,13 @@ public class DevicePermissionService : IDevicePermissionService
}
ids = ids.Distinct().ToList();
var enableOutsourceDown = await _dbContext.Queryable<FactorySettingEntity>()
.Where(x => x.TenantId == device.TenantId)
.Select(x => SqlFunc.IsNullOrEmpty(x.EnableOutsourceDown) ? true : x.EnableOutsourceDown)
.SingleAsync();
var factorySetting = await _factorySettingService.GetFactorySettingAsync(device.TenantId, false);
var page = await _dbContext.Queryable<GainfoEntity>()
.Where(x => ids.Contains(x.Id))
.Where(x => x.Type != GainfoUserTypeEnumType.External)
.WhereIF(enableOutsourceDown == false, x => x.Type != GainfoUserTypeEnumType.Outsource)
.WhereIF(factorySetting.EnableOutsourceDown == false, x => x.Type != GainfoUserTypeEnumType.Outsource)
.WhereIF(device.Type == DeviceTypeEnumType.Meal, x => x.Type != GainfoUserTypeEnumType.External && x.Type != GainfoUserTypeEnumType.Outsource)
.WhereIF(request.Search.IsPresent(), x => x.Code == request.Search || x.Name.Contains(request.Search))
.Select<DeviceGainfoResponse>()