From 17eafa33665220ef14b2912f38cce84a360b2f0d Mon Sep 17 00:00:00 2001 From: liuwf Date: Fri, 26 Jul 2024 19:03:31 +0800 Subject: [PATCH] =?UTF-8?q?add-=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8F=8A=E7=85=A7=E7=89=87=E5=AE=9A=E6=97=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SlnMesnac.Business/LogoBusiness.cs | 66 +++++++++++++++++++ SlnMesnac.Config/DebugConfig.cs | 10 +++ .../ViewModel/StatisticsPageViewModel.cs | 11 +++- 3 files changed, 86 insertions(+), 1 deletion(-) diff --git a/SlnMesnac.Business/LogoBusiness.cs b/SlnMesnac.Business/LogoBusiness.cs index 02c00e1..2901906 100644 --- a/SlnMesnac.Business/LogoBusiness.cs +++ b/SlnMesnac.Business/LogoBusiness.cs @@ -15,6 +15,7 @@ using System.Security.Cryptography.Xml; using System.ServiceModel.Channels; using System.Threading; using System.Threading.Tasks; +using System.Timers; using TouchSocket.Core; namespace SlnMesnac.Business @@ -38,6 +39,8 @@ namespace SlnMesnac.Business // 存放照片路径 public static string PicturePath = System.Environment.CurrentDirectory + "/picture/"; + // 存放日志路径 + public static string LogPath = System.Environment.CurrentDirectory + "/Logs/"; /// /// 存储海康相机识别结果 @@ -73,6 +76,10 @@ namespace SlnMesnac.Business plc = _plcPool.GetPlcByKey("plc"); lightHelper.InstanceSerialPort(); + //定时清除日志及照片 + CleanOldLogs(PicturePath); + CleanOldLogs(LogPath); + InitClearTimer(); } private void ReceiveCameraResult(string result) @@ -448,5 +455,64 @@ namespace SlnMesnac.Business #endregion + #region 定时清除照片及日志 + private void InitClearTimer() + { + System.Timers.Timer timer = new System.Timers.Timer + { + Interval = TimeSpan.FromDays(1).TotalMilliseconds, // 每天执行一次 + AutoReset = true + }; + timer.Elapsed += OnTimedEvent; + timer.Start(); + + } + + private void OnTimedEvent(object source, ElapsedEventArgs e) + { + CleanOldLogs(PicturePath); + CleanOldLogs(LogPath); + } + + + private void CleanOldLogs(string Path) + { + try + { + int saveDays = int.Parse(config.PictureSaveTime); + var directoryInfo = new DirectoryInfo(Path); + if (!directoryInfo.Exists) + { + Console.WriteLine($"日志文件夹 {Path} 不存在."); + return; + } + + var cutoffDate = DateTime.Now.AddDays(-saveDays); + + var directories = directoryInfo.GetDirectories(); + foreach (var directory in directories) + { + // 解析文件夹名称 + if (DateTime.TryParseExact(directory.Name, "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out DateTime folderDate)) + { + if (folderDate < cutoffDate) + { + Console.WriteLine($"删除过期日志文件夹: {directory.FullName}"); + directory.Delete(true); // 删除文件夹及其内容 + } + } + else + { + Console.WriteLine($"文件夹名称不符合日期格式: {directory.Name}"); + } + } + } + catch (Exception ex) + { + Console.WriteLine($"清理日志时发生错误: {ex.Message}"); + } + } + #endregion + } } diff --git a/SlnMesnac.Config/DebugConfig.cs b/SlnMesnac.Config/DebugConfig.cs index 657d9b0..3cf5c99 100644 --- a/SlnMesnac.Config/DebugConfig.cs +++ b/SlnMesnac.Config/DebugConfig.cs @@ -125,5 +125,15 @@ namespace SlnMesnac.Config get { return iniHelper.IniReadValue("system", "Ch2"); } set { iniHelper.IniWriteValue("system", "Ch2", value); } } + + /// + /// 照片及日志保存时间 + /// + public string PictureSaveTime + { + get { return iniHelper.IniReadValue("system", "PictureSaveTime"); } + set { iniHelper.IniWriteValue("system", "PictureSaveTime", value); } + } + } } diff --git a/SlnMesnac.WPF/ViewModel/StatisticsPageViewModel.cs b/SlnMesnac.WPF/ViewModel/StatisticsPageViewModel.cs index d208312..5555c7e 100644 --- a/SlnMesnac.WPF/ViewModel/StatisticsPageViewModel.cs +++ b/SlnMesnac.WPF/ViewModel/StatisticsPageViewModel.cs @@ -233,7 +233,7 @@ namespace SlnMesnac.WPF.ViewModel #endregion - #region 根据条码号准确查询或者根据型号加上时间段模糊查询 + #region 根据条码号准确查询或者根据型号加上时间段与结果模糊查询 private async void QueryByCode() { @@ -252,6 +252,15 @@ namespace SlnMesnac.WPF.ViewModel list = await logoIdentifyService.QueryAllByTime(BeginDate, EndDate); //过滤型号 list = list.Where(x => x.ProductCode.Contains(QueryCode) || x.MaterialName.Contains(QueryCode) || x.MaterialType.Contains(QueryCode)).ToList(); + if (SelectedOption.Content.ToString() == "OK") + { + list = list.Where(x => x.Result == 1).ToList(); + } + else if (SelectedOption.Content.ToString() == "NG") + { + list = list.Where(x => x.Result == 0).ToList(); + } + } if (list != null && list.Count > 0)