From 1a0c5192cd1269a1aa2c0af94fc2bcb5fcc9a056 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期四, 26 六月 2025 17:16:11 +0800
Subject: [PATCH] 111

---
 HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs |  294 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 158 insertions(+), 136 deletions(-)

diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
index 84f4f6a..8bf9e63 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -684,7 +684,7 @@
             if (mst.S_TYPE.Contains("婊℃墭涓嬬嚎"))
             {
                 LogHelper.Info($"绌烘墭浠诲姟鐢熸垚澶勭悊锛屼换鍔$被鍨嬶細{mst.S_TYPE}");
-                string areaName = mst.S_TYPE.Contains("搴撳瓨") ? "鐡惰儦闈炲嵆浜х┖妗� : "鐡惰儦鍗充骇绌烘";
+                string areaName = mst.S_TYPE.Contains("搴撳瓨") ? "鐡跺澂闈炲嵆浜х┖妗� : "鐡跺澂鍗充骇绌烘";
                 var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).First();
                 if(areaInfo != null)
                 {
@@ -729,14 +729,14 @@
                 {
                     if (bcpW.S_UsingNow == "Y")
                     {
-                        LogHelper.Info($"鐡惰儦鍗充骇婊℃ 鏌ユ壘");
-                        startArea = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍗充骇婊℃" && a.enable == 1).FirstOrDefault().areaCode;
+                        LogHelper.Info($"鐡跺澂鍗充骇婊℃ 鏌ユ壘");
+                        startArea = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃" && a.enable == 1).FirstOrDefault().areaCode;
                         startLoca = DeviceProcess.getFDSXArea(db, bcpW, startArea);
                     }
                     else
                     {
-                        LogHelper.Info($"鐡惰儦缈绘枟鏈洪潪鍗充骇婊℃ 鏌ユ壘");
-                        string areaName = bcpW.S_PLineNo.Split('-')[1].Substring(0, 1) + "鍙风摱鑳氱炕鏂楁満闈炲嵆浜ф弧妗�;
+                        LogHelper.Info($"鐡跺澂缈绘枟鏈洪潪鍗充骇婊℃ 鏌ユ壘");
+                        string areaName = bcpW.S_PLineNo.Split('-')[1].Substring(0, 1) + "鍙风摱鍧炕鏂楁満闈炲嵆浜ф弧妗�;
                         startArea = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault().areaCode;
                         startLoca = DeviceProcess.getFDSXArea(db, bcpW, startArea);
                     }
@@ -1109,8 +1109,13 @@
                         }
                         if (mst.N_END_LAYER > 1)
                         {
-                            Extend2 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE;
+                            Extend2 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_END_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE;
                         }
+                        if(mst.S_TYPE == "鐡跺澂闈炴�浜цˉ婊℃" || mst.S_TYPE == "鐡剁洊闈炴�浜цˉ婊℃" || mst.S_TYPE == "鐡跺澂闈炴�浜цˉ绌烘" || mst.S_TYPE == "鐡剁洊闈炴�浜цˉ绌烘" || mst.S_TYPE == "娉ㄥ鍗充骇婊℃墭涓嬬嚎锛堢摱鍧級")
+                        {
+                            Extend2 = Settings.dXSites.Where(it => it.loc == mst.S_END_LOC).First().site.ToString();
+                        }
+
                         Extend3 = "0";
                         // 鑾峰彇 浠诲姟鍙傛暟4 DATA 鏁版嵁
                         string startLayerValue = Convert.ToString(startLayer, 16).ToUpper();
@@ -1285,127 +1290,136 @@
             if (action)
             {
                 //鐡剁洊搴撳尯锛屼袱灞傚瘑闆嗗瀷搴撳尯  绌烘弧鍦ㄥ悓涓�釜搴撳尯锛岄渶瑕佸尯鍒嗕笉鍚屾帓
-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).First();
-                if (areaInfo != null)
+                var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderByDescending(a => a.pri).ToList();
+                if (areaInfo.Count > 0)
                 {
-                    //搴撳尯璐т綅绾﹀畾锛氬垪鍙疯秺灏忚秺闈犻噷
-                    LogHelper.Info($"鍏ュ簱绠楁硶01:area锛歿areaInfo.areaCode},itemCode:{itemCode}");
-                    try
+                    foreach(var it in areaInfo)
                     {
-                        if (result == null)
+                        //搴撳尯璐т綅绾﹀畾锛氬垪鍙疯秺灏忚秺闈犻噷
+                        LogHelper.Info($"鍏ュ簱绠楁硶01:area锛歿it.areaCode},itemCode:{itemCode}");
+                        try
                         {
-                            var locInfo = 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)
-                                .PartitionBy(a => a.N_ROW).Take(1)
-                                .ToList();
-                            if (locInfo.Count > 0)
+                            if (result == null)
                             {
-                                LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}");
-                                foreach (var a in locInfo)
+                                var locInfo = 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)
+                                    .PartitionBy(a => a.N_ROW).Take(1)
+                                    .ToList();
+                                if (locInfo.Count > 0)
                                 {
-                                    LogHelper.Info($"鍏ュ簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}锛屽綋鍓嶆暟閲忥細{a.N_CURRENT_NUM}");
-                                    //鍘绘帀褰撳墠璐т綅鏈夐攣锛屾垨鑰呬负绌烘墭鐨勮揣浣�-                                    if (a.S_LOCK_STATE == "鏃�)
+                                    LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}");
+                                    foreach (var a in locInfo)
                                     {
-                                        string endItemCode = "";
-                                        var endCntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First();
-                                        if (endCntrInfo != null)
+                                        LogHelper.Info($"鍏ュ簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}锛屽綋鍓嶆暟閲忥細{a.N_CURRENT_NUM}");
+                                        //鍘绘帀褰撳墠璐т綅鏈夐攣锛屾垨鑰呬负绌烘墭鐨勮揣浣�+                                        if (a.S_LOCK_STATE == "鏃�)
                                         {
-                                            var endItemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == endCntrInfo.S_CNTR_CODE).First();
-                                            if (endItemInfo != null)
+                                            string endItemCode = "";
+                                            var endCntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First();
+                                            if (endCntrInfo != null)
                                             {
-                                                endItemCode = endItemInfo.S_ITEM_CODE;
-                                            }
-                                        }
-                                        else
-                                        {
-                                            LogHelper.Info($"缁堢偣璐т綅鏈粦瀹氭墭鐩樹俊鎭�);
-                                            continue;
-                                        }
-                                        LogHelper.Info($"鍏ュ簱绠楁硶04:鏌ヨ鍒板綋鍓嶈揣浣嶇粦瀹氱殑鐗╂枡缂栫爜涓�{endItemCode}");
-                                        //鍒ゆ柇鏄惁鍜屽綋鍓嶈揣浣嶇殑鐗╂枡缂栫爜鐩稿悓
-                                        if (itemCode == endItemCode)
-                                        {
-                                            //鏌ヨ褰撳墠鎺掓槸鍚﹀彲鍏ワ紙鍒ゆ柇鏄槸鍚︽湁鍏ュ簱閿佸拰鍑哄簱閿侊級
-                                            var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
-                                            if (lockInfo == null)
-                                            {
-                                                //褰撳墠鎺掓棤浠诲姟
-                                                if (a.N_CURRENT_NUM < a.N_CAPACITY) result = a;
-                                                else
+                                                var endItemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == endCntrInfo.S_CNTR_CODE).First();
+                                                if (endItemInfo != null)
                                                 {
-                                                    //鏌ヨ鍚庨潰褰撳墠璐т綅鍚庝竴涓�-                                                    result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW > a.N_ROW && b.S_LOCK_STATE == "鏃�).OrderBy(b => b.N_COL).First();
-                                                }
-                                                if (result != null)
-                                                {
-                                                    break;
+                                                    endItemCode = endItemInfo.S_ITEM_CODE;
                                                 }
                                             }
                                             else
                                             {
-                                                LogHelper.Info($"鍏ュ簱绠楁硶05:鏌ヨ鍒板綋鍓嶆帓鏈夐攣锛屾帓鍙凤細{a.N_ROW}");
-
+                                                LogHelper.Info($"缁堢偣璐т綅鏈粦瀹氭墭鐩樹俊鎭�);
+                                                continue;
                                             }
-                                        }
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                LogHelper.Info($"鍏ュ簱绠楁硶02:鏈煡璇㈠埌鍙叆璐т綅");
-                            }
-                            if (result == null)
-                            {
-                                //todo 杩橀渶瑕佸垽鏂攣
-                                #region 鏌ユ壘鎵�湁鏁伴噺鏄┖鐨勬帓
-                                LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅銆�, "WMSAlgoRithm");
-                                //2.0 绠�寲鏌ヨ鍙煡姣忎竴鎺掔涓�垪
-                                var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).PartitionBy(a => a.N_ROW).ToList().Where(a => a.N_CURRENT_NUM == 0).ToList();
-                                //2.1 閫変竴涓┖鎺�-                                if (list.Count > 0)
-                                {
-                                    LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅鏁伴噺涓猴細{list.Count}銆�, "WMSAlgoRithm");
-                                    for (int i = 0; i < list.Count; i++)
-                                    {
-                                        LogHelper.Info($"鍏ュ簱绠楁硶07:鑾峰彇绌烘帓璐т綅锛氳揣浣嶇紪鐮侊細{list[i].S_CODE.Trim()},褰撳墠鏁伴噺锛歿list[i].N_CURRENT_NUM},鎺掑彿锛歿list[i].N_ROW},搴撳尯缂栫爜锛歿list[i].S_AREA_CODE.Trim()}", "WMSAlgoRithm");
-                                        if (list[i].S_LOCK_STATE.Trim().Contains("鏃�))
-                                        {
-                                            //浜屾鏍¢獙褰撳墠鎺掓墍鏈夎揣浣嶉兘鏄┖鐨勶紝闃叉绯荤粺鏁版嵁閿欎贡
-                                            int row = list[i].N_ROW;
-                                            string areaCode = list[i].S_AREA_CODE.Trim();
-                                            var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaCode && b.N_ROW == row && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
-                                            if (lockInfo == null)
+                                            LogHelper.Info($"鍏ュ簱绠楁硶04:鏌ヨ鍒板綋鍓嶈揣浣嶇粦瀹氱殑鐗╂枡缂栫爜涓�{endItemCode}");
+                                            //鍒ゆ柇鏄惁鍜屽綋鍓嶈揣浣嶇殑鐗╂枡缂栫爜鐩稿悓
+                                            if (itemCode == endItemCode)
                                             {
-                                                var locInfo1 = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaCode && a.N_ROW == row).Select(a => new { sum = SqlFunc.AggregateSum(a.N_CURRENT_NUM) }).First();
-                                                if (locInfo1 != null)
+                                                //鏌ヨ褰撳墠鎺掓槸鍚﹀彲鍏ワ紙鍒ゆ柇鏄槸鍚︽湁鍏ュ簱閿佸拰鍑哄簱閿侊級
+                                                var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
+                                                if (lockInfo == null)
                                                 {
-                                                    LogHelper.Info($"{locInfo1.sum},row:{row}");
-                                                    if (locInfo1.sum == 0)
+                                                    //褰撳墠鎺掓棤浠诲姟
+                                                    if (a.N_CURRENT_NUM < a.N_CAPACITY) result = a;
+                                                    else
                                                     {
-                                                        //绌烘帓
-                                                        result = list[i];
+                                                        //鏌ヨ鍚庨潰褰撳墠璐т綅鍚庝竴涓�+                                                        result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW > a.N_ROW && b.S_LOCK_STATE == "鏃�).OrderBy(b => b.N_COL).First();
+                                                    }
+                                                    if (result != null)
+                                                    {
                                                         break;
                                                     }
                                                 }
-                                                else LogHelper.Info("鏈壘鍒拌鎺�);
-                                            }
-                                            else
-                                            {
-                                                LogHelper.Info("璇ユ帓鏈夐攣");
+                                                else
+                                                {
+                                                    LogHelper.Info($"鍏ュ簱绠楁硶05:鏌ヨ鍒板綋鍓嶆帓鏈夐攣锛屾帓鍙凤細{a.N_ROW}");
+
+                                                }
                                             }
                                         }
                                     }
                                 }
-                                else LogHelper.Info($"鏈幏鍙栧埌绌烘帓锛屽簱鍖虹紪鐮侊細{areaInfo.areaCode}");
-                                #endregion
+                                else
+                                {
+                                    LogHelper.Info($"鍏ュ簱绠楁硶02:鏈煡璇㈠埌鍙叆璐т綅");
+                                }
+                                if (result == null)
+                                {
+                                    //todo 杩橀渶瑕佸垽鏂攣
+                                    #region 鏌ユ壘鎵�湁鏁伴噺鏄┖鐨勬帓
+                                    LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅銆�, "WMSAlgoRithm");
+                                    //2.0 绠�寲鏌ヨ鍙煡姣忎竴鎺掔涓�垪
+                                    var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).PartitionBy(a => a.N_ROW).ToList().Where(a => a.N_CURRENT_NUM == 0).ToList();
+                                    //2.1 閫変竴涓┖鎺�+                                    if (list.Count > 0)
+                                    {
+                                        LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅鏁伴噺涓猴細{list.Count}銆�, "WMSAlgoRithm");
+                                        for (int i = 0; i < list.Count; i++)
+                                        {
+                                            LogHelper.Info($"鍏ュ簱绠楁硶07:鑾峰彇绌烘帓璐т綅锛氳揣浣嶇紪鐮侊細{list[i].S_CODE.Trim()},褰撳墠鏁伴噺锛歿list[i].N_CURRENT_NUM},鎺掑彿锛歿list[i].N_ROW},搴撳尯缂栫爜锛歿list[i].S_AREA_CODE.Trim()}", "WMSAlgoRithm");
+                                            if (list[i].S_LOCK_STATE.Trim().Contains("鏃�))
+                                            {
+                                                //浜屾鏍¢獙褰撳墠鎺掓墍鏈夎揣浣嶉兘鏄┖鐨勶紝闃叉绯荤粺鏁版嵁閿欎贡
+                                                int row = list[i].N_ROW;
+                                                string areaCode = list[i].S_AREA_CODE.Trim();
+                                                var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaCode && b.N_ROW == row && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
+                                                if (lockInfo == null)
+                                                {
+                                                    var locInfo1 = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaCode && a.N_ROW == row).Select(a => new { sum = SqlFunc.AggregateSum(a.N_CURRENT_NUM) }).First();
+                                                    if (locInfo1 != null)
+                                                    {
+                                                        LogHelper.Info($"{locInfo1.sum},row:{row}");
+                                                        if (locInfo1.sum == 0)
+                                                        {
+                                                            //绌烘帓
+                                                            result = list[i];
+                                                            break;
+                                                        }
+                                                    }
+                                                    else LogHelper.Info("鏈壘鍒拌鎺�);
+                                                }
+                                                else
+                                                {
+                                                    LogHelper.Info("璇ユ帓鏈夐攣");
+                                                }
+                                            }
+                                        }
+                                    }
+                                    else LogHelper.Info($"鏈幏鍙栧埌绌烘帓锛屽簱鍖虹紪鐮侊細{it.areaCode}");
+                                    #endregion
+                                }
+
+                                if(result != null)
+                                {
+                                    break;
+                                }
                             }
                         }
+                        catch (Exception ex)
+                        {
+                            Console.WriteLine("GetLocationIn:" + ex.Message + ex.StackTrace);
+                            LogHelper.Error("GetLocationIn:" + ex.Message, ex);
+                        }
                     }
-                    catch (Exception ex)
-                    {
-                        Console.WriteLine("GetLocationIn:" + ex.Message + ex.StackTrace);
-                        LogHelper.Error("GetLocationIn:" + ex.Message, ex);
-                    }
+                    
                 }
                 else
                 {
@@ -1414,47 +1428,55 @@
             }
             else
             {
-                LogHelper.Info($"鍑哄簱绠楁硶01:area锛歿areaName},itemCode:{itemCode}");
-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault();
-                if(areaInfo != null)
+                var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderByDescending(a => a.pri).ToList();
+                if(areaInfo.Count > 0)
                 {
-                    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 it in areaInfo)
                     {
-                        LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}");
-                        foreach (var a in locList)
+                        LogHelper.Info($"鍑哄簱绠楁硶01:area锛歿it.areaName},itemCode:{itemCode}");
+                        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)
                         {
-                            LogHelper.Info($"鍑哄簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}");
-                            if (a.S_LOCK_STATE == "鏃�)
+                            LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}");
+                            foreach (var a in locList)
                             {
-                                var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First();
-                                if(cntrInfo != null)
+                                LogHelper.Info($"鍑哄簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}");
+                                if (a.S_LOCK_STATE == "鏃�)
                                 {
-                                    LogHelper.Info($"鍑哄簱绠楁硶04:褰撳墠璐т綅缁戝畾鐨勬墭鐩樼爜涓猴細{cntrInfo.S_CNTR_CODE}");
-                                    string endItemCode = "";
-                                    var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First();
-                                    if(itemInfo != null && itemInfo.S_ITEM_CODE == itemCode)
+                                    var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First();
+                                    if (cntrInfo != null)
                                     {
-                                        endItemCode = itemInfo.S_ITEM_CODE;
-                                    }
-                                    if(endItemCode == itemCode)
-                                    {
-                                        //鍒ゆ柇褰撳墠鎺掓湁鏃犻攣
-                                        var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
-                                        if (lockInfo == null)
+                                        LogHelper.Info($"鍑哄簱绠楁硶04:褰撳墠璐т綅缁戝畾鐨勬墭鐩樼爜涓猴細{cntrInfo.S_CNTR_CODE}");
+                                        string endItemCode = "";
+                                        var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First();
+                                        if (itemInfo != null && itemInfo.S_ITEM_CODE == itemCode)
                                         {
-                                            result = a;
-                                            break;
+                                            endItemCode = itemInfo.S_ITEM_CODE;
                                         }
-                                        else
+                                        if (endItemCode == itemCode)
                                         {
-                                            LogHelper.Info($"鍑哄簱绠楁硶05:褰撳墠鎺掓湁閿侊紝璐т綅鍙凤細{lockInfo.S_CODE}");
+                                            //鍒ゆ柇褰撳墠鎺掓湁鏃犻攣
+                                            var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == it.areaCode && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First();
+                                            if (lockInfo == null)
+                                            {
+                                                result = a;
+                                                break;
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info($"鍑哄簱绠楁硶05:褰撳墠鎺掓湁閿侊紝璐т綅鍙凤細{lockInfo.S_CODE}");
+                                            }
                                         }
                                     }
                                 }
                             }
                         }
+                        if(result != null)
+                        {
+                            break;
+                        }
                     }
+                    
                 }
                 else
                 {
@@ -1470,7 +1492,7 @@
             if(usingNow == "Y")
             {
                 //鍗充骇鍗崇敤
-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍗充骇绌烘" && 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 > 0 && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First();
@@ -1481,13 +1503,13 @@
                 }
                 else
                 {
-                    LogHelper.Info("鐡惰儦鍗充骇绌烘鏈厤缃�);
+                    LogHelper.Info("鐡跺澂鍗充骇绌烘鏈厤缃�);
                 }
             }
             else
             {
                 //闈炲嵆浜у嵆鐢�-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦闈炲嵆浜х┖妗� && a.enable == 1).FirstOrDefault();
+                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();
@@ -1507,7 +1529,7 @@
                 }
                 else
                 {
-                    LogHelper.Info("鐡惰儦闈炲嵆浜х┖妗嗘湭閰嶇疆");
+                    LogHelper.Info("鐡跺澂闈炲嵆浜х┖妗嗘湭閰嶇疆");
                 }
             }
             
@@ -1529,7 +1551,7 @@
             if (taskName.Contains("鍗充骇"))
             {
                 //娉ㄥ鏈烘�浜у嵆鐢ㄤ笅绾匡紝棣栧厛涓嬬嚎鍒板嵆浜у嵆鐢ㄦ弧妗嗙嚎杈癸紝婊$湺绾胯竟婊′簡锛屼笅鍒板嵆浜у嵆鐢ㄦ弧妗嗙紦瀛樺尯锛屾弧妗嗙紦瀛樺尯婊′簡锛屼笅鍒板叆搴撴帴椹冲爢鍙犱綅
-                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍗充骇婊℃" && 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_ROW).First();
@@ -1540,11 +1562,11 @@
                 }
                 else
                 {
-                    LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鑳氬嵆浜ф弧妗�鏈厤缃�);
+                    LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鍧嵆浜ф弧妗�鏈厤缃�);
                 }
                 if (result == null)
                 {
-                    result = TaskProcess.BCPInOrOut(db, true, "鐡惰儦鍗充骇婊℃缂撳瓨", itemCode);
+                    result = TaskProcess.BCPInOrOut(db, true, "鐡跺澂鍗充骇婊℃缂撳瓨", itemCode);
                 }
                 if(result == null)
                 {
@@ -1561,7 +1583,7 @@
         private static Location getJBLoc(SqlSugarClient db, Location result)
         {
             //娉ㄥ鏈洪潪鍗充骇鍗崇敤涓嬬嚎锛屼笅鍒板叆搴撴帴椹冲爢鍙犱綅
-            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "鐡惰儦鍏ュ簱鎺ラ┏" && 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();
@@ -1576,7 +1598,7 @@
             }
             else
             {
-                LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鑳氬叆搴撴帴椹�鏈厤缃�);
+                LogHelper.Info($"鐡跺澂娉ㄥ婊℃墭涓嬬嚎锛氱摱鍧叆搴撴帴椹�鏈厤缃�);
             }
 
             return result;
@@ -1593,7 +1615,7 @@
         {
             Location result = null;
 
-            string endAreaName = taskName.Contains("鐡剁洊") ? "鐡剁洊闈炲嵆浜х┖妗� : taskName.Contains("搴撳瓨") ? "鐡惰儦闈炲嵆浜х┖妗� : "鐡惰儦鍗充骇绌烘";
+            string endAreaName = taskName.Contains("鐡剁洊") ? "鐡剁洊闈炲嵆浜х┖妗� : taskName.Contains("搴撳瓨") ? "鐡跺澂闈炲嵆浜х┖妗� : "鐡跺澂鍗充骇绌烘";
             var areaInfo = Settings.areaInfos.Where(a => a.areaName == endAreaName && a.enable == 1).FirstOrDefault();
             if (areaInfo != null)
             {

--
Gitblit v1.9.1