From f043e6f1bd3d3967df569096f2adb67d0c8a5149 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期六, 18 十月 2025 16:32:04 +0800
Subject: [PATCH] 使用QualifiedInspection方法更新工单状态
---
Services/WomdaaManager.cs | 99 +++++++++++++++++++++++++++++++++++--------------
1 files changed, 70 insertions(+), 29 deletions(-)
diff --git a/Services/WomdaaManager.cs b/Services/WomdaaManager.cs
index 60ed15c..b2a50e0 100644
--- a/Services/WomdaaManager.cs
+++ b/Services/WomdaaManager.cs
@@ -25,6 +25,13 @@
list = list.Where(p => p.Daa018 != null && query.OrderStatus.Contains(p.Daa018)).ToList();
}
+ // 鎸夊伐鍗旾D鍒嗙粍锛屽彧淇濈暀姣忕粍涓渶鏃╂姤宸ョ殑涓�鏉�
+ list = list
+ .GroupBy(p => p.ID)
+ .Select(g => g.OrderBy(x => x.BgDate).First())
+ .OrderBy(x => x.BgDate)
+ .ToList();
+
return list;
}
@@ -112,10 +119,15 @@
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 = numericalList.First().CjNum ?? 0;
+ vOrderBycl.StartCjNum = sortedList.First().CjNum ?? 0;
// 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
- vOrderBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+ vOrderBycl.CurrentCjNum = sortedList.Last().CjNum ?? 0;
}
else
{
@@ -125,8 +137,9 @@
// 鏌ヨ鎶ュ伐璁板綍锛岃幏鍙栨渶鍚庝竴鏉℃姤宸ヨ褰�
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)
@@ -136,31 +149,15 @@
}
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;
@@ -172,8 +169,8 @@
.Where(c =>
decimals.Contains(c.ID) &&
(c.EditDate == date || c.EditDate == null))
- .OrderBy(c => c.EditDate, OrderByType.Desc)
- //.Take(1)
+ .OrderBy(c => c.BgDate, OrderByType.Desc)
+ .Take(1)
.ToList();
foreach (var order in orders)
@@ -253,16 +250,50 @@
if (numericalList.Count > 0)
{
+ // 鍏堟寜閲囬泦鏃堕棿鍗囧簭鎺掑簭
+ var sortedList = numericalList
+ .OrderBy(x => DateTime.TryParse(x.CjTiem, out var dt) ? dt : DateTime.MinValue)
+ .ToList();
+
// 寮�宸ユ暟閲囷細鏈�鏃╀竴鏉�
- VOrdrerBycl.StartCjNum = numericalList.First().CjNum ?? 0;
+ VOrdrerBycl.StartCjNum = sortedList.First().CjNum ?? 0;
// 褰撳墠鏁伴噰锛氭渶鏂颁竴鏉�
- VOrdrerBycl.CurrentCjNum = numericalList.Last().CjNum ?? 0;
+ VOrdrerBycl.CurrentCjNum = sortedList.Last().CjNum ?? 0;
}
else
{
VOrdrerBycl.StartCjNum = 0;
VOrdrerBycl.CurrentCjNum = 0;
}
+
+ 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)
+ {
+ // 娌℃湁鎶ュ伐璁板綍锛屽垵濮嬮噰闆嗘暟涓哄紑宸ラ噰鏁�
+ 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;
+ }
+
+ // 鎶ュ伐鏃堕噰闆嗘暟灏辨槸涓荤晫闈㈢殑褰撳墠閲囨暟
+ // VOrdrerBycl.CurrentCjNum 宸茶祴鍊硷紝鏃犻渶棰濆澶勭悊
return VOrdrerBycl;
}
@@ -300,6 +331,16 @@
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)
{
--
Gitblit v1.9.3