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 userCodes = await GetDeviceExceptUsersAsync(deviceUniqueNo);
var userNos = await _dbContext.Queryable<GainfoEntity>() var gainfoMap = await _dbContext.Queryable<GainfoEntity>()
.Where(x => userCodes.Contains(x.Code)) .Where(x => userCodes.Contains(x.Code))
.Select(x => x.No) .Select(x => new { x.Code, x.No })
.ToListAsync(); .ToListAsync();
var userNoLeaves = await _dbContext.Queryable<GainfoLeaveEntity>() var leaveMap = await _dbContext.Queryable<GainfoLeaveEntity>()
.Where(x => userCodes.Contains(x.Code)) .Where(x => userCodes.Contains(x.Code))
.Select(x => x.No) .Select(x => new { x.Code, x.No })
.ToListAsync(); .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(userNoLeaves);
userNos.AddRange(notMappedCodes);
await _dbContext.Updateable<DeviceUserEntity>() await _dbContext.Updateable<DeviceUserEntity>()
.SetColumns(x => x.IsDeleted == true) .SetColumns(x => x.IsDeleted == true)
@@ -568,7 +576,9 @@ public class DevicePermissionService : IDevicePermissionService
.Where(x => x.DeviceUniqueNo == deviceUniqueNo) .Where(x => x.DeviceUniqueNo == deviceUniqueNo)
.ExecuteCommandAsync(); .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, DeviceUniqueNo = device.UniqueNo,
Status = DeviceTaskStatusEnumType.Wait, Status = DeviceTaskStatusEnumType.Wait,

View File

@@ -68,7 +68,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
Status = deviceTask.Status, Status = deviceTask.Status,
UserNo = deviceTask.UserNo, UserNo = deviceTask.UserNo,
UserName = SqlFunc.IsNull(ga.Name, gaLeave.Name), 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, Type = deviceTask.Type,
CreateTime = deviceTask.CreateTime, CreateTime = deviceTask.CreateTime,
LastUpdateTime = deviceTask.ModifiedTime, LastUpdateTime = deviceTask.ModifiedTime,