diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs index 4a8704fc..9a949f49 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs @@ -202,7 +202,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService Status = true, Image = null, CreatedBy = 1, - ModifiedBy = 1, + ModifiedBy = 1 }); } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index ccb46f12..90613d1e 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -406,25 +406,34 @@ public class AssignmentService : IAssignmentService var deviceUniqueNos = tasks.Select(x => x.DeviceUniqueNo).ToList(); var devices = await _dbContext.Queryable().Where(x => deviceUniqueNos.Contains(x.UniqueNo)).ToListAsync(); - var templateCodes = devices.Select(x => x.TemplateCode).Distinct().ToList(); + var templateCodes = devices.Select(x => new { x.TenantId, x.TemplateCode }).DistinctBy(x => new { x.TenantId, x.TemplateCode }).ToList(); var deviceCodes = devices.Select(x => x.Code).Distinct().ToList(); + + var where = LinqExpressionExtensions.False(); + where = where.Or(x => x.AssignType == DeviceTimePeriodAssignEnumType.Device && deviceCodes.Contains(x.Value)); + foreach (var template in templateCodes) + { + where = where.Or(x => x.AssignType == DeviceTimePeriodAssignEnumType.Template && x.Value == template.TemplateCode && x.TenantId == template.TenantId); + } + var settings = await _dbContext.Queryable() .LeftJoin((x, type) => x.CardType.ToString() == type.Code && type.Type == "timeperiod") - .Where(x => (x.AssignType == DeviceTimePeriodAssignEnumType.Template && templateCodes.Contains(x.Value)) - || (x.AssignType == DeviceTimePeriodAssignEnumType.Device && deviceCodes.Contains(x.Value))) + .Where(where) .Select((x, type) => new DeviceTimePeriodDto { CardName = type.Display }, true) .ToListAsync(); - data.ForEach(item => { - var templateCode = devices.FirstOrDefault(x => x.UniqueNo == item.DeviceUniqueNo)?.TemplateCode; - var code = devices.FirstOrDefault(x => x.UniqueNo == item.DeviceUniqueNo)?.Code; + var device = devices.First(x => x.UniqueNo == item.DeviceUniqueNo); + var templateCode = device.TemplateCode; + var code = device.Code; - var tSettings = settings.Where(x => x.AssignType == DeviceTimePeriodAssignEnumType.Template).Where(x => x.Value == templateCode).ToList(); + var tSettings = settings.Where(x => x.AssignType == DeviceTimePeriodAssignEnumType.Template && x.TenantId == device.TenantId) + .Where(x => x.Value == templateCode) + .ToList(); var dSettings = settings.Where(x => x.AssignType == DeviceTimePeriodAssignEnumType.Device).Where(x => x.Value == code).ToList(); foreach (var setting in dSettings)