From 2f11a821259c77d8e48bb0b83e7f01b0f529b10a Mon Sep 17 00:00:00 2001
From: wbc <2597324127@qq.com>
Date: 星期三, 23 四月 2025 11:16:02 +0800
Subject: [PATCH] 3月27号首检巡检增加ftp获取文件列表

---
 MESApplication/Controllers/QC/SJController.cs |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/MESApplication/Controllers/QC/SJController.cs b/MESApplication/Controllers/QC/SJController.cs
index a4f2d9d..e5e7a09 100644
--- a/MESApplication/Controllers/QC/SJController.cs
+++ b/MESApplication/Controllers/QC/SJController.cs
@@ -1,4 +1,5 @@
 锘縰sing System.Dynamic;
+using System.Net;
 using MES.Service.Dto.service;
 using MES.Service.Modes;
 using MES.Service.service.QC;
@@ -398,4 +399,134 @@
             return ResponseResult.ResponseError(ex);
         }
     }
+
+
+
+    //FTPLIST
+    [HttpPost("ftpList")]
+    public async Task<ResponseResult> getFtpList([FromBody] JObject data)
+    {
+        var itemno = data["itemno"]?.ToString();
+
+        if (itemno == null || itemno =="") return new ResponseResult
+        {
+            status = 1,
+            message = "鏈壘鍒拌浜у搧鐨勬枃浠朵俊鎭�",
+            data = "鏈壘鍒拌浜у搧鐨勬枃浠朵俊鎭�"
+        };
+
+        var ftpAddress = "ftp://192.168.1.223:21";
+        var username = "administrator";
+        var password = "Rdyl8888";
+        var remotePath = "PQC/SJ/" + itemno;
+
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+          
+            var ftpFiles = new SJService().GetFtpFileList(ftpAddress, username, password, remotePath);
+            resultInfos.tbBillList = ftpFiles;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+   
+
+    [HttpPost("download")]
+    public async Task<IActionResult> DownloadFile([FromBody] JObject data)
+    {
+        var fileName = data["fileName"]?.ToString();
+        var itemno   = data["itemno"]?.ToString();
+
+        var ftpAddress = "ftp://192.168.1.223:21";
+        var username = "administrator";
+        var password = "Rdyl8888";
+        var remotePath = "PQC/SJ/" + itemno;
+
+        try
+        {
+            byte[] fileData = new SJService().DownloadFtpFile(ftpAddress, username, password, $"{remotePath}/{fileName}"); // 鎷兼帴瀹屾暣璺緞
+
+            // 鐢熸垚涓存椂璁块棶 URL锛堢ず渚嬮�昏緫锛�
+            var tempFileId = Guid.NewGuid().ToString();
+            // 灏嗘枃浠剁紦瀛樺埌涓存椂鐩綍锛堝疄闄呴」鐩渶鑰冭檻娓呯悊鏈哄埗锛�
+            var tempPath = Path.Combine(Path.GetTempPath(), tempFileId);
+            System.IO.File.WriteAllBytes(tempPath, fileData);
+
+            // 杩斿洖鍙洿鎺ヨ闂殑 URL
+            var baseUrl = $"{Request.Scheme}://{Request.Host}";
+
+
+
+            return Ok(new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = new
+                {
+                    url = $"{baseUrl}/api/SJ/downloadTemp?fileId={tempFileId}&fileName={fileName}",
+                    mimeType = GetMimeType(fileName)
+                }
+            });
+        }
+        catch (Exception ex)
+        {
+            return BadRequest(ResponseResult.ResponseError(ex));
+        }
+    }
+
+
+    private string GetMimeType(string fileName)
+    {
+        string mimeType = "application/octet-stream";
+        if (fileName.EndsWith(".jpg") || fileName.EndsWith(".jpeg"))
+        {
+            mimeType = "image/jpeg";
+        }
+        else if (fileName.EndsWith(".png"))
+        {
+            mimeType = "image/png";
+        }
+        else if (fileName.EndsWith(".gif"))
+        {
+            mimeType = "image/gif";
+        }
+        else if (fileName.EndsWith(".pdf"))
+        {
+            mimeType = "application/pdf";
+        }
+        else if (fileName.EndsWith(".doc") || fileName.EndsWith(".docx"))
+        {
+            mimeType = "application/msword";
+        }
+        else if (fileName.EndsWith(".xls") || fileName.EndsWith(".xlsx"))
+        {
+            mimeType = "application/vnd.ms-excel";
+        }
+        return mimeType;
+    }
+
+  
+   [HttpGet("downloadTemp")]
+    public IActionResult DownloadTemp(string fileId, string fileName)
+        {
+            var tempPath = Path.Combine(Path.GetTempPath(), fileId);
+            if (!System.IO.File.Exists(tempPath))
+            {
+                return NotFound();
+            }
+            var fileBytes = System.IO.File.ReadAllBytes(tempPath);
+            return File(fileBytes, GetMimeType(fileName), fileName);
+        }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3