From 5ad77f8491b3137238bafe30c2e2d83c60558bdb Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期四, 31 七月 2025 16:23:14 +0800
Subject: [PATCH] 修改sop获取数据

---
 MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs |   74 +++++++++++++-
 MESApplication/Controllers/PLM/PLMController.cs                             |  225 +++++++++++++++++++++++++++++---------------
 2 files changed, 216 insertions(+), 83 deletions(-)

diff --git a/MESApplication/Controllers/PLM/PLMController.cs b/MESApplication/Controllers/PLM/PLMController.cs
index 404c901..cc87770 100644
--- a/MESApplication/Controllers/PLM/PLMController.cs
+++ b/MESApplication/Controllers/PLM/PLMController.cs
@@ -13,13 +13,13 @@
 public class PLMController : ControllerBase
 {
     private readonly IConfiguration _configuration;
-    private readonly PLMManager m = new();
-    private readonly WarehouseDownloadDoc wdd = new();
+    private readonly PLMManager _plmManager = new();
+    private readonly WarehouseDownloadDoc _warehouseDownloadDoc = new();
 
     public PLMController(IConfiguration configuration)
     {
         _configuration = configuration;
-    } // RetrieveDrawings 璋冨彇鍥剧焊
+    }
 
     [HttpPost("RetrieveDrawings")]
     public async Task<ResponseResult> RetrieveDrawings(PurchaseInventory dto)
@@ -27,70 +27,66 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var retrieveDrawings =
-                m.RetrieveDrawings(dto.ItemNo); // 鑷畾涔変繚瀛樻牴鐩綍
-            // string saveRootDirectory = @"D:\LTSMES\PLM";                
+            var drawings = _plmManager.RetrieveDrawings(dto.ItemNo);
             var saveRootDirectory = @"E:\SOPimage";
-            var
-                saveDirectory =
-                    Path.Combine(saveRootDirectory,
-                        dto.ItemNo); // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屽鏋滆 itemNo 宸插瓨鍦ㄨ〃涓紝鍒欒繘琛屽垹闄ゆ搷浣�
-            await DeleteRecordsByItemNo(dto.ItemNo);
-            // 鍦ㄥ惊鐜鐞嗘墍鏈� PDF 鏂囦欢涔嬪墠锛屾鏌ュ苟鍒犻櫎鏃ф枃浠跺す锛堝鏋滃瓨鍦級锛岀劧鍚庨噸鏂板垱寤�
+            var saveDirectory = Path.Combine(saveRootDirectory, dto.ItemNo);
+            
+            // 鍏堝垹闄ゅ綋鍓嶄骇绾�(cx)鐨勬暟鎹拰瀵瑰簲鏂囦欢澶�
+            await DeleteRecordsByProductionLine(dto.Cx); // 鏂板锛氭寜浜х嚎鍒犻櫎璁板綍
+            
             if (Directory.Exists(saveDirectory))
                 Directory.Delete(saveDirectory, true);
 
             Directory.CreateDirectory(saveDirectory);
-            foreach (var retrieveDrawing in retrieveDrawings)
+            
+            // 澶勭悊姣忎釜鍥剧焊
+            foreach (var drawing in drawings)
             {
-                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);
+                var streamFile = _warehouseDownloadDoc.SendRequest("Download", drawing.FRelevantObject);
+                var fileStreamResult = File(streamFile, "application/octet-stream", drawing.FName);
+                await SavePdfAsync(fileStreamResult, saveRootDirectory, dto.ItemNo, dto.Cx, drawing.FName);
             }
 
-            return new ResponseResult
-                { status = 0, message = "OK", data = resultInfos };
+            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 fileName)
     {
         try
         {
-            // 纭繚鐩綍瀛樺湪
             var saveDirectory = Path.Combine(saveRootDirectory, itemNo);
             if (!Directory.Exists(saveDirectory))
-                Directory.CreateDirectory(saveDirectory); // 淇濆瓨 PDF 鏂囦欢
+                Directory.CreateDirectory(saveDirectory);
 
             var outputFilePath = Path.Combine(saveDirectory,
-                $"{Path.GetFileNameWithoutExtension(fPhysicalFileName)}.pdf");
-            using (var fileStream = new FileStream(outputFilePath,
-                       FileMode.Create, FileAccess.Write))
+                $"{Path.GetFileNameWithoutExtension(fileName)}.pdf");
+            
+            using (var fileStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
             {
                 await fileStreamResult.FileStream.CopyToAsync(fileStream);
             }
 
-            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);
+            Console.WriteLine($"PDF 鏂囦欢宸蹭繚瀛�: {outputFilePath}");
+            
+            var url = $"http://192.168.1.92:89/{itemNo}/{Path.GetFileName(outputFilePath)}";
+            var extractedNumber = ExtractNumberFromFileName(fileName);
+            var process = string.IsNullOrEmpty(extractedNumber) ? string.Empty : $"宸ュ簭{extractedNumber}";
+            
+            // 鎻掑叆璁板綍骞惰幏鍙朓D
+            var newRecordId = await InsertUrlIntoDatabase(url, itemNo, cx, process);
+            
+            // 濡傛灉鎻掑叆鎴愬姛锛屾煡璇㈠苟鏇存柊MAC鍦板潃
+            if (newRecordId > 0)
+            {
+                await UpdateMacAddress(newRecordId, cx, process);
+            }
+
             return new { PdfFilePath = outputFilePath };
         }
         catch (Exception ex)
@@ -98,64 +94,137 @@
             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 match.Success ? match.Groups[1].Value : string.Empty;
+    }
 
-        // 濡傛灉娌℃湁鎵惧埌绗﹀悎鏉′欢鐨勯儴鍒嗭紝杩斿洖绌哄瓧绗︿覆
-        return string.Empty;
-    } // 灏� URL銆乮temNo銆乧x 鍜屽伐搴忓瓧娈垫彃鍏ュ埌鏁版嵁搴撲腑 
-
-
-    private async Task InsertUrlIntoDatabase(string url, string itemNo,
-        string cx, string gx)
+    private async Task<long> InsertUrlIntoDatabase(string url, string itemNo, string cx, string gx)
     {
         var connectionString = _configuration["AppSettings:DataBaseConn"];
         using (var 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))
+            
+            // 浣跨敤浜嬪姟纭繚鏁版嵁涓�鑷存��
+            using (var transaction = connection.BeginTransaction())
             {
-                // 浣跨敤 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();
+                try
+                {
+                    // 鍏堣幏鍙栧簭鍒楀��
+                    var getSeqQuery = "SELECT SEQ_SOP_URL.NEXTVAL FROM DUAL";
+                    using (var seqCommand = new OracleCommand(getSeqQuery, connection))
+                    {
+                        seqCommand.Transaction = transaction;
+                        var newId = Convert.ToInt64(await seqCommand.ExecuteScalarAsync());
+                        
+                        // 鎻掑叆璁板綍
+                        var insertQuery = @"INSERT INTO MES_SOP_URL_TABLE 
+                                            (id, URL, ITEM_NO, CX, GX, CREATE_DATE, MAC) 
+                                            VALUES (:id, :url, :item_no, :cx, :gx, :create_date, null)";
+                        
+                        using (var insertCommand = new OracleCommand(insertQuery, connection))
+                        {
+                            insertCommand.Transaction = transaction;
+                            insertCommand.Parameters.Add("id", OracleDbType.Int64).Value = newId;
+                            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();
+                        }
+                        
+                        transaction.Commit();
+                        return newId;
+                    }
+                }
+                catch (Exception)
+                {
+                    transaction.Rollback();
+                    throw;
+                }
             }
         }
-    } // 鍒犻櫎鎸囧畾 itemNo 鐨勮褰�      
+    }
 
+    private async Task UpdateMacAddress(long recordId, string cx, string gx)
+    {
+        var connectionString = _configuration["AppSettings:DataBaseConn"];
+        using (var connection = new OracleConnection(connectionString))
+        {
+            await connection.OpenAsync();
+            
+            // 浠庢瘮杈冭〃鏌ヨMAC鍦板潃
+            var selectQuery = @"SELECT MAC FROM MES_SOP_URL_TABLE_COMPARE 
+                               WHERE CX = :cx AND GX = :gx";
+            
+            using (var selectCommand = new OracleCommand(selectQuery, connection))
+            {
+                selectCommand.Parameters.Add("cx", OracleDbType.Varchar2).Value = cx;
+                selectCommand.Parameters.Add("gx", OracleDbType.Varchar2).Value = gx;
+                
+                var macAddress = await selectCommand.ExecuteScalarAsync() as string;
+                
+                // 濡傛灉鎵惧埌MAC鍦板潃锛屽垯鏇存柊鍒颁富琛�
+                if (!string.IsNullOrEmpty(macAddress))
+                {
+                    var updateQuery = @"UPDATE MES_SOP_URL_TABLE 
+                                       SET MAC = :mac 
+                                       WHERE id = :id";
+                    
+                    using (var updateCommand = new OracleCommand(updateQuery, connection))
+                    {
+                        updateCommand.Parameters.Add("mac", OracleDbType.Varchar2).Value = macAddress;
+                        updateCommand.Parameters.Add("id", OracleDbType.Int64).Value = recordId;
+                        
+                        await updateCommand.ExecuteNonQueryAsync();
+                        Console.WriteLine($"宸叉洿鏂癐D涓� {recordId} 鐨勮褰曠殑MAC鍦板潃: {macAddress}");
+                    }
+                }
+                else
+                {
+                    Console.WriteLine($"鏈壘鍒癈X={cx}, GX={gx}瀵瑰簲鐨凪AC鍦板潃");
+                }
+            }
+        }
+    }
+
+    // 鏂板锛氭寜浜х嚎(cx)鍒犻櫎璁板綍
+    private async Task DeleteRecordsByProductionLine(string cx)
+    {
+        var connectionString = _configuration["AppSettings:DataBaseConn"];
+        using (var connection = new OracleConnection(connectionString))
+        {
+            await connection.OpenAsync();
+            var deleteQuery = "DELETE FROM MES_SOP_URL_TABLE WHERE CX = :cx";
+            using (var deleteCommand = new OracleCommand(deleteQuery, connection))
+            {
+                deleteCommand.Parameters.Add("cx", OracleDbType.Varchar2).Value = cx;
+                int deletedCount = await deleteCommand.ExecuteNonQueryAsync();
+                Console.WriteLine($"宸插垹闄や骇绾� {cx} 鐨� {deletedCount} 鏉¤褰�");
+            }
+        }
+    }
+
+    // 淇濈暀鍘熸寜ItemNo鍒犻櫎鐨勬柟娉曪紝浠ュ涓嶆椂涔嬮渶
     private async Task DeleteRecordsByItemNo(string itemNo)
     {
         var connectionString = _configuration["AppSettings:DataBaseConn"];
         using (var 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))
+            var deleteQuery = "DELETE FROM MES_SOP_URL_TABLE WHERE ITEM_NO = :item_no";
+            using (var deleteCommand = new OracleCommand(deleteQuery, connection))
             {
-                deleteCommand.Parameters.Add("item_no", OracleDbType.Varchar2)
-                    .Value = itemNo;
+                deleteCommand.Parameters.Add("item_no", OracleDbType.Varchar2).Value = itemNo;
                 await deleteCommand.ExecuteNonQueryAsync();
             }
         }
     }
-}
\ No newline at end of file
+}
+    
\ No newline at end of file
diff --git a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
index 7993a32..fdd951b 100644
--- a/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
+++ b/MESApplication/Controllers/RealTimeInventory/RealTimeInventoryController.cs
@@ -6,25 +6,45 @@
 
 namespace MESApplication.Controllers.RealTimeInventory;
 
+/// <summary>
+/// 瀹炴椂搴撳瓨鎺у埗鍣�
+/// 璐熻矗鍚屾绗笁鏂圭郴缁熷簱瀛樻暟鎹埌鏈湴鏁版嵁搴�
+/// </summary>
 [Route("api/[controller]")]
 [ApiController]
 public class RealTimeInventoryController : ControllerBase
 {
+    // K3Cloud绯荤粺鐨勫熀纭�API鍦板潃
     private readonly string _baseUrl = "http://122.227.249.70:5050/k3cloud";
+    // 鏁版嵁搴撹繛鎺ュ瓧绗︿覆
     private readonly string _connectionString;
 
+    /// <summary>
+    /// 鏋勯�犲嚱鏁�
+    /// 閫氳繃渚濊禆娉ㄥ叆鑾峰彇閰嶇疆淇℃伅
+    /// </summary>
+    /// <param name="configuration">閰嶇疆瀵硅薄</param>
     public RealTimeInventoryController(IConfiguration configuration)
     {
+        // 浠庨厤缃腑鑾峰彇鏁版嵁搴撹繛鎺ュ瓧绗︿覆
         _connectionString = configuration["AppSettings:DataBaseConn"];
     }
 
+    /// <summary>
+    /// 鍚屾搴撳瓨鏁版嵁API
+    /// 浠嶬3Cloud绯荤粺鑾峰彇搴撳瓨鏁版嵁骞跺悓姝ュ埌鏈湴鏁版嵁搴�
+    /// </summary>
+    /// <returns>鍚屾缁撴灉</returns>
     [HttpPost("syncInventory")]
     public async Task<IActionResult> SyncInventory()
     {
+        // 鍒涘缓鑷畾涔塇TTP瀹㈡埛绔疄渚�
         var httpClient = new HttpClientEx();
+        // 璁剧疆韬唤楠岃瘉API鍦板潃
         httpClient.Url =
             $"{_baseUrl}/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";
 
+        // 鍑嗗鐧诲綍鍙傛暟
         var parameters = new List<object>
         {
             "6654201b47f099", // 甯愬Id
@@ -33,66 +53,92 @@
             2052 // 璇█锛堜腑鏂囷級
         };
 
+        // 搴忓垪鍖栧弬鏁板苟璁剧疆涓鸿姹傚唴瀹�
         httpClient.Content = JsonConvert.SerializeObject(parameters);
+        // 鍙戦�佺櫥褰曡姹傚苟瑙f瀽缁撴灉
         var result = JObject.Parse(httpClient.AsyncRequest())["LoginResultType"]
             .Value<int>();
 
+        // 鐧诲綍澶辫触杩斿洖閿欒淇℃伅
         if (result != 1)
             return BadRequest("鐧诲綍澶辫触");
 
+        // 鑾峰彇闇�瑕佸悓姝ョ殑浠撳簱浠g爜鍒楄〃
         var depotCodes = FetchDepotCodes();
         if (depotCodes.Count == 0)
             return NotFound("鏈壘鍒版湁鏁堢殑DEPOTS_CODE");
 
+        // 娓呯┖鐜版湁搴撳瓨鏁版嵁
         DeleteInventoryData();
 
+        // 灏嗕粨搴撲唬鐮佸垪琛ㄨ浆鎹负閫楀彿鍒嗛殧鐨勫瓧绗︿覆
         var depotCodesStr = string.Join(",", depotCodes);
         var hasMoreData = true;
         var pageIndex = 1;
 
+        // 鍒嗛〉鑾峰彇鎵�鏈夊簱瀛樻暟鎹�
         while (hasMoreData)
         {
+            // 鏋勫缓搴撳瓨鏌ヨ鍙傛暟妯″瀷
             var model = new InventoryParamModel
             {
-                fstocknumbers = depotCodesStr,
-                isshowauxprop = true,
-                isshowstockloc = true,
-                pageindex = pageIndex,
-                pagerows = 10000
+                fstocknumbers = depotCodesStr,    // 浠撳簱浠g爜
+                isshowauxprop = true,             // 鏄惁鏄剧ず杈呭姪灞炴��
+                isshowstockloc = true,            // 鏄惁鏄剧ず搴撳瓨浣嶇疆
+                pageindex = pageIndex,            // 褰撳墠椤电爜
+                pagerows = 10000                  // 姣忛〉璁板綍鏁�
             };
 
+            // 璁剧疆搴撳瓨鏌ヨAPI鍦板潃
             httpClient.Url =
                 $"{_baseUrl}/Kingdee.K3.SCM.WebApi.ServicesStub.InventoryQueryService.GetInventoryData.common.kdsvc";
+            // 搴忓垪鍖栨煡璇㈠弬鏁�
             httpClient.Content =
                 JsonConvert.SerializeObject(new List<object> { model });
+            // 鍙戦�佹煡璇㈣姹�
             var response = httpClient.AsyncRequest();
+            // 鍙嶅簭鍒楀寲搴撳瓨鏁版嵁
             var inventoryData =
                 JsonConvert.DeserializeObject<InventoryResponse>(response);
 
+            // 妫�鏌ユ槸鍚﹁繕鏈夋暟鎹�
             if (inventoryData?.Data == null || inventoryData.Data.Count == 0)
             {
                 hasMoreData = false;
             }
             else
             {
+                // 灏嗗綋鍓嶉〉鏁版嵁鎻掑叆鏁版嵁搴�
                 InsertInventoryData(inventoryData);
+                // 鍑嗗鑾峰彇涓嬩竴椤垫暟鎹�
                 pageIndex++;
             }
         }
 
+        // 杩斿洖鍚屾瀹屾垚娑堟伅
         return Ok("搴撳瓨鏁版嵁瀵煎叆瀹屾垚");
     }
 
+    /// <summary>
+    /// 浠庢湰鍦版暟鎹簱鑾峰彇浠撳簱浠g爜鍒楄〃
+    /// 鎺掗櫎鐗瑰畾浠撳簱浠g爜('MJ','CY-MJ')
+    /// </summary>
+    /// <returns>浠撳簱浠g爜鍒楄〃</returns>
     private List<string> FetchDepotCodes()
     {
         var depotCodes = new List<string>();
+        // 浣跨敤Oracle杩炴帴
         using (var connection = new OracleConnection(_connectionString))
         {
             try
             {
+                // 鎵撳紑鏁版嵁搴撹繛鎺�
                 connection.Open();
+                // 鏌ヨ鏈夋晥浠撳簱浠g爜鐨凷QL
                 var query =
                     "SELECT DEPOTS_CODE FROM MES_INV_ITEM_STOCKS WHERE DEPOTS_CODE IS NOT NULL AND DEPOTS_CODE NOT IN ('MJ','CY-MJ') GROUP BY DEPOTS_CODE";
+                
+                // 鎵ц鏌ヨ骞惰鍙栫粨鏋�
                 using (var cmd = new OracleCommand(query, connection))
                 using (var reader = cmd.ExecuteReader())
                 {
@@ -109,6 +155,10 @@
         return depotCodes;
     }
 
+    /// <summary>
+    /// 娓呯┖ERPKCPC琛ㄤ腑鐨勭幇鏈夊簱瀛樻暟鎹�
+    /// 浣跨敤浜嬪姟纭繚鎿嶄綔鐨勫師瀛愭��
+    /// </summary>
     private void DeleteInventoryData()
     {
         using (var connection = new OracleConnection(_connectionString))
@@ -116,14 +166,17 @@
             try
             {
                 connection.Open();
+                // 寮�濮嬫暟鎹簱浜嬪姟
                 using (var transaction = connection.BeginTransaction())
                 {
+                    // 鎵ц鍒犻櫎鎿嶄綔
                     using (var deleteCmd =
                            new OracleCommand("DELETE FROM ERPKCPC", connection))
                     {
                         deleteCmd.ExecuteNonQuery();
                     }
 
+                    // 鎻愪氦浜嬪姟
                     transaction.Commit();
                 }
             }
@@ -134,6 +187,11 @@
         }
     }
 
+    /// <summary>
+    /// 灏嗗簱瀛樻暟鎹彃鍏ュ埌ERPKCPC琛ㄤ腑
+    /// 浣跨敤浜嬪姟纭繚鎵�鏈夋暟鎹涔堝叏閮ㄦ彃鍏ユ垚鍔燂紝瑕佷箞鍏ㄩ儴澶辫触
+    /// </summary>
+    /// <param name="inventoryData">搴撳瓨鏁版嵁鍝嶅簲瀵硅薄</param>
     private void InsertInventoryData(InventoryResponse inventoryData)
     {
         using (var connection = new OracleConnection(_connectionString))
@@ -141,10 +199,13 @@
             try
             {
                 connection.Open();
+                // 寮�濮嬫暟鎹簱浜嬪姟
                 using (var transaction = connection.BeginTransaction())
                 {
+                    // 閬嶅巻姣忔潯搴撳瓨鏁版嵁
                     foreach (var item in inventoryData.Data)
                     {
+                        // 鎻掑叆SQL璇彞
                         var query =
                             "INSERT INTO ERPKCPC (ITEM_ID, DEPOT_CODE, FQTY, ITEM_NO, ORGID,Fstockstatusnumber,Fstockstatusname) VALUES (:ITEM_ID, :DEPOT_CODE, :FQTY, :ITEM_NO, :ORGID,:Fstockstatusnumber,:Fstockstatusname)";
                         using (var cmd = new OracleCommand(query, connection))
@@ -159,10 +220,12 @@
 
                             try
                             {
+                                // 鎵ц鎻掑叆鍛戒护
                                 cmd.ExecuteNonQuery();
                             }
                             catch (Exception ex)
                             {
+                                // 鍑洪敊鏃跺洖婊氫簨鍔�
                                 transaction.Rollback();
                                 Console.WriteLine("鎻掑叆搴撳瓨鏁版嵁鏃跺嚭閿�: " + ex.Message);
                                 return;
@@ -170,6 +233,7 @@
                         }
                     }
 
+                    // 鎵�鏈夋暟鎹彃鍏ユ垚鍔燂紝鎻愪氦浜嬪姟
                     transaction.Commit();
                 }
             }

--
Gitblit v1.9.3