From 960b33fa24c47a330e51a2c24859d681ae62caeb Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 16 四月 2026 10:09:49 +0800
Subject: [PATCH] 重构任务与库存模型,增强日志管理与区域接口
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 113 insertions(+), 0 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs
index 9386a28..669b38d 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEAWCS_IRepository;
using WIDESEAWCS_ISystemServices;
@@ -15,5 +16,117 @@
public Sys_LogService(ISys_LogRepository BaseDal) : base(BaseDal)
{
}
+ public WebResponseContent GetLogName()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ List<object> data = new List<object>();
+ DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\Logs\\");
+ DirectoryInfo[] firstDirectoryInfos = folder.GetDirectories().OrderByDescending(x => x.CreationTime).ToArray();
+ int k = 2020;
+ for (int i = 0; i < firstDirectoryInfos.Length; i++)
+ {
+ if (firstDirectoryInfos[i].Name != "Info")
+ {
+ FileInfo[] nextFileInfos = firstDirectoryInfos[i].GetFiles();
+ List<object> values = new List<object>();
+ for (int j = 0; j < nextFileInfos.Length; j++)
+ {
+ values.Add(new { label = nextFileInfos[j].Name, id = k, hidden = true, fatherNode = firstDirectoryInfos[i].Name });
+ k++;
+ }
+ data.Add(new { label = firstDirectoryInfos[i].Name, children = values, id = i, hidden = false });
+ }
+ }
+
+ FileInfo[] nextFileInfo = folder.GetFiles();
+ List<object> value = new List<object>();
+ for (int j = 0; j < nextFileInfo.Length; j++)
+ {
+ value.Add(new { label = nextFileInfo[j].Name, id = k, hidden = true, fatherNode = folder.Name });
+ k++;
+ }
+ data.Add(new { label = folder.Name, children = value, id = 1, hidden = false });
+
+ return WebResponseContent.Instance.OK(data: data);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent GetLog(string fileName)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ List<FileInfo> files = new List<FileInfo>();
+ DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\Logs\\");
+ DirectoryInfo[] firstDirectoryInfos = folder.GetDirectories();
+ for (int i = 0; i < firstDirectoryInfos.Length; i++)
+ {
+ FileInfo[] nextFileInfos = firstDirectoryInfos[i].GetFiles();
+ files.AddRange(nextFileInfos);
+ }
+
+ FileInfo[] nextFileInfo = folder.GetFiles();
+ files.AddRange(nextFileInfo);
+ if (files.Count > 0)
+ {
+ FileInfo file = files.Where(x => x.Name == fileName).FirstOrDefault();
+ if (file == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒版棩蹇楁枃浠�: {fileName}");
+ }
+
+ // 浣跨敤鍏变韩璇诲彇妯″紡
+ using (FileStream stream = new FileStream(
+ file.FullName,
+ FileMode.Open,
+ FileAccess.Read,
+ FileShare.ReadWrite))
+ using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
+ {
+ StringBuilder text = new StringBuilder();
+ List<string> lines = new List<string>();
+ while (!reader.EndOfStream)
+ {
+ var line = reader.ReadLine();
+ lines.Add(line);
+ }
+
+ content = WebResponseContent.Instance.OK(data: lines);
+ }
+ }
+ else
+ {
+ content = WebResponseContent.Instance.Error($"鏈壘鍒版棩蹇楁枃浠�,銆恵fileName}銆�");
+ }
+ }
+ catch (IOException ex)
+ {
+ if (IsFileLockedException(ex))
+ {
+ content = WebResponseContent.Instance.Error($"鏃ュ織鏂囦欢姝e湪琚郴缁熷啓鍏ワ紝璇风◢鍚庡啀璇�");
+ }
+ else
+ {
+ content = WebResponseContent.Instance.Error($"鎵撳紑鏃ュ織鏂囦欢閿欒,{ex.Message}");
+ }
+ }
+ catch (Exception ex)
+ {
+ content = WebResponseContent.Instance.Error($"鎵撳紑鏃ュ織鏂囦欢閿欒,{ex.Message}");
+ }
+ return content;
+ }
+
+ private bool IsFileLockedException(IOException ex)
+ {
+ int errorCode = ex.HResult & 0xFFFF;
+ return errorCode == 32 || errorCode == 33; // ERROR_SHARING_VIOLATION or ERROR_LOCK_VIOLATION
+ }
}
}
--
Gitblit v1.9.3