using InSituLaboratory.Entities; using InSituLaboratory.IService; using InSituLaboratory.Models; using InSituLaboratory.Service; using Microsoft.EntityFrameworkCore.Query.Internal; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace InSituLaboratory.ViewModels.Pages { public class SequentialDistributionViewModel : ViewModelBase { #region 实体类 public ObservableCollection sysSequentialDetailsListS1 { get; set; } = new ObservableCollection(); public ObservableCollection sysSequentialDetailsListS2 { get; set; } = new ObservableCollection(); public ObservableCollection sysSequentialDetailsListS3 { get; set; } = new ObservableCollection(); public ObservableCollection sysSequentialDetailsListS4 { get; set; } = new ObservableCollection(); public ObservableCollection sysSequentialDetailsListS5 { get; set; } = new ObservableCollection(); /// /// 时序1 开始时间 /// private DateTime? sequentialStartTime1; public DateTime? SequentialStartTime1 { get { return sequentialStartTime1; } set { SetProperty(ref sequentialStartTime1, value); } } /// /// 时序1 结束时间 /// private DateTime? sequentialEndTime1; public DateTime? SequentialEndTime1 { get { return sequentialEndTime1; } set { SetProperty(ref sequentialEndTime1, value); } } /// /// 时序2 开始时间 /// private DateTime? sequentialStartTime2; public DateTime? SequentialStartTime2 { get { return sequentialStartTime2; } set { SetProperty(ref sequentialStartTime2, value); } } /// /// 时序2 结束时间 /// private DateTime? sequentialEndTime2; public DateTime? SequentialEndTime2 { get { return sequentialEndTime2; } set { SetProperty(ref sequentialEndTime2, value); } } /// /// 时序3 开始时间 /// private DateTime? sequentialStartTime3; public DateTime? SequentialStartTime3 { get { return sequentialStartTime3; } set { SetProperty(ref sequentialStartTime3, value); } } /// /// 时序3 结束时间 /// private DateTime? sequentialEndTime3; public DateTime? SequentialEndTime3 { get { return sequentialEndTime3; } set { SetProperty(ref sequentialEndTime3, value); } } /// /// 时序4 开始时间 /// private DateTime? sequentialStartTime4; public DateTime? SequentialStartTime4 { get { return sequentialStartTime4; } set { SetProperty(ref sequentialStartTime4, value); } } /// /// 时序4 结束时间 /// private DateTime? sequentialEndTime4; public DateTime? SequentialEndTime4 { get { return sequentialEndTime4; } set { SetProperty(ref sequentialEndTime4, value); } } /// /// 时序5 开始时间 /// private DateTime? sequentialStartTime5; public DateTime? SequentialStartTime5 { get { return sequentialStartTime5; } set { SetProperty(ref sequentialStartTime5, value); } } /// /// 时序5 结束时间 /// private DateTime? sequentialEndTime5; public DateTime? SequentialEndTime5 { get { return sequentialEndTime5; } set { SetProperty(ref sequentialEndTime5, value); } } #endregion IDialogService _dialogService; ISysSequentialService _sysSequentialService; public SequentialDistributionViewModel(IRegionManager regionManager, IDialogService dialogService, ISysSequentialService sysSequentialService) : base(regionManager) { this.PageTitle = "时序下发"; _dialogService = dialogService; _sysSequentialService = sysSequentialService; RefreshS1(); RefreshS2(); RefreshS3(); RefreshS4(); RefreshS5(); } #region 时序 1 public override void RefreshS1() { int num = 1; SearchKey = "时序1"; sysSequentialDetailsListS1.Clear(); var list = _sysSequentialService.GetSequentials(SearchKey).ToList(); if (list.Count != 0) { var data = _sysSequentialService.GetSequentials(SearchKey).First(); var dataDetails = _sysSequentialService.GetSequentialDetails(data.Number).ToList(); foreach (var item in dataDetails) { SysSequentialDetails sysSequentialDetail = new SysSequentialDetails(); sysSequentialDetail.Number = item.Number; sysSequentialDetail.DurationTime = item.DurationTime; sysSequentialDetail.SensorID = item.SensorID; sysSequentialDetail.WorkTime = item.WorkTime; sysSequentialDetail.SequenceGroup = item.SequenceGroup; sysSequentialDetail.CreateTime = item.CreateTime; sysSequentialDetail.Sequential = item.Sequential; sysSequentialDetail.SysSquentialID = item.SysSquentialID; sysSequentialDetail.IsDelete = item.IsDelete; sysSequentialDetail.num = num; sysSequentialDetailsListS1.Add(sysSequentialDetail); num++; } SequentialStartTime1 = data.StartTime; SequentialEndTime1 = data.EndTime; } } /// /// 编辑或者新增 /// /// public override void DoModifyS1(object model) { if (SequentialStartTime1 == null || SequentialEndTime1 == null) { MessageBox.Show("时序1:开始时间和结束时间不能为空!", "提示"); } else { DateTime expirationDate = (DateTime)SequentialStartTime1; DateTime expirationDate1 = (DateTime)SequentialEndTime1; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { MessageBox.Show("时序1:开始时间不得早于当前时间!", "提示"); } else if (expirationDate1 < dateTime) { MessageBox.Show("时序1:结束时间不得早于当前时间!", "提示"); } else if (expirationDate >= expirationDate1) { MessageBox.Show("时序1:结束时间不得早于开始时间!", "提示"); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", SequentialStartTime1); ps.Add("sequentialEndTime", SequentialEndTime1); ps.Add("kind", "时序1"); _dialogService.ShowDialog("ModifySequentialView", ps, result => { // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 if (result.Result == ButtonResult.OK) { this.RefreshS1(); } }); } } } /// /// 删除 /// /// public override void DoDeleteS1(object model) { try { if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // 软删除 var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); data.IsDelete = 1; _sysSequentialService.Update(data); //查询删除后子表是否还存在时序配置 var list = _sysSequentialService.GetSequentialDetails(data.SysSquentialID).ToList(); //若子表不存在当前时序下配置信息,则删除对应的母表时序 if (list.Count() == 0) { var SysSequential = _sysSequentialService.Find(data.SysSquentialID); SysSequential.IsDelete = 1; _sysSequentialService.Update(SysSequential); } MessageBox.Show("删除完成!", "提示"); this.RefreshS1(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion #region 时序 2 public override void RefreshS2() { int num = 1; SearchKey = "时序2"; sysSequentialDetailsListS2.Clear(); var list = _sysSequentialService.GetSequentials(SearchKey).ToList(); if (list.Count != 0) { var data = _sysSequentialService.GetSequentials(SearchKey).First(); var dataDetails = _sysSequentialService.GetSequentialDetails(data.Number).ToList(); foreach (var item in dataDetails) { SysSequentialDetails sysSequentialDetail = new SysSequentialDetails(); sysSequentialDetail.Number = item.Number; sysSequentialDetail.DurationTime = item.DurationTime; sysSequentialDetail.SensorID = item.SensorID; sysSequentialDetail.CreateTime = item.CreateTime; sysSequentialDetail.Sequential = item.Sequential; sysSequentialDetail.SysSquentialID = item.SysSquentialID; sysSequentialDetail.IsDelete = item.IsDelete; sysSequentialDetail.num = num; sysSequentialDetailsListS2.Add(sysSequentialDetail); num++; } SequentialStartTime2 = data.StartTime; SequentialEndTime2 = data.EndTime; } } /// /// 编辑或者新增 /// /// public override void DoModifyS2(object model) { if (SequentialStartTime2 == null || SequentialEndTime2 == null) { MessageBox.Show("时序2:开始时间和结束时间不能为空!", "提示"); } else { DateTime expirationDate = (DateTime)SequentialStartTime2; DateTime expirationDate1 = (DateTime)SequentialEndTime2; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { MessageBox.Show("时序2:开始时间不得早于当前时间!", "提示"); } else if (expirationDate1 < dateTime) { MessageBox.Show("时序2:结束时间不得早于当前时间!", "提示"); } else if (expirationDate >= expirationDate1) { MessageBox.Show("时序2:结束时间不得早于开始时间!", "提示"); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", SequentialStartTime2); ps.Add("sequentialEndTime", SequentialEndTime2); ps.Add("kind", "时序2"); _dialogService.ShowDialog("ModifySequentialView", ps, result => { // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 if (result.Result == ButtonResult.OK) { this.RefreshS2(); } }); } } } /// /// 删除 /// /// public override void DoDeleteS2(object model) { try { if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // 软删除 var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); data.IsDelete = 1; _sysSequentialService.Update(data); //查询删除后子表是否还存在时序配置 var list = _sysSequentialService.GetSequentialDetails(data.SysSquentialID).ToList(); //若子表不存在当前时序下配置信息,则删除对应的母表时序 if (list.Count() == 0) { var SysSequential = _sysSequentialService.Find(data.SysSquentialID); SysSequential.IsDelete = 1; _sysSequentialService.Update(SysSequential); } MessageBox.Show("删除完成!", "提示"); this.RefreshS2(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion #region 时序 3 public override void RefreshS3() { int num = 1; SearchKey = "时序3"; sysSequentialDetailsListS3.Clear(); var list = _sysSequentialService.GetSequentials(SearchKey).ToList(); if (list.Count != 0) { var data = _sysSequentialService.GetSequentials(SearchKey).First(); var dataDetails = _sysSequentialService.GetSequentialDetails(data.Number).ToList(); foreach (var item in dataDetails) { SysSequentialDetails sysSequentialDetail = new SysSequentialDetails(); sysSequentialDetail.Number = item.Number; sysSequentialDetail.DurationTime = item.DurationTime; sysSequentialDetail.SensorID = item.SensorID; sysSequentialDetail.CreateTime = item.CreateTime; sysSequentialDetail.Sequential = item.Sequential; sysSequentialDetail.SysSquentialID = item.SysSquentialID; sysSequentialDetail.IsDelete = item.IsDelete; sysSequentialDetail.num = num; sysSequentialDetailsListS3.Add(sysSequentialDetail); num++; } SequentialStartTime3 = data.StartTime; SequentialEndTime3 = data.EndTime; } } /// /// 编辑或者新增 /// /// public override void DoModifyS3(object model) { if (SequentialStartTime3 == null || SequentialEndTime3 == null) { MessageBox.Show("时序3:开始时间和结束时间不能为空!", "提示"); } else { DateTime expirationDate = (DateTime)SequentialStartTime3; DateTime expirationDate1 = (DateTime)SequentialEndTime3; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { MessageBox.Show("时序3:开始时间不得早于当前时间!", "提示"); } else if (expirationDate1 < dateTime) { MessageBox.Show("时序3:结束时间不得早于当前时间!", "提示"); } else if (expirationDate >= expirationDate1) { MessageBox.Show("时序3:结束时间不得早于开始时间!", "提示"); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", SequentialStartTime3); ps.Add("sequentialEndTime", SequentialEndTime3); ps.Add("kind", "时序3"); _dialogService.ShowDialog("ModifySequentialView", ps, result => { // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 if (result.Result == ButtonResult.OK) { this.RefreshS3(); } }); } } } /// /// 删除 /// /// public override void DoDeleteS3(object model) { try { if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // 软删除 var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); data.IsDelete = 1; _sysSequentialService.Update(data); //查询删除后子表是否还存在时序配置 var list = _sysSequentialService.GetSequentialDetails(data.SysSquentialID).ToList(); //若子表不存在当前时序下配置信息,则删除对应的母表时序 if (list.Count() == 0) { var SysSequential = _sysSequentialService.Find(data.SysSquentialID); SysSequential.IsDelete = 1; _sysSequentialService.Update(SysSequential); } MessageBox.Show("删除完成!", "提示"); this.RefreshS3(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion #region 时序 4 public override void RefreshS4() { int num = 1; SearchKey = "时序4"; sysSequentialDetailsListS4.Clear(); var list = _sysSequentialService.GetSequentials(SearchKey).ToList(); if (list.Count != 0) { var data = _sysSequentialService.GetSequentials(SearchKey).First(); var dataDetails = _sysSequentialService.GetSequentialDetails(data.Number).ToList(); foreach (var item in dataDetails) { SysSequentialDetails sysSequentialDetail = new SysSequentialDetails(); sysSequentialDetail.Number = item.Number; sysSequentialDetail.DurationTime = item.DurationTime; sysSequentialDetail.SensorID = item.SensorID; sysSequentialDetail.CreateTime = item.CreateTime; sysSequentialDetail.Sequential = item.Sequential; sysSequentialDetail.SysSquentialID = item.SysSquentialID; sysSequentialDetail.IsDelete = item.IsDelete; sysSequentialDetail.num = num; sysSequentialDetailsListS4.Add(sysSequentialDetail); num++; } SequentialStartTime4 = data.StartTime; SequentialEndTime4 = data.EndTime; } } /// /// 编辑或者新增 /// /// public override void DoModifyS4(object model) { if (SequentialStartTime4 == null || SequentialEndTime4 == null) { MessageBox.Show("时序4:开始时间和结束时间不能为空!", "提示"); } else { DateTime expirationDate = (DateTime)SequentialStartTime4; DateTime expirationDate1 = (DateTime)SequentialEndTime4; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { MessageBox.Show("时序4:开始时间不得早于当前时间!", "提示"); } else if (expirationDate1 < dateTime) { MessageBox.Show("时序4:结束时间不得早于当前时间!", "提示"); } else if (expirationDate >= expirationDate1) { MessageBox.Show("时序4:结束时间不得早于开始时间!", "提示"); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", SequentialStartTime4); ps.Add("sequentialEndTime", SequentialEndTime4); ps.Add("kind", "时序4"); _dialogService.ShowDialog("ModifySequentialView", ps, result => { // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 if (result.Result == ButtonResult.OK) { this.RefreshS4(); } }); } } } /// /// 删除 /// /// public override void DoDeleteS4(object model) { try { if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // 软删除 var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); data.IsDelete = 1; _sysSequentialService.Update(data); //查询删除后子表是否还存在时序配置 var list = _sysSequentialService.GetSequentialDetails(data.SysSquentialID).ToList(); //若子表不存在当前时序下配置信息,则删除对应的母表时序 if (list.Count() == 0) { var SysSequential = _sysSequentialService.Find(data.SysSquentialID); SysSequential.IsDelete = 1; _sysSequentialService.Update(SysSequential); } MessageBox.Show("删除完成!", "提示"); this.RefreshS4(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion #region 时序 5 public override void RefreshS5() { int num = 1; SearchKey = "时序5"; sysSequentialDetailsListS5.Clear(); var list = _sysSequentialService.GetSequentials(SearchKey).ToList(); if (list.Count != 0) { var data = _sysSequentialService.GetSequentials(SearchKey).First(); var dataDetails = _sysSequentialService.GetSequentialDetails(data.Number).ToList(); foreach (var item in dataDetails) { SysSequentialDetails sysSequentialDetail = new SysSequentialDetails(); sysSequentialDetail.Number = item.Number; sysSequentialDetail.DurationTime = item.DurationTime; sysSequentialDetail.SensorID = item.SensorID; sysSequentialDetail.CreateTime = item.CreateTime; sysSequentialDetail.Sequential = item.Sequential; sysSequentialDetail.SysSquentialID = item.SysSquentialID; sysSequentialDetail.IsDelete = item.IsDelete; sysSequentialDetail.num = num; sysSequentialDetailsListS5.Add(sysSequentialDetail); num++; } SequentialStartTime5 = data.StartTime; SequentialEndTime5 = data.EndTime; } } /// /// 编辑或者新增 /// /// public override void DoModifyS5(object model) { if (SequentialStartTime5 == null || SequentialEndTime5 == null) { MessageBox.Show("时序5:开始时间和结束时间不能为空!", "提示"); } else { DateTime expirationDate = (DateTime)SequentialStartTime5; DateTime expirationDate1 = (DateTime)SequentialEndTime5; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { MessageBox.Show("时序5:开始时间不得早于当前时间!", "提示"); } else if (expirationDate1 < dateTime) { MessageBox.Show("时序5:结束时间不得早于当前时间!", "提示"); } else if (expirationDate >= expirationDate1) { MessageBox.Show("时序5:结束时间不得早于开始时间!", "提示"); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", SequentialStartTime5); ps.Add("sequentialEndTime", SequentialEndTime5); ps.Add("kind", "时序5"); _dialogService.ShowDialog("ModifySequentialView", ps, result => { // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 if (result.Result == ButtonResult.OK) { this.RefreshS5(); } }); } } } /// /// 删除 /// /// public override void DoDeleteS5(object model) { try { if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // 软删除 var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); data.IsDelete = 1; _sysSequentialService.Update(data); //查询删除后子表是否还存在时序配置 var list = _sysSequentialService.GetSequentialDetails(data.SysSquentialID).ToList(); //若子表不存在当前时序下配置信息,则删除对应的母表时序 if (list.Count() == 0) { var SysSequential = _sysSequentialService.Find(data.SysSquentialID); SysSequential.IsDelete = 1; _sysSequentialService.Update(SysSequential); } MessageBox.Show("删除完成!", "提示"); this.RefreshS5(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); } } #endregion } }