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/DeviceProcess.cs                       |    2 
 HH.WCS.Mobox3.NongFuLinZhi/Program.cs                                     |    2 
 HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs                          |   17 ++
 HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs                                |   94 ++++++++++++++-
 HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs                         |  101 +++++++++++-----
 HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln                         |   22 +++
 HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json |   65 ++++++++++
 HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs                               |   24 ---
 HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs                                |    7 +
 9 files changed, 266 insertions(+), 68 deletions(-)

diff --git a/HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json b/HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json
new file mode 100644
index 0000000..517e611
--- /dev/null
+++ b/HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json
@@ -0,0 +1,65 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u519C\u592B\u6797\u829D\\HH.WCS.Mobox3.NongFuLinZhi\\",
+  "Documents": [],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+            }
+          ]
+        },
+        {
+          "DockedWidth": 22,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:1:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln b/HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln
new file mode 100644
index 0000000..32cb64e
--- /dev/null
+++ b/HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln
@@ -0,0 +1,22 @@
+锘�+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35707.178 d17.12
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.NFLZ", "HH.WCS.Mobox3.NFLZ.csproj", "{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
index 7347e29..52b15a2 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/Program.cs
@@ -97,7 +97,7 @@
                 //娣诲姞鑷畾涔夌嚎绋� 
                 //tasks.Add(GetTask(Monitor.CheckDevice));
-                tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //鐡剁洊杞繍
+                tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //鎺ラ┏浣嶅叆搴�                 //tasks.Add(GetTask(Monitor.BCPWorkSurveillance)); //鍗婃垚鍝佸伐鍗曠洃鎺� 
                 Task.WaitAll(tasks.ToArray());
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
index 087b8ad..81846c5 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -4,6 +4,7 @@
 using HH.WCS.Mobox3.NFLZ.wms;
 using System;
 using System.Collections.Generic;
+using System.Configuration;
 using System.Linq;
 using System.Text;
 using System.Threading;
@@ -46,33 +47,81 @@
         }
 
         /// <summary>
-        /// 鐡剁洊杞繍
+        /// 杞繍浠诲姟
         /// </summary>
         internal static void BottleBlankTransportation()
         {
             var db = new SqlHelper<object>().GetInstance();
-            var jbwInfo = Settings.areaInfos.Where(a => a.areaName == "鐡剁洊鍏ュ簱鎺ラ┏浣� && a.enable == 1).FirstOrDefault();
-            if (jbwInfo != null)
+            #region 鐡剁洊婊℃墭鍏ュ簱
+            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 == jbwInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "鏃�).Includes(a => a.LocCntrRel).First();
+                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)
                 {
-                    LogHelper.Info($"銆愮摱鐩栬浆杩愩�鐡跺澂鎺ラ┏浣嶆煡璇㈠埌闇�叆搴撶殑鐡跺澂锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}");
+                    LogHelper.Info($"銆愮摱鐩栨弧鎵樿浆杩愩�鐡跺澂鎺ラ┏浣嶆煡璇㈠埌闇�叆搴撶殑鐡跺澂锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}");
                     if (locInfo.LocCntrRel != null)
                     {
                         //鍒涘缓浣滀笟
-                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鐡剁洊杞繍", locInfo.LocCntrRel.S_CNTR_CODE, "鐡剁洊");
+                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, locInfo.LocCntrRel.S_CNTR_CODE, "鐡剁洊");
                     }
                     else
                     {
-                        LogHelper.Info($"銆愮摱鐩栬浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}");
+                        LogHelper.Info($"銆愮摱鐩栨弧鎵樿浆杩愩�褰撳墠璐т綅鏈粦瀹氭墭鐩樼爜锛岃揣浣嶇紪鐮侊細{locInfo.S_CODE}");
                     }
                 }
             }
             else
             {
-                LogHelper.Info("銆愮摱鐩栬浆杩愩�鐡跺澂鎺ラ┏浣嶆湭閰嶇疆");
+                LogHelper.Info("銆愮摱鐩栨弧鎵樿浆杩愩�鐡剁洊鍏ュ簱鎺ラ┏ 鏈厤缃�);
             }
+            #endregion
+
+            #region 鐡跺澂绌烘墭鍏ュ簱
+            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 == "鏃�).Includes(a => a.LocCntrRel).First();
+                if(locInfo != null && locInfo.LocCntrRel != null)
+                {
+                    //鍒涘缓浣滀笟
+                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鐡剁洊绌烘墭鍏ュ簱", locInfo.LocCntrRel.S_CNTR_CODE, "鐡剁洊");
+                }
+            }
+            else
+            {
+                LogHelper.Info("銆愮摱鐩栫┖鎵樿浆杩愩�鐡剁洊闈炲嵆浜х┖妗�鏈厤缃�);
+            }
+            #endregion
+
+            #region 鐡跺澂婊℃墭鍏ュ簱
+            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 == "鏃�).First();
+                if (locInfo != null)
+                {
+                    string cntr = "";
+                    var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList();
+                    if (cntrList.Count > 0)
+                    {
+                        foreach (var a in cntrList)
+                        {
+                            cntr = cntr + a.S_CNTR_CODE + ",";
+                        }
+                    }
+                    cntr = cntr.TrimEnd(',');
+                    //鍒涘缓浣滀笟
+                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntr, "鐡跺澂");
+                }
+            }
+            else
+            {
+                LogHelper.Info("銆愮摱鍧弧鎵樿浆杩愩�鐡惰儦鍏ュ簱鎺ラ┏ 鏈厤缃�);
+            }
+
+            #endregion
+
         }
 
         /// <summary>
@@ -130,6 +179,33 @@
 
         }
 
-
+        internal static void JBDEIN()
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            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 == "鏃�).First();
+                if(locInfo != null)
+                {
+                    string cntr = "";
+                    var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList();
+                    if(cntrList.Count > 0)
+                    {
+                        foreach(var a in cntrList)
+                        {
+                            cntr = cntr + a.S_CNTR_CODE + ",";
+                        }
+                    }
+                    cntr = cntr.TrimEnd(',');
+                    //鍒涘缓浣滀笟
+                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "鍏ュ簱", "鎺ラ┏浣嶅叆搴�, cntr, "鐡跺澂");
+                }
+            }
+            else
+            {
+                LogHelper.Info("鐡惰儦鍏ュ簱鎺ラ┏ 鏈厤缃�);
+            }
+        }
     }
 }
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs b/HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
index 0938510..0dff435 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
@@ -63,6 +63,13 @@
                                 LocationHelper.LockLoc(end.S_CODE, 1);
                                 var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == a.S_START_LOC).First();
                                 var endinfo = db.Queryable<Location>().Where(it => it.S_CODE == end.S_CODE).First();
+                                int startLayer = startinfo.N_CURRENT_NUM;
+                                int endlayer = endinfo.N_CURRENT_NUM + 1;
+                                if (a.S_OP_DEF_NAME == "鎺ラ┏浣嶅叆搴� || a.S_OP_DEF_NAME == "鐡剁洊绌烘墭鍏ュ簱")
+                                {
+                                    startLayer = 1;
+                                    endlayer = 1;
+                                }
                                 var wcsTask = new WCSTask
                                 {
                                     S_OP_CODE = a.S_CODE,
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
index 95a01fb..be99608 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
@@ -841,7 +841,7 @@
                                 taskType = $"娉ㄥ搴撳瓨绌烘墭涓婄嚎({machine})";
                             }
                             
-                            Location startLoca = TaskProcess.getMStartLoc(db);
+                            Location startLoca = TaskProcess.getMStartLoc(db,workInfo.S_UsingNow);
                             if (startLoca != null)
                             {
                                 //鍒涘缓浣滀笟
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 @@
                 }
             }
         }
+
+
     }
 }
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs b/HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs
index e88ef47..805e93e 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs
@@ -323,7 +323,7 @@
         /// <param name="loc"></param>
         /// <param name="cntrs"></param>
         /// <returns></returns>
-        public static bool UnBindingLoc(string loc, List<string> cntrs)
+        public static bool UnBindingLoc(string loc, List<string> cntrs, string type)
         {
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
@@ -338,6 +338,12 @@
                 {
                     location.N_CURRENT_NUM = 0;
                 }
+
+                if (type == "鎺ラ┏浣嶅叆搴� || type == "鐡剁洊绌烘墭鍏ュ簱")
+                {
+                    location.N_CURRENT_NUM = 0;
+                }
+
                 location.S_LOCK_STATE = "鏃�;
                 location.N_LOCK_STATE = 0;
                 db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
@@ -356,7 +362,7 @@
         /// <param name="loc"></param>
         /// <param name="cntrs"></param>
         /// <returns></returns>
-        public static bool BindingLoc(string loc, List<string> cntrs)
+        public static bool BindingLoc(string loc, List<string> cntrs, string type)
         {
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
@@ -376,9 +382,10 @@
                     }
                 });
                 location.N_CURRENT_NUM = lcrList.Count + count;
-
-
-
+                if(type == "鎺ラ┏浣嶅叆搴� || type == "鐡剁洊绌烘墭鍏ュ簱")
+                {
+                    location.N_CURRENT_NUM = location.N_CAPACITY;
+                }
 
                 location.N_LOCK_STATE = 0;
                 location.S_LOCK_STATE = "鏃�;
diff --git a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
index 842580e..fb3b590 100644
--- a/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
@@ -699,39 +699,23 @@
                     LogHelper.Info($"浣滀笟缁堢偣涓嶄负鎺ラ┏浣�鏌ユ壘搴撳尯{a.S_END_AREA} 鍙敤璐т綅");
                     
                     //鍏朵粬搴撳尯
-                    //var endlist = db.Queryable<Location>()
-                    //.Where(it => it.S_AREA_CODE == a.S_END_AREA && it.N_CURRENT_NUM < it.N_CAPACITY)
-                    //.OrderBy(it => it.N_COL)
-                    //.PartitionBy(it => it.N_ROW)
-                    //.Take(1)
-                    //.ToList();
-                    //LogHelper.Info($"绗﹀悎鏉′欢鐨勬暟閲弡endlist.Count}");
-                    //foreach (var item in endlist)
-                    //{
-                    //    var lockinfo = db.Queryable<Location>().Where(it => it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW).First();
-                    //    if (lockinfo == null)
-                    //    {
-                    //        result = item;
-                    //        a.S_END_LOC = item.S_CODE;
-                    //        break;
-                    //    }
-                    //    else LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撳墠鎺掍笉鍙娇鐢�);
-                    //}
                 }
                 else
                 {
                     LogHelper.Info($"鍏ュ簱浠诲姟 璁$畻缁堢偣锛屼换鍔$被鍨嬶細{a.S_OP_DEF_NAME}");
-                    if (a.S_OP_DEF_NAME == "鐡剁洊杞繍")
+                    if (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();
                         if(cntrInfo != null)
                         {
                             var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First();
                             if(itemInfo != null)
                             {
-                                result = TaskProcess.BCPInOrOut(db, true, a.S_NOTE + "搴撳尯",itemInfo.S_ITEM_CODE );
+                                itemCode = itemInfo.S_ITEM_CODE;
                             }
                         }
+                        result = TaskProcess.BCPInOrOut(db, true, a.S_NOTE + "搴撳尯", itemCode);
                     }
                     if (a.S_OP_DEF_NAME.Contains("娉ㄥ") && a.S_OP_DEF_NAME.Contains("婊℃墭涓嬬嚎锛堢摱鍧級"))
                     {

--
Gitblit v1.9.1