From 8000b3a16fbea87ba4fcbc70a4540723849bf5a8 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 21 十一月 2025 14:14:26 +0800
Subject: [PATCH] 开工数采逻辑优化
---
Services/MesOrderStaManager.cs | 154 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 127 insertions(+), 27 deletions(-)
diff --git a/Services/MesOrderStaManager.cs b/Services/MesOrderStaManager.cs
index a5c8f89..f00f12b 100644
--- a/Services/MesOrderStaManager.cs
+++ b/Services/MesOrderStaManager.cs
@@ -130,6 +130,31 @@
"BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
}
+
+ // 鍐嶆鏌ヨ鏂扮敓鎴愮殑棣栨鍗�
+ var newLatest = Db.Queryable<MesQaItemsDetect02>()
+ .Where(s => s.Aufnr == womdaa.Daa001
+ && s.Ftype == "棣栨"
+ && (s.Fcancel == null || s.Fcancel != "Y"))
+ .OrderBy(s => s.CreateDate, OrderByType.Desc)
+ .First();
+
+ // 瀛樺偍杩囩▼鏈敓鎴� 鈫� 鍏滃簳 C# 鑷姩鐢熸垚
+ if (newLatest == null)
+ {
+ Console.WriteLine("[閫佹] 瀛樺偍杩囩▼鏈敓鎴愶紝鎵ц C# 鍏滃簳閫昏緫");
+ var fallback = mesQaItemsDetect02Manager.AutomaticIpqcFirstCheck(womdaa.Daa001);
+ if (fallback)
+ {
+ newLatest = Db.Queryable<MesQaItemsDetect02>()
+ .Where(s => s.Aufnr == womdaa.Daa001
+ && s.Ftype == "棣栨"
+ && (s.Fcancel == null || s.Fcancel != "Y"))
+ .OrderBy(s => s.CreateDate, OrderByType.Desc)
+ .First();
+ }
+ }
+
}
// 缁熶竴鏇存柊鏈�鏂伴妫�澶囨敞
@@ -150,7 +175,12 @@
// ================== 涓嶅悎鏍煎悗閲嶆柊閫佹锛團lag == 2锛�==================
else if (entity.Flag == 2)
{
- // 浠呭綋鏈�鏂版湁鏁堥妫�涓衡�滀笉鍚堟牸鈥濇椂鎵嶅厑璁搁噸鏂扮敓鎴�
+ // 1.鍔犻攣闃插苟鍙戯紙琛岀骇閿侊級
+ Db.Ado.ExecuteCommand(
+ "SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
+ new SugarParameter("BILL_NO", womdaa.Daa001));
+
+ // 2. 褰撳墠鏈�鏂版湭浣滃簾棣栨鍗�
var latestFirst = Db.Queryable<MesQaItemsDetect02>()
.Where(s => s.Aufnr == womdaa.Daa001
&& s.Ftype == "棣栨"
@@ -158,44 +188,114 @@
.OrderBy(s => s.CreateDate, OrderByType.Desc)
.First();
- if (latestFirst != null && latestFirst.FcheckResu == "涓嶅悎鏍�")
+ bool needReCreate = false;
+ /*
+ 3. 鍒ゆ柇鏄惁闇�瑕侀噸鏂扮敓鎴愰妫�鍗�
+鈥� 濡傛灉鏈�鏂伴妫�鍗曞瓨鍦ㄤ笖缁撴灉涓衡�滀笉鍚堟牸鈥濇垨鈥淣G鈥濓紝鍒欓渶瑕侀噸寤洪妫�鍗曘��
+鈥� 濡傛灉娌℃湁娲诲姩棣栨鍗曪紝浣嗗瓨鍦ㄥ凡浣滃簾鐨勪笉鍚堟牸棣栨璁板綍锛屼篃鍏佽閲嶅缓銆�
+ */
+ if (latestFirst != null)
{
- // 琛岀骇閿� + 浜屾纭闃插苟鍙戦噸澶嶇敓鎴�
- Db.Ado.ExecuteCommand("SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
- new SugarParameter("BILL_NO", womdaa.Daa001));
+ var resu = latestFirst.FcheckResu?.Trim();
+ if (!string.IsNullOrEmpty(resu) &&
+ (resu == "涓嶅悎鏍�" || resu.Equals("NG", StringComparison.OrdinalIgnoreCase)))
+ {
+ needReCreate = true;
+ }
+ }
+ else
+ {
+ // 4. 娌℃湁娲诲姩棣栨鍗曪紝鍒ゆ柇鏄惁瀛樺湪宸蹭綔搴熺殑涓嶅悎鏍奸妫�璁板綍
+ var existsCanceledNg = Db.Queryable<MesQaItemsDetect02>()
+ .Where(s => s.Aufnr == womdaa.Daa001
+ && s.Ftype == "棣栨"
+ && s.Fcancel == "Y"
+ && (s.FcheckResu == "涓嶅悎鏍�" || s.FcheckResu == "NG"))
+ .Any();
+ if (existsCanceledNg)
+ {
+ needReCreate = true;
+ Console.WriteLine("[閲嶉�佹] 鏃犳椿鍔ㄩ妫�鍗曚絾瀛樺湪浣滃簾鐨勪笉鍚堟牸璁板綍锛屽厑璁搁噸寤�");
+ }
+ }
- latestFirst = Db.Queryable<MesQaItemsDetect02>()
+ if (needReCreate)
+ {
+ // 浣滃簾褰撳墠娲诲姩涓嶅悎鏍煎崟
+ if (latestFirst != null)
+ {
+ Db.Updateable<MesQaItemsDetect02>()
+ .SetColumns(s => s.Fcancel == "Y")
+ .Where(s => s.Id == latestFirst.Id
+ && (s.Fcancel == null || s.Fcancel != "Y"))
+ .ExecuteCommand();
+ }
+
+ bool procOk = true;
+ string procErr = "";
+ try
+ {
+ // 5. 璋冪敤瀛樺偍杩囩▼鐢熸垚鏂伴妫�鍗�
+ Db.Ado.ExecuteCommand(
+ "BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
+ new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
+ }
+ catch (Exception ex)
+ {
+ procOk = false;
+ procErr = ex.Message;
+ Console.WriteLine($"[閲嶉�佹] 瀛樺偍杩囩▼寮傚父: {procErr}");
+ }
+
+ // 鍐嶆鏌ヨ鏂扮敓鎴愮殑棣栨鍗�
+ var newLatest = Db.Queryable<MesQaItemsDetect02>()
.Where(s => s.Aufnr == womdaa.Daa001
&& s.Ftype == "棣栨"
&& (s.Fcancel == null || s.Fcancel != "Y"))
.OrderBy(s => s.CreateDate, OrderByType.Desc)
.First();
- if (latestFirst != null && latestFirst.FcheckResu == "涓嶅悎鏍�")
+ // 瀛樺偍杩囩▼鏈敓鎴� 鈫� 鍏滃簳 C# 鑷姩鐢熸垚
+ if (newLatest == null)
{
- // 鐢熸垚鏂扮殑棣栨鍗曪紙閲嶆柊閫佹锛�
- Db.Ado.ExecuteCommand(
- "BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
- new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
-
- // 鏇存柊鏂扮敓鎴愰妫�鍗曞娉�
- var newLatest = Db.Queryable<MesQaItemsDetect02>()
- .Where(s => s.Aufnr == womdaa.Daa001
- && s.Ftype == "棣栨"
- && (s.Fcancel == null || s.Fcancel != "Y"))
- .OrderBy(s => s.CreateDate, OrderByType.Desc)
- .First();
-
- if (newLatest != null)
+ Console.WriteLine("[閲嶉�佹] 瀛樺偍杩囩▼鏈敓鎴愶紝鎵ц C# 鍏滃簳閫昏緫");
+ var fallback = mesQaItemsDetect02Manager.AutomaticIpqcFirstCheck(womdaa.Daa001);
+ if (fallback)
{
- var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- var remark = $"宸ユ帶鏈轰簬{ts}涓嶅悎鏍奸噸鏂伴�佹鐢熸垚鐨勯妫�鍗�";
- Db.Updateable<MesQaItemsDetect02>()
- .SetColumns(s => s.Remeke == remark)
- .Where(s => s.Id == newLatest.Id)
- .ExecuteCommand();
+ newLatest = Db.Queryable<MesQaItemsDetect02>()
+ .Where(s => s.Aufnr == womdaa.Daa001
+ && s.Ftype == "棣栨"
+ && (s.Fcancel == null || s.Fcancel != "Y"))
+ .OrderBy(s => s.CreateDate, OrderByType.Desc)
+ .First();
}
}
+
+ //6. 鏂伴妫�鍗曠敓鎴愬悗锛屽啓鍏ュ娉�
+
+ var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ //鍙湁寮�宸ョ姸鎬佷笅鍙互鏆傚仠宸ュ崟
+ //褰撻妫�缁撴灉涓衡�樺悎鏍尖�欍�佲�樹笉鍚堟牸鈥欐椂锛屾洿鏂板娉�
+ if (newLatest != null && newLatest.FcheckResu == "鍚堟牸")
+ {
+ var remark = $"宸ユ帶鏈轰簬{ts}鍙栨秷鏆傚仠閲嶆柊閫佹鐢熸垚鐨勯妫�鍗�";
+ Db.Updateable<MesQaItemsDetect02>()
+ .SetColumns(s => s.Remeke == remark)
+ .Where(s => s.Id == newLatest.Id)
+ .ExecuteCommand();
+ }
+ else if (newLatest != null && newLatest.FcheckResu == "涓嶅悎鏍�")
+ {
+ var remark = $"宸ユ帶鏈轰簬{ts}涓嶅悎鏍奸噸鏂伴�佹鐢熸垚鐨勯妫�鍗�";
+ Db.Updateable<MesQaItemsDetect02>()
+ .SetColumns(s => s.Remeke == remark)
+ .Where(s => s.Id == newLatest.Id)
+ .ExecuteCommand();
+ }
+ else
+ {
+ Console.WriteLine("[閲嶉�佹] 浠嶆湭鐢熸垚鏂伴妫�鍗曪紝璇锋鏌ュ瓨鍌ㄨ繃绋嬭鏁版槸鍚︽帓闄や綔搴熷崟銆�");
+ }
}
}
--
Gitblit v1.9.3