fix 任务根据设备心跳状态获取
This commit is contained in:
@@ -236,6 +236,8 @@ public class AssignmentService : IAssignmentService
|
||||
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, deviceTemplate, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
|
||||
.LeftJoin<DepartmentEntity>((deviceTask, device, deviceTemplate, ga, gaLeave, department) => department.No == ga.DepartmentNo)
|
||||
.LeftJoin<GainfoExternalEntity>((deviceTask, device, deviceTemplate, ga, gaLeave, department, gainfoEx) => deviceTask.UserNo == gainfoEx.No)
|
||||
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, deviceTemplate, ga, gaLeave, department, gainfoEx, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
|
||||
.Where((deviceTask, device) => device.Enable)
|
||||
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
|
||||
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process
|
||||
&& SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 30)
|
||||
@@ -243,6 +245,8 @@ public class AssignmentService : IAssignmentService
|
||||
.WhereIF(request.Factory.IsPresent(), (deviceTask, device) => deviceTask.TenantId == request.Factory)
|
||||
.WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type))
|
||||
.WhereIF(request.Brand.IsPresent(), (deviceTask, device, deviceTemplate) => deviceTemplate.Brand == request.Brand)
|
||||
.Where((deviceTask, device, deviceTemplate, ga, gaLeave, department, gainfoEx, deviceRegistry) =>
|
||||
SqlFunc.DateAdd(deviceRegistry.LastHeartbeatTime, SqlFunc.IIF(device.HeartbeatInterval == 0, 30, 30), DateType.Second) > DateTime.Now)
|
||||
.OrderBy(deviceTask => new { Priority = SqlFunc.Desc(deviceTask.Priority), deviceTask.CreateTime })
|
||||
.Select((deviceTask, device, deviceTemplate, ga, gaLeave, department, gainfoEx) => new TaskDto
|
||||
{
|
||||
@@ -273,14 +277,14 @@ public class AssignmentService : IAssignmentService
|
||||
var where = LinqExpressionExtensions.False<DeviceTaskEntity>();
|
||||
taskIdVs.ForEach(p => { where = where.Or(x => x.Id == p.TaskId && x.Version == p.Version && x.Status == p.Status); });
|
||||
|
||||
var effecet = await _dbContext.Updateable<DeviceTaskEntity>()
|
||||
var effect = await _dbContext.Updateable<DeviceTaskEntity>()
|
||||
.SetColumns(x => x.Version == x.Version + 1)
|
||||
.SetColumns(x => x.Status == DeviceTaskStatusEnumType.Process)
|
||||
.SetColumns(x => x.ModifiedTime == DateTime.Now)
|
||||
.Where(where)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
(taskIdVs.Count != effecet).ThrowIfTrue("获取任务失败");
|
||||
(taskIdVs.Count != effect).ThrowIfTrue("获取任务失败");
|
||||
|
||||
return page.Data;
|
||||
}, 5);
|
||||
|
||||
Reference in New Issue
Block a user