20230201_145_upperpc/InSituLaboratory/ViewModels/Pages/SequentialDistributionViewModel.cs

1210 lines
50 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using InSituLaboratory.Common;
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<SysSequentialDetails> sysSequentialDetailsListS1 { get; set; } = new ObservableCollection<SysSequentialDetails>();
public ObservableCollection<SysSequentialDetails> sysSequentialDetailsListS2 { get; set; } = new ObservableCollection<SysSequentialDetails>();
public ObservableCollection<SysSequentialDetails> sysSequentialDetailsListS3 { get; set; } = new ObservableCollection<SysSequentialDetails>();
public ObservableCollection<SysSequentialDetails> sysSequentialDetailsListS4 { get; set; } = new ObservableCollection<SysSequentialDetails>();
public ObservableCollection<SysSequentialDetails> sysSequentialDetailsListS5 { get; set; } = new ObservableCollection<SysSequentialDetails>();
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();
}
/// <summary>
/// 页面刷新
/// </summary>
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;
}
}
/// <summary>
/// 编辑或者新增
/// </summary>
/// <param name="model"></param>
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();
}
});
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="model"></param>
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<SysSequentialDetails>((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<SysSequential>(data.SysSquentialID);
SysSequential.IsDelete = 1;
_sysSequentialService.Update(SysSequential);
}
///更新时序总表
var data1 = _sysSequentialService.Find<SysSequentialTotal>((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);
}
}
/// <summary>
/// 时序下发
/// </summary>
public override void SendS1()
{
if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null)
{
System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
DateTime startTime = (DateTime)sequentStatusModel.SequentialStartTime1;
DateTime endTime = (DateTime)sequentStatusModel.SequentialEndTime1;
ulong senddate;
ulong year;
ulong month;
ulong day;
ulong hour;
ulong min;
ulong sec;
ulong sendenddate;
ulong endyear;
ulong endmonth;
ulong endday;
ulong endhour;
ulong endmin;
ulong endsec;
//定义消息体数组
byte[] byteaq = new byte[26];
year = (ulong)startTime.Year * 10000000000UL;
month = (ulong)startTime.Month * 100000000UL;
day = (ulong)startTime.Day * 1000000UL;
hour = (ulong)startTime.Hour * 10000UL;
min = (ulong)startTime.Minute * 100UL;
sec = (ulong)startTime.Second;
senddate = year + month + day + hour + min + sec;
endyear = (ulong)endTime.Year * 10000000000UL;
endmonth = (ulong)endTime.Month * 100000000UL;
endday = (ulong)endTime.Day * 1000000UL;
endhour = (ulong)endTime.Hour * 10000UL;
endmin = (ulong)endTime.Minute * 100UL;
endsec = (ulong)endTime.Second;
sendenddate = endyear + endmonth + endday + endhour + endmin + endsec;
//消息头
byteaq[0] = 0x91;
byteaq[1] = 0x00;
byteaq[2] = 0x10;
byteaq[3] = 0x01;
byteaq[4] = 0x00;
byteaq[5] = 0x00;
byteaq[6] = 0x00;
byteaq[7] = 0x00;
//时序组号
byteaq[8] = 0x01;
//操作类型
byteaq[9] = 0x01;
//开始时间
byteaq[10] = (byte)((senddate >> 56) & 0xff);
byteaq[11] = (byte)((senddate >> 48) & 0xff);
byteaq[12] = (byte)((senddate >> 40) & 0xff);
byteaq[13] = (byte)((senddate >> 32) & 0xff);
byteaq[14] = (byte)((senddate >> 24) & 0xff);
byteaq[15] = (byte)((senddate >> 16) & 0xff);
byteaq[16] = (byte)((senddate >> 8) & 0xff);
byteaq[17] = (byte)(senddate & 0xff);
//结束时间
byteaq[18] = (byte)((sendenddate >> 56) & 0xff);
byteaq[19] = (byte)((sendenddate >> 48) & 0xff);
byteaq[20] = (byte)((sendenddate >> 40) & 0xff);
byteaq[21] = (byte)((sendenddate >> 32) & 0xff);
byteaq[22] = (byte)((sendenddate >> 24) & 0xff);
byteaq[23] = (byte)((sendenddate >> 16) & 0xff);
byteaq[24] = (byte)((sendenddate >> 8) & 0xff);
byteaq[25] = (byte)(sendenddate & 0xff);
var datalist = _sysSequentialService.Query<SysSequentialTotal>(m => m.StartTime == startTime && m.EndTime == endTime && m.IsDelete == 0 && m.Sequential == "时序1").OrderBy(n => n.SequenceGroup).ThenBy(s => s.CreateTime).ToArray();
//定义传感器个数
int num = 0;
for (int i = 0; i < datalist.Length; i++)
{
if (datalist[1].SequenceGroup == datalist[i + 1].SequenceGroup)
{
}
}
}
}
/// <summary>
/// 时序清空
/// </summary>
public override void ClearS1()
{
if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null)
{
System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x01, 0x02);
System.Windows.Forms.MessageBox.Show("命令已下发!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序启动
/// </summary>
public override void BeginS1()
{
if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null)
{
System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x01, 0x03);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序暂停
/// </summary>
public override void SuspendS1()
{
if (sequentStatusModel.SequentialStartTime1 == null || sequentStatusModel.SequentialEndTime1 == null)
{
System.Windows.Forms.MessageBox.Show("时序1: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x01, 0x04);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
#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;
}
}
/// <summary>
/// 编辑或者新增
/// </summary>
/// <param name="model"></param>
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();
}
});
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="model"></param>
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<SysSequentialDetails>((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<SysSequential>(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);
}
}
/// <summary>
/// 时序清空
/// </summary>
public override void ClearS2()
{
if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null)
{
System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x02, 0x02);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序启动
/// </summary>
public override void BeginS2()
{
if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null)
{
System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x02, 0x03);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序暂停
/// </summary>
public override void SuspendS2()
{
if (sequentStatusModel.SequentialStartTime2 == null || sequentStatusModel.SequentialEndTime2 == null)
{
System.Windows.Forms.MessageBox.Show("时序2: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x02, 0x04);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
#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;
}
}
/// <summary>
/// 编辑或者新增
/// </summary>
/// <param name="model"></param>
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();
}
});
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="model"></param>
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<SysSequentialDetails>((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<SysSequential>(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);
}
}
/// <summary>
/// 时序清空
/// </summary>
public override void ClearS3()
{
if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null)
{
System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x03, 0x02);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序启动
/// </summary>
public override void BeginS3()
{
if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null)
{
System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x03, 0x03);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序暂停
/// </summary>
public override void SuspendS3()
{
if (sequentStatusModel.SequentialStartTime3 == null || sequentStatusModel.SequentialEndTime3 == null)
{
System.Windows.Forms.MessageBox.Show("时序3: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x03, 0x04);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
#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;
}
}
/// <summary>
/// 编辑或者新增
/// </summary>
/// <param name="model"></param>
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();
}
});
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="model"></param>
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<SysSequentialDetails>((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<SysSequential>(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);
}
}
/// <summary>
/// 时序清空
/// </summary>
public override void ClearS4()
{
if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null)
{
System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x04, 0x02);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序启动
/// </summary>
public override void BeginS4()
{
if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null)
{
System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x04, 0x03);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序暂停
/// </summary>
public override void SuspendS4()
{
if (sequentStatusModel.SequentialStartTime4 == null || sequentStatusModel.SequentialEndTime4 == null)
{
System.Windows.Forms.MessageBox.Show("时序4: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x04, 0x04);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
#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;
}
}
/// <summary>
/// 编辑或者新增
/// </summary>
/// <param name="model"></param>
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();
}
});
}
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="model"></param>
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<SysSequentialDetails>((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<SysSequential>(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);
}
}
/// <summary>
/// 时序清空
/// </summary>
public override void ClearS5()
{
if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null)
{
System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x05, 0x02);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序启动
/// </summary>
public override void BeginS5()
{
if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null)
{
System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x05, 0x03);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
/// <summary>
/// 时序暂停
/// </summary>
public override void SuspendS5()
{
if (sequentStatusModel.SequentialStartTime5 == null || sequentStatusModel.SequentialEndTime5 == null)
{
System.Windows.Forms.MessageBox.Show("时序5: 开始时间和结束时间不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
if (RelayViewModel.SocketInfo.ConnectionMessage == "断开")
{
dosend(0x05, 0x04);
}
else
{
System.Windows.Forms.MessageBox.Show("请先连接服务端!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
#endregion
/// <summary>
/// 转义封装
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public List<byte> Escape(byte[] bytes)
{
//标志位
byte head = 0x7f;
//crc
byte nr_crc = 0;
nr_crc = tools.CRC(bytes.ToArray(), 0, bytes.Length);
///转义
int j = 0;
List<byte> tBuffer = bytes.ToList();
tBuffer.Add(nr_crc);
int length = tBuffer.ToArray().Length;
byte[] newAnswer = tBuffer.ToArray();
for (int i = 0; i < length; i++)
{
if (newAnswer[i] == 0x7e || newAnswer[i] == 0x7f)
{
j++;
}
}
byte[] newSendBuffer = new byte[length + j];
for (int i = 0; i < length; i++)
{
newSendBuffer[i] = newAnswer[i];
}
for (int i = 0; i < length + j; i++)
{
if (newSendBuffer[i] == 0x7e)
{
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x01;
}
if (newSendBuffer[i] == 0x7f)
{
newSendBuffer[i] = 0x7e;
for (int k = length + j - 1; k > i + 1; k--)
{
newSendBuffer[k] = newSendBuffer[k - 1];
}
newSendBuffer[i + 1] = 0x02;
}
}
List<byte> buffer = new List<byte>();
buffer.Add(head);
for (int i = 0; i < newSendBuffer.Length; i++)
{
buffer.Add(newSendBuffer[i]);
}
buffer.Add(head);
return buffer;
}
/// <summary>
/// 命令发送
/// </summary>
/// <param name="x1">时序号</param>
/// <param name="x2">操作类型</param>
public void dosend(byte x1,byte x2)
{
//消息体
byte[] byteaq = new byte[] { 0x91, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, x1, x2 };
List<byte> buffer = Escape(byteaq);
string list = tools.byteToHexStr(buffer.ToArray());
byte[] bytea = tools.ConvertHexStringToBytes(list);
RelayViewModel.clientModel.SendData(bytea);
}
}
}