From b409e3c2f7334ec4e142666190d730de2a414b71 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期三, 22 十月 2025 15:31:16 +0800
Subject: [PATCH] 逻辑优化

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

diff --git a/Services/MesOrderStaManager.cs b/Services/MesOrderStaManager.cs
index a459fb6..37601dd 100644
--- a/Services/MesOrderStaManager.cs
+++ b/Services/MesOrderStaManager.cs
@@ -94,16 +94,21 @@
     ///     鏇存柊鏈哄櫒鏃堕棿骞跺鐞嗛妫�
     ///     鍙樻洿璇存槑锛�
     ///     1) 鏈�鏂伴妫�缁撴灉涓衡�滀笉鍚堟牸鈥濇椂锛氬彧娓呯┖ MA_SHOUT_TIME锛堥�佹鍛煎彨鏃堕棿锛夛紝涓嶉噸寤洪妫�鍗�
-    ///     2) 鑻ヤ笉瀛樺湪棣栨鍗曟垨鏈�鏂伴妫�缁撴灉涓衡�滀笉鍚堟牸鈥濇椂锛氬厑璁哥户缁垱寤猴紙閲嶅缓锛夐妫�鍗�
-    ///     3) 棣栨鍚堟牸涓旈�佹鏃堕棿 >= 璋冩満寮�濮嬫椂闂存椂锛氬啓鍏ヨ皟鏈哄畬鎴愭椂闂翠笌寮�宸ユ椂闂达紙娌跨敤鍘熼�昏緫锛�
+    ///     2) 鑻ヤ笉瀛樺湪棣栨鍗曟椂锛氬厑璁稿垱寤猴紙閲嶅缓锛夐妫�鍗�
+    ///     3) 棣栨鍚堟牸涓旈�佹鏃堕棿 >= 璋冩満寮�濮嬫椂闂存椂锛氬啓鍏ヨ皟鏈哄畬鎴愭椂闂翠笌寮�宸ユ椂闂�
     /// </summary>
     public bool ChangeMachineTime(MesOrderSta entity)
     {
+        const string FirstCheckType = "棣栨";
+        const string FirstCheckResultOK = "鍚堟牸";
+        const string FirstCheckResultNG = "涓嶅悎鏍�";
+
         var womdaa = Db.Queryable<Womdaa>()
             .Where(s => s.Id == entity.OrderId).First();
         if (womdaa == null) throw new Exception("宸ュ崟涓嶅瓨鍦�");
 
         MesQaItemsDetect02 latestFirst = null;
+        var clearMaShout = false; // 鏍囪锛氭槸鍚﹂渶瑕佹竻绌洪�佹鏃堕棿
 
         if (entity.Flag == 1)
         {
@@ -113,32 +118,30 @@
 
             // 褰撳墠鏈�鏂伴妫�
             latestFirst = Db.Queryable<MesQaItemsDetect02>()
-                .Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == "棣栨" && (s.Fcancel == null || s.Fcancel != "Y"))
+                .Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == FirstCheckType && (s.Fcancel == null || s.Fcancel != "Y"))
                 .OrderBy(s => s.CreateDate, OrderByType.Desc)
                 .First();
 
-            // 涓嶅瓨鍦� 鎴� 鏈�鏂扮粨鏋滀负鈥滀笉鍚堟牸鈥� => 鍏佽鍒涘缓棣栨鍗曪紙鏂板閫昏緫锛屼繚鐣欐敞閲婏級
-            var needCreate = latestFirst == null || latestFirst.FcheckResu == "涓嶅悎鏍�";
+            // 浠呭湪涓嶅瓨鍦ㄩ妫�鍗曟椂鍒涘缓锛堝師鈥� 涓嶅悎閫� 鈥濆凡缁熶竴鏀逛负鈥� 涓嶅悎鏍� 鈥濓紝涓斾笉鍚堟牸涓嶅啀瑙﹀彂閲嶅缓锛�
+            var needCreate = latestFirst == null;
 
             if (needCreate)
             {
-                // 涓嶅瓨鍦� 鎴� 鈥滀笉鍚堟牸鈥� => 閲嶆柊鍒涘缓棣栨鍗�
                 Db.Ado.ExecuteCommand(
                     "BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
                     new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
 
                 // 閲嶆柊鑾峰彇鏈�鏂伴妫�鍗�
                 latestFirst = Db.Queryable<MesQaItemsDetect02>()
-                    .Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == "棣栨" && (s.Fcancel == null || s.Fcancel != "Y"))
+                    .Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == FirstCheckType && (s.Fcancel == null || s.Fcancel != "Y"))
                     .OrderBy(s => s.CreateDate, OrderByType.Desc)
                     .First();
 
                 if (latestFirst != null)
                 {
                     var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                    var trigger = latestFirst.FcheckResu == "涓嶅悎鏍�" ? "涓嶅悎鏍奸噸寤�" : "棣栨鍒涘缓";
                     Db.Updateable<MesQaItemsDetect02>()
-                        .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}鑷姩鍒涘缓鐨勯妫�鍗�({trigger})")
+                        .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}鑷姩鍒涘缓鐨勯妫�鍗�(棣栨鍒涘缓)")
                         .Where(s => s.Id == latestFirst.Id)
                         .ExecuteCommand();
                 }
@@ -146,19 +149,15 @@
             else
             {
                 // 鏈�鏂扮粨鏋滀负鈥滀笉鍚堟牸鈥� => 浠呮竻绌洪�佹鏃堕棿锛屼笉閲嶅缓
-                if (latestFirst != null && latestFirst.FcheckResu == "涓嶅悎鏍�")
+                if (latestFirst != null && latestFirst.FcheckResu == FirstCheckResultNG)
                 {
-                    Db.Updateable<MesOrderSta>()
-                        .SetColumns(s => s.MaShoutTime == null)
-                        .Where(s => s.Id == entity.Id)
-                        .ExecuteCommand();
-
+                    clearMaShout = true;
                     entity.MaShoutTime = null;
-                    entity.remark = $"鏈�鏂伴妫�缁撴灉鈥滀笉鍚堟牸鈥濓紝宸叉竻绌洪�佹鏃堕棿锛屽緟鍐嶆閫佹";
+                    entity.remark = $"鏈�鏂伴妫�缁撴灉鈥渰FirstCheckResultNG}鈥濓紝宸叉竻绌洪�佹鏃堕棿锛屽緟鍐嶆閫佹";
                 }
                 else if (latestFirst != null)
                 {
-                    // 鍏跺畠缁撴灉浠呮洿鏂板娉�
+                    // 鍏跺畠缁撴灉锛堝鍚堟牸锛夋洿鏂板娉�
                     var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                     Db.Updateable<MesQaItemsDetect02>()
                         .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}棣栨缁撴灉锛歿latestFirst.FcheckResu}")
@@ -201,7 +200,6 @@
         }
         catch (Exception ex)
         {
-            // 璁板綍寮傚父浣嗕笉闃绘娴佺▼锛堜繚鐣欏師娉ㄩ噴锛�
             Console.WriteLine($"鍙戦�佹暟鎹埛鏂拌姹傛椂鍑洪敊: {ex.Message}");
         }
 
@@ -220,7 +218,7 @@
         Db.Insertable<MesAnchors>(eAnchors).ExecuteCommand();
 
         // 鑻ラ�佹鏃堕棿瀛樺湪涓旀渶鏂伴妫�鍚堟牸 => 鍐欒皟鏈哄畬鎴愪笌寮�宸ユ椂闂�
-        if (!string.IsNullOrEmpty(entity.MaShoutTime))
+        if (!clearMaShout && !string.IsNullOrEmpty(entity.MaShoutTime))
         {
             if (DateTime.TryParse(entity.MaShoutTime, out var sjTime) &&
                 DateTime.TryParse(entity.MaStartTime, out var startTime) &&
@@ -228,11 +226,11 @@
             {
                 var sjRecord = latestFirst ??
                                Db.Queryable<MesQaItemsDetect02>()
-                                   .Where(x => x.Aufnr == womdaa.Daa001 && x.Ftype == "棣栨" && (x.Fcancel == null || x.Fcancel != "Y"))
+                                   .Where(x => x.Aufnr == womdaa.Daa001 && x.Ftype == FirstCheckType && (x.Fcancel == null || x.Fcancel != "Y"))
                                    .OrderBy(x => x.CreateDate, OrderByType.Desc)
                                    .First();
 
-                if (sjRecord != null && sjRecord.FcheckResu == "鍚堟牸")
+                if (sjRecord != null && sjRecord.FcheckResu == FirstCheckResultOK)
                 {
                     QualifiedInspection(new OrderMachineDto
                     {
@@ -246,15 +244,17 @@
             }
         }
 
-        // 鏇存柊宸ュ崟鐘舵�佽〃锛堜繚鐣欏師娉ㄩ噴锛�
-        return Db.Updateable<MesOrderSta>()
-            .SetColumnsIF(entity.MaShoutTime != null, s => s.MaShoutTime == entity.MaShoutTime)
+        // 鏇存柊宸ュ崟鐘舵�佽〃
+        var upd = Db.Updateable<MesOrderSta>()
+            .SetColumnsIF(clearMaShout, s => s.MaShoutTime == null)
+            .SetColumnsIF(!clearMaShout && entity.MaShoutTime != null, s => s.MaShoutTime == entity.MaShoutTime)
             .SetColumnsIF(entity.MaStartTime != null, s => s.MaStartTime == entity.MaStartTime)
             .SetColumnsIF(entity.MaEndTime != null, s => s.MaEndTime == entity.MaEndTime)
             .SetColumnsIF(entity.StartTime != null, s => s.StartTime == entity.StartTime)
             .SetColumnsIF(entity.Flag == 1 && entity.remark != null, s => s.remark == entity.remark)
-            .Where(s => s.Id == entity.Id)
-            .ExecuteCommand() > 0;
+            .Where(s => s.Id == entity.Id);
+
+        return upd.ExecuteCommand() > 0;
     }
 
     /// <summary>

--
Gitblit v1.9.3