From 7a994e2b72e7cfa1e6afcea7ff6f38daba749b88 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期二, 21 十月 2025 10:25:01 +0800
Subject: [PATCH] 更新工单Daa012为原值加上本次不良品数量
---
Services/WomdaaManager.cs | 103 +++++++++++++++++++++++++++------------------------
1 files changed, 54 insertions(+), 49 deletions(-)
diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 7b377dd..59d2293 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -137,42 +137,27 @@
// 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
var lastReport = Db.Queryable<MesReporting>()
- .Where(r => r.BillNo != null && r.BillNo.Contains(query.orderNo))
- .OrderBy(r => r.Id, OrderByType.Desc)
+ .AS("MES_REPORTING") // 寮哄埗琛ㄥ悕
+ .Where(r => r.BillNo == "MSD01-2507140001-g1-1")
+ .OrderBy(r => r.BgDate, OrderByType.Desc)
.First();
if (lastReport == null || !lastReport.BgDate.HasValue)
{
- // 娌℃湁鎶ュ伐璁板綍鎴栨姤宸ユ椂闂存棤鏁堬紝鍒濆閲囬泦鏁颁负褰撳墠閲囨暟
- vOrderBycl.InitCjNum = vOrderBycl.CurrentCjNum;
+ // 娌℃湁鎶ュ伐璁板綍鎴栨姤宸ユ椂闂存棤鏁堬紝鍒濆閲囬泦鏁颁负寮�宸ラ噰鏁�
+ vOrderBycl.InitCjNum = vOrderBycl.StartCjNum;
}
else
{
- // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负涓婁竴娆℃姤宸ユ椂闂村悗鏈�杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
- // 1. 绮剧‘鍖归厤鎶ュ伐鏃堕棿
- var exactMatch = numericalList
+ // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负鎶ュ伐鏃堕棿鐐瑰墠锛堝惈锛夋渶杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
+ 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)
- .OrderBy(x => x.ParsedTime)
+ .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value <= lastReport.BgDate.Value)
+ .OrderByDescending(x => x.ParsedTime) // 闄嶅簭锛屽彇绗竴鏉�
.Select(x => x.Item)
.FirstOrDefault();
- 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;
- }
+ vOrderBycl.InitCjNum = beforeOrEqualReportNum?.CjNum ?? vOrderBycl.StartCjNum;
}
var startCjNum = vOrderBycl.StartCjNum;
@@ -224,24 +209,14 @@
.Where(a => a.OrderId == VOrdrerBycl.ID
&& a.IsShow == 0).First();
- VOrdrerBycl.todayRunTime = 0;
+ // 淇濈暀瑙嗗浘閲岀殑 todayRunTime 鍜� JDL锛屼笉鍋氫换浣曡祴鍊煎拰杞崲
+ // VOrdrerBycl.todayRunTime 淇濇寔鍘熷��
+ // VOrdrerBycl.JDL 淇濇寔鍘熷��
VOrdrerBycl.TodayFaultNum = 0;
if (mesOrderSelect != null)
{
- VOrdrerBycl.todayRunTime = mesOrderSelect.TjTime;
VOrdrerBycl.TodayFaultNum = mesOrderSelect.TjCount;
-
- if (mesOrderSelect.TjTime is null or 0)
- {
- VOrdrerBycl.JDL = 100;
- }
- else
- {
- var round = Math.Round(mesOrderSelect.TjTime.Value / 1440, 2);
- var round1 = (1 - round) * 100;
- VOrdrerBycl.JDL = round1;
- }
}
VOrdrerBycl.wjQty = VOrdrerBycl.Daa008 - VOrdrerBycl.Daa011;
@@ -281,10 +256,15 @@
VOrdrerBycl.CurrentCjNum = 0;
}
- // 鏌ヨ鏈�鍚庝竴鏉℃姤宸ヨ褰�
+ // 璁$畻褰撳ぉ鍋滄満娆℃暟
+ VOrdrerBycl.TodayDowntimeCount = GetTodayDowntimeCount(numericalList);
+
+ Console.WriteLine($"orderNo: [{query.orderNo}]");
+
+ // 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
var lastReport = Db.Queryable<MesReporting>()
- .Where(r => r.BillNo != null && r.BillNo.Contains(query.orderNo))
- .OrderBy(r => r.Id, OrderByType.Desc)
+ .Where(r => r.BillNo.Trim().ToUpper() == query.orderNo.Trim().ToUpper())
+ .OrderBy(r => r.BgDate, OrderByType.Desc)
.First();
if (lastReport == null || !lastReport.BgDate.HasValue)
@@ -294,24 +274,49 @@
}
else
{
- // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负涓婁竴娆℃姤宸ユ椂闂村悗鏈�杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
- var afterReportNum = numericalList
+ // 鏈夋姤宸ヨ褰曪紝鍒濆閲囬泦鏁颁负鎶ュ伐鏃堕棿鐐瑰墠锛堝惈锛夋渶杩戜竴鏉¢娇杞暟閲囪〃鐨勯噰闆嗘暟閲�
+ 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)
- .OrderBy(x => x.ParsedTime)
+ .Where(x => x.ParsedTime.HasValue && x.ParsedTime.Value <= lastReport.BgDate.Value)
+ .OrderByDescending(x => x.ParsedTime) // 闄嶅簭锛屽彇绗竴鏉�
.Select(x => x.Item)
.FirstOrDefault();
- VOrdrerBycl.InitCjNum = afterReportNum?.CjNum ?? VOrdrerBycl.StartCjNum;
+ 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>
/// 鏍规嵁宸ュ崟ID鑾峰彇鎶ュ伐淇℃伅
/// </summary>
/// <param name="query">鍖呭惈宸ュ崟ID鐨勬煡璇㈡潯浠�</param>
--
Gitblit v1.9.3