时序下发增加小数校验

This commit is contained in:
MoYue 2024-06-28 17:51:00 +08:00
parent 5663aeff05
commit e44b29cf11
11 changed files with 882 additions and 435 deletions

View File

@ -33,6 +33,11 @@ namespace InSituLaboratory.Entities
/// </summary>
public string? WorkTime { get; set; }
/// <summary>
/// 最小工作时长
/// </summary>
public string? MinWorkTime { get; set; }
}
}

View File

@ -40,13 +40,13 @@ namespace InSituLaboratory.Entities
/// 工作时长
/// </summary>
public string? WorkTime { get; set; }
public float? WorkTime { get; set; }
/// <summary>
/// 循环时长
/// </summary>
public string? DurationTime { get; set; }
public float? DurationTime { get; set; }
///// <summary>
/// 创建时间

View File

@ -46,13 +46,13 @@ namespace InSituLaboratory.Entities
/// 工作时长
/// </summary>
public string? WorkTime { get; set; }
public float? WorkTime { get; set; }
/// <summary>
/// 循环时长
/// </summary>
public string? DurationTime { get; set; }
public float? DurationTime { get; set; }
/// <summary>
/// 创建时间

View File

@ -672,7 +672,29 @@ namespace InSituLaboratory.Entities
}
#endregion
#region byte数组按长度在前面补0
/// <summary>
/// byte数组按长度在前面补0
/// </summary>
/// <param name="array"></param>
/// <param name="targetLength"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
/// <exception cref="ArgumentOutOfRangeException"></exception>
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)
/// <summary>

View File

@ -23,5 +23,13 @@ namespace InSituLaboratory.IService
string GetDeviceByDeviceName(string DeviceName);
/// <summary>
/// 根据设备名称获取设备预设工作时长
/// </summary>
/// <param name="DeviceName"></param>
/// <returns></returns>
string GetDeviceByDeviceNameMinTime(string DeviceName);
}
}

View File

@ -38,5 +38,24 @@ namespace InSituLaboratory.Service
return workTime;
}
/// <summary>
/// 根据设备名称查询预设最小工作时长
/// </summary>
/// <param name="DeviceName"></param>
/// <returns></returns>
public string GetDeviceByDeviceNameMinTime(string DeviceName)
{
var workTime = "";
var sysDevice = this.Query<SysDevice>(m => m.DeviceName == DeviceName).ToList();
foreach (var item in sysDevice)
{
workTime = item.MinWorkTime;
}
return workTime;
}
}
}

View File

@ -20,7 +20,7 @@ namespace InSituLaboratory.Service
/// <returns></returns>
public IEnumerable<SysSequential> GetSequentials(string key)
{
return this.Set<SysSequential>().Where(m => m.Sequential == key && m.IsDelete == 0).OrderByDescending(n => n.CreateTime);
return this.Set<SysSequential>().Where(m => m.Sequential == key && m.IsDelete == 0).OrderByDescending(n => n.CreateTime).AsNoTracking();
}
/// <summary>
/// 获取时序子表数据
@ -30,7 +30,7 @@ namespace InSituLaboratory.Service
public IEnumerable<SysSequentialDetails> GetSequentialDetails(int key)
{
return this.Set<SysSequentialDetails>().Where(m => m.SysSquentialID == key && m.IsDelete == 0).OrderBy(n => n.SequenceGroup).ThenBy(m => m.CreateTime);
return this.Set<SysSequentialDetails>().Where(m => m.SysSquentialID == key && m.IsDelete == 0).OrderBy(n => n.SequenceGroup).ThenBy(m => m.CreateTime).AsNoTracking();
}
/// <summary>
@ -41,7 +41,7 @@ namespace InSituLaboratory.Service
public IEnumerable<SysSequentialDetails> GetSequentialDetailList(int key)
{
return this.Set<SysSequentialDetails>().Where(m => m.Number == key && m.IsDelete == 0);
return this.Set<SysSequentialDetails>().Where(m => m.Number == key && m.IsDelete == 0).AsNoTracking();
}

View File

@ -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; }
/// <summary>
/// 记录编辑时第一次带入的设备名称
@ -88,12 +90,12 @@ namespace InSituLaboratory.ViewModels.Pages.Dialogs
}
private string _workTime;
private float? _workTime;
/// <summary>
/// 工作时长
/// </summary>
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;
/// <summary>
/// 循环时长
/// </summary>
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;

View File

@ -25,13 +25,13 @@
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Row="0" VerticalAlignment="Center" Foreground="#888" />
<TextBlock Text="设备编号" Grid.Row="1" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="设备工作时长(h)" Grid.Row="2" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="循环间隔时长(h)" Grid.Row="3" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="设备工作时长(min)" Grid.Row="2" VerticalAlignment="Center" Foreground="#888"/>
<TextBlock Text="循环间隔时长(min)" Grid.Row="3" VerticalAlignment="Center" Foreground="#888"/>
<hc:ComboBox Grid.Row="0" Name="pb" Margin="0,9,0,8" Grid.Column="1" IsEditable="False" ItemsSource="{Binding DeviceNodes}" DisplayMemberPath="Id" SelectedValuePath="Id" SelectedValue="{Binding SequenceGroup}" RenderTransformOrigin="0.498,0.193"/>
<hc:ComboBox Grid.Row="1" Margin="0,9,0,8" Grid.Column="1" IsEditable="False" ItemsSource="{Binding DeviceNodes}" DisplayMemberPath="DeviceName" SelectedValuePath="DeviceName" SelectedValue="{Binding SensorID}" RenderTransformOrigin="0.498,0.193"/>

View File

@ -185,8 +185,8 @@
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(h)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(h)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(min)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(min)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -306,8 +306,8 @@
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(h)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(h)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(min)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(min)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -426,8 +426,8 @@
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(h)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(h)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(min)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(min)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -546,8 +546,8 @@
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(h)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(h)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(min)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(min)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
@ -666,8 +666,8 @@
</Grid.ColumnDefinitions>
<TextBlock Text="子时序号" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备编号(以下设备同一配置依次运行)" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(h)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(h)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="设备工作时长(min)" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="子序列循环间隔时长(min)" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="操作" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>