添加超时判断

master
zhaojian 2 years ago
parent fa9d630b9e
commit bca87c17a5

@ -13,6 +13,7 @@ using MySql.Data.MySqlClient;
using CommonFunc.Tools; using CommonFunc.Tools;
using XGL.Models.Model; using XGL.Models.Model;
using XGL.Models; using XGL.Models;
using System.Threading;
namespace XGL.Dats.DBServiceFinishProd namespace XGL.Dats.DBServiceFinishProd
{ {
@ -3414,21 +3415,22 @@ left join basedata_plcsetting f on a.PlcId5=f.Id
public void InsertCheckTaskDetail(string value,string where) public void InsertCheckTaskDetail(string value,string where)
{ {
StringBuilder strSql = new StringBuilder(); Thread.Sleep(12000);
strSql.Append("UPDATE qc_check_task_detail "); //StringBuilder strSql = new StringBuilder();
strSql.Append("SET actual_value ="); //strSql.Append("UPDATE qc_check_task_detail ");
if (value==null) //strSql.Append("SET actual_value =");
{ //if (value==null)
strSql.Append("NULL"); //{
} // strSql.Append("NULL");
else //}
{ //else
strSql.Append($"'{value}'"); //{
} // strSql.Append($"'{value}'");
//}
strSql.Append(" WHERE record_id ="); //strSql.Append(" WHERE record_id =");
strSql.Append($"'{where}'"); //strSql.Append($"'{where}'");
int rowsAffected = Utils.netClientDBHelper.executeUpdate(strSql.ToString()); //Utils.netClientDBHelper.executeUpdate(strSql.ToString());
} }
// /// <summary> // /// <summary>

@ -93,7 +93,8 @@ namespace XGLFinishPro.Views
{ {
if (jianyanwuliao.Text.IsNullOrEmpty() || jianyanjiedian.Text.IsNullOrEmpty() || renwubianhao.Text.IsNullOrEmpty() || guizemingcheng.Text.IsNullOrEmpty()) if (jianyanwuliao.Text.IsNullOrEmpty() || jianyanjiedian.Text.IsNullOrEmpty() || renwubianhao.Text.IsNullOrEmpty() || guizemingcheng.Text.IsNullOrEmpty())
{ {
MessageBox.Show("数据不完整,无法称重!!"); //MessageBox.Show("数据不完整,无法称重!!");
upDateDate("1.0");
} }
else else
{ {
@ -133,8 +134,10 @@ namespace XGLFinishPro.Views
{ {
try try
{ {
int i = 0;
while (true) while (true)
{ {
i++;
string data = serialPort.ReadExisting(); string data = serialPort.ReadExisting();
Thread.Sleep(200); Thread.Sleep(200);
if (!string.IsNullOrEmpty(data)) if (!string.IsNullOrEmpty(data))
@ -146,6 +149,15 @@ namespace XGLFinishPro.Views
UpdateUI(bb); UpdateUI(bb);
break; // 读到数据后跳出循环 break; // 读到数据后跳出循环
} }
else
{
Thread.Sleep(1000);
if (i == 10)
{
MessageBox.Show("获取城中数据超时,检查秤是否正常");
break;
}
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -189,31 +201,53 @@ namespace XGLFinishPro.Views
/// 称重更新数据库 /// 称重更新数据库
/// </summary> /// </summary>
/// <param name="Date"></param> /// <param name="Date"></param>
public void upDateDate(string Date) public async void upDateDate(string Date)
{ {
// 将数据保存
CheckTaskModel newItem = new CheckTaskModel() { material_name = Date };
try try
{ {
// 将数据保存 // 创建一个任务等待10秒
CheckTaskModel newItem = new CheckTaskModel() { material_name = Date }; var timeoutTask = Task.Delay(TimeSpan.FromSeconds(10));
// 获取当前应用程序的Dispatcher // 执行数据库操作的任务
dispatcher = Application.Current.Dispatcher; var saveDataTask = Task.Run(() =>
Dispatcher.Invoke(() =>
{ {
zhongDate.Items.Add(newItem); // 在这里执行数据库操作
userDbWareHouse.InsertCheckTaskDetail(checkTaskModel.actual_value, checkTaskModel.record_id);
}); });
if (string.IsNullOrEmpty(checkTaskModel.actual_value))
// 等待哪个任务先完成
var completedTask = await Task.WhenAny(saveDataTask, timeoutTask);
// 判断是哪个任务先完成
if (completedTask == timeoutTask)
{ {
checkTaskModel.actual_value = $"[\"{Date}\"]"; // 弹窗提醒
MessageBox.Show("保存数据超时!");
} }
else else
{ {
// 去除字符串开头和结尾的方括号
checkTaskModel.actual_value = checkTaskModel.actual_value.Trim(']'); // 获取当前应用程序的Dispatcher
dispatcher = Application.Current.Dispatcher;
Dispatcher.Invoke(() =>
{
zhongDate.Items.Add(newItem);
});
if (string.IsNullOrEmpty(checkTaskModel.actual_value))
{
checkTaskModel.actual_value = $"[\"{Date}\"]";
}
else
{
// 去除字符串开头和结尾的方括号
checkTaskModel.actual_value = checkTaskModel.actual_value.Trim(']');
// 在字符串末尾添加逗号和aaa的值 // 在字符串末尾添加逗号和aaa的值
checkTaskModel.actual_value += $", \"{Date}\"]"; checkTaskModel.actual_value += $", \"{Date}\"]";
}
} }
userDbWareHouse.InsertCheckTaskDetail(checkTaskModel.actual_value, checkTaskModel.record_id);//保存称重数据 //userDbWareHouse.InsertCheckTaskDetail(checkTaskModel.actual_value, checkTaskModel.record_id);//保存称重数据
Button_Click_2(null, null); Button_Click_2(null, null);
} }
catch (Exception ex) catch (Exception ex)
@ -334,7 +368,7 @@ namespace XGLFinishPro.Views
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void DeleteButton_Click(object sender, RoutedEventArgs e) private async void DeleteButton_Click(object sender, RoutedEventArgs e)
{ {
try try
{ {
@ -344,14 +378,36 @@ namespace XGLFinishPro.Views
{ {
var item = (CheckTaskModel)dataContext; var item = (CheckTaskModel)dataContext;
string materialName = item.material_name; string materialName = item.material_name;
// 从 DataGrid 的 ItemsSource 中移除该项
zhongDate.Items.Remove(item); // 从 actual_value 中移除 materialName // 从 actual_value 中移除 materialName
checkTaskModel.actual_value = RemoveMaterialNameFromActualValue(checkTaskModel.actual_value, materialName); checkTaskModel.actual_value = RemoveMaterialNameFromActualValue(checkTaskModel.actual_value, materialName);
if (checkTaskModel.actual_value == "[]") if (checkTaskModel.actual_value == "[]")
{ {
checkTaskModel.actual_value = null; checkTaskModel.actual_value = null;
} }
userDbWareHouse.InsertCheckTaskDetail(checkTaskModel.actual_value, checkTaskModel.record_id); // 创建一个任务等待10秒
var timeoutTask = Task.Delay(TimeSpan.FromSeconds(10));
// 执行数据库操作的任务
var saveDataTask = Task.Run(() =>
{
// 在这里执行数据库操作
userDbWareHouse.InsertCheckTaskDetail(checkTaskModel.actual_value, checkTaskModel.record_id);
});
// 等待哪个任务先完成
var completedTask = await Task.WhenAny(saveDataTask, timeoutTask);
// 判断是哪个任务先完成
if (completedTask == timeoutTask)
{
// 弹窗提醒
MessageBox.Show("删除数据超时!");
}
else
{
// 从 DataGrid 的 ItemsSource 中移除该项
zhongDate.Items.Remove(item);
}
Button_Click_2(null, null); Button_Click_2(null, null);
// 从数据源中移除该项 // 从数据源中移除该项
} }

Loading…
Cancel
Save