From 8cb4f66c6cf5639280a27e0ef28360cd46842197 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期二, 17 六月 2025 17:34:06 +0800
Subject: [PATCH] 111

---
 HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs |  101 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 69 insertions(+), 32 deletions(-)

diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
index 788c9d7..0fb1a31 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -33,13 +33,13 @@
             {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
-                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_TYPE);
             }
             else
             {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
-                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_TYPE);
             }
 
         }
@@ -1436,22 +1436,53 @@
             return result;
         }
 
-        internal static Location getMStartLoc(SqlSugarClient db)
+        internal static Location getMStartLoc(SqlSugarClient db, string usingNow)
         {
             Location result = null;
-            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂娉ㄥ鏈虹┖鎵� && a.enable == 1).FirstOrDefault();
-            if(areaInfo != null)
+            if(usingNow == "Y")
             {
-                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First();
-                if(locInfo != null)
+                //鍗充骇鍗崇敤
+                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍗充骇绌烘" && a.enable == 1).FirstOrDefault();
+                if (areaInfo != null)
                 {
-                    result = locInfo;
+                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First();
+                    if (locInfo != null)
+                    {
+                        result = locInfo;
+                    }
+                }
+                else
+                {
+                    LogHelper.Info("鐡惰儦鍗充骇绌烘鏈厤缃�);
                 }
             }
             else
             {
-                LogHelper.Info("鐡跺澂娉ㄥ鏈虹┖鎵樻湭閰嶇疆");
+                //闈炲嵆浜у嵆鐢�+                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 > 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)
+                    {
+                        foreach(var a in locList)
+                        {
+                            int row = a.N_ROW;
+                            var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_ROW == row && b.S_LOCK_STATE.Contains("閿�)).First();
+                            if(lockInfo == null)
+                            {
+                                result = a;
+                                break;
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    LogHelper.Info("鐡惰儦闈炲嵆浜х┖妗嗘湭閰嶇疆");
+                }
             }
+            
             return result;
         }
 
@@ -1469,55 +1500,59 @@
             LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱被鍨嬶細{taskName}锛岀墿鏂欑紪鐮侊細{itemCode}");
             if (taskName.Contains("鍗充骇"))
             {
-                //鍗充骇鍗崇敤宸ュ崟锛屼笅绾垮埌鍗充骇鍗崇敤搴撳尯
-                //鍗充骇鍗崇敤搴撳尯鏈変袱涓嚎杈瑰簱锛屽鏋滃嵆浜у嵆鐢ˋ搴撳尯婊★紝鍒欐斁鍒板嵆浜у嵆鐢˙搴撳尯,鑻ュ嵆浜у嵆鐢ㄥ簱鍖洪兘婊★紝鍒欐斁鍒扮摱鍧簱鍖�-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇鍗崇敤A" && a.enable == 1).FirstOrDefault();
+                //娉ㄥ鏈烘�浜у嵆鐢ㄤ笅绾匡紝棣栧厛涓嬬嚎鍒板嵆浜у嵆鐢ㄦ弧妗嗙嚎杈癸紝婊$湺绾胯竟婊′簡锛屼笅鍒板嵆浜у嵆鐢ㄦ弧妗嗙紦瀛樺尯锛屾弧妗嗙紦瀛樺尯婊′簡锛屼笅鍒板叆搴撴帴椹冲爢鍙犱綅
+                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 < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).OrderBy(a => a.N_COL).First();
+                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).OrderBy(a => a.N_ROW).First();
                     if(locInfo != null)
                     {
                         result = locInfo;
                     }
-
                 }
                 else
                 {
-                    LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鍧嵆浜у嵆鐢ˋ 鏈厤缃�);
+                    LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鑳氬嵆浜ф弧妗�鏈厤缃�);
                 }
                 if (result == null)
                 {
-                    result = TaskProcess.BCPInOrOut(db, true, "鐡跺澂鍗充骇鍗崇敤B", itemCode);
+                    result = TaskProcess.BCPInOrOut(db, true, "鐡惰儦鍗充骇婊℃缂撳瓨鍖�, itemCode);
                 }
                 if(result == null)
                 {
-                    result = TaskProcess.BCPInOrOut(db, true, "鐡跺澂搴撳尯", itemCode);
+                    //result = TaskProcess.BCPInOrOut(db, true, "鐡跺澂搴撳尯", itemCode);
+                    result = getJBLoc(db, result);
                 }
 
             }
             else
             {
-                //闈炲嵆浜у嵆鐢ㄥ伐鍗曪紝涓嬬嚎鍒伴潪鍗充骇鍗崇敤搴撳尯
-                //闈炲嵆浜у嵆鐢ㄥ簱鍖哄彧鏈変竴涓嚎杈瑰簱锛屽鏋滅嚎杈瑰簱婊★紝鍒欐斁鍒扮摱鍧簱鍖�-                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 < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).OrderBy(a => a.N_COL).First();
-                    if (locInfo != null)
-                    {
-                        result = locInfo;
-                    }
+                result = getJBLoc(db, result);
+            }
+            return result;
+        }
 
+        private static Location getJBLoc(SqlSugarClient db, Location result)
+        {
+            //娉ㄥ鏈洪潪鍗充骇鍗崇敤涓嬬嚎锛屼笅鍒板叆搴撴帴椹冲爢鍙犱綅
+            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 < a.N_CAPACITY && a.S_LOCK_STATE == "鏃�).OrderBy(a => a.N_COL).First();
+                if (locInfo != null)
+                {
+                    result = locInfo;
                 }
                 else
                 {
-                    LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鍧潪鍗充骇鍗崇敤 鏈厤缃�);
-                }
-                if (result == null)
-                {
-                    result = TaskProcess.BCPInOrOut(db, true, "鐡跺澂搴撳尯", itemCode);
+                    LogHelper.Info("鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鍧叆搴撴帴椹充綅鏆傛椂鏈煡璇㈠埌鍙敤璐т綅");
                 }
             }
+            else
+            {
+                LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鑳氬叆搴撴帴椹�鏈厤缃�);
+            }
+
             return result;
         }
 
@@ -2472,5 +2507,7 @@
                 }
             }
         }
+
+
     }
 }

--
Gitblit v1.9.1