fix 时段码数据错误问题
This commit is contained in:
@@ -406,25 +406,34 @@ public class AssignmentService : IAssignmentService
|
||||
var deviceUniqueNos = tasks.Select(x => x.DeviceUniqueNo).ToList();
|
||||
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().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<DeviceTimePeriodEntity>();
|
||||
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<DeviceTimePeriodEntity>()
|
||||
.LeftJoin<BasicTypeEntity>((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)
|
||||
|
||||
Reference in New Issue
Block a user