| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- using LocalhostMES.DataBase;
- using LocalhostMES.Core;
- using LocalhostMES.Models;
- using LocalhostMES.ViewModels.Services;
- using LocalhostMES.Views;
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Windows;
- namespace LocalhostMES.ViewModels.Tabs
- {
- public class SnManagementViewModel : BindableBase
- {
- private readonly IMesWorkspace _workspace;
- private bool _skipNextSnRefresh;
- public SnManagementViewModel(IMesWorkspace workspace)
- {
- _workspace = workspace;
- _workspace.Initialize();
- MesDataChangedNotifier.Changed += OnDataChanged;
- }
- public ObservableCollection<WorkOrderInfo> DgWorkOrders => _workspace.WorkOrders;
- private ObservableCollection<SnInfo> _dgSns = new ObservableCollection<SnInfo>();
- public ObservableCollection<SnInfo> DgSns
- {
- get => _dgSns;
- set => SetProperty(ref _dgSns, value);
- }
- private SnInfo _selectSnInfo;
- public SnInfo SelectSnInfo
- {
- get => _selectSnInfo;
- set => SetProperty(ref _selectSnInfo, value);
- }
- private string _searchWorkOrder;
- public string SearchWorkOrder
- {
- get => _searchWorkOrder;
- set => SetProperty(ref _searchWorkOrder, value);
- }
- private DelegateCommand _searchSnsCommand;
- public DelegateCommand SearchSnsCommand =>
- _searchSnsCommand ?? (_searchSnsCommand = new DelegateCommand(SearchSns));
- private DelegateCommand _editSnCommand;
- public DelegateCommand EditSnCommand =>
- _editSnCommand ?? (_editSnCommand = new DelegateCommand(EditSn));
- private DelegateCommand _gotoBindRecordsCommand;
- public DelegateCommand GotoBindRecordsCommand =>
- _gotoBindRecordsCommand ?? (_gotoBindRecordsCommand = new DelegateCommand(GotoBindRecords));
- private DelegateCommand _gotoProcessRecordsCommand;
- public DelegateCommand GotoProcessRecordsCommand =>
- _gotoProcessRecordsCommand ?? (_gotoProcessRecordsCommand = new DelegateCommand(GotoProcessRecords));
- private void SearchSns()
- {
- try
- {
- DgSns.Clear();
- var workOrderNo = (SearchWorkOrder ?? string.Empty).Trim();
- if (string.IsNullOrEmpty(workOrderNo))
- {
- _workspace.ShowStatus("请输入工单号", true);
- return;
- }
- var response = DatabaseHelper.SelectSnInfo(workOrderNo);
- if (response.Count != 0)
- {
- DgSns = new ObservableCollection<SnInfo>(response);
- _workspace.ShowStatus($"已加载 {response.Count} 个SN", false);
- }
- else
- {
- _workspace.ShowStatus($"加载失败: {response.Count}", true);
- }
- }
- catch (Exception ex)
- {
- _workspace.ShowStatus($"查询失败: {ex.Message}", true);
- }
- }
- private void OnDataChanged(object sender, MesDataChangedEventArgs e)
- {
- if (!e.Has(MesDataScope.Sn))
- {
- return;
- }
- if (_skipNextSnRefresh)
- {
- _skipNextSnRefresh = false;
- return;
- }
- var workOrderNo = (SearchWorkOrder ?? string.Empty).Trim();
- if (string.IsNullOrEmpty(workOrderNo))
- {
- return;
- }
- Application.Current?.Dispatcher.Invoke(SearchSns);
- }
- private void EditSn()
- {
- if (SelectSnInfo == null)
- {
- _workspace.ShowStatus("请先选择要修改的SN", true);
- return;
- }
- try
- {
- var dialog = new SnDialog(SelectSnInfo) { Owner = Application.Current?.MainWindow };
- if (dialog.ShowDialog() == true)
- {
- _skipNextSnRefresh = true;
- if (DatabaseHelper.UpdateSnInfo(dialog.SnInfo))
- {
- var edited = dialog.SnInfo;
- var index = DgSns.IndexOf(SelectSnInfo);
- if (index >= 0)
- {
- var updatedRow = new SnInfo
- {
- Sn = edited.Sn,
- WorkOrderNo = edited.WorkOrderNo,
- PrintType = edited.PrintType,
- GenerateTime = edited.GenerateTime,
- IsUsed = edited.IsUsed
- };
- DgSns[index] = updatedRow;
- SelectSnInfo = updatedRow;
- }
- var selectedWorkOrderNo = (edited.WorkOrderNo ?? string.Empty).Trim();
- if (!string.IsNullOrEmpty(selectedWorkOrderNo) &&
- !_workspace.WorkOrders.Any(w => w.WorkOrderNo == selectedWorkOrderNo))
- {
- _workspace.WorkOrders.Add(new WorkOrderInfo
- {
- WorkOrderNo = selectedWorkOrderNo
- });
- }
- SearchWorkOrder = selectedWorkOrderNo;
- _workspace.ShowStatus("SN信息修改成功", false);
- }
- else
- {
- _skipNextSnRefresh = false;
- _workspace.ShowStatus("修改失败", true);
- }
- }
- }
- catch (Exception ex)
- {
- _workspace.ShowStatus($"修改失败: {ex.Message}", true);
- }
- }
- private void GotoBindRecords()
- {
- var sn = (SelectSnInfo?.Sn ?? string.Empty).Trim();
- if (string.IsNullOrEmpty(sn))
- {
- _workspace.ShowStatus("请先选择一条SN记录", true);
- return;
- }
- _workspace.CrossPageSn = sn;
- _workspace.SelectedTabIndex = 5;
- }
- private void GotoProcessRecords()
- {
- var sn = (SelectSnInfo?.Sn ?? string.Empty).Trim();
- if (string.IsNullOrEmpty(sn))
- {
- _workspace.ShowStatus("请先选择一条SN记录", true);
- return;
- }
- _workspace.CrossPageSn = sn;
- _workspace.SelectedTabIndex = 6;
- }
- }
- }
|