From d24c080e18db940f0d786752c24c42561f5b95c4 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 17 十月 2025 08:42:00 +0800
Subject: [PATCH] 逻辑优化

---
 Services/WomdaaManager.cs |   40 ++++++++++++++++++++++++++++++----------
 1 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 4445f5d..107eb79 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -171,18 +171,38 @@
         var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
         VOrdrerBycl.finalResult = sqlQuerySingle;
 
-        // 鏂板锛氭寜ID鑰屼笉鏄椂闂村拰CjNum鏌ヨ鏁伴噰璁板綍
-        var baseQuery = Db.Queryable<MesNumericalBycl>()
-            .Where(n => n.OrderId == Convert.ToDecimal(query.OrderId)
-                        && n.MachineNo == VOrdrerBycl.MachineNo);
+        // 鏁伴噰璁板綍锛氬熀浜庝富閿甀D涓庢渶澶ч噰闆嗘暟閫昏緫锛岃В鍐冲悓涓�CJ_NUM鍦ㄤ笉鍚屾椂闂撮噸澶嶇殑闂
+        var numericalQuery = Db.Queryable<MesNumericalBycl>()
+            .Where(n => n.MachineNo == VOrdrerBycl.MachineNo
+                        && n.OrderId == VOrdrerBycl.ID
+                        && n.CjNum != null);
 
-        // 鎸塈D鍗囧簭鍙栨渶鏃╄褰�
-        var startRecordById = baseQuery.OrderBy(n => n.Id).First();
-        // 鎸塈D闄嶅簭鍙栨渶鏂拌褰�
-        var latestRecordById = baseQuery.OrderBy(n => n.Id, OrderByType.Desc).First();
+        // 寮�宸ラ噰闆嗗��=绗竴鏉¤褰�(鎸塈D鏈�灏�)
+        var startCjNum = numericalQuery
+            .OrderBy(n => n.Id)
+            .Select(n => n.CjNum)
+            .First();
 
-        VOrdrerBycl.StartCjNum = startRecordById?.CjNum;
-        VOrdrerBycl.CurrentCjNum = latestRecordById?.CjNum;
+        // 鏈�澶ч噰闆嗘暟锛堢疮璁″綋鍓嶅�硷級
+        var maxCjNum = numericalQuery.Max(n => n.CjNum);
+
+        // 杈惧埌鏈�澶у�肩殑绗竴娆℃椂闂达紙濡傞渶灞曠ず鍙悗缁柊澧炲瓧娈碉級
+        var firstReachMaxTime = numericalQuery
+            .Where(n => n.CjNum == maxCjNum)
+            .OrderBy(n => n.Id)
+            .Select(n => n.CjTiem)
+            .First();
+
+        // 杈惧埌鏈�澶у�肩殑鏈�鍚庝竴娆℃椂闂达紙鑻ラ渶瑕佸垽鏂槸鍚︿粛鍦ㄥ闀匡紝鍙姣� first 涓� last锛�
+        var lastReachMaxTime = numericalQuery
+            .Where(n => n.CjNum == maxCjNum)
+            .OrderBy(n => n.Id, OrderByType.Desc)
+            .Select(n => n.CjTiem)
+            .First();
+
+        // 璧嬪�硷紙CurrentCjNum 閲囩敤绱鏈�澶у�硷紝閬垮厤 plateau 閲嶅璁板綍瀵艰嚧璇В锛�
+        VOrdrerBycl.StartCjNum = startCjNum ?? 0;
+        VOrdrerBycl.CurrentCjNum = maxCjNum ?? VOrdrerBycl.StartCjNum;
 
         return VOrdrerBycl;
     }

--
Gitblit v1.9.3