From c134c9458fbbdd832db93c2e16fe55ff038fcc13 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 17 十月 2025 14:10:50 +0800
Subject: [PATCH] 工单查询逻辑优化

---
 Services/WomdaaManager.cs |   47 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 019afce..3714c38 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -123,29 +123,44 @@
             vOrderBycl.CurrentCjNum = 0;
         }
 
-        // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴娆℃姤宸ユ椂闂�
+        // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
         var lastReport = Db.Queryable<MesReporting>()
             .Where(r => r.BillNo != null && r.BillNo.Contains(query.orderNo))
-            .OrderBy(r => r.BgDate, OrderByType.Desc)
+            .OrderBy(r => r.Id, OrderByType.Desc)
             .First();
 
-        if (lastReport == null)
+        if (lastReport == null || !lastReport.BgDate.HasValue)
         {
-            // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+            // 娌℃湁鎶ュ伐璁板綍鎴栨姤宸ユ椂闂存棤鏁堬紝鍒濆閲囬泦鏁颁负寮�宸ラ噰鏁�
             vOrderBycl.InitCjNum = vOrderBycl.StartCjNum;
         }
         else
         {
             // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负涓婁竴娆℃姤宸ユ椂闂村悗鏈�杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
-            var afterReportNum = numericalList
-                .Where(x =>
-                    DateTime.TryParse(x.CjTiem, out var cjTiemDt) &&
-                    lastReport.BgDate.HasValue &&
-                    cjTiemDt > lastReport.BgDate.Value)
-                .OrderBy(x => DateTime.Parse(x.CjTiem))
+            // 1. 绮剧‘鍖归厤鎶ュ伐鏃堕棿
+            var exactMatch = numericalList
+                .Select(x => new { Item = x, ParsedTime = DateTime.TryParse(x.CjTiem, out var dt) ? dt : (DateTime?)null })
+                .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value == lastReport.BgDate.Value)
+                .OrderBy(x => x.ParsedTime)
+                .Select(x => x.Item)
                 .FirstOrDefault();
 
-            vOrderBycl.InitCjNum = afterReportNum?.CjNum ?? vOrderBycl.StartCjNum;
+            if (exactMatch != null)
+            {
+                vOrderBycl.InitCjNum = exactMatch.CjNum ?? vOrderBycl.StartCjNum;
+            }
+            else
+            {
+                // 2. 鎵炬姤宸ユ椂闂翠箣鍚庣殑绗竴鏉�
+                var afterReportNum = numericalList
+                    .Select(x => new { Item = x, ParsedTime = DateTime.TryParse(x.CjTiem, out var dt) ? dt : (DateTime?)null })
+                    .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value > lastReport.BgDate.Value)
+                    .OrderBy(x => x.ParsedTime)
+                    .Select(x => x.Item)
+                    .FirstOrDefault();
+
+                vOrderBycl.InitCjNum = afterReportNum?.CjNum ?? vOrderBycl.StartCjNum;
+            }
         }
 
         var startCjNum = vOrderBycl.StartCjNum;
@@ -285,6 +300,16 @@
         return vPrint;
     }
 
+    /// <summary>
+    /// 鎶ュ伐璁板綍琛�
+    /// </summary>
+    /// <param name="billNo"></param>
+    /// <param name="machineNo"></param>
+    /// <param name="from"></param>
+    /// <param name="to"></param>
+    /// <param name="pageIndex"></param>
+    /// <param name="pageSize"></param>
+    /// <returns></returns>
     public (List<MesReportingBgDto> tbBillList, int totalCount) GetByBillNoBG(
         string billNo, string machineNo, DateTime? from, DateTime? to, int pageIndex, int pageSize)
     {

--
Gitblit v1.9.3