From f9d7694d27475954449ce3073938af98a4798b07 Mon Sep 17 00:00:00 2001 From: 杨张扬 <634643841@qq.com> Date: 星期五, 18 七月 2025 17:37:24 +0800 Subject: [PATCH] 修复去线边的任务,完成后自动解绑失败的问题 --- wms/SpecHelper.cs | 257 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 209 insertions(+), 48 deletions(-) diff --git a/wms/SpecHelper.cs b/wms/SpecHelper.cs index 12c9718..5ae0d67 100644 --- a/wms/SpecHelper.cs +++ b/wms/SpecHelper.cs @@ -77,7 +77,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { - model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec)); + model.EXPIRATION = System.DateTime.Now.AddHours(GetExportTime(model.SPEC)); if (db.Insertable<TN_EquipProDetail>(model).ExecuteCommand() > 0) { @@ -87,27 +87,6 @@ { LogHelper.Info($"鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触锛寋log}"); } - } - } - catch (Exception ex) - { - LogHelper.Error("鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触", ex); - } - } - - /// <summary> - /// 鏇存柊璁惧鐢熶骇鏄庣粏鐨勮繃鏈熸椂闂�- /// </summary> - public static void UpdateEquipProDetail(string cg_SID) - { - try - { - var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_EquipProDetail>().First(a => a.S_ID == cg_SID); - if (target != null) - { - target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec)); - db.Updateable<TN_EquipProDetail>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand(); } } catch (Exception ex) @@ -129,8 +108,8 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { - model.OutAreaTime = System.DateTime.Now; - model.Type = "婊℃墭鍑哄簱涓婄嚎"; + model.OUTAREATIME = System.DateTime.Now; + model.TYPE = "婊℃墭鍑哄簱涓婄嚎"; if (db.Insertable<TN_Component_Detail>(model).ExecuteCommand() > 0) { @@ -156,11 +135,11 @@ try { var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_Component_Detail>().First(o => o.TaskNo == taskNo); + var target = db.Queryable<TN_Component_Detail>().First(o => o.TASKNO == taskNo); if (target != null) { - target.EndTime = System.DateTime.Now; + target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_Component_Detail>(target).ExecuteCommand() > 0) { @@ -191,7 +170,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { - model.RemeltTime = System.DateTime.Now; + model.REMELTTIME = System.DateTime.Now; if (db.Insertable<TN_RemeltDetail>(model).ExecuteCommand() > 0) { @@ -217,11 +196,11 @@ try { var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_RemeltDetail>().First(o => o.TaskNo == taskNo); + var target = db.Queryable<TN_RemeltDetail>().First(o => o.TASKNO == taskNo); if (target != null) { - target.EndTime = System.DateTime.Now; + target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_RemeltDetail>(target).ExecuteCommand() > 0) { @@ -252,7 +231,7 @@ var log = JsonConvert.SerializeObject(model); if (model != null) { - model.RemeltTime = System.DateTime.Now; + model.REMELTTIME = System.DateTime.Now; if (db.Insertable<TN_SurplusDetail>(model).ExecuteCommand() > 0) { @@ -278,11 +257,11 @@ try { var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo); + var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo); if (target != null) { - target.EndTime = System.DateTime.Now; + target.ENDTIME = System.DateTime.Now; if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0) { @@ -301,6 +280,110 @@ } /// <summary> + /// 閲嶇疆缁堢偣璐т綅锛屽彧閽堝鍘荤嚎杈圭殑璐у搧鍜屽幓鍘熸潗鏂欎骇绾跨殑绌烘墭 + /// </summary> + /// <param name="tN_Task"></param> + internal static void RestEndLoc(TN_Task tN_Task) + { + try + { + if ( + tN_Task.S_END_AREA == Settings.Areas[2] || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎") || + Settings.ProductionLines.Select(a=>a.PointIn).ToList().Contains(tN_Task.S_END_LOC) || + tN_Task.S_TYPE.Contains("绾胯竟绌烘墭涓婄嚎") + ) + { + var db = new SqlHelper<object>().GetInstance(); + + using (var tran = db.Ado.UseTran()) + { + var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == tN_Task.S_END_LOC); + if (endLoc != null) + { + endLoc.N_CURRENT_NUM = 0; + endLoc.N_LOCK_STATE = 0; + endLoc.S_LOCK_STATE = "鏃�; + + if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() > 0) + { + LogHelper.Info($"鏇存柊缁堢偣璐т綅鎴愬姛锛寋JsonConvert.SerializeObject(endLoc)}"); + } + else + { + LogHelper.Info($"鏇存柊缁堢偣璐т綅澶辫触锛寋JsonConvert.SerializeObject(endLoc)}"); + tran.RollbackTran(); + return; + } + + var locCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE); + + if (locCnt != null) + { + + if (db.Deleteable<TN_Loc_Container>(locCnt).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴鎴愬姛锛寋JsonConvert.SerializeObject(locCnt)}"); + } + else + { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒缁戝畾鍏崇郴澶辫触锛寋JsonConvert.SerializeObject(locCnt)}"); + tran.RollbackTran(); + return; + } + + var cgInfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE); + + if (cgInfo != null) + { + if (db.Deleteable<TN_CG_Detail>(cgInfo).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒璐у搧鏄庣粏鎴愬姛锛寋JsonConvert.SerializeObject(cgInfo)}"); + } + else + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒璐у搧鏄庣粏澶辫触锛寋JsonConvert.SerializeObject(cgInfo)}"); + tran.RollbackTran(); + return; + } + } + + var cnt = db.Queryable<TN_Container>().First(it => it.S_CODE == cgInfo.S_CNTR_CODE); + if (cnt != null) + { + if (db.Deleteable<TN_Container>(cnt).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒鎴愬姛锛寋JsonConvert.SerializeObject(cnt)}"); + } + else + { + LogHelper.Info($"鍒犻櫎瀹瑰櫒澶辫触锛寋JsonConvert.SerializeObject(cnt)}"); + tran.RollbackTran(); + return; + } + } + } + } + + tran.CommitTran(); + LogHelper.Info($"閲嶇疆缁堢偣璐т綅锛屾垚鍔燂紝{JsonConvert.SerializeObject(tN_Task)}"); + return; + } + } + else + { + LogHelper.Info($"褰撳墠浠诲姟缁堢偣璐т綅涓嶆槸鍘荤嚎杈癸紝涓嶉渶瑕侀噸缃粓鐐硅揣浣嶏紝{JsonConvert.SerializeObject(tN_Task)}"); + return; + } + + + } + catch (Exception ex) + { + LogHelper.Error("閲嶇疆缁堢偣璐т綅锛屽彧閽堝鍘荤嚎杈圭殑璐у搧 澶辫触", ex); + } + } + + /// <summary> /// 鏇存柊浣欐枡鍥炲簱鏄庣粏 /// </summary> public static void UpdateSurplusDetail(string taskNo,float weight) @@ -308,11 +391,11 @@ try { var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo); + var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo); if (target != null) { - target.Weight = weight; + target.WEIGHT = weight; if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0) { LogHelper.Info($"鏇存柊浣欐枡鍥炲簱鏄庣粏鎴愬姛锛寋taskNo}"); @@ -342,13 +425,8 @@ if (model != null) { - var target = db.Queryable<TN_InventoryM>().First(o => o.RFID == model.RFID); - if (target != null) - { - db.Deleteable<TN_InventoryM>(target).ExecuteCommand(); - } - model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec)); - if (db.Insertable<TN_InventoryM>(model).ExecuteCommand() > 0) + model.EXPIRATION = System.DateTime.Now.AddHours(GetExportTime(model.SPEC)); + if (db.Storageable<TN_InventoryM>(model).ExecuteCommand() > 0) { LogHelper.Info($"鎻掑叆WMS搴撳瓨鏄庣粏鎴愬姛锛寋log}"); } @@ -364,25 +442,108 @@ } } - /// <summary> - /// 鏇存柊WMS搴撳瓨鏄庣粏鐨勮繃鏈熸椂闂�+ /// 鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂� /// </summary> - public static void UpdateInventoryM(string cg_SID) + public static void UpdateInventoryM_RuKu(string cntId) { try { var db = new SqlHelper<object>().GetInstance(); - var target = db.Queryable<TN_InventoryM>().First(a => a.S_ID == cg_SID); + var target = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntId); if (target != null) { - target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec)); - db.Updateable<TN_InventoryM>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand(); + var targetM = db.Queryable<TN_InventoryM>().First(a => a.S_ID == target.S_ID || a.RFID == cntId); + + if (targetM != null) + { + targetM.INAREATIME = System.DateTime.Now; + if(db.Updateable<TN_InventoryM>(targetM).UpdateColumns(it => new { it.INAREATIME }).ExecuteCommand() > 0) + { + LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝鎴愬姛锛屽鍣ㄥ彿锛歿cntId}"); + } + else + { + LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝澶辫触锛屽鍣ㄥ彿锛歿cntId}"); + } + } + else + { + LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝澶辫触锛屽鍣ㄥ彿锛歿cntId}锛孴N_InventoryM涓虹┖"); + } + } + else + { + LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝澶辫触锛屽鍣ㄥ彿锛歿cntId}锛孴N_CG_Detail涓虹┖"); } } catch (Exception ex) { - LogHelper.Error("鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触", ex); + LogHelper.Error("鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂村け璐�, ex); + } + } + + /// <summary> + /// 鍒犻櫎WMS搴撳瓨鏄庣粏 + /// </summary> + public static void DeleteInventoryM(TN_Task taskTn) + { + try + { + if (taskTn.S_START_AREA == Settings.Areas[1] || taskTn.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎")) //涓嶆槸浠庢弧鎵樼紦瀛樺簱鍖虹Щ鍑哄氨涓嶅垹闄�+ { + var db = new SqlHelper<object>().GetInstance(); + + if (db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == taskTn.S_ID || it.RFID == taskTn.S_CNTR_CODE).ExecuteCommand() > 0) + { + LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屾垚鍔燂紝鐗╂枡涓婚敭锛歿taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + } + else + { + LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屽け璐ワ紝鐗╂枡涓婚敭锛歿taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + } + } + else + { + LogHelper.Info($"涓嶆槸浠庢弧鎵樼紦瀛樺簱鍖烘惉鍑虹殑璐т綅锛屼笉闇�鍒犻櫎搴撳瓨鏄庣粏锛岀墿鏂欎富閿細{taskTn.S_ID}锛屽鍣ㄥ彿锛歿taskTn.S_CNTR_CODE}"); + return; + } + } + catch (Exception ex) + { + LogHelper.Error("鍒犻櫎WMS搴撳瓨鏄庣粏", ex); + } + } + + /// <summary> + /// 璁$畻鏃堕棿宸�+ /// </summary> + /// <param name="start"></param> + /// <param name="end"></param> + /// <returns></returns> + public static int CalculateDaysDifference(DateTime start, DateTime end) + { + try + { + // 璁$畻鎬绘椂闂村樊 + TimeSpan difference = end - start; + + // 濡傛灉宸�涓鸿礋锛坋nd鏃╀簬start锛夛紝杩斿洖0 + if (difference.TotalDays < 0) + { + return 0; + } + + + // 鑾峰彇鎬诲皬鏃舵暟锛堝寘鎷皬鏁伴儴鍒嗭級 + double totalHours = difference.TotalHours; + + // 鍚戜笂鍙栨暣 + return (int)Math.Ceiling(totalHours); + } + catch (Exception ex) + { + return 0; } } } -- Gitblit v1.9.1