From dabfdd9dbf0364b1134daaad86af7e13f6437295 Mon Sep 17 00:00:00 2001
From: xwt <2740516069@qq.com>
Date: 星期四, 30 十月 2025 12:40:30 +0800
Subject: [PATCH] XJ,SJ,RKJ检验项目序号,LLJ单个检验项目FTP附件信息

---
 StandardInterface/MES.Service/service/QC/LljService.cs |   76 ++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 35 deletions(-)

diff --git a/StandardInterface/MES.Service/service/QC/LljService.cs b/StandardInterface/MES.Service/service/QC/LljService.cs
index a360c3c..71d481a 100644
--- a/StandardInterface/MES.Service/service/QC/LljService.cs
+++ b/StandardInterface/MES.Service/service/QC/LljService.cs
@@ -89,7 +89,9 @@
                     // 娣诲姞璇勫鐘舵��
                     PSZT = a.PSZT,
                     // 娣诲姞妫�楠岄」鐩淮鎶ょ姸鎬�
-                    Jyxm = a.Jyxm
+                    Jyxm = a.Jyxm,
+                    // 娣诲姞鐗堟湰鍙凤紙鐢ㄤ簬FTP璺緞锛�
+                    Fversion = a.Fversion
                 })
                 .OrderBy("IQC_DATE DESC")
                 .OrderBy("CASE WHEN EMERGENCY = 1 THEN 0 ELSE 1 END")
@@ -164,7 +166,9 @@
                     // 娣诲姞璇勫鐘舵��
                     PSZT = a.PSZT,
                     // 娣诲姞妫�楠岄」鐩淮鎶ょ姸鎬�
-                    Jyxm = a.Jyxm
+                    Jyxm = a.Jyxm,
+                    // 娣诲姞鐗堟湰鍙凤紙鐢ㄤ簬FTP璺緞锛�
+                    Fversion = a.Fversion
                 })
                 .OrderBy("IQC_DATE DESC")
                 .OrderBy("CASE WHEN EMERGENCY = 1 THEN 0 ELSE 1 END")
@@ -504,7 +508,13 @@
         return input.Substring(startIndex + 1, length);
     }
 
-    public List<QamftpDto> GetAttachments(string ItemNo)
+    /// <summary>
+    /// 鑾峰彇闄勪欢淇℃伅
+    /// </summary>
+    /// <param name="ItemNo">鐗╂枡缂栫爜</param>
+    /// <param name="fversion">鐗堟湰鍙凤紙鍙�夛紝鐢ㄤ簬杩囨护锛�</param>
+    /// <returns>闄勪欢鍒楄〃</returns>
+    public List<QamftpDto> GetAttachments(string ItemNo, string fversion = null)
     {
         //if (string.IsNullOrEmpty(ItemNo))
         //{
@@ -514,8 +524,17 @@
         var db = SqlSugarHelper.GetInstance();
         try
         {
-            return db.Queryable<MesQamftp>()
+            var query = db.Queryable<MesQamftp>()
                 .Where(x => x.ItemNo == ItemNo)
+                .Where(x => x.Ftype == "鏉ユ枡妫�");  // 娣诲姞FTYPE = '鏉ユ枡妫�'鐨勯檺鍒�
+            
+            // 濡傛灉浼犲叆浜唂version锛屽垯鎸塅version杩囨护
+            if (!string.IsNullOrEmpty(fversion))
+            {
+                query = query.Where(x => x.Fversion == fversion);
+            }
+            
+            return query
                 .OrderBy(x => x.Fdate, OrderByType.Desc)
                 // .ThenBy(x => x.CreateDate, OrderByType.Desc)
                 .Select(x => new QamftpDto
@@ -543,7 +562,7 @@
         }
     }
 
-    public byte[] GetFtpFile(string itemNo, string fileName, string ftpServer)
+    public byte[] GetFtpFile(string itemNo, string fileName, string ftpServer, string fversion = null)
     {
         // 鍙傛暟楠岃瘉
         if (string.IsNullOrEmpty(itemNo) || string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(ftpServer))
@@ -557,8 +576,16 @@
         // 鏍囧噯鍖朏TP鏈嶅姟鍣ㄥ湴鍧�
         string normalizedServer = NormalizeFtpServer(ftpServer);
         
-        // 鏋勫缓FTP鏂囦欢璺緞
-        string ftpPath = $"{normalizedServer}/IQC/{itemNo}/{fileName}";
+        // 鏋勫缓FTP鏂囦欢璺緞 - 鏉ユ枡妫�浣跨敤IQC鐩綍锛屼娇鐢╢version浣滀负瀛愮洰褰�
+        string ftpPath;
+        if (!string.IsNullOrEmpty(fversion))
+        {
+            ftpPath = $"{normalizedServer}/IQC/{itemNo}/{fversion}/{fileName}";
+        }
+        else
+        {
+            ftpPath = $"{normalizedServer}/IQC/{itemNo}/{fileName}";
+        }
         
         try
         {
@@ -1289,7 +1316,6 @@
                     BillNo = b.BillNo         // 鍒拌揣鍗曞彿
                 })
                 .ToList();
-
             // 绉婚櫎鍒拌揣鍗曞彿鏍¢獙锛岀洿鎺ヨ繑鍥炴煡璇㈢粨鏋�
             return materialInfo;
         }
@@ -1298,7 +1324,6 @@
             throw new Exception($"鏌ヨ鐗╂枡淇℃伅澶辫触: {ex.Message}");
         }
     }
-
     /// <summary>
     /// 鏌ヨ鐮村潖瀹為獙璁板綍鏄惁瀛樺湪
     /// </summary>
@@ -1313,7 +1338,7 @@
             var count = db.Queryable<MesInvPhsy>()
                 .Where(x => x.BillNo == billNo && x.ReleaseNo == releaseNo)
                 .Count();
-            
+
             return count > 0;
         }
         catch (Exception ex)
@@ -1321,7 +1346,6 @@
             throw new Exception($"鏌ヨ鐮村潖瀹為獙璁板綍澶辫触: {ex.Message}");
         }
     }
-
     /// <summary>
     /// 鑾峰彇鐮村潖瀹為獙璁板綍璇︾粏淇℃伅
     /// </summary>
@@ -1337,22 +1361,20 @@
             var phsyRecords = db.Queryable<MesInvPhsy>()
                 .Where(x => x.BillNo == billNo && x.ReleaseNo == releaseNo)
                 .ToList();
-
             var result = new List<PhsyRecordInfoDto>();
-            
+
             foreach (var record in phsyRecords)
             {
                 // 灏濊瘯閫氳繃鏉$爜鏌ヨ鐗╂枡淇℃伅
                 var materialInfo = db.Queryable<MesInvItemBarcodes>()
                     .LeftJoin<MesItems>((b, m) => b.ItemId == m.Id)
                     .Where((b, m) => b.ItemBarcode == record.ItemBarcode)
-                    .Select((b, m) => new { 
+                    .Select((b, m) => new {
                         ItemNo = b.ItemNo,
                         ItemName = m.ItemName,
                         ItemModel = m.ItemModel
                     })
                     .First();
-
                 var dto = new PhsyRecordInfoDto
                 {
                     ItemBarcode = record.ItemBarcode,
@@ -1364,10 +1386,10 @@
                     Cqty = record.Cqty,
                     CreateDate = record.CreateDate
                 };
-                
+
                 result.Add(dto);
             }
-            
+
             return result;
         }
         catch (Exception ex)
@@ -1375,7 +1397,6 @@
             throw new Exception($"鑾峰彇鐮村潖瀹為獙璁板綍淇℃伅澶辫触: {ex.Message}");
         }
     }
-
     /// <summary>
     /// 璋冪敤鐮村潖瀹為獙瀛樺偍杩囩▼
     /// </summary>
@@ -1400,19 +1421,16 @@
             var inputParam5 = new SugarParameter("P_LX", lx, DbType.Int32, ParameterDirection.Input);
             var inputParam6 = new SugarParameter("ITEM_ID", itemId ?? 0, DbType.Decimal, ParameterDirection.Input);
             var inputParam7 = new SugarParameter("P_RELEASE_NO", releaseNo, DbType.String, ParameterDirection.Input);
-            
+
             // 瀹氫箟杈撳嚭鍙傛暟
             var outputResult = new SugarParameter("PO_RESULT", null, DbType.Int32, ParameterDirection.Output);
             var outputMessage = new SugarParameter("PO_MSG", null, DbType.String, ParameterDirection.Output, 4000);
-
             // 浣跨敤SqlSugar鎵ц瀛樺偍杩囩▼
-            db.Ado.ExecuteCommand("BEGIN PRC_INV_PHSYUPDATE(:P_ITEM_BARCODE, :P_YQTY, :P_CQTY, :P_BILL_NO, :P_LX, :ITEM_ID, :P_RELEASE_NO, :PO_RESULT, :PO_MSG); END;", 
+            db.Ado.ExecuteCommand("BEGIN PRC_INV_PHSYUPDATE(:P_ITEM_BARCODE, :P_YQTY, :P_CQTY, :P_BILL_NO, :P_LX, :ITEM_ID, :P_RELEASE_NO, :PO_RESULT, :PO_MSG); END;",
                 inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, inputParam6, inputParam7, outputResult, outputMessage);
-
             // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
             var result = outputResult.Value == null ? 1 : Convert.ToInt32(outputResult.Value);
             var message = outputMessage.Value?.ToString() ?? "";
-
             return (result, message);
         }
         catch (Exception ex)
@@ -1420,7 +1438,6 @@
             return (1, $"璋冪敤瀛樺偍杩囩▼澶辫触: {ex.Message}");
         }
     }
-
     /// <summary>
     /// 璁剧疆鍫电┐淇℃伅
     /// </summary>
@@ -1439,30 +1456,25 @@
                 .Where(s => !string.IsNullOrEmpty(s))
                 .Select(s => int.Parse(s))
                 .ToList();
-
             // 鑾峰彇妫�楠岄」鐩俊鎭�
             var item = db.Queryable<MesQaItemsDetectDetail5>()
                 .Where(x => x.Id == itemId && x.ReleaseNo == releaseNo)
                 .First();
-
             if (item == null)
             {
                 return (1, "妫�楠岄」鐩笉瀛樺湪");
             }
-
             // 瑙f瀽寮�绌存暟
             var holeCount = ParseHoleCount(item.FcheckItem);
             if (holeCount == 0)
             {
                 return (1, "璇ユ楠岄」鐩病鏈夌┐鏁颁俊鎭�");
             }
-
             // 楠岃瘉鍫电┐鏁伴噺涓嶈兘澶т簬绛変簬寮�绌存暟
             if (blockedHolesList.Count >= holeCount)
             {
                 return (1, $"鍫电┐鏁伴噺涓嶈兘澶т簬绛変簬寮�绌存暟锛坽holeCount}锛�");
             }
-
             // 楠岃瘉鍫电┐鍙锋槸鍚﹀湪鏈夋晥鑼冨洿鍐�
             foreach (var hole in blockedHolesList)
             {
@@ -1471,10 +1483,8 @@
                     return (1, $"鍫电┐鍙峰繀椤诲湪1-{holeCount}涔嬮棿");
                 }
             }
-
             // 璁$畻鏂扮殑妫�楠屾暟閲�
             var newCheckQyt = item.CheckQyt - (item.CheckQyt / holeCount) * blockedHolesList.Count;
-
             // 鏇存柊鏁版嵁搴�
             var result = SqlSugarHelper.UseTransactionWithOracle(db =>
             {
@@ -1484,7 +1494,6 @@
                     .Where(x => x.Id == itemId && x.ReleaseNo == releaseNo)
                     .ExecuteCommand();
             });
-
             if (result > 0)
             {
                 return (0, "鍫电┐璁剧疆鎴愬姛");
@@ -1499,7 +1508,6 @@
             return (1, $"璁剧疆鍫电┐澶辫触: {ex.Message}");
         }
     }
-
     /// <summary>
     /// 瑙f瀽妫�楠岄」鐩悕绉颁腑鐨勭┐鏁�
     /// </summary>
@@ -1509,11 +1517,9 @@
     {
         if (string.IsNullOrEmpty(checkItemName))
             return 0;
-
         // 鍖归厤鏍煎紡锛氬昂瀵告鏌ワ紙5绌达級鎴� 灏哄妫�鏌�(5绌�)
         var match = System.Text.RegularExpressions.Regex.Match(checkItemName, @"[锛�(](\d+)绌碵锛�)]");
         return match.Success ? int.Parse(match.Groups[1].Value) : 0;
     }
-
 
 }
\ No newline at end of file

--
Gitblit v1.9.3