diff --git a/SlnMesnac.RfidUpload.Model/RfidInfo.cs b/SlnMesnac.RfidUpload.Model/RfidInfo.cs new file mode 100644 index 0000000..d43e7d2 --- /dev/null +++ b/SlnMesnac.RfidUpload.Model/RfidInfo.cs @@ -0,0 +1,31 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Security.Principal; +using System.Text; + +namespace SlnMesnac.RfidUpload.Model +{ + + [SugarTable("RFID_INFO")] + public class RfidInfo + { + // 该特性指定此属性对应数据库表中的 id 列 + // IsIdentity = true 表示该列是自增列 + // IsPrimaryKey = true 表示该列是主键 + [SugarColumn(ColumnName = "id", IsIdentity = true, IsPrimaryKey = true)] + public int Id { get; set; } + + // 用于存储调拨单号 + [SugarColumn(ColumnName = "dbdh")] + public string Dbdh { get; set; } + + // 用于存储RFID + [SugarColumn(ColumnName = "result")] + public string Result { get; set; } + + //时间 + [SugarColumn(ColumnName = "recordtime")] + public string RecordTime { get; set; } + } +} diff --git a/SlnMesnac.RfidUpload.UI/App.xaml.cs b/SlnMesnac.RfidUpload.UI/App.xaml.cs index 3533401..e7f474b 100644 --- a/SlnMesnac.RfidUpload.UI/App.xaml.cs +++ b/SlnMesnac.RfidUpload.UI/App.xaml.cs @@ -1,4 +1,7 @@ -using System.Windows; +using System.Threading.Tasks; +using System; +using System.Windows; +using SlnMesnac.RfidUpload.NLog; namespace SlnMesnac.RfidUpload.UI { @@ -7,5 +10,85 @@ namespace SlnMesnac.RfidUpload.UI /// public partial class App : Application { + private static readonly LogHelper logger = LogHelper.Instance; + public App() + { + //UI线程未捕获异常处理事件(UI主线程) + this.DispatcherUnhandledException += App_DispatcherUnhandledException; + + //非UI线程未捕获异常处理事件(例如自己创建的一个子线程) + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + //Task线程内未捕获异常处理事件 + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;//Task异常 + + + } + + + void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) + { + + try + { + logger.Error(e.Exception.Message); + HandleException(e.Exception); + } + catch (Exception ex) + { + HandleException(ex); + } + finally + { + e.Handled = true; + } + } + private static void HandleException(Exception ex) + { + logger.Error(ex.Message); + //Logger log = new Logger(); + //log.Log(ex.ToString()); + } + //非UI线程未捕获异常处理事件(例如自己创建的一个子线程) + private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + try + { + + var exception = e.ExceptionObject as Exception; + if (exception != null) + { + HandleException(exception); + } + } + catch (Exception ex) + { + HandleException(ex); + } + finally + { + //ignore + } + } + private static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) + { + try + { + var exception = e.Exception as Exception; + if (exception != null) + { + HandleException(exception); + } + } + catch (Exception ex) + { + HandleException(ex); + } + finally + { + e.SetObserved(); + } + } + + } } diff --git a/SlnMesnac.RfidUpload.UI/viewModel/MainWindowViewModel.cs b/SlnMesnac.RfidUpload.UI/viewModel/MainWindowViewModel.cs index fd8d216..f558800 100644 --- a/SlnMesnac.RfidUpload.UI/viewModel/MainWindowViewModel.cs +++ b/SlnMesnac.RfidUpload.UI/viewModel/MainWindowViewModel.cs @@ -24,6 +24,8 @@ using SlnMesnac.RfidUpload.UI.TempData; using slnmesnac.rfidupload.Repository; using TouchSocket.Core; using System.Windows.Interop; +using static Dm.net.buffer.ByteArrayBuffer; +using System.IO; namespace SlnMesnac.RfidUpload.UI.viewModel { @@ -49,85 +51,7 @@ namespace SlnMesnac.RfidUpload.UI.viewModel private Institution Institution; #region 参数定义 - /// - /// 串口 - /// - //private ObservableCollection _serialPortItems = new ObservableCollection(); - //public ObservableCollection SerialPortItems - //{ - // get { return _serialPortItems; } - // set { _serialPortItems = value; RaisePropertyChanged(() => SerialPortItems); } - //} - //private string _selectedSerialPortItems = string.Empty; - //public string SelectedSerialPortItems - //{ - // get { return _selectedSerialPortItems; } - // set { _selectedSerialPortItems = value; RaisePropertyChanged(() => SelectedSerialPortItems); } - //} - - ///// - ///// 波特率 - ///// - //private ObservableCollection _baudRateItems = new ObservableCollection() { 9600, 115200 }; - //public ObservableCollection BaudRateItems - //{ - // get { return _baudRateItems; } - // set { _baudRateItems = value; RaisePropertyChanged(() => BaudRateItems); } - //} - //private int _selectedBaudRateItems = 115200; - //public int SelectedBaudRateItems - //{ - // get { return _selectedBaudRateItems; } - // set { _selectedBaudRateItems = value; RaisePropertyChanged(() => SelectedBaudRateItems); } - //} - - ///// - ///// 数据位 - ///// - //private ObservableCollection _dataBitsItems = new ObservableCollection() { 2, 4, 6, 8 }; - //public ObservableCollection DataBitsItems - //{ - // get { return _dataBitsItems; } - // set { _dataBitsItems = value; RaisePropertyChanged(() => DataBitsItems); } - //} - //private int _selectedDataBitsItems = 8; - //public int SelectedDataBitsItems - //{ - // get { return _selectedDataBitsItems; } - // set { _selectedDataBitsItems = value; RaisePropertyChanged(() => SelectedDataBitsItems); } - //} - - ///// - /////停止位 - ///// - //private ObservableCollection _stopBitsItems = new ObservableCollection() { 0, 1, 2, 3, 4 }; - //public ObservableCollection StopBitsItems - //{ - // get { return _stopBitsItems; } - // set { _stopBitsItems = value; RaisePropertyChanged(() => StopBitsItems); } - //} - //private int _selectedStopBitsItems = 1; - //public int SelectedStopBitsItems - //{ - // get { return _selectedStopBitsItems; } - // set { _selectedStopBitsItems = value; RaisePropertyChanged(() => SelectedStopBitsItems); } - //} - - ///// - /////校验位 - ///// - //private ObservableCollection _parityItems = new ObservableCollection() { "None", "Odd", "Even", "Mark", "Space" }; - //public ObservableCollection ParityItems - //{ - // get { return _parityItems; } - // set { _parityItems = value; RaisePropertyChanged(() => ParityItems); } - //} - //private string _selectedParityItems = "None"; - //public string SelectedParityItems - //{ - // get { return _selectedParityItems; } - // set { _selectedParityItems = value; RaisePropertyChanged(() => SelectedParityItems); } - //} + /// /// 标签数量 @@ -288,8 +212,8 @@ namespace SlnMesnac.RfidUpload.UI.viewModel FinishCommand = new RelayCommand(Finish); ReUploadRecordCommand = new RelayCommand(ReUploadRecord); this.Init(); - - test(); + + // test(); } private void ReUploadRecord() @@ -313,15 +237,59 @@ namespace SlnMesnac.RfidUpload.UI.viewModel } + /// + /// 清除日志文件 + /// + private void DeleteLogsLogic() + { + try + { + //获取当前程序运行目录下的logs文件夹 + string logPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log"); + string[] strings = Directory.GetDirectories(logPath); + foreach (string s in strings) + { + string dirName = Path.GetFileName(s); + if (!string.IsNullOrEmpty(dirName)) + { + if (DateTime.TryParse(dirName, out DateTime dt)) + { + if (dt < DateTime.Now.AddDays(-10)) + { + Directory.Delete(s, true); + + } + } + } + } + + } + catch + { + + } + + } + + private void Init() { + + DeleteLogsLogic(); + GetRfidList(); TouchSocketService service = new TouchSocketService(); service.AddTouchSocketAsync(appConfig.RFIDAddress); WorkModelParam = Convert.ToInt32(appConfig.workModel); + Task.Run(() => + { + Thread.Sleep(1000 * 10); + throw new Exception("test"); + + }); } @@ -557,20 +525,7 @@ namespace SlnMesnac.RfidUpload.UI.viewModel } - /// - /// 清空标签信息列表 - /// - private void EmptyFiles() - { - No = 0; - labelItems.Clear(); - LabelCountParam = 0; - - - MainPageTipMessage = ""; - - - } + private void SystemSet() { @@ -617,6 +572,54 @@ namespace SlnMesnac.RfidUpload.UI.viewModel } } + /// + /// 清空标签信息列表 + /// + private void EmptyFiles() + { + No = 0; + labelItems.Clear(); + LabelCountParam = 0; + + + MainPageTipMessage = ""; + + sqliteHelper.DeleteRFIDList(); + GetRfidList(); + + } + + /// + /// 从数据库加载到界面 + /// + private void GetRfidList() + { + No = 0; + labelItems.Clear(); + LabelCountParam = 0; + + + List rfidInfos = sqliteHelper.GetRFIDList(); + if(rfidInfos != null&& rfidInfos.Count > 0) + { + foreach (var item in rfidInfos) + { + App.Current.Dispatcher.BeginInvoke((Action)(() => + { + int no = labelItems.Count; + DataGridEnt dataGridEnt = new DataGridEnt(); + dataGridEnt.no = ++no; + dataGridEnt.dbdh = _transferOrderInfo.dbdh; + dataGridEnt.result = item.Result; + dataGridEnt.recordtime = DateTime.Now; + labelItems.Add(dataGridEnt); + LabelInfoDataGrid = labelItems; + + LabelCountParam += 1; + })); + } + } + } /// @@ -625,6 +628,11 @@ namespace SlnMesnac.RfidUpload.UI.viewModel /// private void RefreshLabelInfoDataGrid(string code) { + RfidInfo rfidInfo = new RfidInfo(); + rfidInfo.Dbdh = _transferOrderInfo.dbdh; + rfidInfo.Result = code; + rfidInfo.RecordTime = DateTime.Now.ToString(); + sqliteHelper.InsertRFID(rfidInfo); bool IsHas = labelItems.Any(x => x.result == code); if (IsHas) diff --git a/slnmesnac.rfidupload.Repository/SqlSugarHelper.cs b/slnmesnac.rfidupload.Repository/SqlSugarHelper.cs index 3e2bd13..4a4d98b 100644 --- a/slnmesnac.rfidupload.Repository/SqlSugarHelper.cs +++ b/slnmesnac.rfidupload.Repository/SqlSugarHelper.cs @@ -67,6 +67,8 @@ namespace slnmesnac.rfidupload.Repository }); } + + #region 数据重传表相关操作 /// /// 插入记录 /// @@ -118,13 +120,51 @@ namespace slnmesnac.rfidupload.Repository /// /// /// - public int updateRecordByFfjhNo(string ffjhNo,bool uploadResult) + public int updateRecordByFfjhNo(string ffjhNo, bool uploadResult) { int flag = uploadResult ? 1 : 0; string sql = $"UPDATE UPLOAD_RECORD SET isSuccess = {flag} WHERE ffjhNo = {ffjhNo}"; int result = db.Updateable(sql).ExecuteCommand(); return result; } + #endregion + + + #region RFID数据表相关操作 + /// + /// 查询记录列表--不包含strList字段 + /// + /// + /// + public List GetRFIDList() + { + List list; + list = db.Queryable().ToList(); + return list; + } + + /// + /// 删除所有RFID + /// + /// + /// + public bool DeleteRFIDList() + { + int count = db.Deleteable().ExecuteCommand(); + return count>0? true : false; + } + + /// + /// 插入一条RFID + /// + /// + /// + public int InsertRFID(RfidInfo record) + { + int result = db.Insertable(record).ExecuteCommand(); + return result; + } + #endregion } } \ No newline at end of file