fix: 移除循环
This commit is contained in:
@@ -212,46 +212,50 @@ public class AssignmentService : IAssignmentService
|
||||
|
||||
public async Task<ElevatorAcsDeviceTaskToDeviceByDeviceResponse> GetElevatorAcsTaskAsync(string deviceUniqueNo, string userCode)
|
||||
{
|
||||
var elevatorAcsFloors = await _dbContext.Queryable<ElevatorAcsFloorEntity>().Where(x => x.RealDeviceUniqueNo == deviceUniqueNo).ToListAsync();
|
||||
var userInfo = await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => x.Code == userCode)
|
||||
.Select(x => new { UserId = x.Id, UserNo = x.No, UserCode = x.Code, UserName = x.Name, x.CardNo })
|
||||
.FirstAsync()
|
||||
??
|
||||
await _dbContext.Queryable<GainfoLeaveEntity>()
|
||||
.Where(x => x.Code == userCode)
|
||||
.Select(x => new { UserId = x.Id, UserNo = x.No, UserCode = x.Code, UserName = x.Name, x.CardNo })
|
||||
.FirstAsync();
|
||||
|
||||
|
||||
var elevatorAcsFloors = await _dbContext.Queryable<ElevatorAcsFloorEntity>()
|
||||
.Where(x => x.RealDeviceUniqueNo == deviceUniqueNo)
|
||||
.Select(x => new { x.VirtualDeviceUniqueNo, x.AcsValue })
|
||||
.ToListAsync();
|
||||
|
||||
var virtualDeviceUniqueNos = elevatorAcsFloors.Select(x => x.VirtualDeviceUniqueNo).ToList();
|
||||
|
||||
var deviceCodes = await _gainfoPermissionApi.GetPermissionsDeviceCodesAsync(userCode);
|
||||
var floorAcsValues = await _dbContext.Queryable<DeviceEntity>()
|
||||
.LeftJoin<ElevatorAcsFloorEntity>((x, f) => x.UniqueNo == f.VirtualDeviceUniqueNo)
|
||||
.Where(x => virtualDeviceUniqueNos.Contains(x.UniqueNo) && deviceCodes.Contains(x.Code))
|
||||
.Select((x, f) => f.AcsValue)
|
||||
.ToListAsync();
|
||||
var floorAcsValues = elevatorAcsFloors.Select(x => x.AcsValue).Distinct().ToList();
|
||||
|
||||
var all = await CommonHelper.RetryAsync(async () =>
|
||||
{
|
||||
var internalAll = new List<long>();
|
||||
|
||||
foreach (var virtualDeviceUniqueNo in virtualDeviceUniqueNos)
|
||||
{
|
||||
var taskIds = await _dbContext.Queryable<DeviceTaskEntity>()
|
||||
.LeftJoin<DeviceEntity>((deviceTask, device) => deviceTask.DeviceUniqueNo == device.UniqueNo)
|
||||
.Where((deviceTask, device) => deviceTask.DeviceUniqueNo == virtualDeviceUniqueNo)
|
||||
.Where((deviceTask, device) => deviceTask.UserNo == userInfo.UserNo)
|
||||
.Where((deviceTask, device) => virtualDeviceUniqueNos.Contains(deviceTask.DeviceUniqueNo))
|
||||
.Where((deviceTask, device) => device.Enable)
|
||||
.Where(deviceTask => (deviceTask.Status == DeviceTaskStatusEnumType.Wait || deviceTask.Status == DeviceTaskStatusEnumType.Process) && !string.IsNullOrEmpty(deviceTask.UserNo))
|
||||
.OrderBy(deviceTask => new { deviceTask.Id, Priority = SqlFunc.Desc(deviceTask.Priority) })
|
||||
.Select((deviceTask, device) => deviceTask.Id)
|
||||
.ToListAsync();
|
||||
|
||||
internalAll.AddRange(taskIds);
|
||||
}
|
||||
|
||||
var effect = await _dbContext.Updateable<DeviceTaskEntity>()
|
||||
.SetColumns(x => x.Status == DeviceTaskStatusEnumType.Process)
|
||||
.SetColumns(x => x.ModifiedTime == DateTime.Now)
|
||||
.Where(x => internalAll.Contains(x.Id))
|
||||
.Where(x => taskIds.Contains(x.Id))
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
if (effect != internalAll.Count)
|
||||
if (effect != taskIds.Count)
|
||||
{
|
||||
throw new VersionExceptions("version exceptions");
|
||||
}
|
||||
|
||||
return internalAll;
|
||||
return taskIds;
|
||||
|
||||
}, 3);
|
||||
|
||||
@@ -260,15 +264,7 @@ public class AssignmentService : IAssignmentService
|
||||
return null;
|
||||
}
|
||||
|
||||
var userInfo = await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => x.Code == userCode)
|
||||
.Select(x => new { UserId = x.Id, UserCode = x.Code, UserName = x.Name, x.CardNo })
|
||||
.FirstAsync()
|
||||
??
|
||||
await _dbContext.Queryable<GainfoLeaveEntity>()
|
||||
.Where(x => x.Code == userCode)
|
||||
.Select(x => new { UserId = x.Id, UserCode = x.Code, UserName = x.Name, x.CardNo })
|
||||
.FirstAsync();
|
||||
|
||||
|
||||
var oldCardNo = await _dbContext.Queryable<GainfoCardRecordEntity>()
|
||||
.Where(x => x.UserNo == userInfo.UserCode)
|
||||
|
||||
Reference in New Issue
Block a user