This commit is contained in:
2024-12-03 17:35:33 +08:00
parent 8c3e37e1c3
commit 41f22f2522

View File

@@ -1110,7 +1110,7 @@ public class DevicePermissionService : IDevicePermissionService
}
private static List<UserTenantDeviceCodeDto> GetAssignDeviceCodesInternal(
private List<UserTenantDeviceCodeDto> GetAssignDeviceCodesInternal(
GainfoDto gainfo,
List<GainfoGroupRelationshipEntity> gainfoGroupRelationships,
List<DevicePermissionEntity> devicePermissions,
@@ -1119,6 +1119,7 @@ public class DevicePermissionService : IDevicePermissionService
List<DeviceRegistryEntity> deviceRegistries,
List<DeviceEntity> devices, List<DepartmentEntity> departments)
{
var sw = Stopwatch.StartNew();
if (gainfo.IsOutsource)
{
//外包人员不允许餐饮
@@ -1138,11 +1139,12 @@ public class DevicePermissionService : IDevicePermissionService
var du = GetAssignCodesInternal(devicePermissions, deviceGroups, departments, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.User, userNo);
var gu = GetAssignCodesInternal(devicePermissions, deviceGroups, departments, DeviceAssignmentTypeEnumType.Group, AssignTypeEnumType.User, userNo);
var pu = GetAssignCodesInternal(devicePermissions, deviceGroups, departments, DeviceAssignmentTypeEnumType.BusinessPlace, AssignTypeEnumType.User, userNo);
deviceDtos.AddRange(du);
deviceGroupDtos.AddRange(gu);
businessPlaceDtos.AddRange(pu);
_logger.LogWarning("按用户获取时间:{ts}", sw.ElapsedMilliseconds);
sw.Restart();
//按用户组
foreach (var groupCode in gainfoGroups)
{
@@ -1154,6 +1156,9 @@ public class DevicePermissionService : IDevicePermissionService
businessPlaceDtos.AddRange(pg);
}
_logger.LogWarning("按用户组获取时间:{ts}", sw.ElapsedMilliseconds);
sw.Restart();
//按部门
var currentAssignValue = gainfo.Factory + ":" + gainfo.DepartmentNo;
var dd = GetAssignCodesInternal(devicePermissions, deviceGroups, departments, DeviceAssignmentTypeEnumType.Device, AssignTypeEnumType.Department, currentAssignValue);
@@ -1163,6 +1168,9 @@ public class DevicePermissionService : IDevicePermissionService
deviceGroupDtos.AddRange(gd);
businessPlaceDtos.AddRange(pd);
_logger.LogWarning("按部门获取时间:{ts}", sw.ElapsedMilliseconds);
sw.Restart();
//按厂区
if (!gainfo.IsOutsource || gainfo.EnableFactoryPermission)
{
@@ -1174,6 +1182,9 @@ public class DevicePermissionService : IDevicePermissionService
businessPlaceDtos.AddRange(pt);
}
_logger.LogWarning("按厂区获取时间:{ts}", sw.ElapsedMilliseconds);
sw.Restart();
var deviceGroupCodes = deviceGroupDtos.SelectMany(x => x.Codes).Distinct().ToList();
var businessPlaceCodes = businessPlaceDtos.SelectMany(x => x.Codes).Distinct().ToList();
@@ -1201,17 +1212,24 @@ public class DevicePermissionService : IDevicePermissionService
deviceDtos.AddRange(deviceCodesByGroup);
deviceDtos.AddRange(placeGroup);
return deviceDtos.GroupBy(x => x.Tenant).Select(x =>
try
{
var dto = new UserTenantDeviceCodeDto
return deviceDtos.GroupBy(x => x.Tenant).Select(x =>
{
Tenant = x.Key,
Codes = x.SelectMany(item => item.Codes).Distinct().ToList()
};
var dto = new UserTenantDeviceCodeDto
{
Tenant = x.Key,
Codes = x.SelectMany(item => item.Codes).Distinct().ToList()
};
dto.Codes = dto.Codes.Where(p => devices.Any(item => item.Code == p)).ToList();
dto.Codes = dto.Codes.Where(p => devices.Any(item => item.Code == p)).ToList();
return dto;
}).ToList();
return dto;
}).ToList();
}
finally
{
_logger.LogWarning("数据整合时间:{ts}", sw.ElapsedMilliseconds);
}
}
}