From 06a54c7ac91fed8ece7dd6bedf724539af3c38ff Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期四, 26 六月 2025 18:56:27 +0800 Subject: [PATCH] 1 --- HH.WCS.ZCQTJ/Bll/ZCBLL.cs | 105 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 78 insertions(+), 27 deletions(-) diff --git a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs index d976d07..59706da 100644 --- a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs +++ b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs @@ -34,7 +34,7 @@ var newDb = chi.CopyNew(); foreach (var task in TaskList) { - LogHelper.Info("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO); try { bool ggf = true; @@ -48,6 +48,7 @@ string lkBit = task.S_START_LOC; var locationBit = LocationHelper.LocationCode(lkBit); + var tTaskNum = newDb.Queryable<OutAreaTaskAnyJbEntitys>().Where(e => e.S_AreaCode == task.S_START_LAREA && e.S_IsUse == "Y")?.First(); //鑾峰彇鎵樼洏鍙� 濡傛灉璧风偣绠℃帶鐨勮瘽 var endArea = newDb.Queryable<TN_AreaEntitys>().Where(e => e.S_AREA_CODE == task.S_END_LAREA)?.First(); if (endArea != null && endArea.S_CONTROL_QTY == "Y") @@ -55,7 +56,7 @@ var locaBit = newDb.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == task.S_CNTRS).First(); if (locaBit == null) { - LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); throw new Exception("鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); } } @@ -63,7 +64,7 @@ var ToBit = LocationHelper.LocationCodeJbw(task.S_START_LOC); if (ToBit == null) { - LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); throw new Exception("鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); } if (locationBit == null) @@ -71,7 +72,41 @@ //閫氳繃浠诲姟绫诲瀷鎵炬帴椹充綅 var _bit = ""; string input = task.S_Jb_Bit; - string[] result = input.Split(','); + List<string> result = input.Split(',').ToList(); + if (tTaskNum != null && Itemgh != null) + { + //鏌ヨ璧风偣搴撳尯瀵瑰簲宸烽亾鎬讳换鍔¢噺 + var TaskLis = newDb.Queryable<WMSTask>().Where(e => e.S_START_LAREA == task.S_START_LAREA && e.S_Main_task == "涓讳换鍔� && e.S_B_STATE == "鏈墽琛� && (e.S_Jb_Bit.Contains(result.FirstOrDefault()) || e.S_Jb_Bit.Contains(result.LastOrDefault()))).ToList(); + if (TaskLis.Count > 0) + { + //绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔�+ var TaskTray = TaskLis.Select(e => e.S_CNTRS).ToList(); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(TaskTray)); + //鏌ユ墭鐩樼┖婊�+ var TaskItemghList = newDb.Queryable<CntrItemRel>().Where(e => TaskTray.Contains(e.S_CNTR_CODE)).ToList(); + if (TaskItemghList.Count() > 0) + { + //鑾峰彇婊℃墭鐨勬墭鐩橀泦鍚�+ var MtTray = TaskItemghList.Select(e => e.S_CNTR_CODE).ToList(); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(MtTray)); + TaskLis = TaskLis.FindAll(e => MtTray.Contains(e.S_CNTRS)).ToList(); + } + } + if (TaskLis.Count() > 0) + { + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"璧风偣搴撳尯{task.S_START_LAREA} 鎵�鐨勫贩閬撶殑 鏈墽琛岀殑浠诲姟閲忎负:{TaskLis.Count()}"); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鏈�ぇ浠诲姟鏁颁负{tTaskNum.N_TaskQuantity}"); + if (TaskLis.Count() < tTaskNum.N_TaskQuantity) + { + if (result.Count > 1) + { + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍓嶆帴椹充綅鏈墈JsonConvert.SerializeObject(result)}"); + result.RemoveRange(1, result.Count - 1); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍚庢帴椹充綅鏈墈JsonConvert.SerializeObject(result)}"); + } + } + } + } Location connectBit = new Location(); foreach (var item in result) { @@ -129,7 +164,7 @@ if (lstLocation.Count() == 0) { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�); throw new Exception("娌℃湁鍙敤璐т綅"); } //濡傛灉澶栦晶鏈夐樆鎸★紝灏卞皢澶栦晶鐨勮揣浣嶇殑CN_S_TASK_NO 鑾峰彇鍒�@@ -154,7 +189,7 @@ if (emptyLocation.Count() == 0) { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE); throw new Exception("娌℃湁鍙敤璐т綅"); } @@ -173,13 +208,13 @@ loca.And(it => it.S_LOCK_STATE == "鍑哄簱閿�); List<Location> locationOutLock = newDb.Queryable<Location>().Where(loca.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock)); foreach (Location lEntity in locationOutLock) { emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); //鍘婚櫎棰勫叆搴撻攣瀹氱殑鎺掑垪灞� var locaIn = Expressionable.Create<Location>(); @@ -187,13 +222,13 @@ locaIn.And(it => it.S_AREA_CODE == obstructBit.S_AREA_CODE); locaIn.And(it => it.S_LOCK_STATE == "鍏ュ簱閿�); List<Location> locationInLock = newDb.Queryable<Location>().Where(locaIn.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock)); foreach (Location lEntity in locationInLock) { emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); //鍘婚櫎琚渚ц揣鐗╅樆鎸$殑璐т綅 var locaWc = Expressionable.Create<Location>(); @@ -203,14 +238,14 @@ locaWc.And(it => it.N_SIDE == 1); lca.And(it => it.N_CURRENT_NUM > 0); List<Location> lstLocationHasItem = newDb.Queryable<Location>().Where(locaWc.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem)); List<Location> lstLocationHasItemOrder = new List<Location>(); foreach (Location itemC in lstLocationHasItem) { emptyLocation.RemoveAll(o => o.N_ROW == itemC.N_ROW && o.N_COL == itemC.N_COL && o.N_LAYER == itemC.N_LAYER && o.N_SIDE > itemC.N_SIDE); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); if (emptyLocation.Count() > 0) { var emptyLocation_inside = emptyLocation.FindAll(f => f.N_SIDE == 2); @@ -221,7 +256,7 @@ } else { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE); throw new Exception("娌℃湁鍙敤璐т綅"); } // @@ -276,7 +311,7 @@ taskEntity1.S_Main_task = "瀛愪换鍔�; taskEntity1.S_TOOLS_TPYE = task.S_TOOLS_TPYE; - LogHelper.Info("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1)); string taskNo2 = task.S_TASK_NO + "_2"; //鍒涘缓绗簩涓换鍔� WMSTask taskEntity2 = new WMSTask() @@ -303,7 +338,7 @@ S_Main_task = "瀛愪换鍔�, S_TOOLS_TPYE = task.S_TOOLS_TPYE }; - LogHelper.Info("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2)); #region 浠诲姟涓嬭揪 #region 濡傛灉鏈夐樆鎸¢渶瑕佺Щ搴撳垯浜х敓绉诲簱浠诲姟 @@ -323,7 +358,7 @@ throw new Exception("閿佸畾缁堢偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_END_LOC); } - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); A = newDb.Updateable<Location>().SetColumns(it => new Location { S_LOCK_STATE = "鍑哄簱閿�, @@ -334,12 +369,12 @@ newDb.RollbackTran(); throw new Exception("閿佸畾璧风偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_START_LOC); } - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk)); //涓嬪彂浠诲姟缁橶CS--绔嬪簱 var tr = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntityYk); - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr)); if (!tr.Success) { WCSBOOL = tr.Success; @@ -368,7 +403,7 @@ S_LOCK_STATE = "鍏ュ簱閿�, T_MODIFY = DateTime.Now }).Where(x => x.S_LOC_CODE == taskEntity1.S_END_LOC && x.S_LOCK_STATE == "鏃�).ExecuteCommand(); - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B)); if (B == 0) { newDb.RollbackTran(); @@ -386,8 +421,8 @@ } #endregion #region 鍙戦�Wcs浠诲姟 - LogHelper.Info("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1)); - LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛"); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛"); var re = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntity1, Itemgh); //濡傛灉浠诲姟鎴愬姛涓嬭揪 鍒欎富浠诲姟涓嶉渶瑕佸湪寰幆浜� if (!re.Success) @@ -400,7 +435,7 @@ { WCSBOOL = re.Success; } - LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re)); #endregion #region 娣诲姞绗簩涓瓙浠诲姟 B = newDb.Insertable(taskEntity2).ExecuteCommand(); @@ -412,7 +447,7 @@ #endregion #region agv浠诲姟 //涓嬭揪浠诲姟缁橝gv - //LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛"); + //LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛"); //var Are = TaskProcess.SendTask(taskEntity2); //if (!Are) //{ @@ -447,11 +482,11 @@ ors.Add(OperateResult.Error(ex.Message)); } } - LogHelper.Info("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors)); } catch (Exception ex) { - LogHelper.Info("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace); } } @@ -1353,7 +1388,7 @@ return OperateResult.Succeed(); // } } - // return OperateResult.Succeed(); + // return OperateResult.Succeed(); } else { @@ -2130,5 +2165,21 @@ } } + + + private bool ContainsAnyChar(string input, List<string> charList) + { + bool gf = false; + foreach (var item in charList) + { + if (input.Contains(input)) + { + gf = true; + break; + } + } + return gf; + } + } } -- Gitblit v1.9.1