From a8f45fa02822529485ea0bf08ee1d5d5d1a35e15 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 21 十一月 2025 15:34:20 +0800
Subject: [PATCH] 更换提示顺序

---
 Services/WomdaaManager.cs |  369 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 319 insertions(+), 50 deletions(-)

diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index f27c2d8..eb09f37 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -1,6 +1,7 @@
 锘縰sing PadApplication.DB;
 using PadApplication.Entites.DbModels;
 using PadApplication.Entites.Dto;
+using SqlSugar;
 
 namespace PadApplication.Services;
 
@@ -14,7 +15,7 @@
     /// </summary>
     /// <param name="query">鍖呭惈鏈哄櫒缂栧彿鍜屽伐鍗曠姸鎬佺殑鏌ヨ鏉′欢</param>
     /// <returns>宸ュ崟鍒楄〃</returns>
-    public List<VOrdrerBycl> GetWomdaasByEngineeringNo(OrderMachineDto query)
+    public List<VOrderBycl> GetWomdaasByEngineeringNo(OrderMachineDto query)
     {
         var list = VOrders(query);
 
@@ -24,12 +25,13 @@
             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();
+        // 鎸夊伐鍗旾D鍒嗙粍锛屽彧淇濈暀姣忕粍涓渶鏃╂姤宸ョ殑涓�鏉�
+        list = list
+            .GroupBy(p => p.ID)
+            .Select(g => g.OrderBy(x => x.BgDate).First())
+            .OrderBy(x => x.BgDate)
+            .ToList();
 
-        //return vOrders;
-        // 濡傞渶鍒嗙粍鍙姞鍒嗙粍閫昏緫锛屽惁鍒欑洿鎺ヨ繑鍥�
         return list;
     }
 
@@ -38,16 +40,16 @@
     /// </summary>
     /// <param name="query">鍖呭惈鏈哄櫒缂栧彿鐨勬煡璇㈡潯浠�</param>
     /// <returns>鍚堝苟鍚庣殑宸ュ崟鍒楄〃</returns>
-    private List<VOrdrerBycl> VOrders(OrderMachineDto query)
+    private List<VOrderBycl> VOrders(OrderMachineDto query)
     {
-        var list = Db.Queryable<VOrdrerBycl>()
+        var list = Db.Queryable<VOrderBycl>()
             .Where(s => s.Daa018 != "瀹屽伐" &&
                         s.MachineNo == query.machineNo)
             .ToList();
 
         var orders = Db.Queryable<VOrderABycl>()
             .Where(s => s.MachineNo == query.machineNo)
-            .Select<VOrdrerBycl>()
+            .Select<VOrderBycl>()
             .ToList();
 
         list.AddRange(orders);
@@ -63,7 +65,7 @@
     /// <returns>
     ///     杩斿洖绗﹀悎鏉′欢鐨勫伐鍗曪紙VOrdreBycl锛夊垪琛�
     /// </returns>
-    public List<VOrdrerBycl> GetWomdaasByMachine(OrderMachineDto query)
+    public List<VOrderBycl> GetWomdaasByMachine(OrderMachineDto query)
     {
         // 鑾峰彇褰撳墠鏃ユ湡瀛楃涓诧紝鏍煎紡涓� yyyy-MM-dd
         var date = DateTime.Now.ToString("yyyy-MM-dd");
@@ -79,7 +81,7 @@
         // 1. 鏈哄彴缂栧彿绛変簬浼犲叆鐨刴achineNo
         // 2. 缂栬緫鏃ユ湡涓轰粖澶╂垨涓虹┖
         // 3. 宸ュ崟ID鍦╥ds闆嗗悎涓�
-        return Db.Queryable<VOrdrerBycl>()
+        return Db.Queryable<VOrderBycl>()
             .Where(s =>
                 s.MachineNo == query.machineNo
                 && (s.EditDate == date || s.EditDate == null)
@@ -92,12 +94,11 @@
     /// </summary>
     /// <param name="query">鍖呭惈鏈哄櫒缂栧彿鐨勬煡璇㈡潯浠�</param>
     /// <returns>闇�瑕佹樉绀虹殑宸ュ崟鍒楄〃</returns>
-    public List<VOrdrerBycl> GetWomdaasByShow(OrderMachineDto query)
+    public List<VOrderBycl> GetWomdaasByShow(OrderMachineDto query)
     {
         // 鏌ヨ闇�瑕佹樉绀虹殑宸ュ崟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();
 
@@ -107,14 +108,90 @@
 
         // 濡傛灉娌℃湁宸ュ崟ID锛岀洿鎺ヨ繑鍥炵┖鍒楄〃
         if (decimals.Count == 0)
-            return new List<VOrdrerBycl>();
+            return new List<VOrderBycl>();
 
-        // 鏌ヨ宸ュ崟瑙嗗浘锛岀瓫閫夊嚭闇�瑕佹樉绀虹殑宸ュ崟
-        return Db.Queryable<VOrdrerBycl>()
+        // 鏌ヨ榻胯疆鏁伴噰琛�
+        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)
+        {
+            // 鎸夐噰闆嗘椂闂村崌搴忔帓搴�
+            var sortedList = numericalList
+                .OrderBy(x => DateTime.TryParse(x.CjTiem, out var dt) ? dt : DateTime.MinValue)
+                .ToList();
+
+            // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+            vOrderBycl.StartCjNum = vOrderBycl.preStartCjNum ?? (sortedList.First().CjNum ?? 0);
+            // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+            vOrderBycl.CurrentCjNum = sortedList.Last().CjNum ?? 0;
+        }
+        else
+        {
+            vOrderBycl.StartCjNum = 0;
+            vOrderBycl.CurrentCjNum = 0;
+        }
+
+        // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
+        var lastReport = Db.Queryable<MesReporting>()
+            .AS("MES_REPORTING") // 寮哄埗琛ㄥ悕
+            .Where(r => r.BillNo == query.orderNo)
+            .OrderBy(r => r.BgDate, OrderByType.Desc)
+            .First();
+
+        if (lastReport == null || !lastReport.BgDate.HasValue)
+        {
+            if (string.IsNullOrEmpty(vOrderBycl.Daa016)) // 娌℃湁寮�宸ユ椂闂�
+            {
+                // 娌℃湁鎶ュ伐璁板綍涓旀病鏈夊紑宸ユ椂闂达紝鍒濆閲囬泦鏁颁负璋冩満鏃堕棿鍓嶄竴鏉$殑閲囬泦鏁伴噺
+                vOrderBycl.InitCjNum = vOrderBycl.preStartTjNum;
+            }
+            else
+            {
+                // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ユ椂闂村墠涓�鏉$殑閲囬泦鏁伴噺
+                vOrderBycl.InitCjNum = vOrderBycl.preStartCjNum;
+            }
+
+            //// 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+            //VOrdrerBycl.InitCjNum = VOrdrerBycl.StartCjNum;
+        }
+        else
+        {
+            // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负鎶ュ伐鏃堕棿鐐瑰墠锛堝惈锛夋渶杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
+            var beforeOrEqualReportNum = 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)
+                .OrderByDescending(x => x.ParsedTime) // 闄嶅簭锛屽彇绗竴鏉�
+                .Select(x => x.Item)
+                .FirstOrDefault();
+
+            vOrderBycl.InitCjNum = beforeOrEqualReportNum?.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.BgDate, OrderByType.Desc)
+            .Take(1)
             .ToList();
+
+        foreach (var order in orders)
+        {
+            order.StartCjNum = startCjNum;
+            order.CurrentCjNum = currentCjNum;
+            order.InitCjNum = initCjNum;
+        }
+
+        return orders;
     }
 
     /// <summary>
@@ -122,78 +199,270 @@
     /// </summary>
     /// <param name="query">鍖呭惈宸ュ崟ID鍜屽伐鍗曞彿鐨勬煡璇㈡潯浠�</param>
     /// <returns>宸ュ崟璇︾粏淇℃伅</returns>
-    public VOrder GetWomdaaById(OrderMachineDto query)
+    public VOrderBycl GetWomdaaById(OrderMachineDto query)
     {
         var date = DateTime.Now.ToString("yyyy-MM-dd");
 
-        var count = Db.Queryable<DeviceStatus>()
+        var count = Db.Queryable<DeviceStatusBycl>()
             .Where(b => b.OrderNo == query.orderNo && b.EditDate == date)
             .Count();
 
-        var vOrder = Db.Queryable<VOrder>()
+        var VOrdrerBycl = Db.Queryable<VOrderBycl>()
             .Where(s => s.ID == query.OrderId)
             .WhereIF(count > 0, s => s.EditDate == date)
             .OrderByDescending(s => s.workStartDate).First();
 
-        if (vOrder == null) return null;
+        if (VOrdrerBycl == null) return null;
 
-        vOrder.YJQTY ??= 0;
+        VOrdrerBycl.YJQTY ??= 0;
 
         var mesOrderSelect = Db.Queryable<MesOrderSelect>()
-            .Where(a => a.OrderId == vOrder.ID
+            .Where(a => a.OrderId == VOrdrerBycl.ID
                         && a.IsShow == 0).First();
 
-        vOrder.todayRunTime = 0;
-        vOrder.TodayFaultNum = 0;
+        // 淇濈暀瑙嗗浘閲岀殑 todayRunTime 鍜� JDL锛屼笉鍋氫换浣曡祴鍊煎拰杞崲
+        // VOrdrerBycl.todayRunTime 淇濇寔鍘熷��
+        // VOrdrerBycl.JDL 淇濇寔鍘熷��
+        //VOrdrerBycl.TodayFaultNum = 0;
 
         if (mesOrderSelect != null)
         {
-            vOrder.todayRunTime = mesOrderSelect.TjTime;
-            vOrder.TodayFaultNum = mesOrderSelect.TjCount;
-
-            if (mesOrderSelect.TjTime is null or 0)
-            {
-                vOrder.JDL = 100;
-            }
-            else
-            {
-                var round = Math.Round(mesOrderSelect.TjTime.Value / 1440, 2);
-                var round1 = (1 - round) * 100;
-                vOrder.JDL = round1;
-            }
+            VOrdrerBycl.TodayFaultNum = mesOrderSelect.TjCount;
         }
 
-        vOrder.wjQty = vOrder.Daa008 - vOrder.Daa011;
+        VOrdrerBycl.wjQty = VOrdrerBycl.Daa008 - VOrdrerBycl.Daa011;
 
-        //DevMachine
         var devMachine = Db.Queryable<DevMacBycl>()
-            .Where(s => s.MachineNo == vOrder.MachineNo)
+            .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;
 
-        vOrder.finalResult = sqlQuerySingle;
+        // 鏌ヨMES_NUMERICAL_BYCL琛紝鑾峰彇寮�宸ユ暟閲囧拰褰撳墠鏁伴噰
+        var numericalList = Db.Queryable<MesNumericalBycl>()
+            .Where(x => x.OrderId == VOrdrerBycl.ID)
+            .OrderBy(x => x.CjTiem)
+            .ToList();
 
-        return vOrder;
+        if (numericalList.Count > 0)
+        {
+            // 鍏堟寜閲囬泦鏃堕棿鍗囧簭鎺掑簭
+            var sortedList = numericalList
+                .OrderBy(x => DateTime.TryParse(x.CjTiem, out var dt) ? dt : DateTime.MinValue)
+                .ToList();
+
+            // 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
+            VOrdrerBycl.StartCjNum = VOrdrerBycl.preStartCjNum ?? (sortedList.First().CjNum ?? 0);
+            // 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
+            VOrdrerBycl.CurrentCjNum = sortedList.Last().CjNum ?? 0;
+        }
+        else
+        {
+            VOrdrerBycl.StartCjNum = 0;
+            VOrdrerBycl.CurrentCjNum = 0;
+        }
+
+        // 璁$畻褰撳ぉ鍋滄満娆℃暟
+        //VOrdrerBycl.TodayDowntimeCount = GetTodayDowntimeCount(numericalList);
+
+        //璁$畻鏃ュ仠鏈烘鏁般�乼odayOnlineTime锛堟�诲湪绾挎椂闀匡級銆乼odayRunTime锛堝疄闄呰繍琛屾椂闀匡級銆佺鍔ㄧ巼锛堢櫨鍒嗘瘮锛屼繚鐣欎袱浣嶅皬鏁帮級
+        VOrdrerBycl.TodayDowntimeCount = GetTodayDowntimeStats(numericalList).downtimeCount;
+        VOrdrerBycl.TodayOnlineTime = GetTodayDowntimeStats(numericalList).todayOnlineTime;
+        VOrdrerBycl.todayRunTime = GetTodayDowntimeStats(numericalList).todayRunTime;
+        VOrdrerBycl.JDL = GetTodayDowntimeStats(numericalList).utilizationRate;
+
+        Console.WriteLine($"orderNo: [{query.orderNo}]");
+
+        // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
+        var lastReport = Db.Queryable<MesReporting>()
+            .Where(r => r.BillNo.Trim().ToUpper() == query.orderNo.Trim().ToUpper())
+            .OrderBy(r => r.BgDate, OrderByType.Desc)
+            .First();
+
+        if (lastReport == null || !lastReport.BgDate.HasValue)
+        {
+            if (string.IsNullOrEmpty(VOrdrerBycl.Daa016)) // 娌℃湁寮�宸ユ椂闂�
+            {
+                // 娌℃湁鎶ュ伐璁板綍涓旀病鏈夊紑宸ユ椂闂达紝鍒濆閲囬泦鏁颁负璋冩満鏃堕棿鍓嶄竴鏉$殑閲囬泦鏁伴噺
+                VOrdrerBycl.InitCjNum = VOrdrerBycl.preStartTjNum;
+            }
+            else
+            {
+                // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ユ椂闂村墠涓�鏉$殑閲囬泦鏁伴噺
+                VOrdrerBycl.InitCjNum = VOrdrerBycl.preStartCjNum;
+            }
+
+            //// 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+            //VOrdrerBycl.InitCjNum = VOrdrerBycl.StartCjNum;
+        }
+        else
+        {
+            // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负鎶ュ伐鏃堕棿鐐瑰墠锛堝惈锛夋渶杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
+            var beforeOrEqualReportNum = 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)
+                .OrderByDescending(x => x.ParsedTime) // 闄嶅簭锛屽彇绗竴鏉�
+                .Select(x => x.Item)
+                .FirstOrDefault();
+
+            VOrdrerBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? VOrdrerBycl.StartCjNum;
+        }
+
+        return VOrdrerBycl;
     }
 
     /// <summary>
-    ///     鏍规嵁宸ュ崟ID鑾峰彇鎵撳嵃淇℃伅
+    /// 璁$畻鏃ュ仠鏈烘鏁�
+    /// </summary>
+    /// <param name="numericalList"></param>
+    /// <returns></returns>
+    public int GetTodayDowntimeCount(List<MesNumericalBycl> numericalList)
+    {
+        var today = DateTime.Now.Date;
+        // 1. 鍙繚鐣欏綋澶╂暟鎹紝骞惰浆鎹负 DateTime
+        var todayTimes = numericalList
+            .Where(x => DateTime.TryParse(x.CjTiem, out var dt) && dt.Date == today)
+            .Select(x => DateTime.Parse(x.CjTiem))
+            .OrderBy(x => x)
+            .ToList();
+
+        if (todayTimes.Count < 2)
+            return 0;
+
+        int downtimeCount = 0;
+        for (int i = 1; i < todayTimes.Count; i++)
+        {
+            var diff = (todayTimes[i] - todayTimes[i - 1]).TotalMinutes;
+            if (diff > 3)
+                downtimeCount++;
+        }
+        return downtimeCount;
+    }
+
+    /// <summary>
+    /// 璁$畻鏃ュ仠鏈烘鏁般�乼odayOnlineTime锛堟�诲湪绾挎椂闀匡級銆乼odayRunTime锛堝疄闄呰繍琛屾椂闀匡級銆佺鍔ㄧ巼锛堢櫨鍒嗘瘮锛屼繚鐣欎袱浣嶅皬鏁帮級
+    /// </summary>
+    public (int downtimeCount, double todayOnlineTime, double todayRunTime, double utilizationRate) GetTodayDowntimeStats(List<MesNumericalBycl> numericalList)
+    {
+        var today = DateTime.Now.Date;
+        var todayTimes = numericalList
+            .Where(x => DateTime.TryParse(x.CjTiem, out var dt) && dt.Date == today)
+            .Select(x => DateTime.Parse(x.CjTiem))
+            .OrderBy(x => x)
+            .ToList();
+
+        int downtimeCount = 0;
+        double downtimeMinutes = 0;
+        double todayOnlineTime = 0;
+        double todayRunTime = 0;
+        double utilizationRate = 0;
+
+        if (todayTimes.Count < 2)
+            return (0, 0, 0, 0);
+
+        for (int i = 1; i < todayTimes.Count; i++)
+        {
+            var diff = (todayTimes[i] - todayTimes[i - 1]).TotalMinutes;
+            if (diff > 3)
+            {
+                downtimeCount++;
+                downtimeMinutes += diff;
+            }
+        }
+
+        todayOnlineTime = (todayTimes.Last() - todayTimes.First()).TotalMinutes;
+        todayRunTime = todayOnlineTime - downtimeMinutes;
+        if (todayOnlineTime > 0)
+            utilizationRate = Math.Round(todayRunTime / todayOnlineTime * 100, 2);
+
+        return (downtimeCount, todayOnlineTime, todayRunTime, utilizationRate);
+    }
+
+    /// <summary>
+    ///     鏍规嵁宸ュ崟ID鑾峰彇鎶ュ伐淇℃伅
     /// </summary>
     /// <param name="query">鍖呭惈宸ュ崟ID鐨勬煡璇㈡潯浠�</param>
-    /// <returns>宸ュ崟鎵撳嵃淇℃伅</returns>
+    /// <returns>宸ュ崟鎶ュ伐淇℃伅</returns>
     public VPrint GetWomdaaPrintById(OrderMachineDto query)
     {
         var vPrint = Db.Queryable<VPrint>()
-            .Where(s => s.Id == query.OrderId).First();
-        vPrint.RmiPrQty =
-            (int)Math.Ceiling(
-                (double)((vPrint.Bqty - vPrint.SQuantity) / vPrint.Qqty));
+            .Where(s => s.Id == query.OrderId)
+            .First();
+
+        if (vPrint == null)
+            return null;
+
+        // 闃叉闄ら浂鍜岀┖鍊煎紓甯�
+        var bqty = vPrint.Bqty ?? 0;
+        var sQuantity = vPrint.SQuantity ?? 0;
+        var qqty = vPrint.Qqty ?? 0;
+
+        if (qqty == 0)
+        {
+            vPrint.RmiPrQty = 0;
+        }
+        else
+        {
+            // 鍓╀綑鍙墦鍗板紶鏁� = (鍙墦鍗版�绘暟閲� - 宸叉墦鍗版暟閲�) / 鏍囧噯鍖呰鏁帮紝鍚戜笂鍙栨暣
+            var remain = bqty - sQuantity;
+            vPrint.RmiPrQty = remain > 0 ? (int)Math.Ceiling((double)remain / (double)qqty) : 0;
+        }
+
         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)
+    {
+        var query = Db.Queryable<MesReporting>()
+            // 鍏宠仈鍛樺伐淇℃伅琛紝浣跨敤鎶ュ伐浜虹紪鐮佸尮閰嶅憳宸ョ紪鐮�
+            .LeftJoin<MesStaff>((r, s) => r.BgPerson == s.StaffNo)
+            .Where((r, s) => r.BillNo == billNo);
+
+        if (!string.IsNullOrWhiteSpace(machineNo))
+            query = query.Where((r, s) => r.MachineNo == machineNo);
+
+        if (from.HasValue)
+            query = query.Where((r, s) => r.BgDate >= from.Value);
+
+        if (to.HasValue)
+            query = query.Where((r, s) => r.BgDate < to.Value.AddDays(1));
+
+        var totalCount = query.Count();
+
+        var tbBillList = query.OrderBy((r, s) => r.BgDate, OrderByType.Desc)
+            .Select((r, s) => new MesReportingBgDto
+            {
+                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);
+
+        return (tbBillList, totalCount);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3