From 45a69e109d3ed2f3ba6d03f722021d019cb8792a Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期二, 18 十一月 2025 10:40:28 +0800
Subject: [PATCH] 查询报工记录,获取最后一条报工记录,改为实际的工单ID

---
 Services/MesOrderStaManager.cs |  100 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 74 insertions(+), 26 deletions(-)

diff --git a/Services/MesOrderStaManager.cs b/Services/MesOrderStaManager.cs
index 2bd8b65..abd4faa 100644
--- a/Services/MesOrderStaManager.cs
+++ b/Services/MesOrderStaManager.cs
@@ -150,15 +150,12 @@
         // ================== 涓嶅悎鏍煎悗閲嶆柊閫佹锛團lag == 2锛�==================
         else if (entity.Flag == 2)
         {
-            // 棣栨涓嶅悎鏍煎悗鐩存帴鐢熸垚鏂扮殑棣栨鍗曪細
-            // 1. 鍔犻攣闃插苟鍙�
-            // 2. 鑻ヤ笉瀛樺湪棣栨 -> 鐩存帴鐢熸垚
-            // 3. 鑻ュ瓨鍦ㄤ笖涓衡�滀笉鍚堟牸鈥� -> 鍏堜綔搴熸棫鍗�(Fcancel='Y')鍐嶇敓鎴愭柊鍗曪紙缁曡繃瀛樺偍杩囩▼鍐呴儴鍙厑璁镐竴鍗曠殑闄愬埗锛�
-            // 4. 鑻ュ凡鍚堟牸 -> 涓嶇敓鎴�
-            Db.Ado.ExecuteCommand("SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
+            // 鍔犻攣闃插苟鍙戯紙琛岀骇閿侊級
+            Db.Ado.ExecuteCommand(
+                "SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
                 new SugarParameter("BILL_NO", womdaa.Daa001));
 
-            // 鏈�鏂版湭浣滃簾棣栨鍗�
+            // 褰撳墠鏈�鏂版湭浣滃簾棣栨鍗�
             var latestFirst = Db.Queryable<MesQaItemsDetect02>()
                 .Where(s => s.Aufnr == womdaa.Daa001
                             && s.Ftype == "棣栨"
@@ -166,36 +163,85 @@
                 .OrderBy(s => s.CreateDate, OrderByType.Desc)
                 .First();
 
-            var needCreate = false;
+            bool needReCreate = false;
 
-            if (latestFirst == null)
+            if (latestFirst != null)
             {
-                // 娌℃湁浠讳綍鏈夋晥棣栨鍗曪紝闇�瑕佸垱寤�
-                needCreate = true;
+                var resu = latestFirst.FcheckResu?.Trim();
+                if (!string.IsNullOrEmpty(resu) &&
+                    (resu == "涓嶅悎鏍�" || resu.Equals("NG", StringComparison.OrdinalIgnoreCase)))
+                {
+                    needReCreate = true;
+                }
             }
-            else if (latestFirst.FcheckResu == "涓嶅悎鏍�")
+            else
             {
-                // 鏃у崟涓嶅悎鏍硷紝鍏堜綔搴熷啀鍒涘缓鏂板崟
-                Db.Updateable<MesQaItemsDetect02>()
-                    .SetColumns(s => s.Fcancel == "Y")
-                    .Where(s => s.Id == latestFirst.Id && (s.Fcancel == null || s.Fcancel != "Y"))
-                    .ExecuteCommand();
-                needCreate = true;
+                // 娌℃湁娲诲姩棣栨鍗曪紝鍒ゆ柇鏄惁瀛樺湪宸蹭綔搴熺殑涓嶅悎鏍奸妫�璁板綍
+                var existsCanceledNg = Db.Queryable<MesQaItemsDetect02>()
+                    .Where(s => s.Aufnr == womdaa.Daa001
+                                && s.Ftype == "棣栨"
+                                && s.Fcancel == "Y"
+                                && (s.FcheckResu == "涓嶅悎鏍�" || s.FcheckResu == "NG"))
+                    .Any();
+                if (existsCanceledNg)
+                {
+                    needReCreate = true;
+                    Console.WriteLine("[閲嶉�佹] 鏃犳椿鍔ㄩ妫�鍗曚絾瀛樺湪浣滃簾鐨勪笉鍚堟牸璁板綍锛屽厑璁搁噸寤�");
+                }
             }
 
-            if (needCreate)
+            if (needReCreate)
             {
-                Db.Ado.ExecuteCommand(
-                    "BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
-                    new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
+                // 浣滃簾褰撳墠娲诲姩涓嶅悎鏍煎崟
+                if (latestFirst != null)
+                {
+                    Db.Updateable<MesQaItemsDetect02>()
+                        .SetColumns(s => s.Fcancel == "Y")
+                        .Where(s => s.Id == latestFirst.Id
+                                    && (s.Fcancel == null || s.Fcancel != "Y"))
+                        .ExecuteCommand();
+                }
 
-                // 鑾峰彇鏂扮敓鎴愮殑棣栨鍗曞苟鍐欏娉�
+                bool procOk = true;
+                string procErr = "";
+                try
+                {
+                    // 璋冪敤瀛樺偍杩囩▼鐢熸垚鏂伴妫�鍗�
+                    Db.Ado.ExecuteCommand(
+                        "BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
+                        new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
+                }
+                catch (Exception ex)
+                {
+                    procOk = false;
+                    procErr = ex.Message;
+                    Console.WriteLine($"[閲嶉�佹] 瀛樺偍杩囩▼寮傚父: {procErr}");
+                }
+
+                // 鍐嶆鏌ヨ鏂扮敓鎴愮殑棣栨鍗�
                 var newLatest = Db.Queryable<MesQaItemsDetect02>()
                     .Where(s => s.Aufnr == womdaa.Daa001
                                 && s.Ftype == "棣栨"
                                 && (s.Fcancel == null || s.Fcancel != "Y"))
                     .OrderBy(s => s.CreateDate, OrderByType.Desc)
                     .First();
+
+                // 瀛樺偍杩囩▼鏈敓鎴� 鈫� 鍏滃簳 C# 鑷姩鐢熸垚
+                if (newLatest == null)
+                {
+                    Console.WriteLine("[閲嶉�佹] 瀛樺偍杩囩▼鏈敓鎴愶紝鎵ц C# 鍏滃簳閫昏緫");
+                    var fallback = mesQaItemsDetect02Manager.AutomaticIpqcFirstCheck(womdaa.Daa001);
+                    if (fallback)
+                    {
+                        newLatest = Db.Queryable<MesQaItemsDetect02>()
+                            .Where(s => s.Aufnr == womdaa.Daa001
+                                        && s.Ftype == "棣栨"
+                                        && (s.Fcancel == null || s.Fcancel != "Y"))
+                            .OrderBy(s => s.CreateDate, OrderByType.Desc)
+                            .First();
+                    }
+                }
+
                 if (newLatest != null)
                 {
                     var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -205,10 +251,12 @@
                         .Where(s => s.Id == newLatest.Id)
                         .ExecuteCommand();
                 }
+                else
+                {
+                    Console.WriteLine("[閲嶉�佹] 浠嶆湭鐢熸垚鏂伴妫�鍗曪紝璇锋鏌ュ瓨鍌ㄨ繃绋嬭鏁版槸鍚︽帓闄や綔搴熷崟銆�");
+                }
             }
-        // 宸叉湁涓斿悎鏍� -> 涓嶆墽琛屽垱寤�
-        // 鑻ユ渶鏂板凡鍚堟牸鍒欎笉鐢熸垚鏂板崟锛岀洿鎺ョ户缁悗缁祦绋嬶紙涓嶈鐩栧叾澶囨敞锛�
-    }
+        }
 
         // ========= 棣栨涓嶅悎鏍兼竻绌洪�佹鏃堕棿澶勭悊锛團lag != 2 鏃舵墠娓呯┖锛涘苟鐢熸垚缁熶竴 remark锛� =========
         string remarkToSet = null;      // 鏈�缁堣鍐欏叆 MES_ORDER_STA.remark 鐨勫唴瀹�

--
Gitblit v1.9.3