From 810818b52ac65bd701c9582571be23ded5aea776 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期四, 23 十月 2025 14:30:06 +0800
Subject: [PATCH] 不合格后重送检逻辑_2
---
Services/WomdaaManager.cs | 81 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 77 insertions(+), 4 deletions(-)
diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 4233ec3..29b97e8 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -212,7 +212,7 @@
// 淇濈暀瑙嗗浘閲岀殑 todayRunTime 鍜� JDL锛屼笉鍋氫换浣曡祴鍊煎拰杞崲
// VOrdrerBycl.todayRunTime 淇濇寔鍘熷��
// VOrdrerBycl.JDL 淇濇寔鍘熷��
- VOrdrerBycl.TodayFaultNum = 0;
+ //VOrdrerBycl.TodayFaultNum = 0;
if (mesOrderSelect != null)
{
@@ -256,6 +256,15 @@
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}]");
// 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
@@ -282,13 +291,77 @@
VOrdrerBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? VOrdrerBycl.StartCjNum;
}
- // 鎶ュ伐鏃堕噰闆嗘暟灏辨槸涓荤晫闈㈢殑褰撳墠閲囨暟
- // VOrdrerBycl.CurrentCjNum 宸茶祴鍊硷紝鏃犻渶棰濆澶勭悊
-
return VOrdrerBycl;
}
/// <summary>
+ /// 璁$畻鏃ュ仠鏈烘鏁�
+ /// </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>
--
Gitblit v1.9.3