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