From bca87c17a5ec4c8d867708c5cc8341f72b56ac43 Mon Sep 17 00:00:00 2001 From: zhaojian Date: Mon, 13 May 2024 11:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=85=E6=97=B6=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FinishProdDBService.cs | 30 +++--- .../XGLFinishPro/Views/weighWindows.xaml.cs | 94 +++++++++++++++---- 2 files changed, 91 insertions(+), 33 deletions(-) diff --git a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs index 4f39f22..37b7154 100644 --- a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs +++ b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs @@ -13,6 +13,7 @@ using MySql.Data.MySqlClient; using CommonFunc.Tools; using XGL.Models.Model; using XGL.Models; +using System.Threading; 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) { - StringBuilder strSql = new StringBuilder(); - strSql.Append("UPDATE qc_check_task_detail "); - strSql.Append("SET actual_value ="); - if (value==null) - { - strSql.Append("NULL"); - } - else - { - strSql.Append($"'{value}'"); - } + Thread.Sleep(12000); + //StringBuilder strSql = new StringBuilder(); + //strSql.Append("UPDATE qc_check_task_detail "); + //strSql.Append("SET actual_value ="); + //if (value==null) + //{ + // strSql.Append("NULL"); + //} + //else + //{ + // strSql.Append($"'{value}'"); + //} - strSql.Append(" WHERE record_id ="); - strSql.Append($"'{where}'"); - int rowsAffected = Utils.netClientDBHelper.executeUpdate(strSql.ToString()); + //strSql.Append(" WHERE record_id ="); + //strSql.Append($"'{where}'"); + //Utils.netClientDBHelper.executeUpdate(strSql.ToString()); } // /// diff --git a/shangjian/XGLFinishPro/Views/weighWindows.xaml.cs b/shangjian/XGLFinishPro/Views/weighWindows.xaml.cs index 954a30f..ce6e5e1 100644 --- a/shangjian/XGLFinishPro/Views/weighWindows.xaml.cs +++ b/shangjian/XGLFinishPro/Views/weighWindows.xaml.cs @@ -93,7 +93,8 @@ namespace XGLFinishPro.Views { if (jianyanwuliao.Text.IsNullOrEmpty() || jianyanjiedian.Text.IsNullOrEmpty() || renwubianhao.Text.IsNullOrEmpty() || guizemingcheng.Text.IsNullOrEmpty()) { - MessageBox.Show("数据不完整,无法称重!!"); + //MessageBox.Show("数据不完整,无法称重!!"); + upDateDate("1.0"); } else { @@ -133,8 +134,10 @@ namespace XGLFinishPro.Views { try { + int i = 0; while (true) { + i++; string data = serialPort.ReadExisting(); Thread.Sleep(200); if (!string.IsNullOrEmpty(data)) @@ -146,6 +149,15 @@ namespace XGLFinishPro.Views UpdateUI(bb); break; // 读到数据后跳出循环 } + else + { + Thread.Sleep(1000); + if (i == 10) + { + MessageBox.Show("获取城中数据超时,检查秤是否正常"); + break; + } + } } } catch (Exception ex) @@ -189,31 +201,53 @@ namespace XGLFinishPro.Views /// 称重更新数据库 /// /// - public void upDateDate(string Date) + public async void upDateDate(string Date) { + // 将数据保存 + CheckTaskModel newItem = new CheckTaskModel() { material_name = Date }; try { - // 将数据保存 - CheckTaskModel newItem = new CheckTaskModel() { material_name = Date }; - // 获取当前应用程序的Dispatcher - dispatcher = Application.Current.Dispatcher; - Dispatcher.Invoke(() => + // 创建一个任务,等待10秒 + var timeoutTask = Task.Delay(TimeSpan.FromSeconds(10)); + // 执行数据库操作的任务 + var saveDataTask = Task.Run(() => { - 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 { - // 去除字符串开头和结尾的方括号 - 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的值 - checkTaskModel.actual_value += $", \"{Date}\"]"; + // 在字符串末尾添加逗号和aaa的值 + 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); } catch (Exception ex) @@ -334,7 +368,7 @@ namespace XGLFinishPro.Views /// /// /// - private void DeleteButton_Click(object sender, RoutedEventArgs e) + private async void DeleteButton_Click(object sender, RoutedEventArgs e) { try { @@ -344,14 +378,36 @@ namespace XGLFinishPro.Views { var item = (CheckTaskModel)dataContext; 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); if (checkTaskModel.actual_value == "[]") { 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); // 从数据源中移除该项 }