using InSituLaboratory.Entities; using InSituLaboratory.Entities.SqlSugar; using InSituLaboratory.IService; using InSituLaboratory.IService.Sensor; 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; using System.Windows.Forms; 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(); public CurrentSequentiualModel CurrentSequentiual { get; set; } = new CurrentSequentiualModel(); //当前运行时序状态表 public SequentStatusModel sequentStatusModel { get; set; } = new SequentStatusModel(); #endregion IDialogService _dialogService; ISysSequentialService _sysSequentialService; ISensorService _sensorService; public SequentialDistributionViewModel(IRegionManager regionManager, IDialogService dialogService, ISysSequentialService sysSequentialService, ISensorService sensorService) : base(regionManager) { this.PageTitle = "时序下发"; _dialogService = dialogService; _sysSequentialService = sysSequentialService; _sensorService = sensorService; Refresh(); RefreshS1(); RefreshS2(); RefreshS3(); RefreshS4(); RefreshS5(); } /// /// 页面刷新 /// public override void Refresh() { //获取当前运行时序状态表 var CurrentSequentiualList = _sensorService.GetCurrentSequentiual(); //当前运行时序状态数据 if (CurrentSequentiualList.Count() != 0) { var data = _sensorService.GetCurrentSequentiual().FirstOrDefault(); CurrentSequentiual.Sequentiual1Status = data.Sequentiual1Status; CurrentSequentiual.Sequentiual2Status = data.Sequentiual2Status; CurrentSequentiual.Sequentiual3Status = data.Sequentiual3Status; CurrentSequentiual.Sequentiual4Status = data.Sequentiual4Status; CurrentSequentiual.Sequentiual5Status = data.Sequentiual5Status; } } #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++; } sequentStatusModel.SequentialStartTime1 = data.StartTime; sequentStatusModel.SequentialEndTime1 = data.EndTime; sequentStatusModel.Status1 = data.Status; } } /// /// 编辑或者新增 /// /// public override void DoModifyS1(object model) { if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null) { System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime1; DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime1; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { System.Windows.Forms.MessageBox.Show("时序1: 开始时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate1 < dateTime) { System.Windows.Forms.MessageBox.Show("时序1: 结束时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate >= expirationDate1) { System.Windows.Forms.MessageBox.Show("时序1: 结束时间不得早于开始时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", sequentStatusModel.SequentialStartTime1); ps.Add("sequentialEndTime", sequentStatusModel.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 (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { // 软删除 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); } ///更新时序总表 var data1 = _sysSequentialService.Find((model as SysSequentialDetails).Number); data1.IsDelete = 1; _sysSequentialService.Update(data1); System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.RefreshS1(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } #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.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; sysSequentialDetailsListS2.Add(sysSequentialDetail); num++; } sequentStatusModel.SequentialStartTime2 = data.StartTime; sequentStatusModel.SequentialEndTime2 = data.EndTime; sequentStatusModel.Status2 = data.Status; } } /// /// 编辑或者新增 /// /// public override void DoModifyS2(object model) { if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) { System.Windows.Forms.MessageBox.Show("时序2:开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime2; DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime2; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { System.Windows.Forms.MessageBox.Show("时序2:开始时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate1 < dateTime) { System.Windows.Forms.MessageBox.Show("时序2:结束时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate >= expirationDate1) { System.Windows.Forms.MessageBox.Show("时序2:结束时间不得早于开始时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", sequentStatusModel.SequentialStartTime2); ps.Add("sequentialEndTime", sequentStatusModel.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 (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { // 软删除 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); } System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.RefreshS2(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } #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.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; sysSequentialDetailsListS3.Add(sysSequentialDetail); num++; } sequentStatusModel.SequentialStartTime3 = data.StartTime; sequentStatusModel.SequentialEndTime3 = data.EndTime; sequentStatusModel.Status3 = data.Status; } } /// /// 编辑或者新增 /// /// public override void DoModifyS3(object model) { if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) { System.Windows.Forms.MessageBox.Show("时序3:开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime3; DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime3; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { System.Windows.Forms.MessageBox.Show("时序3:开始时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate1 < dateTime) { System.Windows.Forms.MessageBox.Show("时序3:结束时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate >= expirationDate1) { System.Windows.Forms.MessageBox.Show("时序3:结束时间不得早于开始时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", sequentStatusModel.SequentialStartTime3); ps.Add("sequentialEndTime", sequentStatusModel.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 (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { // 软删除 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); } System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.RefreshS3(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } #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.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; sysSequentialDetailsListS4.Add(sysSequentialDetail); num++; } sequentStatusModel.SequentialStartTime4 = data.StartTime; sequentStatusModel.SequentialEndTime4 = data.EndTime; sequentStatusModel.Status4 = data.Status; } } /// /// 编辑或者新增 /// /// public override void DoModifyS4(object model) { if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) { System.Windows.Forms.MessageBox.Show("时序4:开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime4; DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime4; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { System.Windows.Forms.MessageBox.Show("时序4:开始时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate1 < dateTime) { System.Windows.Forms.MessageBox.Show("时序4:结束时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate >= expirationDate1) { System.Windows.Forms.MessageBox.Show("时序4:结束时间不得早于开始时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", sequentStatusModel.SequentialStartTime4); ps.Add("sequentialEndTime", sequentStatusModel.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 (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { // 软删除 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); } System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.RefreshS4(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } #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.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; sysSequentialDetailsListS5.Add(sysSequentialDetail); num++; } sequentStatusModel.SequentialStartTime5 = data.StartTime; sequentStatusModel.SequentialEndTime5 = data.EndTime; sequentStatusModel.Status5 = data.Status; } } /// /// 编辑或者新增 /// /// public override void DoModifyS5(object model) { if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) { System.Windows.Forms.MessageBox.Show("时序5:开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime5; DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime5; DateTime dateTime = DateTime.Now; if (expirationDate < dateTime) { System.Windows.Forms.MessageBox.Show("时序5:开始时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate1 < dateTime) { System.Windows.Forms.MessageBox.Show("时序5:结束时间不得早于当前时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (expirationDate >= expirationDate1) { System.Windows.Forms.MessageBox.Show("时序5:结束时间不得早于开始时间!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { DialogParameters ps = new DialogParameters(); ps.Add("model", model); ps.Add("sequentialStartTime", sequentStatusModel.SequentialStartTime5); ps.Add("sequentialEndTime", sequentStatusModel.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 (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { // 软删除 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); } System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); this.RefreshS5(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } #endregion } }