From 5e01ac69c7fa9a55e691c455986ad20c4f447299 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期三, 22 十月 2025 15:45:27 +0800
Subject: [PATCH] 逻辑优化
---
Services/MesOrderStaManager.cs | 62 +++++++++++++++++++-----------
1 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/Services/MesOrderStaManager.cs b/Services/MesOrderStaManager.cs
index b00dd35..8f5f712 100644
--- a/Services/MesOrderStaManager.cs
+++ b/Services/MesOrderStaManager.cs
@@ -93,8 +93,8 @@
/// <summary>
/// 鏇存柊鏈哄櫒鏃堕棿骞跺鐞嗛妫�
/// 鍙樻洿璇存槑锛�
- /// 1) 鏈�鏂伴妫�缁撴灉涓衡�滀笉鍚堟牸鈥濇椂锛氬彧娓呯┖ MA_SHOUT_TIME锛堥�佹鍛煎彨鏃堕棿锛夛紝涓嶉噸寤洪妫�鍗�
- /// 2) 鑻ヤ笉瀛樺湪棣栨鍗曟椂锛氬厑璁稿垱寤猴紙閲嶅缓锛夐妫�鍗�
+ /// 1) 鏈�鏂伴妫�缁撴灉涓衡�滀笉鍚堟牸鈥濇椂锛氭竻绌� MA_SHOUT_TIME锛堥�佹鍛煎彨鏃堕棿锛�
+ /// 2) 鑻ヤ笉瀛樺湪棣栨鍗曟椂鎴栬�呴妫�鍗曠粨鏋滀负鈥滀笉鍚堟牸鈥濇椂锛氬垱寤洪妫�鍗�
/// 3) 棣栨鍚堟牸涓旈�佹鏃堕棿 >= 璋冩満寮�濮嬫椂闂存椂锛氬啓鍏ヨ皟鏈哄畬鎴愭椂闂翠笌寮�宸ユ椂闂�
/// </summary>
public bool ChangeMachineTime(MesOrderSta entity)
@@ -107,30 +107,40 @@
.Where(s => s.Id == entity.OrderId).First();
if (womdaa == null) throw new Exception("宸ュ崟涓嶅瓨鍦�");
- MesQaItemsDetect02 latestFirst = null;
- var clearMaShout = false;
+ // 璇诲彇褰撳墠鐘舵�佽
+ var currentSta = Db.Queryable<MesOrderSta>()
+ .Where(s => s.Id == entity.Id).First();
- // 鍘熸潵闄愬埗 entity.Flag == 1锛岃繖閲屽彇娑堥檺鍒讹細浠讳綍淇濆瓨鍔ㄤ綔閮借瘎浼伴妫�缁撴灉
- // 琛岀骇閿侀槻骞跺彂
+ // 琛岀骇閿侊細涓茶鍖栭妫�閲嶅缓
Db.Ado.ExecuteCommand("SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
new SugarParameter("BILL_NO", womdaa.Daa001));
- // 褰撳墠鏈�鏂伴妫�
- latestFirst = Db.Queryable<MesQaItemsDetect02>()
+ // 鏈�鏂伴妫�
+ var latestFirst = Db.Queryable<MesQaItemsDetect02>()
.Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == FirstCheckType && (s.Fcancel == null || s.Fcancel != "Y"))
.OrderBy(s => s.CreateDate, OrderByType.Desc)
.First();
- // 缁撴灉褰掍竴锛堥槻姝㈠熬閮ㄧ┖鏍兼垨澶у皬鍐欙級锛氬彲鑳芥潵婧愪簬鎺ュ彛/鐢ㄦ埛褰曞叆
var latestResult = latestFirst?.FcheckResu?.Trim();
+ var needRebuild = latestFirst == null || string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase);
+ var clearMaShout = false;
- // 浠呭湪涓嶅瓨鍦ㄩ妫�鍗曟椂鍒涘缓
- if (latestFirst == null)
+ if (needRebuild)
{
+ // 鑻ュ凡鏈夐妫�涓旂粨鏋滀笉鍚堟牸 => 鍏堟竻绌洪�佹鏃堕棿
+ if (latestFirst != null && string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase))
+ {
+ clearMaShout = true;
+ entity.MaShoutTime = null;
+ entity.remark = $"鏈�鏂伴妫�缁撴灉鈥渰FirstCheckResultNG}鈥濓紝宸叉竻绌洪�佹鏃堕棿骞堕噸寤洪妫�鍗�";
+ }
+
+ // 璋冪敤瀛樺偍杩囩▼閲嶅缓 / 棣栨鍒涘缓
Db.Ado.ExecuteCommand(
"BEGIN AUTOMATIC_IPQC_FIRST_CHECK(:BILL_NO); END;",
new SugarParameter("BILL_NO", womdaa.Daa001, System.Data.DbType.String));
+ // 閲嶅彇鏈�鏂伴妫�
latestFirst = Db.Queryable<MesQaItemsDetect02>()
.Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == FirstCheckType && (s.Fcancel == null || s.Fcancel != "Y"))
.OrderBy(s => s.CreateDate, OrderByType.Desc)
@@ -139,33 +149,38 @@
if (latestFirst != null)
{
var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ var remarkTag = latestResult == null ? "棣栨鍒涘缓" : (latestResult == FirstCheckResultNG ? "涓嶅悎鏍奸噸寤�" : "閲嶅缓");
Db.Updateable<MesQaItemsDetect02>()
- .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}鑷姩鍒涘缓鐨勯妫�鍗�(棣栨鍒涘缓)")
+ .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}鑷姩鍒涘缓鐨勯妫�鍗�({remarkTag})")
.Where(s => s.Id == latestFirst.Id)
.ExecuteCommand();
}
}
else
{
- // 鏈�鏂扮粨鏋滀负鈥滀笉鍚堟牸鈥� => 娓呯┖閫佹鏃堕棿锛屼笉閲嶅缓
- if (string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase))
+ // 涓嶉渶瑕侀噸寤猴細濡傛灉鍓嶇涓诲姩娓呯┖(浼犵┖涓斿師鍊兼湁鍐呭)涔熷厑璁告竻绌�
+ var requestWantClear = string.IsNullOrEmpty(entity.MaShoutTime) && !string.IsNullOrEmpty(currentSta?.MaShoutTime);
+ if (requestWantClear)
{
clearMaShout = true;
entity.MaShoutTime = null;
- entity.remark = $"鏈�鏂伴妫�缁撴灉鈥渰FirstCheckResultNG}鈥濓紝宸叉竻绌洪�佹鏃堕棿锛屽緟鍐嶆閫佹";
+ entity.remark = "鍓嶇璇锋眰鎵嬪姩娓呯┖閫佹鏃堕棿";
}
else
{
- // 鍏跺畠缁撴灉鏇存柊澶囨敞
- var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- Db.Updateable<MesQaItemsDetect02>()
- .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}棣栨缁撴灉锛歿latestResult}")
- .Where(s => s.Id == latestFirst.Id)
- .ExecuteCommand();
+ // 姝e父澶囨敞锛堜繚鎸佹渶鏂扮粨鏋滆鏄庯級
+ if (latestFirst != null)
+ {
+ var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ Db.Updateable<MesQaItemsDetect02>()
+ .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}棣栨缁撴灉锛歿latestFirst.FcheckResu}")
+ .Where(s => s.Id == latestFirst.Id)
+ .ExecuteCommand();
+ }
}
}
- // 鍚庣画閫昏緫淇濇寔
+ // 鍚庣画鎶ュ伐閿氱偣閫昏緫淇濇寔
var mesReporting = Db.Queryable<MesReporting>()
.Where(s => s.BillNo == womdaa.Daa001)
.OrderByDescending(s => s.Id)
@@ -215,7 +230,7 @@
};
Db.Insertable<MesAnchors>(eAnchors).ExecuteCommand();
- // 鑻ラ�佹鏃堕棿瀛樺湪涓旀渶鏂伴妫�鍚堟牸 => 鍐欒皟鏈哄畬鎴愪笌寮�宸ユ椂闂�
+ // 鍚堟牸 & 璋冩満閫昏緫
if (!clearMaShout && !string.IsNullOrEmpty(entity.MaShoutTime))
{
if (DateTime.TryParse(entity.MaShoutTime, out var sjTime) &&
@@ -242,6 +257,7 @@
}
}
+ // 鏈�缁堟洿鏂帮紙浼樺厛娓呯┖锛�
var upd = Db.Updateable<MesOrderSta>()
.SetColumnsIF(clearMaShout, s => s.MaShoutTime == null)
.SetColumnsIF(!clearMaShout && entity.MaShoutTime != null, s => s.MaShoutTime == entity.MaShoutTime)
--
Gitblit v1.9.3