EquipmentAddOrEditVM.cs
3.73 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
104
105
106
107
108
109
110
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using HHECS.DAQShared.Models;
using System.Windows;
using MessageBox = HandyControl.Controls.MessageBox;
namespace HHECS.DAQClient.ViewModel.EquipmentVM
{
public partial class EquipmentAddOrEditVM : ObservableObject
{
[ObservableProperty]
private Equipment equipment = new Equipment();
[ObservableProperty]
private Dictionary<string, int> equipmentTypes = new Dictionary<string, int>();
[ObservableProperty]
private bool cbxIsEnable = true;
private bool IsEdit = false;
public Window Owner { get; set; }
private readonly IFreeSql _freeSql;
public EquipmentAddOrEditVM(IFreeSql freeSql)
{
_freeSql = freeSql;
}
public void InitialData(int? equipmentId = null)
{
try
{
var result = _freeSql.Queryable<EquipmentType>().ToList(x => new { x.Id, x.Name });
EquipmentTypes = result.ToDictionary(x => x.Name, y => y.Id);
if (equipmentId != null)
{
Owner.Title = "修改设备数据";
IsEdit = true;
CbxIsEnable = false;
Equipment = _freeSql.Queryable<Equipment>().Where(x => x.Id.Equals(equipmentId)).First();
}
}
catch (Exception ex)
{
MessageBox.Error($"[{nameof(EquipmentAddOrEditVM)}]加载数据失败.{ex.Message}");
}
}
[RelayCommand]
public void Save()
{
try
{
if (Equipment.EquipmentTypeId == default)
{
MessageBox.Warning($"请选择设备类型!");
return;
}
var equipmentPropTemps = _freeSql.Queryable<EquipmentTypePropTemplate>().Where(x => x.EquipmentTypeId == Equipment.EquipmentTypeId).ToList();
if (equipmentPropTemps.Count == 0)
{
MessageBox.Warning($"当前选择的设备类型模板数据为空!");
return;
}
if (!IsEdit)
{
Equipment.Created = DateTime.Now;
Equipment.Id = (int)_freeSql.Insert(Equipment).ExecuteIdentity();
var equipmentProps = equipmentPropTemps.Select(x => new EquipmentProp
{
EquipmentId = Equipment.Id,
Code = x.Code,
Name = x.Name,
PropType = x.PropType,
DataType = x.DataType,
Address = x.Address,
Value = string.Empty,
MonitorCompareValue = x.MonitorCompareValue,
MonitorNormal = x.MonitorNormal,
MonitorFailure = x.MonitorFailure,
Remark = x.Description,
Created = DateTime.Now,
}).ToList();
_freeSql.Insert(equipmentProps).ExecuteAffrows();
}
else
{
Equipment.Updated = DateTime.Now;
_freeSql.Update<Equipment>().SetSource(Equipment).ExecuteAffrows();
}
Owner.DialogResult = true;
MessageBox.Success($"操作成功");
}
catch (Exception ex)
{
MessageBox.Error($"操作失败.{ex.Message}");
}
}
[RelayCommand]
public void Cancel()
{
Owner.Close();
}
}
}