From 7f973db754fe5746b48b6b90a1a6e05cb7b8ed24 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 17 十月 2025 10:25:38 +0800
Subject: [PATCH] 如果有报工记录,那么初始始采集数为:上一次报工时间后最近一条齿轮数采表的采集数量

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

diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index ad3025a..019afce 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -91,8 +91,7 @@
     {
         // 鏌ヨ闇�瑕佹樉绀虹殑宸ュ崟ID
         var ids = Db.Queryable<MesOrderSelect>()
-            .Where(b => b.MachineNo == query.machineNo
-                        && b.IsShow == 0)
+            .Where(b => b.MachineNo == query.machineNo && b.IsShow == 0)
             .Select(s => s.OrderId)
             .ToList();
 
@@ -104,7 +103,7 @@
         if (decimals.Count == 0)
             return new List<VOrderBycl>();
 
-        //濡傛灉鏈夊伐鍗旾D
+        // 鏌ヨ榻胯疆鏁伴噰琛�
         var numericalList = Db.Queryable<MesNumericalBycl>()
             .Where(x => ids.Contains(x.OrderId ?? 0))
             .OrderBy(x => x.CjTiem)
@@ -114,12 +113,9 @@
         if (numericalList.Count > 0)
         {
             // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
-            var firstNum = numericalList.First().CjNum ?? 0;
-            var lastNum = numericalList.Last().CjNum ?? 0;
-            // 闇�瑕佹湁瀵硅薄寮曠敤锛屽亣璁句綘鏈変竴涓� VOrderBycl 绫诲瀷鐨勫璞★紝姣斿 vOrderBycl
-
-            vOrderBycl.StartCjNum = firstNum;
-            vOrderBycl.CurrentCjNum = lastNum;
+            vOrderBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+            // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+            vOrderBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
         }
         else
         {
@@ -127,20 +123,49 @@
             vOrderBycl.CurrentCjNum = 0;
         }
 
+        // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴娆℃姤宸ユ椂闂�
+        var lastReport = Db.Queryable<MesReporting>()
+            .Where(r => r.BillNo != null && r.BillNo.Contains(query.orderNo))
+            .OrderBy(r => r.BgDate, OrderByType.Desc)
+            .First();
+
+        if (lastReport == null)
+        {
+            // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+            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))
+                .FirstOrDefault();
+
+            vOrderBycl.InitCjNum = afterReportNum?.CjNum ?? vOrderBycl.StartCjNum;
+        }
+
         var startCjNum = vOrderBycl.StartCjNum;
         var currentCjNum = vOrderBycl.CurrentCjNum;
+        var initCjNum = vOrderBycl.InitCjNum;
 
-        // 鏌ヨ宸ュ崟瑙嗗浘锛岀瓫閫夊嚭闇�瑕佹樉绀虹殑宸ュ崟
+        // 鏌ヨ宸ュ崟瑙嗗浘锛岀瓫閫夊嚭闇�瑕佹樉绀虹殑宸ュ崟锛屽彧鍙栨渶鏂颁竴鏉�
         var orders = Db.Queryable<VOrderBycl>()
             .Where(c =>
                 decimals.Contains(c.ID) &&
                 (c.EditDate == date || c.EditDate == null))
+            .OrderBy(c => c.EditDate, OrderByType.Desc)
+            .Take(1)
             .ToList();
 
         foreach (var order in orders)
         {
             order.StartCjNum = startCjNum;
             order.CurrentCjNum = currentCjNum;
+            order.InitCjNum = initCjNum;
         }
 
         return orders;

--
Gitblit v1.9.3