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