Blame view

HHECS.DAQClient/ViewModel/EquipmentVM/EquipmentDataQueueVM.cs 3.55 KB
唐召明 authored
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using HandyControl.Data;
using HHECS.BllModel;
using HHECS.DAQClient.Model;
using LinqKit;
using System.Collections.ObjectModel;
using System.Linq.Expressions;
using MessageBox = HandyControl.Controls.MessageBox;

namespace HHECS.DAQClient.ViewModel.EquipmentVM
{
    public partial class EquipmentDataQueueVM : ObservableObject
    {
        [ObservableProperty]
        private string equipmentCode;

        [ObservableProperty]
唐召明 authored
19
        private Dictionary<string, string> equipmentTypes = new Dictionary<string, string>();
唐召明 authored
20
21

        [ObservableProperty]
22
        private string equipmentTypeCode;
唐召明 authored
23
24

        [ObservableProperty]
唐召明 authored
25
26
27
28
29
30
31
32
33
34
35
        private int pageIndex = 1;

        [ObservableProperty]
        private long maxPage;

        [ObservableProperty]
        private int pageSize = 30;

        [ObservableProperty]
        private ObservableCollection<EquipmentDataQueue> dataQueues = new ObservableCollection<EquipmentDataQueue>();
唐召明 authored
36
        private readonly IFreeSql _freeSql;
唐召明 authored
37
唐召明 authored
38
        public EquipmentDataQueueVM(IFreeSql freeSql)
唐召明 authored
39
        {
唐召明 authored
40
            _freeSql = freeSql;
唐召明 authored
41
            InitialData();
唐召明 authored
42
43
44
            LoadData();
        }
唐召明 authored
45
46
47
48
        private void InitialData()
        {
            try
            {
唐召明 authored
49
                var result = _freeSql.Queryable<EquipmentTypeExtend>().ToList();
唐召明 authored
50
51
52
53
54
55
56
57
58
                var keyValuePairs = new Dictionary<string, string>
                {
                    { "全部",null }
                };
                foreach (var item in result)
                {
                    keyValuePairs.Add(item.Name, item.Code);
                }
                EquipmentTypes = keyValuePairs;
唐召明 authored
59
60
61
            }
            catch (Exception ex)
            {
唐召明 authored
62
                MessageBox.Error($"[{nameof(EquipmentDataQueueVM)}]加载数据失败.{ex.Message}");
唐召明 authored
63
64
65
            }
        }
唐召明 authored
66
67
68
69
70
71
        [RelayCommand]
        public void Serach()
        {
            var result = LoadData();
            if (!result.Success)
            {
唐召明 authored
72
                MessageBox.Error($"[{nameof(EquipmentDataQueueVM)}]加载数据失败.{result.Msg}");
唐召明 authored
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
            }
        }

        /// <summary>
        /// 页码改变
        /// </summary>
        [RelayCommand]
        private void PageUpdated(FunctionEventArgs<int> info)
        {
            PageIndex = info.Info;
            LoadData();
        }

        private BllResult LoadData()
        {
            try
            {
唐召明 authored
90
                var query = _freeSql.Queryable<EquipmentDataQueue>().Where(GetFilter());
唐召明 authored
91
92
                var total = query.Count();
                MaxPage = total / PageSize + Convert.ToInt32(total % PageSize != 0);
93
                var result = query.OrderByDescending(x => x.Created).Page(PageIndex, PageSize).ToList();
唐召明 authored
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
                DataQueues = new ObservableCollection<EquipmentDataQueue>(result);
                return BllResultFactory.Success();
            }
            catch (Exception ex)
            {
                return BllResultFactory.Error(ex.Message);
            }
        }

        private Expression<Func<EquipmentDataQueue, bool>> GetFilter()
        {
            var filter = PredicateBuilder.New<EquipmentDataQueue>(true);
            if (!string.IsNullOrWhiteSpace(EquipmentCode))
            {
                filter = filter.And(x => x.EquipmentCode.Contains(EquipmentCode));
            }
110
111
112
113
            if (!string.IsNullOrWhiteSpace(EquipmentTypeCode))
            {
                filter = filter.And(x => x.EquipmentTypeCode.Contains(EquipmentTypeCode));
            }
唐召明 authored
114
115
116
117
            return filter;
        }
    }
}