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

---
 Services/WomdaaManager.cs |  136 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 104 insertions(+), 32 deletions(-)

diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 71ce8fc..019afce 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -25,12 +25,6 @@
             list = list.Where(p => p.Daa018 != null && query.OrderStatus.Contains(p.Daa018)).ToList();
         }
 
-        //// 鍒嗙粍閫昏緫锛堝闇�鍒嗙粍锛屾寜鍒�鍏稩D鍒嗙粍鍙栫涓�鏉★級
-        //var vOrders = list.GroupBy(p => p.cutterId)
-        //    .Select(g => g.First()).ToList();
-
-        //return vOrders;
-        // 濡傞渶鍒嗙粍鍙姞鍒嗙粍閫昏緫锛屽惁鍒欑洿鎺ヨ繑鍥�
         return list;
     }
 
@@ -97,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();
 
@@ -110,12 +103,72 @@
         if (decimals.Count == 0)
             return new List<VOrderBycl>();
 
-        // 鏌ヨ宸ュ崟瑙嗗浘锛岀瓫閫夊嚭闇�瑕佹樉绀虹殑宸ュ崟
-        return Db.Queryable<VOrderBycl>()
+        // 鏌ヨ榻胯疆鏁伴噰琛�
+        var numericalList = Db.Queryable<MesNumericalBycl>()
+            .Where(x => ids.Contains(x.OrderId ?? 0))
+            .OrderBy(x => x.CjTiem)
+            .ToList();
+
+        var vOrderBycl = new VOrderBycl();
+        if (numericalList.Count > 0)
+        {
+            // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+            vOrderBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+            // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+            vOrderBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+        }
+        else
+        {
+            vOrderBycl.StartCjNum = 0;
+            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;
     }
 
     /// <summary>
@@ -166,19 +219,35 @@
 
         VOrdrerBycl.wjQty = VOrdrerBycl.Daa008 - VOrdrerBycl.Daa011;
 
-        //DevMachine
         var devMachine = Db.Queryable<DevMacBycl>()
             .Where(s => s.MachineNo == VOrdrerBycl.MachineNo)
             .First();
-
 
         var sql = string.Format(
             "select FINAL_RESULT from MES_EQ_SPOT_CHECKS where department_no = 'XS0101' and EQ_NO = '{0}' and substr(SUBMIT_DATE, 1, 10) = to_char(sysdate, 'yyyy-mm-dd')",
             devMachine.UniqueBarcode);
 
         var sqlQuerySingle = Db.Ado.SqlQuerySingle<string>(sql);
-
         VOrdrerBycl.finalResult = sqlQuerySingle;
+
+        // 鏌ヨMES_NUMERICAL_BYCL琛紝鑾峰彇寮�宸ユ暟閲囧拰褰撳墠鏁伴噰
+        var numericalList = Db.Queryable<MesNumericalBycl>()
+            .Where(x => x.OrderId == VOrdrerBycl.ID)
+            .OrderBy(x => x.CjTiem)
+            .ToList();
+
+        if (numericalList.Count > 0)
+        {
+            // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+            VOrdrerBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+            // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+            VOrdrerBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+        }
+        else
+        {
+            VOrdrerBycl.StartCjNum = 0;
+            VOrdrerBycl.CurrentCjNum = 0;
+        }
 
         return VOrdrerBycl;
     }
@@ -217,38 +286,41 @@
     }
 
     public (List<MesReportingBgDto> tbBillList, int totalCount) GetByBillNoBG(
-    string billNo, string machineNo, DateTime? from, DateTime? to, int pageIndex, int pageSize)
+        string billNo, string machineNo, DateTime? from, DateTime? to, int pageIndex, int pageSize)
     {
         var query = Db.Queryable<MesReporting>()
-            .Where(x => x.BillNo == billNo);
+            // 鍏宠仈鍛樺伐淇℃伅琛紝浣跨敤鎶ュ伐浜虹紪鐮佸尮閰嶅憳宸ョ紪鐮�
+            .LeftJoin<MesStaff>((r, s) => r.BgPerson == s.StaffNo)
+            .Where((r, s) => r.BillNo == billNo);
 
         if (!string.IsNullOrWhiteSpace(machineNo))
-            query = query.Where(x => x.MachineNo == machineNo);
+            query = query.Where((r, s) => r.MachineNo == machineNo);
 
         if (from.HasValue)
-            query = query.Where(x => x.BgDate >= from.Value);
+            query = query.Where((r, s) => r.BgDate >= from.Value);
 
         if (to.HasValue)
-            query = query.Where(x => x.BgDate < to.Value.AddDays(1));
+            query = query.Where((r, s) => r.BgDate < to.Value.AddDays(1));
 
         var totalCount = query.Count();
 
-        var tbBillList = query.OrderBy(x => x.BgDate, OrderByType.Desc)
-            .Select(x => new MesReportingBgDto
+        var tbBillList = query.OrderBy((r, s) => r.BgDate, OrderByType.Desc)
+            .Select((r, s) => new MesReportingBgDto
             {
-                Id = (long)x.Id,
-                BillNo = x.BillNo,
-                ItemNo = x.ItemNo,
-                MachineNo = x.MachineNo,
-                StaffNo = x.BgPerson,//鎶ュ伐浜虹紪鍙�
-                StaffName = x.BgPerson, // 濡傛湁鐙珛濮撳悕瀛楁鍙浛鎹�
-                BgDate = x.BgDate,//鎶ュ伐鏃堕棿
-                CsQty = SqlFunc.ToInt32(x.CsQty),//鍒濆閲囬泦鏁�
-                CjQty = SqlFunc.ToInt32(x.CjQty),//鎶ュ伐鏃堕噰闆嗘暟
-                BfQty = SqlFunc.ToInt32(x.BfQty),//涓嶈壇鏁伴噺
-                OkQty = SqlFunc.ToInt32(x.OkQty)//鑹搧鏁伴噺
+                Id = (long)r.Id,
+                BillNo = r.BillNo,
+                ItemNo = r.ItemNo,
+                MachineNo = r.MachineNo,
+                StaffNo = r.BgPerson,//鎶ュ伐浜虹紪鍙�
+                StaffName = SqlFunc.IsNullOrEmpty(s.StaffName) ? r.BgPerson : s.StaffName, // 濡傛湁鐙珛濮撳悕瀛楁鍙浛鎹�
+                BgDate = r.BgDate,//鎶ュ伐鏃堕棿
+                CsQty = SqlFunc.ToInt32(r.CsQty),//鍒濆閲囬泦鏁�
+                CjQty = SqlFunc.ToInt32(r.CjQty),//鎶ュ伐鏃堕噰闆嗘暟
+                BfQty = SqlFunc.ToInt32(r.BfQty),//涓嶈壇鏁伴噺
+                OkQty = SqlFunc.ToInt32(r.OkQty)//鑹搧鏁伴噺
             })
-            .ToPageList((pageIndex < 1 ? 1 : pageIndex), (pageSize < 1 ? 200 : (pageSize > 1000 ? 1000 : pageSize)), ref totalCount);
+            .ToPageList((pageIndex < 1 ? 1 : pageIndex),
+                (pageSize < 1 ? 200 : (pageSize > 1000 ? 1000 : pageSize)), ref totalCount);
 
         return (tbBillList, totalCount);
     }

--
Gitblit v1.9.3