From 1b4deb836c68efb689e13d3512888ae04fc99f09 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期五, 11 七月 2025 17:26:12 +0800
Subject: [PATCH] 11

---
 HH.WCS.Mobox3.NongFuLinZhi/Program.cs             |    1 
 HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs        |  108 +++++++++++++++++++++++---
 HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs |   95 +++++++++++++++++++++++
 HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs       |    2 
 4 files changed, 191 insertions(+), 15 deletions(-)

diff --git a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
index 3c4f2aa..4952c11 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
@@ -100,6 +100,7 @@
                 tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //鎺ラ┏浣嶅叆搴�                 tasks.Add(GetTask(Monitor.PPFDFullIn)); //鐡跺澂缈绘枟鏈洪潪鎬ヤ骇婊℃鍖鸿ˉ婊℃墭
                 tasks.Add(GetTask(Monitor.PGFDFullIn)); //鐡剁洊缈绘枟鏈洪潪鎬ヤ骇婊℃鍖鸿ˉ婊℃墭
+                tasks.Add(GetTask(Monitor.PGFDFullInJC)); //鐡剁洊缈绘枟鏈烘�浜ф弧妗嗗尯琛ユ弧鎵�绌烘墭鍖哄煙琛ョ┖鎵�                 tasks.Add(GetTask(Monitor.PPFDFullInEmpty)); //鐡跺澂娉ㄥ鏈洪潪鎬ヤ骇绌烘鍖鸿ˉ绌烘墭
 
 
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
index 188adbe..45008d6 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -307,29 +307,111 @@
         /// </summary>
         internal static void PPFDFullInEmpty()
         {
+            //鐡跺澂闈炲嵆浜х┖妗嗗尯鍫嗗彔搴撳尯涓�叡鍥涗釜璐т綅锛屽鏋滄湁涓変釜璐т綅鏄弧鐨勶紝灏卞紑濮嬭浆杩愬埌鐡跺澂搴撳尯
+            //濡傛灉婊¤揣浣嶅皬浜庣瓑浜庝竴灏卞紑濮嬩粠婊℃缂撳瓨鍖虹┖妗嗗尯鍩熻浆杩愶紝濡傛灉婊℃缂撳瓨鍖虹┖妗嗗尯鍩熸棤绌烘墭锛屽垯浠庣摱鍧簱杞繍
+
             var db = new SqlHelper<object>().GetInstance();
-            var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).First();
-            if(workInfo != null)
+
+            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault();
+            if (areaInfo != null)
             {
-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault();
-                if(areaInfo != null)
+                var LocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY).ToList();
+                if(LocList.Count <= 1)
                 {
-                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First();
-                    if(locInfo != null)
+                    //闇�浠庡簱鍖鸿ˉ鍏呯┖鎵�+                    Location location = TaskProcess.FJCKTLoc();
+                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).First();
+                    if(location != null && locInfo != null)
                     {
-                        //鐢熸垚浠诲姟
-                        Location location = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", "");
-                        if (location != null)
+                        string cntrCode = getCntrCode(db, location);
+                        //鍒涘缓浣滀笟
+                        WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂");
+                    }
+                }
+                if (LocList.Count >= 2)
+                {
+                    //闇�灏嗙┖鎵樿浆杩愬埌搴撳尯
+                    foreach (var a in LocList)
+                    {
+                        if(a.S_LOCK_STATE == "鏃�)
                         {
-                            string cntrCode = getCntrCode(db, location);
+                            //鐢熸垚浠诲姟
+                            string cntrCode = getCntrCode(db, a);
                             //鍒涘缓浣滀笟
-                            WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂");
+                            WMSHelper.CreateOpTask(a.S_CODE, "", "鍏ュ簱", "鐡跺澂闈炴�浜х┖妗嗗叆搴�, cntrCode, "鐡跺澂");
+                            break;
                         }
                     }
                 }
-                else
+
+            }
+            #region
+            //var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "N" && a.S_WorkState == "鎵ц涓�).First();
+            //if(workInfo != null)
+            //{
+            //    var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault();
+            //    if(areaInfo != null)
+            //    {
+            //        var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First();
+            //        if(locInfo != null)
+            //        {
+            //            //鐢熸垚浠诲姟
+            //            Location location = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", "");
+            //            if (location != null)
+            //            {
+            //                string cntrCode = getCntrCode(db, location);
+            //                //鍒涘缓浣滀笟
+            //                WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "鍏ュ簱", "鐡跺澂闈炴�浜цˉ绌烘", cntrCode, "鐡跺澂");
+            //            }
+            //        }
+            //    }
+            //    else
+            //    {
+            //        LogHelper.Info("鐡跺澂闈炲嵆浜х┖妗�鏈厤缃�);
+            //    }
+            //}
+            #endregion
+
+        }
+
+        internal static void PGFDFullInJC()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == "鍐滃か鏋楄姖-鐡跺澂鏈� && a.S_UsingNow == "Y" && a.S_WorkState == "鎵ц涓�).First();
+            if(workInfo != null)
+            {
+                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃" && a.enable == 1).FirstOrDefault();
+                if(areaInfo != null)
                 {
-                    LogHelper.Info("鐡跺澂闈炲嵆浜х┖妗�鏈厤缃�);
+                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).First();
+                    if (locInfo != null)
+                    {
+                        //寮�杞繍
+                        Location startLoca = TaskProcess.BCPInOrOut(db, false, "鐡跺澂鍗充骇婊℃缂撳瓨", workInfo.S_ItemCode);
+                        if (startLoca != null)
+                        {
+                            //鍒涘缓浣滀笟
+                            string cntrCode = getCntrCode(db, startLoca);
+                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo.S_CODE, "鍑哄簱", "鐡跺澂鎬ヤ骇琛ユ弧妗�, cntrCode, "");
+                        }
+                    }
+                }
+
+                areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇绌烘" && a.enable == 1).FirstOrDefault();
+                if (areaInfo != null)
+                {
+                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == 0 && a.S_LOCK_STATE == "鏃�).ToList();
+                    if (locInfo.Count == 2)
+                    {
+                        //寮�杞繍
+                        Location startLoca = TaskProcess.BCPInOrOut(db, false, "鐡跺澂鍗充骇婊℃缂撳瓨", "");
+                        if (startLoca != null)
+                        {
+                            //鍒涘缓浣滀笟
+                            string cntrCode = getCntrCode(db, startLoca);
+                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo[0].S_CODE, "鍑哄簱", "鐡跺澂鎬ヤ骇琛ョ┖妗�, cntrCode, "");
+                        }
+                    }
                 }
             }
         }
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
index 97110a5..fd850f0 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -1306,6 +1306,10 @@
                                     .ToList();
                                 if (locInfo.Count > 0)
                                 {
+                                    if(areaName == "鐡跺澂鍗充骇婊℃缂撳瓨")
+                                    {
+                                        locInfo = locInfo.Where(a => a.N_ROW == 1 || a.N_ROW == 2).ToList();
+                                    }
                                     LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}");
                                     foreach (var a in locInfo)
                                     {
@@ -1437,6 +1441,10 @@
                         var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList();
                         if (locList.Count > 0)
                         {
+                            if(areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && string.IsNullOrEmpty(itemCode))
+                            {
+                                locList = locList.Where(a => a.N_ROW == 3).ToList();
+                            }
                             LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}");
                             foreach (var a in locList)
                             {
@@ -1629,7 +1637,60 @@
             {
                 LogHelper.Info($"{endAreaName}鏈厤缃�);
             }
-            
+            if(result == null)
+            {
+                if(endAreaName == "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡跺澂锛�)
+                {
+                    //鐡跺澂闈炲嵆浜х┖鎵樹笅绾�濡傛灉闈炲嵆浜х┖妗嗗簱鍖烘棤娉曞叆搴擄紝鍒欎笅绾垮埌鐡跺澂鍗充骇婊℃缂撳瓨 4 5 鎺�+                    areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault();
+                    if (areaInfo != null)
+                    {
+                        var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && (a.N_ROW == 4 || a.N_ROW == 5) && a.N_CURRENT_NUM == 0).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
+                        if (locList.Count > 0)
+                        {
+                            foreach (var a in locList)
+                            {
+                                var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.S_ROW == a.S_ROW && a.S_LOCK_STATE == "鏃�).First();
+                                if (rowInfo != null && a.S_LOCK_STATE == "鏃�)
+                                {
+                                    result = a;
+                                    break;
+                                }
+
+                            }
+                        }
+                    }
+                    else
+                    {
+                        LogHelper.Info("鐡跺澂鍗充骇婊℃缂撳瓨鏈厤缃�);
+                    }
+                }
+                if(endAreaName == "缈绘枟鏈哄嵆浜х┖鎵樹笅绾匡紙鐡跺澂锛�)
+                {
+                    //鐡跺澂鍗充骇绌烘墭涓嬬嚎 濡傛灉鍗充骇绌烘搴撳尯鏃犳硶鍏ュ簱锛屽垯涓嬬嚎鍒扮摱鍧嵆浜ф弧妗嗙紦瀛�3 鎺�+                    areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault();
+                    if (areaInfo != null)
+                    {
+                        var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_ROW == 3 && a.N_CURRENT_NUM == 0).OrderBy(a => a.N_COL).First();
+                        if (locInfo != null )
+                        {
+                            var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == locInfo.S_AREA_CODE && b.S_ROW == locInfo.S_ROW && locInfo.S_LOCK_STATE == "鏃�).First();
+                            if (rowInfo != null && locInfo.S_LOCK_STATE == "鏃�)
+                            {
+                                result = locInfo;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        LogHelper.Info("鐡跺澂鍗充骇婊℃缂撳瓨鏈厤缃�);
+                    }
+                    if(result == null)
+                    {
+                        BCPEmptyOut(db, "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡跺澂锛�);
+                    }
+                }
+            }
             return result;
         }
 
@@ -2394,6 +2455,38 @@
             }
         }
 
+        /// <summary>
+        /// 璁$畻鐡跺澂闈炲嵆浜х┖鎵樿捣鐐�+        /// </summary>
+        /// <returns></returns>
+        internal static Location FJCKTLoc()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            Location result = null;
+            //鍦ㄧ摱鍧嵆浜ф弧妗�鏌ヨ 4 5涓ゆ帓鐨勭┖妗�+            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃缂撳瓨" && a.enable == 1).FirstOrDefault();
+            if(areaInfo != null)
+            {
+                var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && (a.N_ROW == 4 || a.N_ROW == 5) && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList();
+                if(locList.Count > 0)
+                {
+                    foreach (var a in locList)
+                    {
+                        var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.S_ROW == a.S_ROW && b.S_LOCK_STATE == "鏃�).First();
+                        if(rowInfo != null && a.S_LOCK_STATE == "鏃�)
+                        {
+                            result = a;
+                            break;
+                        }
+                    }
+                }
+            }
+            if(result == null)
+            {
+                result = TaskProcess.BCPInOrOut(db, false, "鐡跺澂搴撳尯", "");
+            }
 
+            return result;
+        }
     }
 }
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
index e6cc54a..ad228be 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
@@ -703,7 +703,7 @@
                 else
                 {
                     LogHelper.Info($"鍏ュ簱浠诲姟 璁$畻缁堢偣锛屼换鍔$被鍨嬶細{a.S_OP_DEF_NAME}");
-                    if (a.S_OP_DEF_NAME == "鎺ラ┏浣嶅叆搴� || a.S_OP_DEF_NAME == "鐡剁洊绌烘墭鍏ュ簱")
+                    if (a.S_OP_DEF_NAME == "鎺ラ┏浣嶅叆搴� || a.S_OP_DEF_NAME == "鐡剁洊绌烘墭鍏ュ簱" || a.S_OP_DEF_NAME == "鐡跺澂闈炴�浜х┖妗嗗叆搴�)
                     {
                         string itemCode = "";
                         var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_START_LOC).First();

--
Gitblit v1.9.1