fix 处理userNo设计问题导致下发不存在的人员任务尝试

This commit is contained in:
2025-10-29 17:24:46 +08:00
parent e94d234566
commit c07a48a5ce
2 changed files with 16 additions and 6 deletions

View File

@@ -550,17 +550,25 @@ public class DevicePermissionService : IDevicePermissionService
var userCodes = await GetDeviceExceptUsersAsync(deviceUniqueNo);
var userNos = await _dbContext.Queryable<GainfoEntity>()
var gainfoMap = await _dbContext.Queryable<GainfoEntity>()
.Where(x => userCodes.Contains(x.Code))
.Select(x => x.No)
.Select(x => new { x.Code, x.No })
.ToListAsync();
var userNoLeaves = await _dbContext.Queryable<GainfoLeaveEntity>()
var leaveMap = await _dbContext.Queryable<GainfoLeaveEntity>()
.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<DeviceUserEntity>()
.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,

View File

@@ -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,