diff --git a/InSituLaboratory.Entities/SysDevice.cs b/InSituLaboratory.Entities/SysDevice.cs index 7eb9f63..2840379 100644 --- a/InSituLaboratory.Entities/SysDevice.cs +++ b/InSituLaboratory.Entities/SysDevice.cs @@ -33,6 +33,11 @@ namespace InSituLaboratory.Entities /// public string? WorkTime { get; set; } + /// + /// 最小工作时长 + /// + public string? MinWorkTime { get; set; } + } } diff --git a/InSituLaboratory.Entities/SysSequentialDetails.cs b/InSituLaboratory.Entities/SysSequentialDetails.cs index ce0caf3..2e08529 100644 --- a/InSituLaboratory.Entities/SysSequentialDetails.cs +++ b/InSituLaboratory.Entities/SysSequentialDetails.cs @@ -40,13 +40,13 @@ namespace InSituLaboratory.Entities /// 工作时长 /// - public string? WorkTime { get; set; } + public float? WorkTime { get; set; } /// /// 循环时长 /// - public string? DurationTime { get; set; } + public float? DurationTime { get; set; } ///// /// 创建时间 diff --git a/InSituLaboratory.Entities/SysSequentialTotal.cs b/InSituLaboratory.Entities/SysSequentialTotal.cs index 10d17e7..0a27b79 100644 --- a/InSituLaboratory.Entities/SysSequentialTotal.cs +++ b/InSituLaboratory.Entities/SysSequentialTotal.cs @@ -46,13 +46,13 @@ namespace InSituLaboratory.Entities /// 工作时长 /// - public string? WorkTime { get; set; } + public float? WorkTime { get; set; } /// /// 循环时长 /// - public string? DurationTime { get; set; } + public float? DurationTime { get; set; } /// /// 创建时间 diff --git a/InSituLaboratory.Entities/tools.cs b/InSituLaboratory.Entities/tools.cs index ccf17a0..bebb908 100644 --- a/InSituLaboratory.Entities/tools.cs +++ b/InSituLaboratory.Entities/tools.cs @@ -672,7 +672,29 @@ namespace InSituLaboratory.Entities } #endregion + #region byte数组按长度在前面补0 + /// + /// byte数组按长度在前面补0 + /// + /// + /// + /// + /// + /// + public static byte[] PadArrayWithZeros(byte[] array, int targetLength) + { + if (array == null) + throw new ArgumentNullException(nameof(array)); + if (targetLength <= 0) + throw new ArgumentOutOfRangeException(nameof(targetLength), "Target length must be a positive integer."); + if (targetLength <= array.Length) + return array; // No need to pad + byte[] paddedArray = new byte[targetLength]; + Array.Copy(array, 0, paddedArray, targetLength - array.Length, array.Length); + return paddedArray; + } + #endregion #region CRC-8 x8+x5+x4+1 0x31(0x131) /// diff --git a/InSituLaboratory.IService/IDeviceSvice.cs b/InSituLaboratory.IService/IDeviceSvice.cs index 7546365..ee58877 100644 --- a/InSituLaboratory.IService/IDeviceSvice.cs +++ b/InSituLaboratory.IService/IDeviceSvice.cs @@ -23,5 +23,13 @@ namespace InSituLaboratory.IService string GetDeviceByDeviceName(string DeviceName); + + /// + /// 根据设备名称获取设备预设工作时长 + /// + /// + /// + string GetDeviceByDeviceNameMinTime(string DeviceName); + } } diff --git a/InSituLaboratory.Service/DeviceService.cs b/InSituLaboratory.Service/DeviceService.cs index b9989f1..5358d70 100644 --- a/InSituLaboratory.Service/DeviceService.cs +++ b/InSituLaboratory.Service/DeviceService.cs @@ -38,5 +38,24 @@ namespace InSituLaboratory.Service return workTime; } + + + /// + /// 根据设备名称查询预设最小工作时长 + /// + /// + /// + public string GetDeviceByDeviceNameMinTime(string DeviceName) + { + var workTime = ""; + var sysDevice = this.Query(m => m.DeviceName == DeviceName).ToList(); + + foreach (var item in sysDevice) + { + workTime = item.MinWorkTime; + } + + return workTime; + } } } diff --git a/InSituLaboratory.Service/SysSequentialService.cs b/InSituLaboratory.Service/SysSequentialService.cs index 2d1a16b..02d3126 100644 --- a/InSituLaboratory.Service/SysSequentialService.cs +++ b/InSituLaboratory.Service/SysSequentialService.cs @@ -20,7 +20,7 @@ namespace InSituLaboratory.Service /// public IEnumerable GetSequentials(string key) { - return this.Set().Where(m => m.Sequential == key && m.IsDelete == 0).OrderByDescending(n => n.CreateTime); + return this.Set().Where(m => m.Sequential == key && m.IsDelete == 0).OrderByDescending(n => n.CreateTime).AsNoTracking(); } /// /// 获取时序子表数据 @@ -30,7 +30,7 @@ namespace InSituLaboratory.Service public IEnumerable GetSequentialDetails(int key) { - return this.Set().Where(m => m.SysSquentialID == key && m.IsDelete == 0).OrderBy(n => n.SequenceGroup).ThenBy(m => m.CreateTime); + return this.Set().Where(m => m.SysSquentialID == key && m.IsDelete == 0).OrderBy(n => n.SequenceGroup).ThenBy(m => m.CreateTime).AsNoTracking(); } /// @@ -41,7 +41,7 @@ namespace InSituLaboratory.Service public IEnumerable GetSequentialDetailList(int key) { - return this.Set().Where(m => m.Number == key && m.IsDelete == 0); + return this.Set().Where(m => m.Number == key && m.IsDelete == 0).AsNoTracking(); } diff --git a/InSituLaboratory/ViewModels/Pages/Dialogs/ModifySequentialViewModel.cs b/InSituLaboratory/ViewModels/Pages/Dialogs/ModifySequentialViewModel.cs index 36a7b86..d56d2cc 100644 --- a/InSituLaboratory/ViewModels/Pages/Dialogs/ModifySequentialViewModel.cs +++ b/InSituLaboratory/ViewModels/Pages/Dialogs/ModifySequentialViewModel.cs @@ -30,8 +30,10 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs public SysSequentialDetails SysSequentialdata { get; set; } public string? workTime { get; set; } + public string? minworkTime { get; set; } public long? workInt { get; set; } + public long? minworkInt { get; set; } /// /// 记录编辑时第一次带入的设备名称 @@ -88,12 +90,12 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs } - private string _workTime; + private float? _workTime; /// /// 工作时长 /// - public string WorkTime + public float? WorkTime { get { return _workTime; } set @@ -103,12 +105,12 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs } - private string _durationTime; + private float? _durationTime; /// /// 循环时长 /// - public string DurationTime + public float? DurationTime { get { return _durationTime; } set @@ -176,12 +178,12 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs System.Windows.Forms.MessageBox.Show("传感器设备不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } - else if (string.IsNullOrEmpty(WorkTime)) + else if (WorkTime == null || WorkTime == 0) { System.Windows.Forms.MessageBox.Show("工作时长不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } - else if (string.IsNullOrEmpty(DurationTime)) + else if (DurationTime == null || DurationTime == 0) { System.Windows.Forms.MessageBox.Show("循环时长不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; @@ -203,7 +205,7 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs { foreach (var item in selectFirst) { - System.Windows.Forms.MessageBox.Show(kind + "- 配置" + item.SequenceGroup + "中,已配置" + SensorID + "!!!"+" 请重新配置。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.MessageBox.Show(kind + "- 配置" + item.SequenceGroup + "中,已配置" + SensorID + "!!!" + " 请重新配置。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } @@ -232,7 +234,7 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs { if (DurationTime != SysSequentialdata1.DurationTime) { - System.Windows.Forms.MessageBox.Show(kind + "- 配置" + SequenceGroup + " 已存在循环时长:" + SysSequentialdata1.DurationTime + "s" + ",无法修改", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Windows.Forms.MessageBox.Show(kind + "- 配置" + SequenceGroup + " 已存在循环时长:" + SysSequentialdata1.DurationTime + "分钟" + ",无法修改", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } } @@ -241,38 +243,78 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs ///工作时长是否已超过传感器预设时间 workTime = _deviceSvice.GetDeviceByDeviceName(SensorID); + minworkTime = _deviceSvice.GetDeviceByDeviceNameMinTime(SensorID); if (workTime == "无") { workTime = "0"; } - workInt = Convert.ToInt64(workTime); + if (minworkTime == "无") + { + minworkTime = "0"; + } + workInt = Convert.ToInt64(workTime); //设备预设最大工作时长 + minworkInt = Convert.ToInt64(minworkTime);//设备预设最小工作时长 switch (SensorID) { case "气相色谱仪": if (Convert.ToInt64(WorkTime) > workInt) { - System.Windows.Forms.MessageBox.Show(SensorID + "设置的工作时长:" + WorkTime + "h"+ ",已超过设备最大工作时长:" + workTime + "h" +"\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",已超过设备最大工作时长:" + workTime + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + else if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } break; case "质谱仪": if (Convert.ToInt64(WorkTime) > workInt) { - System.Windows.Forms.MessageBox.Show(SensorID + "设置的工作时长:" + WorkTime + "h"+ ",已超过设备最大工作时长:" + workTime + "h" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",已超过设备最大工作时长:" + workTime + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + else if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } break; case "二氧化碳同位素分析仪": if (Convert.ToInt64(WorkTime) > workInt) { - System.Windows.Forms.MessageBox.Show(SensorID + "设置的工作时长:" + WorkTime + "h"+ ",已超过设备最大工作时长:" + workTime + "h" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",已超过设备最大工作时长:" + workTime + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + else if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } break; - case "甲烷同位素分析仪": + case "甲烷传感器": if (Convert.ToInt64(WorkTime) > workInt) { - System.Windows.Forms.MessageBox.Show(SensorID + "设置的工作时长:" + WorkTime + "h" + ",已超过设备最大工作时长:" + workTime + "h" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + "超过设备最大工作时长:" + workTime + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + else if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + break; + case "显微拉曼分析仪": + if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + return; + } + break; + case "色质联用": + if (Convert.ToInt64(WorkTime) < minworkInt) + { + System.Windows.Forms.MessageBox.Show("您填写的" + SensorID + "设置的工作时长:" + WorkTime + "分钟" + ",未能达到设备最小工作时长:" + minworkInt + "分钟" + "\n 请修改您填写的设备工作时长后重试!!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } break; diff --git a/InSituLaboratory/ViewModels/Pages/SequentialDistributionViewModel.cs b/InSituLaboratory/ViewModels/Pages/SequentialDistributionViewModel.cs index ab5393f..440e5e0 100644 --- a/InSituLaboratory/ViewModels/Pages/SequentialDistributionViewModel.cs +++ b/InSituLaboratory/ViewModels/Pages/SequentialDistributionViewModel.cs @@ -13,6 +13,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Forms; @@ -31,6 +32,8 @@ namespace InSituLaboratory.ViewModels.Pages public ObservableCollection sysSequentialDetailsListS5 { get; set; } = new ObservableCollection(); public CurrentSequentiualModel CurrentSequentiual { get; set; } = new CurrentSequentiualModel(); //当前运行时序状态表 public SequentStatusModel sequentStatusModel { get; set; } = new SequentStatusModel(); + + System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$"); #endregion IDialogService _dialogService; @@ -231,7 +234,7 @@ namespace InSituLaboratory.ViewModels.Pages { status += item.Status; } - if (status == "已生成未下发") + if (status != "已下发") { if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { @@ -356,41 +359,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void ClearS1() { - if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //清空并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x01, 0x03); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //清空且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x01, 0x04); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS1(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - DateTime startTime = (DateTime)sequentStatusModel.SequentialStartTime1; - DateTime endTime = (DateTime)sequentStatusModel.SequentialEndTime1; - - System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); - - //清空并等待当前工作设备工作完最短周期 - if (s1 == System.Windows.Forms.DialogResult.Yes) - { - dosend(0x01, 0x03); - //更新时序母表及时序总表状态字段 - UpdateData(startTime, endTime, "时序1", "已清空并等待"); - } - //清空且关闭该时序所有设备 - else if (s1 == System.Windows.Forms.DialogResult.No) - { - dosend(0x01, 0x04); - //更新时序母表及时序总表状态字段 - UpdateData(startTime, endTime, "时序1", "已清空并关闭"); - } - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - this.RefreshS1(); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + } /// @@ -398,27 +389,15 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void BeginS1() { - if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + dosend(0x01, 0x05); + System.Windows.Forms.MessageBox.Show("时序启动命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + this.RefreshS1(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - DateTime startTime = (DateTime)sequentStatusModel.SequentialStartTime1; - DateTime endTime = (DateTime)sequentStatusModel.SequentialEndTime1; - dosend(0x01, 0x05); - - //更新时序母表及时序总表状态字段 - UpdateData(startTime, endTime, "时序1", "已启动"); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - this.RefreshS1(); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -427,40 +406,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void SuspendS1() { - if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null) + + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //暂停并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x01, 0x07); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //暂停且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x01, 0x08); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS1(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - DateTime startTime = (DateTime)sequentStatusModel.SequentialStartTime1; - DateTime endTime = (DateTime)sequentStatusModel.SequentialEndTime1; - - System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); - - //暂停并等待当前工作设备工作完最短周期 - if (s1 == System.Windows.Forms.DialogResult.Yes) - { - dosend(0x01, 0x07); - //更新时序母表及时序总表状态字段 - UpdateData(startTime, endTime, "时序1", "已暂停并等待"); - } - //暂停且关闭该时序所有设备 - else if (s1 == System.Windows.Forms.DialogResult.No) - { - dosend(0x01, 0x08); - //更新时序母表及时序总表状态字段 - UpdateData(startTime, endTime, "时序1", "已暂停并关闭"); - } - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - this.RefreshS1(); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion @@ -506,45 +474,103 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void DoModifyS2(object model) { - if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) + try { - 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) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime2 && m.EndTime == sequentStatusModel.SequentialEndTime2 && m.IsDelete == 0 && m.Sequential == "时序2").ToList(); + if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) { - 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); + throw new Exception("时序2: 开始时间和结束时间不能为空!"); } 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 => + if (datalist1.Count() != 0) { - // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 - if (result.Result == ButtonResult.OK) + foreach (var item in datalist1) { - this.RefreshS2(); + status = item.Status; } - }); + if (status == "已生成未下发") + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime2; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime2; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序2: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序2: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序2: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } + else + { + throw new Exception("当前时序已下发!!! \n 若要设置新的时序,您可以修改时序的开始时间和结束时间即可!"); + } + } + else + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime2; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime2; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序2: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序2: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序2: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } } } + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } } @@ -556,25 +582,43 @@ namespace InSituLaboratory.ViewModels.Pages { try { - if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime2 && m.EndTime == sequentStatusModel.SequentialEndTime2 && m.IsDelete == 0 && m.Sequential == "时序2").ToList(); + foreach (var item in datalist1) { - // 软删除 - 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) + status += item.Status; + } + if (status != "已下发") + { + if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { - var SysSequential = _sysSequentialService.Find(data.SysSquentialID); - SysSequential.IsDelete = 1; - _sysSequentialService.Update(SysSequential); - } + // 软删除 + var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); + data.IsDelete = 1; + _sysSequentialService.Update(data); - System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - this.RefreshS2(); + //查询删除后子表是否还存在时序配置 + 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.RefreshS2(); + } + } + else + { + System.Windows.Forms.MessageBox.Show(" 当前时序已下发!!! \n 无法删除!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) @@ -584,27 +628,35 @@ namespace InSituLaboratory.ViewModels.Pages } + /// /// 时序清空 /// public override void ClearS2() { - if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //清空并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x02, 0x03); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //清空且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x02, 0x04); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS2(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x02, 0x02); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + } /// @@ -612,21 +664,15 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void BeginS2() { - if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + dosend(0x02, 0x05); + System.Windows.Forms.MessageBox.Show("时序启动命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + this.RefreshS2(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x02, 0x03); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -635,23 +681,32 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void SuspendS2() { - if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null) + + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //暂停并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x02, 0x07); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //暂停且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x02, 0x08); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS2(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x02, 0x04); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } + #endregion #region 时序 3 @@ -695,45 +750,103 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void DoModifyS3(object model) { - if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) + try { - 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) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime3 && m.EndTime == sequentStatusModel.SequentialEndTime3 && m.IsDelete == 0 && m.Sequential == "时序3").ToList(); + if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) { - 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); + throw new Exception("时序3: 开始时间和结束时间不能为空!"); } 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 => + if (datalist1.Count() != 0) { - // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 - if (result.Result == ButtonResult.OK) + foreach (var item in datalist1) { - this.RefreshS3(); + status = item.Status; } - }); + if (status == "已生成未下发") + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime3; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime3; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序3: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序3: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序3: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } + else + { + throw new Exception("当前时序已下发!!! \n 若要设置新的时序,您可以修改时序的开始时间和结束时间即可!"); + } + } + else + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime3; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime3; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序3: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序3: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序3: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } } } + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } } @@ -745,25 +858,43 @@ namespace InSituLaboratory.ViewModels.Pages { try { - if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime3 && m.EndTime == sequentStatusModel.SequentialEndTime3 && m.IsDelete == 0 && m.Sequential == "时序3").ToList(); + foreach (var item in datalist1) { - // 软删除 - 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) + status += item.Status; + } + if (status != "已下发") + { + if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { - var SysSequential = _sysSequentialService.Find(data.SysSquentialID); - SysSequential.IsDelete = 1; - _sysSequentialService.Update(SysSequential); - } + // 软删除 + var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); + data.IsDelete = 1; + _sysSequentialService.Update(data); - System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - this.RefreshS3(); + //查询删除后子表是否还存在时序配置 + 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.RefreshS3(); + } + } + else + { + System.Windows.Forms.MessageBox.Show(" 当前时序已下发!!! \n 无法删除!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) @@ -778,22 +909,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void ClearS3() { - if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //清空并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x03, 0x03); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //清空且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x03, 0x04); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS3(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x03, 0x02); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + } /// @@ -801,21 +939,15 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void BeginS3() { - if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + dosend(0x03, 0x05); + System.Windows.Forms.MessageBox.Show("时序启动命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + this.RefreshS3(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x03, 0x03); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -824,21 +956,28 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void SuspendS3() { - if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //暂停并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x03, 0x07); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //暂停且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x03, 0x08); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS3(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x03, 0x04); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion @@ -884,45 +1023,103 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void DoModifyS4(object model) { - if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) + try { - 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) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime4 && m.EndTime == sequentStatusModel.SequentialEndTime4 && m.IsDelete == 0 && m.Sequential == "时序4").ToList(); + if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) { - 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); + throw new Exception("时序4: 开始时间和结束时间不能为空!"); } 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 => + if (datalist1.Count() != 0) { - // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 - if (result.Result == ButtonResult.OK) + foreach (var item in datalist1) { - this.RefreshS4(); + status = item.Status; } - }); + if (status == "已生成未下发") + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime4; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime4; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序4: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序4: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序4: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } + else + { + throw new Exception("当前时序已下发!!! \n 若要设置新的时序,您可以修改时序的开始时间和结束时间即可!"); + } + } + else + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime4; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime4; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序4: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序4: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序4: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } } } + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } } @@ -934,25 +1131,43 @@ namespace InSituLaboratory.ViewModels.Pages { try { - if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime4 && m.EndTime == sequentStatusModel.SequentialEndTime4 && m.IsDelete == 0 && m.Sequential == "时序4").ToList(); + foreach (var item in datalist1) { - // 软删除 - 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) + status += item.Status; + } + if (status != "已下发") + { + if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { - var SysSequential = _sysSequentialService.Find(data.SysSquentialID); - SysSequential.IsDelete = 1; - _sysSequentialService.Update(SysSequential); - } + // 软删除 + var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); + data.IsDelete = 1; + _sysSequentialService.Update(data); - System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - this.RefreshS4(); + //查询删除后子表是否还存在时序配置 + 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.RefreshS4(); + } + } + else + { + System.Windows.Forms.MessageBox.Show(" 当前时序已下发!!! \n 无法删除!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) @@ -967,22 +1182,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void ClearS4() { - if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //清空并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x04, 0x03); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //清空且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x04, 0x04); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS4(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x04, 0x02); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + } /// @@ -990,21 +1212,15 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void BeginS4() { - if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + dosend(0x04, 0x05); + System.Windows.Forms.MessageBox.Show("时序启动命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + this.RefreshS4(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x04, 0x03); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -1013,21 +1229,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void SuspendS4() { - if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null) + + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //暂停并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x04, 0x07); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //暂停且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x04, 0x08); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS4(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x04, 0x04); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion @@ -1073,45 +1297,103 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void DoModifyS5(object model) { - if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) + try { - 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) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime5 && m.EndTime == sequentStatusModel.SequentialEndTime5 && m.IsDelete == 0 && m.Sequential == "时序5").ToList(); + if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) { - 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); + throw new Exception("时序5: 开始时间和结束时间不能为空!"); } 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 => + if (datalist1.Count() != 0) { - // 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管 - if (result.Result == ButtonResult.OK) + foreach (var item in datalist1) { - this.RefreshS5(); + status = item.Status; } - }); + if (status == "已生成未下发") + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime5; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime5; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序5: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序5: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序5: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } + else + { + throw new Exception("当前时序已下发!!! \n 若要设置新的时序,您可以修改时序的开始时间和结束时间即可!"); + } + } + else + { + DateTime expirationDate = (DateTime)sequentStatusModel.SequentialStartTime5; + DateTime expirationDate1 = (DateTime)sequentStatusModel.SequentialEndTime5; + DateTime dateTime = DateTime.Now; + + if (expirationDate < dateTime) + { + throw new Exception("时序5: 开始时间不得早于当前时间!"); + } + else if (expirationDate1 < dateTime) + { + throw new Exception("时序5: 结束时间不得早于当前时间!"); + } + else if (expirationDate >= expirationDate1) + { + throw new Exception("时序5: 结束时间不得早于开始时间!"); + } + 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(); + } + }); + } + } } } + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } } @@ -1123,25 +1405,43 @@ namespace InSituLaboratory.ViewModels.Pages { try { - if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) + var status = ""; + var datalist1 = _sysSequentialService.Query(m => m.StartTime == sequentStatusModel.SequentialStartTime5 && m.EndTime == sequentStatusModel.SequentialEndTime5 && m.IsDelete == 0 && m.Sequential == "时序5").ToList(); + foreach (var item in datalist1) { - // 软删除 - 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) + status += item.Status; + } + if (status != "已下发") + { + if (System.Windows.Forms.MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { - var SysSequential = _sysSequentialService.Find(data.SysSquentialID); - SysSequential.IsDelete = 1; - _sysSequentialService.Update(SysSequential); - } + // 软删除 + var data = _sysSequentialService.Find((model as SysSequentialDetails).Number); + data.IsDelete = 1; + _sysSequentialService.Update(data); - System.Windows.Forms.MessageBox.Show("删除完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - this.RefreshS5(); + //查询删除后子表是否还存在时序配置 + 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.RefreshS5(); + } + } + else + { + System.Windows.Forms.MessageBox.Show(" 当前时序已下发!!! \n 无法删除!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception ex) @@ -1156,22 +1456,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void ClearS5() { - if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否清空并等待当前工作设备工作完最短周期? \n若选择否,则清空且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //清空并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x05, 0x03); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //清空且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x05, 0x04); + System.Windows.Forms.MessageBox.Show("时序清空命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS5(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x05, 0x02); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + } /// @@ -1179,21 +1486,15 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void BeginS5() { - if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + dosend(0x05, 0x05); + System.Windows.Forms.MessageBox.Show("时序启动命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + this.RefreshS5(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x05, 0x03); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } @@ -1202,21 +1503,29 @@ namespace InSituLaboratory.ViewModels.Pages /// public override void SuspendS5() { - if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null) + + if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") { - System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + + System.Windows.Forms.DialogResult s1 = System.Windows.Forms.MessageBox.Show("是否暂停并等待当前工作设备工作完最短周期? \n若选择否,则暂停且关闭该时序所有设备!!!", "警告", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + + //暂停并等待当前工作设备工作完最短周期 + if (s1 == System.Windows.Forms.DialogResult.Yes) + { + dosend(0x05, 0x07); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + //暂停且关闭该时序所有设备 + else if (s1 == System.Windows.Forms.DialogResult.No) + { + dosend(0x05, 0x08); + System.Windows.Forms.MessageBox.Show("时序暂停命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + this.RefreshS5(); } else { - if (RelayViewModel.SocketInfo.ConnectionMessage == "断开") - { - dosend(0x05, 0x04); - System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - else - { - System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } + System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion @@ -1313,6 +1622,7 @@ namespace InSituLaboratory.ViewModels.Pages /// public List encode(DateTime StartTime, DateTime EndTime, byte GroupNumber, string kind) { + #region 定义参数 DateTime startTime = StartTime; DateTime endTime = EndTime; @@ -1344,6 +1654,15 @@ namespace InSituLaboratory.ViewModels.Pages //定义消息体数组 List byteaq = new List(); + + #endregion + + //计算两个日期的分钟数差值,用于下发时间校验 + System.TimeSpan t3 = endTime - startTime; + float getMinute = (float)t3.TotalMinutes; + + + year = (ulong)startTime.Year * 10000000000UL; month = (ulong)startTime.Month * 100000000UL; day = (ulong)startTime.Day * 1000000UL; @@ -1408,6 +1727,7 @@ namespace InSituLaboratory.ViewModels.Pages //拿下一次的节点i - 上一次的节点m 就是当前的长度,同时把新的节点赋到m上 //最后只要把总长度减去最后一个节点的长度,就是最后一个的长度 int m = 0; + float? totalTime = 0; //先遍历 datalist 确定 SequenceGroup的种类和数量 for (int i = 0; i < datalist.Length; i++) { @@ -1429,8 +1749,13 @@ namespace InSituLaboratory.ViewModels.Pages m = 0; } } - + totalTime += datalist[i].WorkTime; } + if (totalTime > getMinute) + { + throw new Exception("当前所下发的时序中,所有设备工作总时长:"+ totalTime + "分钟,已经超过时序规定时长:"+ getMinute + "分钟!" + "\n请修改设备后重试!!!"); + } + //b = new List() { 4, 3, 4, 6 }; //3 3 2 1 for (int i = 0; i < b.Count; i++) @@ -1440,6 +1765,7 @@ namespace InSituLaboratory.ViewModels.Pages //定义一个循环间隔时长 int d = 0; + float dm = 0f; //添加传感器识别码和工作时长 for (int j = 0; j < b[i]; j++) { @@ -1545,19 +1871,44 @@ namespace InSituLaboratory.ViewModels.Pages } //定义接收工作时长 - int w = Convert.ToInt32(datalist[i == 0 ? j : n + j].WorkTime) * 60 * 60; - byteaq.Add((byte)(w & 0xFF)); - byteaq.Add((byte)((w & 0xFF00) >> 8)); - byteaq.Add((byte)((w & 0xFF0000) >> 16)); - byteaq.Add((byte)((w >> 24) & 0xFF)); + float w = Convert.ToSingle(datalist[i == 0 ? j : n + j].WorkTime) * 60; + + //判断w 是否是整数 + if (regex.IsMatch(w.ToString())) + { + int worktime = (int)w; + byteaq.Add((byte)(worktime & 0xFF)); + byteaq.Add((byte)((worktime & 0xFF00) >> 8)); + byteaq.Add((byte)((worktime & 0xFF0000) >> 16)); + byteaq.Add((byte)((worktime >> 24) & 0xFF)); + } + else + { + byte[] bytes = BitConverter.GetBytes(w); + Array.Reverse(bytes); + byte[] bytes1 = tools.PadArrayWithZeros(bytes, 4); + byteaq.AddRange(bytes1); + } //接收循环间隔时长 - d = Convert.ToInt32(datalist[i == 0 ? j : n + j].DurationTime) * 60 * 60; + dm = Convert.ToSingle(datalist[i == 0 ? j : n + j].DurationTime) * 60; + } + //判断dm是否为整数 + if (regex.IsMatch(dm.ToString())) + { + int durationTime = (int)dm; + byteaq.Add((byte)(durationTime & 0xFF)); + byteaq.Add((byte)((durationTime & 0xFF00) >> 8)); + byteaq.Add((byte)((durationTime & 0xFF0000) >> 16)); + byteaq.Add((byte)((durationTime >> 24) & 0xFF)); + } + else + { + byte[] bytesm = BitConverter.GetBytes(dm); + Array.Reverse(bytesm); + byte[] bytesm1 = tools.PadArrayWithZeros(bytesm, 4); + byteaq.AddRange(bytesm1); } - byteaq.Add((byte)(d & 0xFF)); - byteaq.Add((byte)((d & 0xFF00) >> 8)); - byteaq.Add((byte)((d & 0xFF0000) >> 16)); - byteaq.Add((byte)((d >> 24) & 0xFF)); if (EnergyBoard1 > 250) { diff --git a/InSituLaboratory/Views/Pages/Dialogs/ModifySequentialView.xaml b/InSituLaboratory/Views/Pages/Dialogs/ModifySequentialView.xaml index cd8a2ee..9133ab6 100644 --- a/InSituLaboratory/Views/Pages/Dialogs/ModifySequentialView.xaml +++ b/InSituLaboratory/Views/Pages/Dialogs/ModifySequentialView.xaml @@ -25,13 +25,13 @@ - + - - + + diff --git a/InSituLaboratory/Views/Pages/SequentialDistributionView.xaml b/InSituLaboratory/Views/Pages/SequentialDistributionView.xaml index 20dabee..84c8986 100644 --- a/InSituLaboratory/Views/Pages/SequentialDistributionView.xaml +++ b/InSituLaboratory/Views/Pages/SequentialDistributionView.xaml @@ -185,8 +185,8 @@ - - + + @@ -306,8 +306,8 @@ - - + + @@ -426,8 +426,8 @@ - - + + @@ -546,8 +546,8 @@ - - + + @@ -666,8 +666,8 @@ - - + +