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