From ef83aea1ac3325003b4ed8cddd23d295c6a01b1d Mon Sep 17 00:00:00 2001
From: zxx <Zxx@HanInfo>
Date: 星期一, 09 六月 2025 17:31:56 +0800
Subject: [PATCH] jushi

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs        |   96 +++++++++++++++++++++++++++++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs |   51 ++++++++++-------
 2 files changed, 124 insertions(+), 23 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs
index dd55966..374ec39 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/core/WMSCore.cs
@@ -194,7 +194,7 @@
 
                 //鎵鹃�妫�叆搴撳尯鍐呮墭鐩樻弧浜嗙殑璐т綅
                 var locList = db.Queryable<Location>()
-                    .Where(p => p.S_AREA_CODE == reservoirs.areaCode && p.N_LOCK_STATE == 0)
+                    .Where(p => p.S_AREA_CODE == reservoirs.areaCode && p.N_LOCK_STATE == 0 && p.C_ENABLE == "Y")
                     .Where(s => locCntrs.Contains(s.S_CODE.Trim()))
                     .ToList();
 
@@ -318,7 +318,7 @@
                             dev = "2";
                         }
                         var endLocation = db.Queryable<Location>().Where(s => s.S_CODE == endLoc).First();
-                        if (endLocation == null || endLocation.N_LOCK_STATE != 0)
+                        if (endLocation == null || endLocation.N_LOCK_STATE != 0 || endLocation.C_ENABLE != "Y")
                         {
                             //LogHelper.Info($"鎷嗘墭鏈鸿揣浣峽endLoc}涓嶅瓨鍦ㄦ垨宸茶閿�);
                             return;
@@ -422,7 +422,99 @@
 
 
         }
+        //浜х嚎鑷姩琛ョ┖鎵�+        public static void AutoRepairEmptyTray()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
 
 
+                var reservoirs1 = Settings.ReservoirAreas.Where(s => s.areaName == "3min绌烘墭鍖�).FirstOrDefault();
+                var reservoirs2 = Settings.ReservoirAreas.Where(s => s.areaName == "6min绌烘墭鍖�).FirstOrDefault();
+                var linePlcInfo1 = Settings.linePlcInfos.Where(s => s.deviceNo == "1").FirstOrDefault();
+                var linePlcInfo2 = Settings.linePlcInfos.Where(s => s.deviceNo == "2").FirstOrDefault();
+                ////鎵惧埌绌烘墭缂撳瓨鍖虹殑鎵�湁璐т綅缂栧彿
+                //var locList = db.Queryable<Location>()
+                //    .Where(s => s.S_AREA_CODE == reservoirs1.areaCode || s.S_AREA_CODE == reservoirs2.areaCode)
+                //    .Where(s => s.N_LOCK_STATE == 0)
+                //    .OrderByDescending(s => s.N_ROW).OrderByDescending(s => s.N_COL).OrderBy(s => s.N_LAYER)
+                //    .Select(s => s.S_CODE)
+                //    .ToList();
+
+
+                //鏌ヨ姣忔帓鏈�悗涓�垪鏈夋墭鐩樼殑璐т綅  鏍规嵁琛屽垎鍖�鍐嶆壘姣忎竴琛岀殑鏈�悗涓�垪鏈夎揣鐨勮揣浣�+                var list = db.Queryable<Location>().
+                    Where(a => a.N_CURRENT_NUM > 0).Where(a => a.S_AREA_CODE.Trim() == reservoirs1.areaCode || a.S_AREA_CODE.Trim() == reservoirs2.areaCode)
+                    .PartitionBy(a => a.N_ROW)
+                    .OrderByDescending(a => a.N_COL).Take(1).ToList();
+                if (list.Count > 0)
+                {
+                    for (int i = 0; i < list.Count; i++)
+                    {
+                        //var loc = list[i];
+                        //鍒ゆ柇閫佸線3瀵歌繕鏄�瀵告媶鎵樻満
+                        string endLoc = null;
+                        string dev = null;
+                        if (list[i].S_AREA_CODE == reservoirs1.areaCode)
+                        {
+                            endLoc = linePlcInfo1.inLoca;
+                            dev = "1";
+                        }
+                        else if (list[i].S_AREA_CODE == reservoirs2.areaCode)
+                        {
+                            endLoc = linePlcInfo2.inLoca;
+                            dev = "2";
+                        }
+                        var endLocation = db.Queryable<Location>().Where(s => s.S_CODE == endLoc).First();
+                        if (endLocation == null || endLocation.N_LOCK_STATE != 0)
+                        {
+                            //LogHelper.Info($"鎷嗘墭鏈鸿揣浣峽endLoc}涓嶅瓨鍦ㄦ垨宸茶閿�);
+                            return;
+                        }
+                        //鏍¢獙鏄惁鍏佽鏀捐揣
+                        var plcDeviceTable = S7Helper.plcDeviceTables;
+                        LogHelper.Info($"鑷姩閫佹墭 鎷嗘墭鏈簕dev}:{plcDeviceTable.requestPut1}");
+                        if ((plcDeviceTable.requestPut1 && dev == "1") ||
+                            (plcDeviceTable.requestPut2 && dev == "2"))
+                        {
+                            var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == list[i].S_CODE).First();
+
+                            LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}");
+                            var res = TaskProcess.CreateTransport(list[i].S_CODE, endLoc, "閫佹墭", locCntrRel.S_CNTR_CODE, 1, 1);
+                            if (res)
+                            {
+                                LogHelper.Info($"璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}浠诲姟鍒涘缓鎴愬姛");
+                            }
+                            else
+                            {
+                                LogHelper.Info($"璧风偣:{list[i].S_CODE}缁堢偣:{endLoc}浠诲姟鍒涘缓澶辫触");
+                            }
+                        }
+                        else
+                        {
+                            LogHelper.Info($"鎷嗘墭鏈簕endLoc}涓嶅厑璁告斁妗�);
+                        }
+                    }
+                }
+
+
+
+
+
+                
+
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("AutoReplenish:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("AutoReplenish:" + ex.Message, ex);
+                throw;
+            }
+
+
+
+        }
+
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs
index 5c14bb5..79e9833 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JuShi/process/TaskProcess.cs
@@ -784,11 +784,6 @@
 
             return result;
 
-
-
-
-
-            return result;
         }
 
         #endregion
@@ -814,9 +809,10 @@
                     for (int i = 0; i < list.Count; i++)
                     {
                         //濡傛灉閿佷簡鎴栬�瀹归噺婊′簡                   褰撳墠鏁伴噺                 瀹瑰櫒瀹归噺
-                        if (list[i].N_LOCK_STATE != 0 || list[i].N_CURRENT_NUM >= list[i].N_CAPACITY)
+                        if (list[i].N_LOCK_STATE != 0|| list[i].C_ENABLE != "Y" || list[i].N_CURRENT_NUM >= list[i].N_CAPACITY)
                         {
                             loca.Add(list[i].S_CODE);
+                            LogHelper.Info($"InWorkTransport  婊℃垨鑰呴攣涓婄殑璐т綅锛歿list[i].S_CODE}锛岀姸鎬亄list[i].N_LOCK_STATE}");
                         }
                     }
                     //绉婚櫎
@@ -858,7 +854,20 @@
                     //绗﹀悎鏉′欢鐨勬帓搴忛�绗竴涓� 鍏堟壘绗竴涓�                     if (list.Count > 0)
                     {
-                        result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                        //绔嬪簱鐨勯殢鏈哄垎閰�+                        if (reservoirs != null && reservoirs.areaCode.Equals(area))
+                        {
+                            // 绔嬪簱闅忔満鍒嗛厤绠楁硶
+                            var random = new Random();
+                            result = list.OrderBy(x => random.Next()).FirstOrDefault();
+                            LogHelper.Info($"绔嬪簱闅忔満鍒嗛厤閫夋嫨璐т綅锛歿result?.S_CODE},鐘舵�{result?.N_LOCK_STATE}");
+
+                        }
+                        else
+                        {
+                            result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                        }
+
                     }
                 }
 
@@ -889,7 +898,7 @@
                 for (int i = 0; i < list.Count; i++)
                 {
                     //鍒ゆ柇璐т綅鏄惁琚攣浣忎簡 涓�鏄惁鏈夋墭鐩�-                    if (list[i].N_LOCK_STATE == 0)
+                    if (list[i].N_LOCK_STATE == 0&& list[i].C_ENABLE =="Y")
                     {
                         var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == list[i].S_CODE).First();
 
@@ -966,7 +975,7 @@
         {
             return locations
                 .Where(l => targetAreas.Any(area => l.S_CODE.Contains(area)))
-                .Where(l => l.N_LOCK_STATE == 0 && l.N_CURRENT_NUM < l.N_CAPACITY)
+                .Where(l => l.N_LOCK_STATE == 0&& l.C_ENABLE == "Y" && l.N_CURRENT_NUM < l.N_CAPACITY)
                 .ToList();
         }
 
@@ -995,7 +1004,7 @@
                         result = db.Queryable<Location>().OrderBy(a => a.N_COL)
                             .Where(a => a.S_AREA_CODE.Trim() == area && a.N_ROW == list[i].N_ROW
                             && a.N_COL > list[i].N_COL).First();
-                        if (result != null && result.N_LOCK_STATE == 0)
+                        if (result != null && result.N_LOCK_STATE == 0 && result.C_ENABLE == "Y")
                         {
                             return result;
                         }
@@ -1005,7 +1014,7 @@
                 else
                 {
                     result = db.Queryable<Location>().
-                    Where(a => a.S_AREA_CODE.Trim() == area && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0)
+                    Where(a => a.S_AREA_CODE.Trim() == area && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0)
                     .OrderBy(a => a.N_COL).OrderBy(a => a.N_ROW).First();
                 }
             }
@@ -1202,7 +1211,7 @@
             {
                 //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇
                 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First();
-                if (loc == null || loc.N_LOCK_STATE != 0)
+                if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y")
                 {
                     return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null };
                 }
@@ -1288,7 +1297,7 @@
                 }
                 //鏍¢獙缁堢偣璐т綅鏄惁瀛樺湪/閿佸畾
                 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First();
-                if (loc == null || loc.N_LOCK_STATE != 0)
+                if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y")
                 {
                     return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null };
                 }
@@ -1343,7 +1352,7 @@
                 if (!string.IsNullOrEmpty(model.START_LOC))
                 {
                     var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First();
-                    if (loc == null || loc.N_LOCK_STATE != 0)
+                    if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y")
                     {
                         return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null };
                     }
@@ -1396,7 +1405,7 @@
                 LogHelper.Info($"鏈夌墿鏂檣itemCode}鐨勮揣浣嶇紪鍙穥JsonConvert.SerializeObject(locCntrs)}");
                 //鎵惧父瑙勯�妫�尯鍐呭惈鏈夋煡鍑虹墿鏂欒揣浣嶇殑璐т綅
                 var locList = db.Queryable<Location>()
-                    .Where(p => p.S_AREA_CODE == areaCode && p.N_LOCK_STATE == 0)
+                    .Where(p => p.S_AREA_CODE == areaCode && p.N_LOCK_STATE == 0 && p.C_ENABLE == "Y")
                     .Where(s => locCntrs.Contains(s.S_CODE.Trim()))
                     .ToList();
 
@@ -1442,7 +1451,7 @@
                         //鎵惧埌璇ョ偣浣嶇殑搴撳尯
                         var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.PointCode).First();
                         //娌¢攣鍐嶇户缁蛋
-                        if (loc.N_LOCK_STATE == 0 && loc != null)
+                        if (loc.N_LOCK_STATE == 0 && loc.C_ENABLE =="Y" && loc != null)
                         {
                             var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹鍏ュ簱鍖�).FirstOrDefault();
                             //濡傛灉鏄�妫�叆搴撳尯
@@ -1531,7 +1540,7 @@
                 {
                     //鍒涘缓浠诲姟 浠庣┖鎵樼紦瀛樺尯鍒版媶鎵樻満
                     var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == loc.S_AREA_CODE
-                    && a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_ROW)
+                    && a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").OrderByDescending(a => a.N_ROW)
                     .OrderByDescending(a => a.N_COL).First();
                     var startLoc = list.S_CODE;
 
@@ -1577,7 +1586,7 @@
                 }
                 //缁堢偣
                 var endloc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First();
-                if (endloc == null || endloc.N_LOCK_STATE != 0)
+                if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y")
                 {
                     return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null };
                 }
@@ -1613,7 +1622,7 @@
             try
             {
                 var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.BIND_LOC).First();
-                if (loc == null || loc.N_LOCK_STATE != 0)
+                if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y")
                 {
                     return new Results { Code = "1", Message = $"缁戝畾璐т綅涓嶅瓨鍦ㄦ垨宸茶閿�, Data = null };
 
@@ -1695,7 +1704,7 @@
             {
                 //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇
                 var loc = db.Queryable<Location>().Where(a => a.S_CODE == startLoc).First();
-                if (loc == null || loc.N_LOCK_STATE != 0)
+                if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y")
                 {
                     LogHelper.Info("璧风偣璐т綅涓嶅瓨鍦ㄦ垨宸查攣" + startLoc);
                     return false;
@@ -1757,7 +1766,7 @@
             {
                 //鏍¢獙缁堢偣璐т綅鏄惁閿�                 var endloc = db.Queryable<Location>().Where(a => a.S_CODE == endLoc).First();
-                if (endloc == null || endloc.N_LOCK_STATE != 0)
+                if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y")
                 {
                     LogHelper.Info("缁堢偣璐т綅宸查攣" + endLoc);
                     return false;

--
Gitblit v1.9.1