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/process/TaskProcess.cs |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
index 8bf9e63..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;
         }
 
@@ -1865,7 +1926,23 @@
                     {
                         var cir = new LocCntrRel { S_LOC_CODE = loc, S_CNTR_CODE = cntrCode, S_SRC = deviceName };
                         if (db.Insertable<LocCntrRel>(cir).ExecuteCommand() > 0) LogHelper.Info($"璐т綅瀹瑰櫒琛ㄧ粦瀹氭垚鍔燂紝璐т綅鍙凤細{loc}锛屾墭鐩樺彿锛歿cntrCode}");
-                        BindCntrItem(cntrCode, itemCode, batchNo, itemlayer);
+                        var Con = db.Queryable<Container>().Where(a => a.S_CODE == cntrCode).First();
+                        if(Con == null)
+                        {
+                            if(db.Insertable<Container>(new Container
+                            {
+                                S_CODE = cntrCode,
+                                N_TYPE = 1,
+                                N_DETAIL_COUNT = 1
+                            }).ExecuteCommand() > 0)
+                            {
+                                LogHelper.Info($"瀹瑰櫒琛ㄧ粦瀹氭垚鍔燂紝鎵樼洏鍙凤細{cntrCode}");
+                            }
+                        }
+                        if (!string.IsNullOrEmpty(itemCode))
+                        {
+                            BindCntrItem(cntrCode, itemCode, batchNo, itemlayer);
+                        }
                     }
                 }
             });
@@ -2378,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;
+        }
     }
 }

--
Gitblit v1.9.1