using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Models.Models; using SamplePre.Models.Ext; using SamplePre.ProcessBll.SampleSequence; using SamplePreSystem.UI.ViewModel.SampleManager; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using static MaterialDesignThemes.Wpf.Theme; namespace SamplePreSystem.UI.ViewModel.Child { public partial class ImportSampleViewModel: ObservableObject { SampleSequenceBll sampleSequenceBll = new SampleSequenceBll(); SampleExecViewModel sampleExecViewModel; // 关闭窗口的委托 public Action CloseAction { get; set; } public ImportSampleViewModel(SampleExecViewModel _sampleExecViewModel) { GetData(); sampleExecViewModel = _sampleExecViewModel; } private DateTime _startDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"); public DateTime StartDate { get { return _startDate; } set { SetProperty(ref _startDate, value); } } private DateTime _endDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"); public DateTime EndDate { get { return _endDate; } set { SetProperty(ref _endDate, value); } } private List _sampleList = new List(); public List SampleList { get { return _sampleList; } set { SetProperty(ref _sampleList, value); } } public void GetData() { //DateTime dt1 = DateTime.Parse(dt_start.DateTime.ToString("yyyy-MM-dd") + " 00:00:00"); //DateTime dt2 = DateTime.Parse(dt_end.DateTime.ToString("yyyy-MM-dd") + " 23:00:00"); var templist = sampleSequenceBll.GetTubeData(StartDate, EndDate); /// List samples = new List(); foreach(var item in templist) { item.bach_no = $"批号:{item.bach_no}"; tube_input_ext model = new tube_input_ext(); model.qrcode = item.qrcode; model.item_name = item.item_name; model.tube_type = item.tube_type; model.standrad_id = item.standrad_id; model.standrad = item.standrad; model.input_user = item.input_user; model.input_date = item.input_date; model.weight = item.weight; model.tube_count = item.tube_count; model.bach_no = $"批号:{item.bach_no}"; model.IsSelected = false; samples.Add(model); } SampleList = samples; } public bool? IsAllItems1Selected { get { var selected = SampleList.Select(item => item.IsSelected).Distinct().ToList(); return selected.Count == 1 ? selected.Single() : false; } set { if (value.HasValue) { SelectAll(value.Value, SampleList); OnPropertyChanged(); } } } /// /// 选择所有 /// /// /// private static void SelectAll(bool select, IEnumerable models) { foreach (var model in models) { model.IsSelected = select; } } /// /// 选择组内数据 /// /// /// public void SelectGroupData(string bachCode, bool isSelect) { foreach (var item in SampleList.Where(p => p.bach_no == bachCode)) { item.IsSelected = isSelect; } } [RelayCommand] public void FindClick() { GetData(); ListCollectionView view = (ListCollectionView)CollectionViewSource.GetDefaultView(SampleList);//获取数据视图 //分组 view.GroupDescriptions.Add(new PropertyGroupDescription("bach_no")); } [RelayCommand] public void ImportClick() { List samples = new List(); foreach (var tube in SampleList) { if (tube.IsSelected) { samples.Add(tube); } } this.sampleExecViewModel.TubeInputs = samples; CloseAction?.Invoke(true); } /// /// 选中导入项 /// [RelayCommand] public void CheckBoxClick(object groupName) { System.Windows.Controls.CheckBox checkBox = groupName as System.Windows.Controls.CheckBox; if (checkBox != null) { bool select = (bool)checkBox.IsChecked; string code = checkBox.Content.ToString(); SelectGroupData(code, select); } } } }