From 79c96c1075bfa4fc3d631c0bf6cd1132ad515c93 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期三, 22 十月 2025 16:19:03 +0800
Subject: [PATCH] 调试
---
Services/MesOrderStaManager.cs | 192 ++++++++++++++++++++---------------------------
1 files changed, 82 insertions(+), 110 deletions(-)
diff --git a/Services/MesOrderStaManager.cs b/Services/MesOrderStaManager.cs
index 32de8b2..8a4e5bc 100644
--- a/Services/MesOrderStaManager.cs
+++ b/Services/MesOrderStaManager.cs
@@ -91,14 +91,13 @@
}
/// <summary>
- /// 鏇存柊鏈哄櫒鏃堕棿骞跺鐞嗛妫�
- /// 閫昏緫璇存槑锛�
- /// 1) 棣栨缁撴灉鈥滀笉鍚堟牸鈥濅笉绔嬪嵆閲嶅缓锛岀瓑寰呯敤鎴峰啀娆$偣鍑婚�佹鍛煎彨锛堥�佹鏃堕棿鍙樺寲锛夎Е鍙戦噸寤�
- /// 2) 棣栨鏃犻妫�鍗曟垨鈥滀笉鍚堟牸鈥濅笖閫佹鏃堕棿鍙樺寲 => 璋冪敤瀛樺偍杩囩▼閲嶅缓棣栨鍗�
- /// 3) 閲嶅缓鍚庝繚鐣欏綋鍓嶉�佹鏃堕棿锛屼笉娓呯┖
- /// 4) 涓嶅悎鏍间絾閫佹鏃堕棿鏈彉鍖� => 鎻愮ず鐢ㄦ埛闇�瑕侀噸鏂伴�佹
- /// 5) 鍚堟牸涓旈�佹鏃堕棿 >= 璋冩満寮�濮嬫椂闂� => 鍐欏叆寮�宸ヤ笌璋冩満瀹屾垚鏃堕棿
- /// 鍙�夋墿灞曪細鏀寔 ForceRebuild 寮哄埗閲嶅缓锛堝鏋滃墠绔姞瀛楁锛�
+ /// 璋冩満閫佹閫昏緫閲嶅啓鐗�
+ /// 娴佺▼锛�
+ /// 1. 璋冩満寮�濮嬶細鍙啓鍏ヨ皟鏈哄紑濮嬫椂闂�(MA_START_TIME)
+ /// 2. 閫佹鍛煎彨锛氬啓鍏ヨ皟鏈哄紑濮嬫椂闂�(鑻ユ湭鍐�)涓庨�佹鏃堕棿(MA_SHOUT_TIME)锛屽苟鍒涘缓棣栨鍗�
+ /// 3. 璋冩満瀹屾垚锛氫繚鎸佸師閫昏緫锛岄妫�鍚堟牸鍚庡啓鍏ュ紑宸�(START_TIME)涓庤皟鏈哄畬鎴�(MA_END_TIME)
+ /// 4. 鑻ユ渶鏂伴妫�缁撴灉涓衡�滀笉鍚堟牸鈥濓紝娓呯┖閫佹鏃堕棿(MA_SHOUT_TIME)锛屾彁绀洪噸鏂伴�佹锛屼笉绔嬪嵆閲嶅缓
+ /// 鐢ㄦ埛鍐嶆鐐瑰嚮閫佹鍛煎彨鎵嶅垱寤烘柊鐨勯妫�鍗�
/// </summary>
public bool ChangeMachineTime(MesOrderSta entity)
{
@@ -106,53 +105,76 @@
const string FirstCheckResultOK = "鍚堟牸";
const string FirstCheckResultNG = "涓嶅悎鏍�";
+ if (entity == null || entity.Id <= 0) throw new ArgumentException("鍙傛暟閿欒");
var womdaa = Db.Queryable<Womdaa>().Where(s => s.Id == entity.OrderId).First();
if (womdaa == null) throw new Exception("宸ュ崟涓嶅瓨鍦�");
+ // 褰撳墠鏁版嵁搴撶姸鎬佸揩鐓�
var dbSta = Db.Queryable<MesOrderSta>().Where(s => s.Id == entity.Id).First();
+ if (dbSta == null) throw new Exception("宸ュ崟鐘舵�佷笉瀛樺湪");
- // 琛岀骇閿�
+ // 琛岀骇閿侊紝淇濊瘉鍒涘缓棣栨鍗曠殑骞跺彂瀹夊叏
Db.Ado.ExecuteCommand("SELECT ID FROM WOMDAA WHERE DAA001 = :BILL_NO FOR UPDATE",
new SugarParameter("BILL_NO", womdaa.Daa001));
- // 鏈�鏂伴妫�
+ // 鏈�鏂伴妫�鍗曪紙鏈綔搴燂級
var latestFirst = Db.Queryable<MesQaItemsDetect02>()
- .Where(s => s.Aufnr == womdaa.Daa001 && s.Ftype == FirstCheckType && (s.Fcancel == null || s.Fcancel != "Y"))
+ .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();
- // ForceRebuild 鍙�夋墿灞�
- var forceRebuild = (entity as dynamic)?.ForceRebuild == true;
+ // 鍒ゅ畾鎿嶄綔绫诲瀷
+ var hasStartTimeInput = !string.IsNullOrWhiteSpace(entity.MaStartTime);
+ var hasShoutTimeInput = !string.IsNullOrWhiteSpace(entity.MaShoutTime);
+ // 浠呭紑濮嬶細鏈夊紑濮嬫椂闂达紝閫佹鏃堕棿涓虹┖
+ var isStartOnly = hasStartTimeInput && !hasShoutTimeInput && dbSta.MaStartTime != entity.MaStartTime;
+ // 閫佹鍛煎彨锛氭湁閫佹鏃堕棿锛堝彲鑳藉悓鏃剁涓�娆″啓鍏ュ紑濮嬫椂闂达級
+ var isShoutCall = hasShoutTimeInput && dbSta.MaShoutTime != entity.MaShoutTime;
+ // 瀹屾垚閫昏緫淇濇寔锛氬悗闈㈤�氳繃棣栨鍚堟牸鏉′欢鍒ゆ柇
- // 绔嬪嵆閲嶅缓鏉′欢锛氶娆℃棤鍗� 鎴� 鏈�鏂扮粨鏋� == 涓嶅悎鏍� 鎴� 寮哄埗
- var needRebuild = latestFirst == null
- || string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase)
- || forceRebuild;
-
- if (needRebuild)
+ // 4) 鑻ユ渶鏂板垽瀹氱粨鏋溾�滀笉鍚堟牸鈥濓紝娓呯┖閫佹鏃堕棿锛屾彁绀洪渶閲嶆柊鍛煎彨锛屼笉鍒涘缓鏂板崟
+ if (string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase))
{
- var previousState = latestResult == null ? "棣栨鍒涘缓"
- : (latestResult == FirstCheckResultNG ? "涓嶅悎鏍煎悗绔嬪嵆閲嶅缓" : "閲嶅缓");
+ // 娓呯┖閫佹鏃堕棿锛堟暟鎹簱涓庤繑鍥炲疄浣擄級
+ entity.MaShoutTime = null;
+ entity.remark = "棣栨涓嶅悎鏍硷紝閫佹鏃堕棿宸叉竻绌猴紝璇烽噸鏂伴�佹鍛煎彨鐢熸垚鏂扮殑棣栨鍗�";
+ return Db.Updateable<MesOrderSta>()
+ .SetColumns(s => s.MaShoutTime == null)
+ .SetColumnsIF(hasStartTimeInput && dbSta.MaStartTime != entity.MaStartTime,
+ s => s.MaStartTime == entity.MaStartTime) // 鍏佽鍚屾椂鍐欏叆鏂扮殑寮�濮嬫椂闂达紙濡傛灉鍒氫慨鏀癸級
+ .SetColumnsIF(entity.remark != null, s => s.remark == entity.remark)
+ .Where(s => s.Id == entity.Id)
+ .ExecuteCommand() > 0;
+ }
- // 鍙�夛細淇濈暀鏃ц褰曪紝鎴栨爣璁版棫璁板綍浣滃簾锛堝鏋滈渶瑕侀伩鍏嶅鏉″緟妫�锛�
- // 鑻ヨ浣滃簾涓婁竴鏉′笉鍚堟牸鍗曪細鍙栨秷鍗冲彲
- if (latestFirst != null && string.Equals(latestResult, FirstCheckResultNG, StringComparison.OrdinalIgnoreCase))
- {
- Db.Updateable<MesQaItemsDetect02>()
- .SetColumns(s => s.Fcancel == "Y")
- .Where(s => s.Id == latestFirst.Id)
- .ExecuteCommand();
- }
+ // 1) 璋冩満寮�濮嬶細鍙啓寮�濮嬫椂闂�
+ if (isStartOnly)
+ {
+ return Db.Updateable<MesOrderSta>()
+ .SetColumns(s => s.MaStartTime == entity.MaStartTime)
+ .Where(s => s.Id == entity.Id)
+ .ExecuteCommand() > 0;
+ }
- // 璋冪敤瀛樺偍杩囩▼鍒涘缓鏂伴妫�鍗�
+ // 2) 閫佹鍛煎彨锛氬啓鍏ュ紑濮嬫椂闂�(鑻ユ湭鍐�) + 閫佹鏃堕棿锛屽苟鍒涘缓棣栨鍗�
+ if (isShoutCall)
+ {
+ // 鑻ユ暟鎹簱灏氭棤寮�濮嬫椂闂达紝琛ュ啓
+ var needWriteStart = string.IsNullOrWhiteSpace(dbSta.MaStartTime) && hasStartTimeInput;
+
+ // 鍒涘缓棣栨鍗曪紙濮嬬粓鎸夐�佹鍛煎彨鐢熸垚涓�寮犳柊鐨勶紝濡傛灉闇�瑕佷綔搴熸棫鍗曞彲鍔犲彇娑堥�昏緫锛�
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"))
+ .Where(s => s.Aufnr == womdaa.Daa001
+ && s.Ftype == FirstCheckType
+ && (s.Fcancel == null || s.Fcancel != "Y"))
.OrderBy(s => s.CreateDate, OrderByType.Desc)
.First();
@@ -160,101 +182,51 @@
{
var ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Db.Updateable<MesQaItemsDetect02>()
- .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}鑷姩鍒涘缓鐨勯妫�鍗�({previousState})")
- .Where(s => s.Id == latestFirst.Id)
- .ExecuteCommand();
+ .SetColumns(s => s.Remeke == $"宸ユ帶鏈轰簬{ts}璋冩満閫佹鐢熸垚棣栨鍗�")
+ .Where(s => s.Id == latestFirst.Id)
+ .ExecuteCommand();
}
- if (previousState.Contains("涓嶅悎鏍�"))
- entity.remark = "涓嶅悎鏍煎凡閲嶅缓锛岀瓑寰呮楠�";
- }
- else
- {
- // 涓嶉渶瑕侀噸寤烘椂浠呭啓缁撴灉澶囨敞锛堣嫢宸叉湁棣栨锛�
- if (latestFirst != null && !string.IsNullOrEmpty(latestResult))
- {
- 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();
- }
+ entity.remark = "宸茬敓鎴愰妫�鍗曪紝绛夊緟妫�楠�";
+ var updateCount = Db.Updateable<MesOrderSta>()
+ .SetColumns(s => s.MaShoutTime == entity.MaShoutTime)
+ .SetColumnsIF(needWriteStart, s => s.MaStartTime == entity.MaStartTime)
+ .SetColumns(s => s.remark == entity.remark)
+ .Where(s => s.Id == entity.Id)
+ .ExecuteCommand();
+
+ return updateCount > 0;
}
- // 鎶ュ伐閿氱偣閫昏緫淇濇寔
- var mesReporting = Db.Queryable<MesReporting>()
- .Where(s => s.BillNo == womdaa.Daa001)
- .OrderByDescending(s => s.Id)
- .First();
-
- var editDate = DateTime.Now.ToString("yyyy-MM-dd");
- MesNumericalBycl mesNumerical = null;
- try
- {
- using var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
- var content = new StringContent(
- JsonConvert.SerializeObject(new { machineNo = entity.MachineNo }),
- Encoding.UTF8, "application/json");
- var response = httpClient.PostAsync("http://192.168.0.94:9095/Numerical/RefreshDevBycl", content)
- .GetAwaiter().GetResult();
- if (response.IsSuccessStatusCode)
- {
- var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
- var responseObj = JsonConvert.DeserializeObject<dynamic>(responseString);
- if (responseObj != null && responseObj.code == 200)
- {
- mesNumerical = Db.Queryable<MesNumericalBycl>()
- .Where(s => s.EditDate == editDate && s.MachineNo == entity.MachineNo)
- .OrderByDescending(s => s.Id)
- .First();
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine($"鍙戦�佹暟鎹埛鏂拌姹傛椂鍑洪敊: {ex.Message}");
- }
-
- Db.Deleteable<MesAnchors>()
- .Where(a => a.EditDate == editDate && a.OrderId == womdaa.Id)
- .ExecuteCommand();
-
- var eAnchors = new MesAnchors
- {
- OrderId = womdaa.Id,
- OrderNo = womdaa.Daa001,
- EditDate = editDate,
- Qty = mesReporting == null ? 0 : (long?)(mesReporting.DyQty ?? 0),
- InitialValue = mesNumerical == null ? 0 : mesNumerical.CjNum
- };
- Db.Insertable<MesAnchors>(eAnchors).ExecuteCommand();
-
- // 鍚堟牸鍐欏紑宸�/璋冩満瀹屾垚
+ // 3) 淇濈暀璋冩満瀹屾垚閫昏緫锛氶妫�鍚堟牸涓旈�佹鏃堕棿 >= 璋冩満寮�濮嬫椂闂存椂鑷姩鍐欏紑宸ヤ笌璋冩満瀹屾垚
+ // 锛堟澶勪笌鍘熼�昏緫涓�鑷达細鍓嶇涓嶇洿鎺ョ偣鈥滆皟鏈哄畬鎴愨�濓紝鑰屾槸鐢卞悎鏍艰Е鍙戯級
if (!string.IsNullOrEmpty(entity.MaShoutTime)
- && DateTime.TryParse(entity.MaShoutTime, out var sjTime)
- && DateTime.TryParse(entity.MaStartTime, out var startTime)
- && sjTime >= startTime
+ && DateTime.TryParse(entity.MaShoutTime, out var shoutTime)
+ && DateTime.TryParse(dbSta.MaStartTime ?? entity.MaStartTime, out var startTime)
+ && shoutTime >= startTime
&& latestFirst != null
&& string.Equals(latestFirst.FcheckResu?.Trim(), FirstCheckResultOK, StringComparison.OrdinalIgnoreCase))
{
+ // 鍐欏紑宸ュ強璋冩満瀹屾垚
QualifiedInspection(new OrderMachineDto
{
OrderId = entity.OrderId,
orderNo = entity.OrderNo,
machineNo = entity.MachineNo
});
+
entity.StartTime = entity.MaShoutTime;
entity.MaEndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+ return Db.Updateable<MesOrderSta>()
+ .SetColumnsIF(entity.MaEndTime != null, s => s.MaEndTime == entity.MaEndTime)
+ .SetColumnsIF(entity.StartTime != null, s => s.StartTime == entity.StartTime)
+ .Where(s => s.Id == entity.Id)
+ .ExecuteCommand() > 0;
}
- return Db.Updateable<MesOrderSta>()
- .SetColumnsIF(entity.MaShoutTime != null, s => s.MaShoutTime == entity.MaShoutTime)
- .SetColumnsIF(entity.MaStartTime != null, s => s.MaStartTime == entity.MaStartTime)
- .SetColumnsIF(entity.MaEndTime != null, s => s.MaEndTime == entity.MaEndTime)
- .SetColumnsIF(entity.StartTime != null, s => s.StartTime == entity.StartTime)
- .SetColumnsIF(entity.Flag == 1 && entity.remark != null, s => s.remark == entity.remark)
- .Where(s => s.Id == entity.Id)
- .ExecuteCommand() > 0;
+ // 鑻ユ湰娆¤皟鐢ㄦ湭鍖归厤浠讳綍鎿嶄綔锛堝彲鑳藉彧鏄噸澶嶆彁浜わ級锛屼繚鎸佷笉鍙�
+ return true;
}
--
Gitblit v1.9.3