diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs index 57caf78e..c97f9049 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs @@ -35,8 +35,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService public async Task> GetDevicePermissions(DevicePermissionSaveRequest request) { - var currentTenantId = _currentUser.GetStringTenantId(); - + var currentTenantId = await GetCurrentFactoryAsync(request); (bool enableDeviceFilter, List deviceCodes) = _myDataPermissionService.GetMyDeviceCodes(); (bool enableDeviceGroupFilter, List deviceGroupCodes) = _myDataPermissionService.GetMyDeviceGroupCodes(); @@ -50,6 +49,22 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService .ToListAsync(); } + private async Task GetCurrentFactoryAsync(DevicePermissionSaveRequest request) + { + var currentTenantId = _currentUser.GetStringTenantId(); + + var r = request.UniqueType switch + { + DeviceAssignmentTypeEnumType.Device => await _dbContext.Queryable().Where(x => request.Codes.Contains(x.Code)).Where(x => x.TenantId != currentTenantId).AnyAsync(), + DeviceAssignmentTypeEnumType.Group => await _dbContext.Queryable().Where(x => request.Codes.Contains(x.Code)).Where(x => x.TenantId != currentTenantId).AnyAsync(), + _ => false + }; + + r.ThrowIfTrue("存在设备或者设备组不属于当前厂区,操作失败!"); + + return currentTenantId; + } + public async Task GenerateDeviceTasksAsync(Func func, List userNos) {