FanucDataService.cs
3.19 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CNCFanucDataReading
{
public class FanucDataService : IDisposable
{
private readonly IFreeSql _fsql;
private bool _disposed = false;
public FanucDataService(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
throw new ArgumentException("数据库连接字符串不能为空", nameof(connectionString));
_fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.SqlServer, connectionString)
.UseAutoSyncStructure(false) // 自动同步实体结构到数据库
.Build();
}
/// <summary>
/// 更新或创建设备Fanuc数据
/// 如果表内没有该设备的数据则创建,有则修改
/// </summary>
public async Task<bool> UpsertFanucDataAsync(string equipmentCode, string equipmentName, FanucDataInfo dataInfo)
{
try
{
var now = DateTime.Now;
var jsonData = JsonConvert.SerializeObject(dataInfo, Formatting.Indented);
// 查找现有记录
var existingRecord = await _fsql.Select<DaqEquipmentFanucData>()
.Where(r => r.EquipmentCode == equipmentCode)
.FirstAsync();
if (existingRecord == null)
{
// 创建新记录
await CreateFanucDataAsync(equipmentCode, equipmentName, jsonData, now);
}
else
{
// 更新现有记录
await UpdateFanucDataAsync(existingRecord.Id, equipmentName, jsonData, now);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 创建新的Fanuc数据记录
/// </summary>
private async Task CreateFanucDataAsync(string equipmentCode, string equipmentName, string jsonData, DateTime now)
{
var record = new DaqEquipmentFanucData
{
Id = Guid.NewGuid(),
EquipmentCode = equipmentCode,
EquipmentName = equipmentName,
DataInfo = jsonData,
CreateTime = now,
UpdateTime = now
};
await _fsql.Insert(record).ExecuteAffrowsAsync();
}
/// <summary>
/// 更新Fanuc数据记录
/// </summary>
private async Task UpdateFanucDataAsync(Guid id, string equipmentName, string jsonData, DateTime now)
{
await _fsql.Update<DaqEquipmentFanucData>()
.Set(r => r.DataInfo, jsonData)
.Set(r => r.UpdateTime, now)
.Where(r => r.Id == id)
.ExecuteAffrowsAsync();
}
public void Dispose()
{
if (!_disposed)
{
_fsql?.Dispose();
_disposed = true;
}
}
}
}