forked from ddrilling/AsbCloudServer
оптимизирован метод save
This commit is contained in:
parent
27ee40816f
commit
44f1b08f90
@ -17,9 +17,9 @@ namespace AsbCloudDb.Model.GTR
|
|||||||
|
|
||||||
[Column("date", TypeName = "timestamp with time zone")]
|
[Column("date", TypeName = "timestamp with time zone")]
|
||||||
public DateTimeOffset DateTime { get; set; }
|
public DateTimeOffset DateTime { get; set; }
|
||||||
|
|
||||||
[Column("Value")]
|
[Column("Value")]
|
||||||
public T Value { get; set; }
|
public T Value { get; set; } = default!;
|
||||||
|
|
||||||
[ForeignKey(nameof(IdTelemetry))]
|
[ForeignKey(nameof(IdTelemetry))]
|
||||||
public virtual Telemetry? Telemetry { get; set; }
|
public virtual Telemetry? Telemetry { get; set; }
|
||||||
|
@ -3,6 +3,7 @@ using AsbCloudApp.Repositories;
|
|||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudDb.Model.GTR;
|
using AsbCloudDb.Model.GTR;
|
||||||
|
using Mapster;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -156,25 +157,23 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours;
|
var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours;
|
||||||
foreach (var item in dto.Items)
|
foreach (var item in dto.Items)
|
||||||
{
|
{
|
||||||
var jsonValue = item.Value;
|
var jsonValue = item.Value;
|
||||||
var type = jsonValue.Value.GetType().Name;
|
if(jsonValue.Value is string valueString)
|
||||||
if (type == "String")
|
|
||||||
{
|
{
|
||||||
var entity = GetEntityStr(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntity(dto, valueString, item.Key, timezoneHours);
|
||||||
db.WitsItemString.Add(entity);
|
db.WitsItemString.Add(entity.Adapt<WitsItemString>());
|
||||||
}
|
}
|
||||||
else if (type == "Int32")
|
if (jsonValue.Value is float valueFloat)
|
||||||
{
|
{
|
||||||
var entity = GetEntityInt(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntity(dto, valueFloat, item.Key, timezoneHours);
|
||||||
db.WitsItemInt.Add(entity);
|
db.WitsItemFloat.Add(entity.Adapt<WitsItemFloat>());
|
||||||
}
|
}
|
||||||
else if (type == "Single")
|
if (jsonValue.Value is int valueInt)
|
||||||
{
|
{
|
||||||
var entity = GetEntityFloat(dto, jsonValue, item.Key, timezoneHours);
|
var entity = GetEntity(dto, valueInt, item.Key, timezoneHours);
|
||||||
db.WitsItemFloat.Add(entity);
|
db.WitsItemInt.Add(entity.Adapt<WitsItemInt>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await db.SaveChangesAsync(token);
|
await db.SaveChangesAsync(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,42 +260,16 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
return entities;
|
return entities;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static WitsItemString GetEntityStr(WitsRecordDto record,JsonValue value,int idItems,double timezoneHours)
|
private static WitsItemBase<Tvalue> GetEntity<Tvalue>(WitsRecordDto record, Tvalue value, int idItems, double timezoneHours)
|
||||||
{
|
{
|
||||||
var entity = new WitsItemString
|
var entity = new WitsItemBase<Tvalue>
|
||||||
{
|
{
|
||||||
IdTelemetry = record.IdTelemetry,
|
IdTelemetry = record.IdTelemetry,
|
||||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
||||||
IdRecord = record.Id,
|
IdRecord = record.Id,
|
||||||
IdItem = idItems,
|
IdItem = idItems,
|
||||||
Value = value.Value.ToString()!,
|
Value = value,
|
||||||
};
|
|
||||||
return entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static WitsItemInt GetEntityInt(WitsRecordDto record, JsonValue value, int idItems, double timezoneHours)
|
|
||||||
{
|
|
||||||
var entity = new WitsItemInt
|
|
||||||
{
|
|
||||||
IdTelemetry = record.IdTelemetry,
|
|
||||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
|
||||||
IdRecord = record.Id,
|
|
||||||
IdItem = idItems,
|
|
||||||
Value = JsonSerializer.Deserialize<int>(value.ToString())!,
|
|
||||||
};
|
|
||||||
return entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static WitsItemFloat GetEntityFloat(WitsRecordDto record, JsonValue value, int idItems, double timezoneHours)
|
|
||||||
{
|
|
||||||
var entity = new WitsItemFloat
|
|
||||||
{
|
|
||||||
IdTelemetry = record.IdTelemetry,
|
|
||||||
DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours),
|
|
||||||
IdRecord = record.Id,
|
|
||||||
IdItem = idItems,
|
|
||||||
Value = (float)value.Value,
|
|
||||||
};
|
};
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user