fix 处理userNo设计问题导致下发不存在的人员任务尝试
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user