From 5dc3cc86f5835369cd830f2a83318b9a8d69cf69 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期二, 15 七月 2025 16:20:19 +0800
Subject: [PATCH] 11

---
 MESApplication/Controllers/PLM/PLMController.cs |  266 ++++++++++++++++++++++++++--------------------------
 1 files changed, 132 insertions(+), 134 deletions(-)

diff --git a/MESApplication/Controllers/PLM/PLMController.cs b/MESApplication/Controllers/PLM/PLMController.cs
index 4021a4f..404c901 100644
--- a/MESApplication/Controllers/PLM/PLMController.cs
+++ b/MESApplication/Controllers/PLM/PLMController.cs
@@ -1,162 +1,160 @@
-锘縰sing ConsoleApp1;
+锘縰sing System.Dynamic;
+using System.Text.RegularExpressions;
+using MES.Service.Dto.service;
 using MES.Service.service.PLM;
 using MES.Service.util;
 using Microsoft.AspNetCore.Mvc;
-using System.Dynamic;
-using System.IO;
-using PdfiumViewer;
-using MES.Service.Dto.service;
-using System.Drawing;
-using System.Collections.Generic;
-using System.Threading.Tasks;
 using Oracle.ManagedDataAccess.Client;
-using Microsoft.Extensions.Configuration;
-using System;
-using System.Text.RegularExpressions;
-using IronSoftware.Drawing;
 
-namespace MESApplication.Controllers.PLM
+namespace MESApplication.Controllers.PLM;
+
+[ApiController]
+[Route("api/PLM")]
+public class PLMController : ControllerBase
 {
-    [ApiController]
-    [Route("api/PLM")]
-    public class PLMController : ControllerBase
+    private readonly IConfiguration _configuration;
+    private readonly PLMManager m = new();
+    private readonly WarehouseDownloadDoc wdd = new();
+
+    public PLMController(IConfiguration configuration)
     {
-        private readonly PLMManager m = new();
-        private readonly WarehouseDownloadDoc wdd = new();
-        private readonly IConfiguration _configuration;
+        _configuration = configuration;
+    } // RetrieveDrawings 璋冨彇鍥剧焊
 
-        public PLMController(IConfiguration configuration)
+    [HttpPost("RetrieveDrawings")]
+    public async Task<ResponseResult> RetrieveDrawings(PurchaseInventory dto)
+    {
+        try
         {
-            _configuration = configuration;
-        } // RetrieveDrawings 璋冨彇鍥剧焊
+            dynamic resultInfos = new ExpandoObject();
+            var retrieveDrawings =
+                m.RetrieveDrawings(dto.ItemNo); // 鑷畾涔変繚瀛樻牴鐩綍
+            // string saveRootDirectory = @"D:\LTSMES\PLM";                
+            var saveRootDirectory = @"E:\SOPimage";
+            var
+                saveDirectory =
+                    Path.Combine(saveRootDirectory,
+                        dto.ItemNo); // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屽鏋滆 itemNo 宸插瓨鍦ㄨ〃涓紝鍒欒繘琛屽垹闄ゆ搷浣�
+            await DeleteRecordsByItemNo(dto.ItemNo);
+            // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屾鏌ュ苟鍒犻櫎鏃ф枃浠跺す锛堝鏋滃瓨鍦級锛岀劧鍚庨噸鏂板垱寤�
+            if (Directory.Exists(saveDirectory))
+                Directory.Delete(saveDirectory, true);
 
-        [HttpPost("RetrieveDrawings")]
-        public async Task<ResponseResult> RetrieveDrawings(PurchaseInventory dto)
+            Directory.CreateDirectory(saveDirectory);
+            foreach (var retrieveDrawing in retrieveDrawings)
+            {
+                var streamFile = wdd.SendRequest("Download",
+                    retrieveDrawing.FRelevantObject);
+                var fileStreamResult = File(streamFile,
+                    "application/octet-stream", retrieveDrawing.FName);
+                var saveResult = await SavePdfAsync(fileStreamResult,
+                    saveRootDirectory, dto.ItemNo, dto.Cx,
+                    retrieveDrawing.FName);
+            }
+
+            return new ResponseResult
+                { status = 0, message = "OK", data = resultInfos };
+        }
+        catch (Exception ex)
         {
-            try
-            {
-                dynamic resultInfos = new ExpandoObject();
-                var retrieveDrawings =
-                    m.RetrieveDrawings(dto.ItemNo); // 鑷畾涔変繚瀛樻牴鐩綍
-                // string saveRootDirectory = @"D:\LTSMES\PLM";                
-                string saveRootDirectory = @"E:\SOPimage";
-                string
-                    saveDirectory =
-                        Path.Combine(saveRootDirectory,
-                            dto.ItemNo); // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屽鏋滆 itemNo 宸插瓨鍦ㄨ〃涓紝鍒欒繘琛屽垹闄ゆ搷浣�
-                await DeleteRecordsByItemNo(dto.ItemNo);
-                // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屾鏌ュ苟鍒犻櫎鏃ф枃浠跺す锛堝鏋滃瓨鍦級锛岀劧鍚庨噸鏂板垱寤�
-                if (Directory.Exists(saveDirectory))
-                {
-                    Directory.Delete(saveDirectory, true);
-                }
+            return ResponseResult.ResponseError(ex);
+        }
+    } // 鉁� 鐩存帴淇濆瓨 PDF锛屼笉鍐嶈浆鎹负鍥剧墖
 
-                Directory.CreateDirectory(saveDirectory);
-                foreach (var retrieveDrawing in retrieveDrawings)
-                {
-                    var streamFile = wdd.SendRequest("Download", retrieveDrawing.FRelevantObject);
-                    var fileStreamResult = File(streamFile, "application/octet-stream", retrieveDrawing.FName);
-                    var saveResult = await SavePdfAsync(fileStreamResult, saveRootDirectory, dto.ItemNo, dto.Cx,
-                        retrieveDrawing.FName);
-                }
-
-                return new ResponseResult { status = 0, message = "OK", data = resultInfos };
-            }
-            catch (Exception ex)
-            {
-                return ResponseResult.ResponseError(ex);
-            }
-        } // 鉁� 鐩存帴淇濆瓨 PDF锛屼笉鍐嶈浆鎹负鍥剧墖
-
-        private async Task<dynamic> SavePdfAsync(FileStreamResult fileStreamResult, string saveRootDirectory,
-            string itemNo, string cx, string fPhysicalFileName)
+    private async Task<dynamic> SavePdfAsync(FileStreamResult fileStreamResult,
+        string saveRootDirectory,
+        string itemNo, string cx, string fPhysicalFileName)
+    {
+        try
         {
-            try
+            // 纭繚鐩綍瀛樺湪
+            var saveDirectory = Path.Combine(saveRootDirectory, itemNo);
+            if (!Directory.Exists(saveDirectory))
+                Directory.CreateDirectory(saveDirectory); // 淇濆瓨 PDF 鏂囦欢
+
+            var outputFilePath = Path.Combine(saveDirectory,
+                $"{Path.GetFileNameWithoutExtension(fPhysicalFileName)}.pdf");
+            using (var fileStream = new FileStream(outputFilePath,
+                       FileMode.Create, FileAccess.Write))
             {
-                // 纭繚鐩綍瀛樺湪
-                string saveDirectory = Path.Combine(saveRootDirectory, itemNo);
-                if (!Directory.Exists(saveDirectory))
-                {
-                    Directory.CreateDirectory(saveDirectory);
-                } // 淇濆瓨 PDF 鏂囦欢
-
-                string outputFilePath = Path.Combine(saveDirectory,
-                    $"{Path.GetFileNameWithoutExtension(fPhysicalFileName)}.pdf");
-                using (var fileStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
-                {
-                    await fileStreamResult.FileStream.CopyToAsync(fileStream);
-                }
-
-                Console.WriteLine(
-                    $"PDF 鏂囦欢宸蹭繚瀛�: {outputFilePath}"); // 鐢熸垚鏂扮殑 URL锛堟寚鍚� PDF 鏂囦欢锛�
-                string
-                    url =
-                        $"http://192.168.1.92:89/{itemNo}/{Path.GetFileName(outputFilePath)}"; // 鎻愬彇鏂囦欢鍚嶄腑鐨勬渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝骞跺姞涓娾�滃伐搴忊�濆墠缂�
-                string extractedNumber = ExtractNumberFromFileName(fPhysicalFileName);
-                string
-                    process = string.IsNullOrEmpty(extractedNumber)
-                        ? string.Empty
-                        : $"宸ュ簭{extractedNumber}"; // 鉁� 鎻掑叆鏁版嵁搴擄紙URL 鎸囧悜 PDF锛屽苟鏇存柊宸ュ簭瀛楁锛�
-                await InsertUrlIntoDatabase(url, itemNo, cx, process);
-                return new { PdfFilePath = outputFilePath };
+                await fileStreamResult.FileStream.CopyToAsync(fileStream);
             }
-            catch (Exception ex)
-            {
-                Console.WriteLine($"PDF 淇濆瓨澶辫触: {ex.Message}");
-                return new { ErrorMessage = "PDF 淇濆瓨澶辫触", Exception = ex.Message };
-            }
-        } // 鎻愬彇鏂囦欢鍚嶄腑鐨勬渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝蹇界暐鎷彿绛夊唴瀹�
 
-        private string ExtractNumberFromFileName(string fileName)
+            Console.WriteLine(
+                $"PDF 鏂囦欢宸蹭繚瀛�: {outputFilePath}"); // 鐢熸垚鏂扮殑 URL锛堟寚鍚� PDF 鏂囦欢锛�
+            var
+                url =
+                    $"http://192.168.1.92:89/{itemNo}/{Path.GetFileName(outputFilePath)}"; // 鎻愬彇鏂囦欢鍚嶄腑鐨勬渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝骞跺姞涓娾�滃伐搴忊�濆墠缂�
+            var extractedNumber = ExtractNumberFromFileName(fPhysicalFileName);
+            var
+                process = string.IsNullOrEmpty(extractedNumber)
+                    ? string.Empty
+                    : $"宸ュ簭{extractedNumber}"; // 鉁� 鎻掑叆鏁版嵁搴擄紙URL 鎸囧悜 PDF锛屽苟鏇存柊宸ュ簭瀛楁锛�
+            await InsertUrlIntoDatabase(url, itemNo, cx, process);
+            return new { PdfFilePath = outputFilePath };
+        }
+        catch (Exception ex)
         {
-            // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝蹇界暐鎷彿绛夊瓧绗�
-            var match = Regex.Match(fileName, @"_([A-Za-z0-9]+)(?=\(?\.pdf$)");
-            if (match.Success)
-            {
-                // 濡傛灉鍖归厤鎴愬姛锛岃繑鍥炴彁鍙栫殑閮ㄥ垎
-                return match.Groups[1].Value;
-            }
-            else
-            {
-                // 濡傛灉娌℃湁鎵惧埌绗﹀悎鏉′欢鐨勯儴鍒嗭紝杩斿洖绌哄瓧绗︿覆
-                return string.Empty;
-            }
-        } // 灏� URL銆乮temNo銆乧x 鍜屽伐搴忓瓧娈垫彃鍏ュ埌鏁版嵁搴撲腑 
+            Console.WriteLine($"PDF 淇濆瓨澶辫触: {ex.Message}");
+            return new { ErrorMessage = "PDF 淇濆瓨澶辫触", Exception = ex.Message };
+        }
+    } // 鎻愬彇鏂囦欢鍚嶄腑鐨勬渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝蹇界暐鎷彿绛夊唴瀹�
+
+    private string ExtractNumberFromFileName(string fileName)
+    {
+        // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨渶鍚庝竴涓�'_'鍒�'.pdf'涔嬮棿鐨勫瓧姣嶆暟瀛楅儴鍒嗭紝蹇界暐鎷彿绛夊瓧绗�
+        var match = Regex.Match(fileName, @"_([A-Za-z0-9]+)(?=\(?\.pdf$)");
+        if (match.Success)
+            // 濡傛灉鍖归厤鎴愬姛锛岃繑鍥炴彁鍙栫殑閮ㄥ垎
+            return match.Groups[1].Value;
+
+        // 濡傛灉娌℃湁鎵惧埌绗﹀悎鏉′欢鐨勯儴鍒嗭紝杩斿洖绌哄瓧绗︿覆
+        return string.Empty;
+    } // 灏� URL銆乮temNo銆乧x 鍜屽伐搴忓瓧娈垫彃鍏ュ埌鏁版嵁搴撲腑 
 
 
-        private async Task InsertUrlIntoDatabase(string url, string itemNo, string cx, string gx)
+    private async Task InsertUrlIntoDatabase(string url, string itemNo,
+        string cx, string gx)
+    {
+        var connectionString = _configuration["AppSettings:DataBaseConn"];
+        using (var connection = new OracleConnection(connectionString))
         {
-            string connectionString = _configuration["AppSettings:DataBaseConn"];
-            using (OracleConnection connection = new OracleConnection(connectionString))
+            await connection.OpenAsync();
+            var insertQuery =
+                "INSERT INTO MES_SOP_URL_TABLE (id, URL, ITEM_NO, CX, GX, CREATE_DATE) VALUES (SEQ_SOP_URL.NEXTVAL, :url, :item_no, :cx, :gx, :create_date)";
+            using (var insertCommand =
+                   new OracleCommand(insertQuery, connection))
             {
-                await connection.OpenAsync();
-                string insertQuery =
-                    "INSERT INTO MES_SOP_URL_TABLE (id, URL, ITEM_NO, CX, GX, CREATE_DATE) VALUES (SEQ_SOP_URL.NEXTVAL, :url, :item_no, :cx, :gx, :create_date)";
-                using (OracleCommand insertCommand = new OracleCommand(insertQuery, connection))
-                {
-                    // 浣跨敤 Parameters.Add 鏂规硶娣诲姞鍙傛暟
-                    insertCommand.Parameters.Add("url", OracleDbType.Varchar2).Value = url;
-                    insertCommand.Parameters.Add("item_no", OracleDbType.Varchar2).Value = itemNo;
-                    insertCommand.Parameters.Add("cx", OracleDbType.Varchar2).Value = cx;
-                    insertCommand.Parameters.Add("gx", OracleDbType.Varchar2).Value = gx;
-                    insertCommand.Parameters.Add("create_date", OracleDbType.Date).Value = DateTime.Now;
-                    await insertCommand.ExecuteNonQueryAsync();
-                }
+                // 浣跨敤 Parameters.Add 鏂规硶娣诲姞鍙傛暟
+                insertCommand.Parameters.Add("url", OracleDbType.Varchar2)
+                    .Value = url;
+                insertCommand.Parameters.Add("item_no", OracleDbType.Varchar2)
+                    .Value = itemNo;
+                insertCommand.Parameters.Add("cx", OracleDbType.Varchar2)
+                    .Value = cx;
+                insertCommand.Parameters.Add("gx", OracleDbType.Varchar2)
+                    .Value = gx;
+                insertCommand.Parameters.Add("create_date", OracleDbType.Date)
+                    .Value = DateTime.Now;
+                await insertCommand.ExecuteNonQueryAsync();
             }
-        } // 鍒犻櫎鎸囧畾 itemNo 鐨勮褰�      
+        }
+    } // 鍒犻櫎鎸囧畾 itemNo 鐨勮褰�      
 
-        private async Task DeleteRecordsByItemNo(string itemNo)
+    private async Task DeleteRecordsByItemNo(string itemNo)
+    {
+        var connectionString = _configuration["AppSettings:DataBaseConn"];
+        using (var connection = new OracleConnection(connectionString))
         {
-            string connectionString = _configuration["AppSettings:DataBaseConn"];
-            using (OracleConnection connection = new OracleConnection(connectionString))
+            await connection.OpenAsync();
+            var deleteQuery =
+                "DELETE FROM MES_SOP_URL_TABLE WHERE ITEM_NO = :item_no";
+            using (var deleteCommand =
+                   new OracleCommand(deleteQuery, connection))
             {
-                await connection.OpenAsync();
-                string deleteQuery = "DELETE FROM MES_SOP_URL_TABLE WHERE ITEM_NO = :item_no";
-                using (OracleCommand deleteCommand = new OracleCommand(deleteQuery, connection))
-                {
-                    deleteCommand.Parameters.Add("item_no", OracleDbType.Varchar2).Value = itemNo;
-                    await deleteCommand.ExecuteNonQueryAsync();
-                }
+                deleteCommand.Parameters.Add("item_no", OracleDbType.Varchar2)
+                    .Value = itemNo;
+                await deleteCommand.ExecuteNonQueryAsync();
             }
         }
     }

--
Gitblit v1.9.3