This commit is contained in:
2026-02-25 13:08:59 +08:00
parent 2b93ac2e7f
commit cd9723cb4b
3 changed files with 45 additions and 0 deletions

View File

@@ -134,6 +134,14 @@ public class DevicePermissionsController : ControllerBase
} }
[HttpGet("temp-userPermissionCodes")]
[IgnoreTenant]
public async Task<object> GetAssignDeviceCodesAsync(List<string> userCodes)
{
return await _devicePermissionService.GetUserDeviceCodesByNoAsync(userCodes);
}
[HttpGet("test-userPermissionCodes")] [HttpGet("test-userPermissionCodes")]
[IgnoreTenant] [IgnoreTenant]
public async Task<Dictionary<string, List<TenantAssignTypeDeviceCode>>> GetTestAssignDeviceCodesAsync(string userNo) public async Task<Dictionary<string, List<TenantAssignTypeDeviceCode>>> GetTestAssignDeviceCodesAsync(string userNo)

View File

@@ -63,4 +63,6 @@ public interface IDevicePermissionService : IScopeDependency
Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo); Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo);
Task<int> GenerateDeleteDeviceTasksAsync(string deviceUniqueNo); Task<int> GenerateDeleteDeviceTasksAsync(string deviceUniqueNo);
Task<object> GetUserDeviceCodesByNoAsync(List<string> userCodes);
} }

View File

@@ -342,6 +342,41 @@ public class DevicePermissionService : IDevicePermissionService
return deviceCodes.Concat(manuallyDeviceCodes).Distinct().ToList(); return deviceCodes.Concat(manuallyDeviceCodes).Distinct().ToList();
} }
public async Task<object> GetUserDeviceCodesByNoAsync(List<string> userCodes)
{
var users = await _dbContext.Queryable<GainfoEntity>().Where(x => userCodes.Contains(x.Code)).Select(x => new { x.No, x.Code, x.Name }).ToListAsync();
var userNos = users.Select(x => x.No).ToList();
//例外处理: 特殊手动分配的设备权限
var manuallyDeviceCodes = await _dbContext.Queryable<DevicePermissionManuallyEntity>()
.Where(x => userNos.Contains(x.UserNo))
.Select(x => new { x.UserNo, x.DeviceCode })
.ToListAsync();
var result = await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(userNos);
var userWithDeviceCodes = result.ToDictionary(x => x.Key, x =>
{
var codes = x.Value.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList();
var userManuallyDeviceCodes = manuallyDeviceCodes.Where(p => p.UserNo == x.Key).Select(p => p.DeviceCode).ToList();
return codes.Concat(userManuallyDeviceCodes).Distinct().ToList();
});
var devices = await _dbContext.Queryable<DeviceEntity>().ToListAsync();
var finialResult = new List<object>();
foreach (var item in userWithDeviceCodes)
{
var userNo = item.Key;
var user = users.First(x => x.No == userNo);
var details = devices.Where(x => item.Value.Contains(x.Code)).Select(x => new { UserCode = user.Code, UserName = user.Name, DeviceUniqueNo = x.UniqueNo, DeviceDeployPlace = x.DeployPlace });
finialResult.AddRange(details);
}
return finialResult;
}
public async Task<int> ResetVisitorsByDeviceAsync(string deviceUniqueNo) public async Task<int> ResetVisitorsByDeviceAsync(string deviceUniqueNo)
{ {