WeldRobotAnalysis.cs
2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using HHECS.BllModel;
using HHECS.DAQHandle.Common.Utils;
using HHECS.DAQHandle.Dto;
using HHECS.DAQHandle.Models;
using System.Text.Json;
namespace HHECS.DAQHandle.EquipmentHandle
{
/// <summary>
/// 焊接机器人数据解析
/// </summary>
internal class WeldRobotAnalysis : BaseAnalysis
{
public override BllResult Execute(EquipmentTypeExtend equipmentType, IEnumerable<EquipmentDataRecord> records)
{
try
{
foreach (var item in records.GroupBy(x => x.EquipmentCode))
{
var equipmentRecords = item.ToList();
foreach (var record in equipmentRecords)
{
if (equipmentRecords.Count == equipmentRecords.IndexOf(record) + 1)
{
SetEquipmentPropValues(record);
}
}
}
//解析完成后清空记录
Context.EquipmentDataRecord.RemoveRange(records);
Context.SaveChanges();
return BllResultFactory.Success();
}
catch (Exception ex)
{
return BllResultFactory.Error($"[{nameof(WeldRobotAnalysis)}]解析出现异常:{ex}");
}
}
protected void SetEquipmentPropValues(EquipmentDataRecord record)
{
try
{
var equipmentId = Context.Equipment.Where(x => x.Code == record.EquipmentCode).First(x => x.Id);
if (equipmentId == default) return;
var equipmentProps = Context.EquipmentProp.Where(x => x.EquipmentId == equipmentId).ToList();
var temps = new List<EquipmentPropExtend>();
var jsonOption = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
};
var tags = JsonSerializer.Deserialize<List<TagItemDto>>(record.Tags);
foreach (var prop in equipmentProps)
{
var tag = tags.Where(x => x.Tag == prop.Address).FirstOrDefault();
if (tag == null) continue;
Context.EquipmentProp.Attach(prop);
prop.Value = tag.Value;
prop.Updated = DateTime.Now;
temps.Add(prop);
}
if (temps.Count != 0)
{
Context.UpdateRange(temps);
Context.SaveChanges();
}
}
catch (Exception ex)
{
SystemLog.PrintError($"更新设备属性值失败.{ex.Message}");
}
}
}
}