From 00aaf49a223be04fc58f6f7c09d95ce4b22ef087 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 11 七月 2025 17:06:18 +0800 Subject: [PATCH] 修复盘点计划单、盘点单的状态更改逻辑 --- api/ApiHelper.cs | 100 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 97 insertions(+), 3 deletions(-) diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 10aca34..009a34b 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -1100,7 +1100,91 @@ // 鐩樼偣鍔熻兘锛堟柊锛� + internal static SimpleResult CheckOutboundOnce(CheckOutboundOnceInfo model) { + var taskName = TaskName.鐩樼偣鐞嗚揣鍑哄簱; + var db = new SqlHelper<object>().GetInstance(); + try { + var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == model.cntrCode); + if (locCntrRel == null) { + return BuildSimpleResult(3, $"瀹瑰櫒 {model.cntrCode} 娌℃湁鎵惧埌瀵瑰簲鐨勮揣浣�); + } + + // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == locCntrRel.S_LOC_CODE && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && Settings.Areas[AreaIndex.H璐ф灦鍖篯.Contains(a.S_AREA_CODE)); + if (startLoc == null) { + return BuildSimpleResult(2, $"璧风偣浣嶇疆 {locCntrRel.S_LOC_CODE} 涓嶇鍚堝嚭搴撴潯浠�); + } + + // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+ var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y"); + if (endLoc == null) { + return BuildSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); + } + + var countOrder = db.Queryable<TN_AG_Count_Order>().Where(o => o.S_CNTR_CODE == locCntrRel.S_CNTR_CODE).First(); + if (countOrder == null) { + return BuildSimpleResult(6, $"娌℃湁鎵惧埌瀵瑰簲瀹瑰櫒{model.cntrCode}鐨勭洏鐐瑰崟鍙�"); + } + countOrder.N_B_STATE = 1; + + var unFinishedCount = db.Queryable<TN_AG_Count_Order>().Where(a => a.S_CP_NO == countOrder.S_CP_NO && a.S_COUNT_NO != countOrder.S_COUNT_NO && a.N_B_STATE == 0).Count(); + + var cntID = locCntrRel.S_CNTR_CODE; + var task = WCSHelper.BuildTask(startLoc, endLoc, cntID, taskName); + LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + using (var tran = db.Ado.UseTran()) { + if (unFinishedCount == 0 && db.Updateable<TN_AG_Count_Plan>().SetColumns(a =>a.N_B_STATE == 1).Where(a => a.S_CP_NO == countOrder.S_CP_NO).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鏇存柊鐩樼偣璁″垝鍗曠姸鎬佷负1澶辫触锛佸崟鍙凤細{countOrder.S_CP_NO}"); + } + + if (db.Updateable<TN_AG_Count_Order>(countOrder).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鏇存柊鐩樼偣鍗曠姸鎬佷负1澶辫触锛�+ JsonConvert.SerializeObject(countOrder)); + } + + if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + } + + if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + tran.CommitTran(); + return BuildSimpleResult(0, + $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + } + catch (Exception ex) { + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } // 澶囩敤锛氱洏鐐圭浉鍏冲姛鑳斤紙鎭㈠锛�----------------------------- @@ -1401,16 +1485,26 @@ return BuildSimpleResult(4, $"褰撳墠鐗╂枡鎵�湪瀹瑰櫒{locCntrRel.S_CNTR_CODE}鐗╂枡淇℃伅娌℃湁鐢熸垚瀵瑰簲鐨勭洏鐐瑰樊寮傝〃锛�); } + countDiff.F_QTY = cgDetail.F_QTY; countDiff.F_ACTUAL_QTY = model.qty; //countDiff.S_ITEM_CODE = cgDetail.S_ITEM_CODE; - + cgDetail.F_QTY = model.qty; //if (db.Insertable<TN_Count_Diff>(countDiff).ExecuteCommand() <= 0) { // return BuildSimpleResult(3, $"鎻掑叆鐩樼偣宸紓琛ㄥけ璐�); //} + using (var tran = db.Ado.UseTran()) { + if (db.Updateable<TN_AG_Count_Diff>(countDiff).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(5, $"鎻掑叆鐩樼偣宸紓琛ㄥけ璐�); + } - if (db.Updateable<TN_AG_Count_Diff>(countDiff).ExecuteCommand() <= 0) { - return BuildSimpleResult(5, $"鎻掑叆鐩樼偣宸紓琛ㄥけ璐�); + if (db.Updateable<TN_CG_Detail>(cgDetail).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(5, $"鏇存柊鐗╂枡淇℃伅澶辫触"); + } + + tran.CommitTran(); } return BuildSimpleResult(0, "鐩樼偣宸紓瀹屾垚"); -- Gitblit v1.9.1