From c07a48a5ce277f13e9022ec6813efa4e5848a140 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 29 Oct 2025 17:24:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=A4=84=E7=90=86userNo=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E9=97=AE=E9=A2=98=E5=AF=BC=E8=87=B4=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E4=BA=BA=E5=91=98=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 20 ++++++++++++++----- .../Implements/DeviceTaskAssignmentService.cs | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index a812b5a3..f6620c07 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -550,17 +550,25 @@ public class DevicePermissionService : IDevicePermissionService var userCodes = await GetDeviceExceptUsersAsync(deviceUniqueNo); - var userNos = await _dbContext.Queryable() + var gainfoMap = await _dbContext.Queryable() .Where(x => userCodes.Contains(x.Code)) - .Select(x => x.No) + .Select(x => new { x.Code, x.No }) .ToListAsync(); - var userNoLeaves = await _dbContext.Queryable() + var leaveMap = await _dbContext.Queryable() .Where(x => userCodes.Contains(x.Code)) - .Select(x => x.No) + .Select(x => new { x.Code, x.No }) .ToListAsync(); + var userNos = gainfoMap.Select(x => x.No).ToList(); + var userNoLeaves = leaveMap.Select(x => x.No).ToList(); + + // 找出没有在两个表中映射到 No 的 code,原样作为 No 加入 + var mappedCodes = gainfoMap.Select(x => x.Code).Concat(leaveMap.Select(x => x.Code)).Distinct().ToList(); + var notMappedCodes = userCodes.Except(mappedCodes).ToList(); + userNos.AddRange(userNoLeaves); + userNos.AddRange(notMappedCodes); await _dbContext.Updateable() .SetColumns(x => x.IsDeleted == true) @@ -568,7 +576,9 @@ public class DevicePermissionService : IDevicePermissionService .Where(x => x.DeviceUniqueNo == deviceUniqueNo) .ExecuteCommandAsync(); - return await _dbContext.InsertAsync(userNos.Select(x => new DeviceTaskEntity + var distinctUserNos = userNos.Distinct().ToList(); + + return await _dbContext.InsertAsync(distinctUserNos.Select(x => new DeviceTaskEntity { DeviceUniqueNo = device.UniqueNo, Status = DeviceTaskStatusEnumType.Wait, diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs index 220bde21..551e4d82 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/DeviceTaskAssignmentService.cs @@ -68,7 +68,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService Status = deviceTask.Status, UserNo = deviceTask.UserNo, UserName = SqlFunc.IsNull(ga.Name, gaLeave.Name), - UserCode = SqlFunc.IsNull(ga.Code, gaLeave.Code), + UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code, gaLeave.Code), deviceTask.UserNo), Type = deviceTask.Type, CreateTime = deviceTask.CreateTime, LastUpdateTime = deviceTask.ModifiedTime,