using System.Runtime.Serialization.Json; using SiaSun.LMS.Model; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace SiaSun.LMS.WPFClient.SYS { /// /// MES_RETRY.xaml 的交互逻辑 /// public partial class MES_RETRY : AvalonDock.DocumentContent { readonly bool boolAllowEdit = false; readonly string strTableName = "MES_INTERFACE_RETRY"; readonly string strOrderField = "ID"; readonly string strTotalColumn = "ID"; readonly string strWhere = "1=1"; public MES_RETRY() { InitializeComponent(); } private void DocumentContent_Loaded(object sender, RoutedEventArgs e) { LoadDataGrid(); } /// /// 加载数据 /// private void LoadDataGrid() { try { this.gridQuery.U_WindowName = this.GetType().Name; this.gridQuery.U_TableName = this.strTableName; this.gridQuery.U_Where = this.strWhere; this.gridQuery.U_OrderField = this.strOrderField; this.gridQuery.U_TotalColumnName = this.strTotalColumn; this.gridQuery.U_AllowOperatData = this.boolAllowEdit; this.gridQuery.U_AllowPage = true; this.gridQuery.U_AllowChecked = true; this.gridQuery.U_InitControl(); } catch (Exception ex) { MainApp._MessageDialog.ShowException(ex); } } /// /// 重发 /// /// /// private void BtnRetryClick(object sender, RoutedEventArgs e) { //DateTime aa = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); DateTime startTime = DateTime.Now; // 开始时间 DateTime endTime = Convert.ToDateTime("2024-01-29 23:00:00") ; // 结束时间 TimeSpan timeDifference = endTime.Subtract(startTime).Duration(); // 获取时间差异 int hoursDiff = (int)timeDifference.TotalHours; // 转换为小时数 try { if (!btnRetry.IsEnabled) { MainApp._MessageDialog.ShowException("接口重发中,请稍后点击"); return; } //1.获取所有被选中的报文行 DataRowView[] dataRowViews = this.gridQuery.U_GetCheckedDataRows(); //2.锁定按钮 btnRetry.IsEnabled = false; ////3.新建线程循环重发 //Task reCallMes = Task.Factory.StartNew(() => //{ bool bResult = true; string sResult = ""; foreach (DataRowView rowView in dataRowViews) { string responseMessage = rowView["MESSAGE"].ToString(); bResult = MainApp._I_BaseService.Invoke("S_ERPService", "MesRetry", new object[] { responseMessage }, out sResult); ///*无论成功与否,都需要删除本条记录,重发失败会向重发表中插入新的记录*/ //MainApp._I_BaseService.Invoke("S_ERPService", "DeleteRetryRecord", new object[] { Convert.ToInt32(rowView["ID"].ToString()) }, out sResult); } // }); //4.Wait // reCallMes.Wait(); //5.恢复按钮功能 btnRetry.IsEnabled = true; if (bResult) { MainApp._MessageDialog.ShowException("成功"); } else { MainApp._MessageDialog.ShowException(sResult); } } catch (Exception ex) { MainApp._MessageDialog.ShowException(ex); btnRetry.IsEnabled = true; } } } }