From 3a56820d028e98ac3c4bd315aa76181d7d6720cd Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期一, 28 七月 2025 17:29:57 +0800
Subject: [PATCH] 金坛二合一出库修改

---
 wms/LocationHelper.cs |   92 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 68 insertions(+), 24 deletions(-)

diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 8e4ee1b..6fdf323 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -12,6 +12,7 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using System.Web.Services.Description;
 using Top.Api;
 using WebSocketSharp.Frame;
 using static HH.WCS.ZhongCeJinTan.api.ApiModel;
@@ -105,6 +106,19 @@
             return result;
         }
 
+        internal static List<string> GetConnectionListNoYN(string S_AREA_CODE)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            var ConnectionList = db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE ).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).ToList();
+            List<string> result = new List<string>();
+            foreach (var item in ConnectionList)
+            {
+                result.Add(item.S_CODE);
+            }
+            return result;
+        }
+
+
         /// <summary>
         /// 鑾峰彇璐т綅淇℃伅,鍙傛暟搴撳尯缂栧彿
         /// </summary>
@@ -163,7 +177,17 @@
             var db = new SqlHelper<object>().GetInstance();
             
           return db.Queryable<WMSTask>().Where(a => ( a.S_START_LOC.Contains(jbLoc)&& a.S_SCHEDULE_TYPE.Contains(type)  && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "澶辫触" && a.S_B_STATE != "宸插畬鎴� && a.S_B_STATE != "鏈墽琛�)).OrderBy(b=>b.T_CREATE).First();
-        
+        }
+
+        /// <summary>
+        /// 杩斿洖鍑哄簱agv浠诲姟
+        /// </summary>
+        internal static WMSTask GetConnectionTask(string jbLoc, string type,DateTime time)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+
+            return db.Queryable<WMSTask>().Where(a => (a.S_START_LOC.Contains(jbLoc) && a.S_SCHEDULE_TYPE.Contains(type) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "澶辫触" && a.S_B_STATE != "宸插畬鎴� && a.S_B_STATE != "鏈墽琛�&&a.T_CREATE<time)).OrderBy(b => b.T_CREATE).First();
+
         }
 
         /// <summary>
@@ -325,8 +349,13 @@
                 //鑾峰彇string鎺ラ┏浣嶉泦鍚�                 var connectionList = LocationHelper.GetConnectionList(CONNECTION);
 
+
+                var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION); 
+
                 //涓嶅彲鐢ㄦ帴椹充綅闆嗗悎
-                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList);
+                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN);
+
+
 
                 List<Location> jblist = new List<Location>();
 
@@ -341,7 +370,7 @@
                     List<Location> difference = flaseConnectionList
     .Where(loc1 => !balanceConnectionList.Any(loc2 => loc2.S_CODE == loc1.S_CODE))
     .ToList();
-
+                    
                     jblist = difference;
 
 
@@ -404,8 +433,13 @@
                     {
                         if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0)
                         {
-                            flag2 = true;
-                            break;
+                            var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First();
+                            if (ConnectionY == null)
+                            {
+                                flag2 = true;
+                                break;
+                            }
+                            
                         }
                     }
 
@@ -463,8 +497,10 @@
                 //鑾峰彇string鎺ラ┏浣嶉泦鍚�                 var connectionList = LocationHelper.GetConnectionList(CONNECTION);
 
+                var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION);
+
                 //涓嶅彲鐢ㄦ帴椹充綅闆嗗悎
-                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList);
+                var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN);
 
                 List<Location> jblist = new List<Location>();
 
@@ -539,8 +575,12 @@
                     {
                         if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0)
                         {
-                            flag2 = true;
-                            break;
+                            var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First();
+                            if (ConnectionY == null)
+                            {
+                                flag2 = true;
+                                break;
+                            }
                         }
                     }
 
@@ -779,7 +819,7 @@
 
                 foreach (var item in result)
                 {
-                    var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.loc.N_ROADWAY && o.N_CURRENT_NUM==0 ).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).ToList();
+                    var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.loc.N_ROADWAY && o.N_CURRENT_NUM==0 && o.S_LOCK_STATE=="鏃�).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).ToList();
                     foreach (var item1 in loclist)
                     {
                         location_roadray.Add(item1);
@@ -995,7 +1035,7 @@
         /// </summary>
         /// <param name="locations"></param>
         /// <returns></returns>
-        internal static Location FindStartcolByLoclistAndcntr(List<Location> locations,string startArea, string CONNECTION = "") {
+        internal static Location FindStartcolByLoclistAndcntr(List<Location> locations,string startArea, string CONNECTION = "",string cntrType="") {
             var db = new SqlHelper<object>().GetInstance();
             try
             {
@@ -1064,8 +1104,8 @@
                     {
                         var tp1 = db.Queryable<Container>().Where(s => s.S_CODE == tp.S_CNTR_CODE).First();
 
-                        LogHelper.Info($"绌烘墭鑷姩鍑哄簱tp1淇℃伅"+JsonConvert.SerializeObject(tp1), "绌烘墭鍑哄簱");
-                        if (tp1 != null && tp1.N_DETAIL_COUNT==0)
+                        LogHelper.Info($"绌烘墭鑷姩鍑哄簱,cntrType:{cntrType},tp1淇℃伅" +JsonConvert.SerializeObject(tp1), "绌烘墭鍑哄簱");
+                        if (tp1 != null && tp1.N_DETAIL_COUNT==0 && tp1.S_TYPE== cntrType)
                         {
                             start = item;
                             break;
@@ -1256,6 +1296,8 @@
             var db = new SqlHelper<object>().GetInstance();
             try
             {
+
+                LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟杩涘叆FindStartcolByLoclistAndItem", "Mes浠诲姟涓嬪彂");
                 Location start = null;
                 var rowsStart = locations.Select(a => a.N_ROW).Distinct().ToList();
 
@@ -1265,10 +1307,6 @@
 
                 var balanceConnectionList = LocationHelper.GetConnectionListByst(connectionList);
 
-
-                
-
-                
 
                 LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鎺掗櫎涓嶅彲鐢ㄥ贩閬撳紑濮�, "Mes浠诲姟涓嬪彂");
                 //浣滀笟娴佺▼鐨勫贩閬�@@ -1792,7 +1830,7 @@
         internal static bool GetErroArea(string area)
         {
             var db = new SqlHelper<object>().GetInstance();
-            var erroArea = db.Queryable<Area>().Where(a => a.S_NAME.Contains("寮傚父") && a.S_CODE.Contains(area)).First();
+            var erroArea = db.Queryable<Area>().Where(a => a.S_NAME.Contains("寮傚父") && a.S_CODE==area).First();
 
             if (erroArea == null)
             {
@@ -1814,6 +1852,8 @@
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var model = db.Queryable<Location>().Where(a => a.S_CODE == loc).First();
+            LogHelper.Info($"閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:{lockState},lockNo:{lockNo}", "涓婇攣");
+            LogHelper.Info($"閿佽揣浣嶄俊鎭�+JsonConvert.SerializeObject(model), "涓婇攣");
             if (model != null && model.S_LOCK_STATE.Trim() == "鏃�) {
                 model.S_LOCK_STATE = lockState;
                 model.N_LOCK_STATE = lockNo;
@@ -1828,7 +1868,8 @@
         /// <param name="loc"></param>
         /// <returns></returns>
         public static bool UnLockLoc(string loc) {
-            LogHelper.Info("UnLockLoc:" + loc);
+
+            LogHelper.Info($"UnLockLoc瑙i攣璐т綅鍙傛暟锛歭oc:{loc},lockState:鏃�lockNo:0", "瑙i攣");
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var model = db.Queryable<Location>().Where(a => a.S_CODE == loc).First();
@@ -1836,10 +1877,10 @@
                 model.S_LOCK_STATE = "鏃�;
                 model.N_LOCK_STATE = 0;
                 res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0;
-                LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res);
+                LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res, "瑙i攣");
             }
             else {
-                LogHelper.Info("UnLockLoc 澶辫触");
+                LogHelper.Info($"UnLockLoc锛宭oc:{loc} 澶辫触", "瑙i攣");
             }
             return res;
         }
@@ -1996,7 +2037,7 @@
         /// <returns></returns>
         public static bool UnBindingLoc(string loc, List<string> cntrs)
         {
-            LogHelper.Info($"UnBindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}");
+            LogHelper.Info($"UnBindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}","瑙i攣");
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var location = db.Queryable<Location>().Where(a => a.S_CODE == loc).First();
@@ -2006,8 +2047,7 @@
                 var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == loc).ToList();
                 var count = db.Deleteable<LocCntrRel>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand();
 
-                LogHelper.Info($"lcrList淇℃伅" + JsonConvert.SerializeObject(lcrList));
-                LogHelper.Info($"count淇℃伅" + JsonConvert.SerializeObject(count));
+            
 
                 location.N_CURRENT_NUM = lcrList.Count - count;
                 location.S_LOCK_STATE = "鏃�;
@@ -2015,6 +2055,7 @@
 
                 db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
                 db.CommitTran();
+                LogHelper.Info($"UnBindingLoc瑙i攣閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:鏃�lockNo:0", "瑙i攣");
                 res = true;
             }
             catch (Exception ex)
@@ -2032,6 +2073,7 @@
         /// <returns></returns>
         public static bool BindingLoc(string loc, List<string> cntrs)
         {
+            LogHelper.Info($"BindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}", "瑙i攣");
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var location = db.Queryable<Location>().Where(a => a.S_CODE == loc).First();
@@ -2050,10 +2092,12 @@
                 location.N_CURRENT_NUM = lcrList.Count + count;
                 location.N_LOCK_STATE = 0;
                 location.S_LOCK_STATE = "鏃�;
-
+             
                 db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE }).ExecuteCommand();
 
                 db.CommitTran();
+                LogHelper.Info($"BindingLoc瑙i攣閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:鏃�lockNo:0", "瑙i攣");
+                
                 res = true;
             }
             catch (Exception ex)

--
Gitblit v1.9.1