From c321182cdcbc7d6489d969810f0610e48ac2b5ed Mon Sep 17 00:00:00 2001
From: 杨张扬 <634643841@qq.com>
Date: 星期三, 23 七月 2025 17:40:22 +0800
Subject: [PATCH] 双钱-需求变更:增加了两个搬送流程,增加了两个库区,主要是修改对空托上线脱皮机的逻辑

---
 models/TN_Location.cs  |   13 ++
 Program.cs             |    6 
 core/Monitor.cs        |  121 +++++++++++++++++++
 api/ApiHelper.cs       |  133 ++++++++++++++++++++++
 config/config.json     |    2 
 api/ApiModel.cs        |    9 +
 process/TaskProcess.cs |    2 
 core/WCSCore.cs        |    8 
 config/configDesc.txt  |    5 
 api/MoboxController.cs |   15 ++
 10 files changed, 296 insertions(+), 18 deletions(-)

diff --git a/Program.cs b/Program.cs
index f8a5e94..1e3de45 100644
--- a/Program.cs
+++ b/Program.cs
@@ -132,7 +132,9 @@
                 tasks.Add(GetTask(WCSCore.Dispatch));
 
                 //娣诲姞鑷畾涔夌嚎绋�-                tasks.Add(GetTask(Monitor.CheckEmptyCnt));//妫�祴绌烘墭鐩�+                tasks.Add(GetTask(Monitor.CheckEmptyCnt));//妫�祴绌烘墭鐩�绌烘墭鍫嗗彔鍏ュ簱
+
+                tasks.Add(GetTask(Monitor.CheckEmptyLoc_YclOutLineArea));//妫�祴鍘熸潗鏂欎骇绾夸笅绾块檮杩戞槸鍚︽湁绌轰綅
 
                 tasks.Add(GetTask(Monitor.CheckCntAndBoard));//鍚屾  TN_Container 鍧囪瀹炴椂鏄剧ず
 
@@ -147,7 +149,7 @@
 
                 tasks.Add(GetTask(Monitor.CGOkCheck));// 鍦ㄥ妫�尯妫�祴鐗╁搧鍚堟牸锛屽悎鏍肩殑鐗╁搧鑷姩鍥炲簱
 
-                tasks.Add(GetTask(Monitor.XBChekcFull));//绾胯竟婊℃墭璐т綅鑷姩瑙g粦
+                //tasks.Add(GetTask(Monitor.XBChekcFull));//绾胯竟婊℃墭璐т綅鑷姩瑙g粦
 
                 Task.WaitAll(tasks.ToArray());
             }
diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index b28f30d..9424570 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -326,6 +326,132 @@
         }
 
         /// <summary>
+        /// 绾胯竟绌烘墭鍒扮┖鎵樺爢鍙犲尯
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static SimpleResult EmptyLineToEmptyMax(EmptyLineToEmptyMaxInfo model)
+        {
+            LogHelper.Info("瑙﹀彂API锛氱嚎杈圭┖鎵樺埌绌烘墭鍫嗗彔鍖� + JsonConvert.SerializeObject(model), "API");
+            var result = new SimpleResult();//杩斿洖缁撴灉
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+
+                if (model.cntCount<=0)
+                {
+                    result.resultCode = 1;
+                    result.resultMsg = $"鍙傛暟cntCount蹇呴』澶т簬0锛屽嵆鏈�皯瑕佹湁涓�釜绌烘墭";
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                var startLoc = db.Queryable<TN_Location>().First(it => it.S_CODE == model.startLoc);
+
+                if (startLoc == null)
+                {
+                    result.resultCode = 2;
+                    result.resultMsg = $"鏈壘鍒拌璧风偣{model.startLoc}";
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                var settingArea = Settings.Areas[13];
+                if (startLoc.S_AREA_CODE != settingArea)
+                {
+                    result.resultCode = 3;
+                    result.resultMsg = $"璇ヨ捣鐐箋model.startLoc}蹇呴』鍦ㄦ搴撳尯鍐厈settingArea}";
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                if (startLoc.N_LOCK_STATE != 0 || startLoc.S_LOCK_STATE != "鏃�)
+                {
+                    result.resultCode = 4;
+                    result.resultMsg = $"璇ヨ捣鐐箋model.startLoc}宸查攣瀹氾紝浠诲姟姝e湪鎼�";
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                //鏌ヨ绗﹀悎鐨勬湭閿佸畾宸插惎鐢ㄦ寚瀹氳揣鍖虹殑褰撳墠鏁伴噺鍚堣鍚庢渶鎺ヨ繎瀹归噺鐨勮揣浣嶏紝缁堢偣
+                var endLoc = db.Queryable<TN_Location>().
+                    Where(a => a.N_CURRENT_NUM + model.cntCount <= a.N_CAPACITY && a.S_AREA_CODE == Settings.Areas[3] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y").
+                    ToList().OrderByDescending(a => a.N_CURRENT_NUM + model.cntCount - a.N_CAPACITY).ThenBy(a => a.N_ROW).ThenBy(a => a.N_COL).ToList().First();
+
+                using (var trans = db.Ado.UseTran())
+                {
+                    startLoc.N_CURRENT_NUM = model.cntCount;
+                    startLoc.N_LOCK_STATE = 2;
+                    startLoc.S_LOCK_STATE = "鍑哄簱閿�;
+
+                    endLoc.N_LOCK_STATE = 1;
+                    endLoc.S_LOCK_STATE = "鍏ュ簱閿�;
+
+                    string cntStr = "";
+                    for (int i = 0; i < model.cntCount; i++)
+                    {
+                         cntStr += Guid.NewGuid().ToString("D")+",";
+                    }
+                    cntStr.Trim(','); 
+                    var locCnt = new TN_Loc_Container()
+                    {
+                        S_LOC_CODE = startLoc.S_CODE,
+                        S_CNTR_CODE = cntStr,
+                    };
+
+                    var task = new TN_Task()
+                    {
+                        S_CODE = WCSHelper.GenerateTaskNo(),
+                        S_START_AREA = startLoc.S_AREA_CODE,
+                        S_END_AREA = endLoc.S_AREA_CODE,
+                        S_START_LOC = startLoc.S_CODE,
+                        S_END_LOC = endLoc.S_CODE,
+                        S_TYPE = "绌烘墭涓嬬嚎鍫嗗彔",
+                        N_PRIORITY = 3,
+                        N_SCHEDULE_TYPE = 1,
+                        N_B_STATE = 0,
+                        S_B_STATE = "绛夊緟",
+                        S_CNTR_CODE = locCnt.S_CNTR_CODE,
+                    };
+
+                    if (
+                        db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 &&
+                        db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 &&
+                        db.Insertable<TN_Loc_Container>(locCnt).ExecuteCommand() == 1 &&
+                        db.Insertable<TN_Task>(task).ExecuteCommand() == 1
+                        )
+                    {
+                        Task task1 = Task.Run(() =>
+                        {
+                            WMSHelper.InsertOpInfo(model.staff, "鐐瑰鐐�, locCnt.S_CNTR_CODE);
+                        });
+
+                        trans.CommitTran();
+                        result.resultCode = 0;
+                        result.resultMsg = $"鍒涘缓 绌烘墭涓嬬嚎鍫嗗彔 浠诲姟鎴愬姛锛岃捣鐐癸細{startLoc.S_CODE}锛岀粓鐐癸細{endLoc.S_CODE}";
+                        LogHelper.Info(result.resultMsg);
+                        return result;
+                    }
+                    else
+                    {
+                        trans.RollbackTran();
+                        result.resultCode = 12;
+                        result.resultMsg = $"鍒涘缓 绌烘墭涓嬬嚎鍫嗗彔 浠诲姟澶辫触锛岃捣鐐癸細{startLoc.S_CODE}锛岀粓鐐癸細{endLoc.S_CODE}";
+                        LogHelper.Info(result.resultMsg);
+                        return result;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                result.resultCode = -1;
+                result.resultMsg = $"PDA婊℃墭澶嶆鍒ゆ柇锛屽彂鐢熶簡寮傚父锛歿ex.Message}";
+                LogHelper.Info(result.resultMsg);
+                return result;
+            }
+        }
+
+        /// <summary>
         /// 绾胯竟绌烘墭鍒板師鏉愭枡杈撻�绾�         /// </summary>
         /// <param name="model"></param>
@@ -398,7 +524,7 @@
                 if (endLoc.S_AREA_CODE != endLocArea)
                 {
                     result.resultCode = 8;
-                    result.resultMsg = $"姝よ揣浣嶏細{endLoc.S_CODE}锛屼笉灞炰簬鍘熸潗鏂欎骇绾跨┖鎵樺尯{endLocArea}";
+                    result.resultMsg = $"姝よ揣浣嶏細{endLoc.S_CODE}锛屼笉灞炰簬鍘熸潗鏂欎骇绾跨┖鎵樹笂绾垮彛搴撳尯{endLocArea}";
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
@@ -472,6 +598,11 @@
                             Settings.LineSorting = 0;
                         }
 
+                        Task task1 = Task.Run(() =>
+                        {
+                            WMSHelper.InsertOpInfo(model.staff, "鐐瑰鐐�, Cnt);
+                        });
+
 
                         trans.CommitTran();
                         result.resultCode = 0;
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index 7e0e8f7..14f623e 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -468,6 +468,15 @@
         public class EmptyLineToLineInfo
         {
             public string startLoc { get; set; }//璧风偣
+
+            public string staff { get; set; } = "None";//鎿嶄綔浜�+        }
+
+        public class EmptyLineToEmptyMaxInfo
+        {
+            public string startLoc { get; set; }//璧风偣
+            public int cntCount { get; set; }//瀹瑰櫒鏁伴噺
+            public string staff { get; set; } = "None";//鎿嶄綔浜�         }
     }
 }
diff --git a/api/MoboxController.cs b/api/MoboxController.cs
index a21f68b..1dc0148 100644
--- a/api/MoboxController.cs
+++ b/api/MoboxController.cs
@@ -226,7 +226,7 @@
         }
 
         /// <summary>
-        /// 绾胯竟绌烘墭鍒板師鏉愭枡杈撻�绾�+        /// 绾胯竟绌烘墭鍒板師鏉愭枡浜х嚎
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -236,5 +236,18 @@
         {
             return ApiHelper.EmptyLineToLine(model);
         }
+
+
+        /// <summary>
+        /// 绾胯竟绌烘墭鍒扮┖鎵樺爢鍙犲尯
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("EmptyLineToEmptyMax")]
+        public SimpleResult EmptyLineToEmptyMax(EmptyLineToEmptyMaxInfo model)
+        {
+            return ApiHelper.EmptyLineToEmptyMax(model);
+        }
     }
 }
diff --git a/config/config.json b/config/config.json
index 9d81c1b..f135d4d 100644
--- a/config/config.json
+++ b/config/config.json
@@ -4,7 +4,7 @@
   "SqlServer": "Data Source=127.0.0.1;Initial Catalog=DoubleCoinTest;User ID=sa;Password=123456;",
   "TCPServerIP": "127.0.0.1",
   "TCPServerPort": 8085,
-  "Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4", "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9", "SQKQ10", "SQKQ11", "SQKQ12", "线边空托区编码", "原材料产线空托区编码" ],
+  "Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4", "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9", "SQKQ10", "SQKQ11", "SQKQ12", "线边空托区编码13", "原材料产线空托区编码14", "原材料产线附近空托库区15", "空托货架库区16" ],
   "S7TestMoni": true,
   "IsOpenScanCode": true,
   "ProductionLine": [
diff --git a/config/configDesc.txt b/config/configDesc.txt
index 158f271..7a4291e 100644
--- a/config/configDesc.txt
+++ b/config/configDesc.txt
@@ -4,10 +4,11 @@
 "HostToAgvServerUrl": "http://127.0.0.1:9988/HostToAGV.cgi",//杩炴帴AGV绠$悊绯荤粺鐨勫湴鍧� "TCPServerIP": "127.0.0.1",//Socket鏈嶅姟绔湴鍧�紝鐢ㄤ簬杩炴帴AGV璇诲崱鍣ㄥ苟閫氳
 "TCPServerPort": 8085,//Socket鏈嶅姟绔鍙o紝鐢ㄤ簬杩炴帴AGV璇诲崱鍣ㄥ苟閫氳
-"Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4" , "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9" , "SQKQ10", "SQKQ11" , "SQKQ12", "SQKQ13", "SQKQ14" ],
+"Areas": [ "SQKQ0", "SQKQ1", "SQKQ2", "SQKQ3", "SQKQ4" , "SQKQ5", "SQKQ6", "SQKQ7", "SQKQ8", "SQKQ9" , "SQKQ10", "SQKQ11" , "SQKQ12", "SQKQ13", "SQKQ14" , "SQKQ15", "SQKQ16" ],
 // 鍘熸潗鏂欎骇绾垮簱鍖篠QKQ0鈥斺�銆嬫弧鎵樼紦瀛樺簱鍖篠QKQ1鈥斺�銆嬪姞宸ョ嚎绾胯竟鍖篠QKQ2鈥斺�銆嬬┖鎵樺爢鍙犲尯SQKQ3鈥斺�銆嬬┖鎵樼紦瀛樺簱鍖篠QKQ4鈥斺�銆� //浜哄伐鎷嗙洏鍖篠QKQ5鈥斺�銆嬩汉宸ョ┖鎵樺尯SQKQ6鈥斺�銆嬩汉宸ユ娊妫�尯SQKQ7鈥斺�銆嬫媶鐩樹笉鍚堟牸鍖篠QKQ8鈥斺�銆嬬О閲嶅尯SQKQ9
-//鈥斺�銆嬩綑鏂欒捣鐐瑰尯SQKQ10鈥斺�銆嬫鍝佸洖鐐夊尯SQKQ11 鈥斺�銆嬭繃鏈熸殏瀛樺尯SQKQ12 鈥斺�銆嬬嚎杈圭┖鎵樺尯SQKQ13 鈥斺�銆嬪師鏉愭枡浜х嚎绌烘墭搴撳尯SQKQ14
+//鈥斺�銆嬩綑鏂欒捣鐐瑰尯SQKQ10鈥斺�銆嬫鍝佸洖鐐夊尯SQKQ11 鈥斺�銆嬭繃鏈熸殏瀛樺尯SQKQ12 鈥斺�銆嬬嚎杈圭┖鎵樺尯SQKQ13 鈥斺�銆嬪師鏉愭枡浜х嚎绌烘墭涓婄嚎鍙e簱鍖篠QKQ14
+//鈥斺�銆嬪師鏉愭枡浜х嚎闄勮繎绌烘墭搴撳尯SQKQ15鈥斺�銆嬬┖鎵樿揣鏋跺簱鍖篠QKQ16
 
 "S7TestMoni": true,//濡傛灉涓簍rue锛岃烦杩嘢7閫氳娴嬭瘯锛屽彧鑳戒娇鐢≒DA
 "IsOpenScanCode": true,//濡傛灉涓簍rue锛屽紑鍚鍗″櫒鎵爜鍔熻兘锛屽鏋滀负false锛屼笉寮�惎
diff --git a/core/Monitor.cs b/core/Monitor.cs
index f15790e..06e1625 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -351,11 +351,105 @@
         }
 
         /// <summary>
+        /// 妫�祴鍘熸潗鏂欎骇绾夸笅绾块檮杩戞槸鍚︽湁绌轰綅
+        /// </summary>
+        internal static void CheckEmptyLoc_YclOutLineArea()
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+
+                var endLoc = db.Queryable<TN_Location>().
+                Where(o => o.S_AREA_CODE == Settings.Areas[15]
+                && o.N_LOCK_STATE == 0 
+                && o.S_LOCK_STATE == "鏃� 
+                && o.C_ENABLE == "Y" 
+                && o.N_CURRENT_NUM == 0
+                && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny()
+                ).//鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖�+                First();
+
+                if (endLoc == null)
+                {
+                    LogHelper.Info($"鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖簕Settings.Areas[15]}锛屽凡婊★紝鏃犻渶鍐嶅叆绌烘墭");
+                    return;
+                }
+
+                var startLoc = db.Queryable<TN_Location>().
+                Where(o => o.S_AREA_CODE == Settings.Areas[3]
+                && o.N_LOCK_STATE == 0
+                && o.S_LOCK_STATE == "鏃�
+                && o.C_ENABLE == "Y"
+                && o.N_CURRENT_NUM > 0
+                && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).Any()
+                ).ToList().//绌烘墭鍫嗗彔搴撳尯
+                OrderByDescending(o => o.N_CURRENT_NUM).
+                First();
+
+                if (startLoc == null)
+                {
+                    startLoc = db.Queryable<TN_Location>().
+                    Where(o => o.S_AREA_CODE == Settings.Areas[16]
+                    && o.N_LOCK_STATE == 0
+                    && o.S_LOCK_STATE == "鏃�
+                    && o.C_ENABLE == "Y"
+                    && o.N_CURRENT_NUM > 0
+                    && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).Any()
+                    ).ToList().//绌烘墭璐ф灦搴撳尯
+                    OrderByDescending(o => o.N_CURRENT_NUM).
+                    First();
+                }
+
+                if (startLoc == null)
+                {
+                    LogHelper.Info($"璧风偣娌℃湁鎵惧埌鍚堥�鐨勭┖鎵樿揣浣嶏紝瑕佹眰鏈夎揣");
+                    return;
+                }
+
+                var cntrList = db.Queryable<TN_Loc_Container>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).OrderBy(a => a.T_CREATE, OrderByType.Asc).ToList();
+
+                if (cntrList.Count < 1)
+                {
+                    LogHelper.Info($"璧风偣{startLoc.S_CODE}鏈壘鍒拌揣浣嶅鍣ㄥ叧绯讳俊鎭�);
+                    return;
+                }
+
+                string cntrString = "";
+                for (int i = 0; i < cntrList.Count; i++)
+                {
+                    if (i == cntrList.Count - 1)//鏈�悗涓�釜瀛楃涓茶繛鎺ヤ笉鍔犻�鍙�+                    {
+                        cntrString += cntrList[i].S_CNTR_CODE;
+                    }
+                    else
+                    {
+                        cntrString += cntrList[i].S_CNTR_CODE + ",";
+                    }
+                }
+
+                if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "绌烘墭鑷姩涓婄嚎", 3, cntrString))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+                {
+                    LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
+                    LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+
+                    LogHelper.Info($"鐢熸垚绌烘墭鑷姩涓婄嚎浠诲姟鎴愬姛锛屽鍣細{cntrString}锛岃捣鐐癸細{startLoc.S_CODE}");
+                }
+                else
+                {
+                    LogHelper.Info($"鐢熸垚绌烘墭鑷姩涓婄嚎浠诲姟澶辫触锛屽鍣細{cntrString}锛岃捣鐐癸細{startLoc.S_CODE}");
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        /// <summary>
         /// 绾胯竟婊℃墭璐т綅鑷姩瑙g粦
         /// </summary>
         internal static void XBChekcFull()
         {
-            var db = new SqlHelper<object>().GetInstance();
             try
             {
 
@@ -991,12 +1085,29 @@
                 }
 
                 var endLoc = db.Queryable<TN_Location>().
-                    Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0 
+                    Where(a => a.S_AREA_CODE == Settings.Areas[15] && a.N_LOCK_STATE == 0 
                     && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0
                     && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()
-                    ).
-                    OrderBy(a => a.N_CURRENT_NUM, OrderByType.Asc).
-                    First();
+                    ).First();//鍏堟壘 鍘熸潗鏂欎骇绾块檮杩戠┖鎵樺簱鍖�+                
+                if (endLoc == null)
+                {
+                    endLoc = db.Queryable<TN_Location>().
+                    Where(a => a.S_AREA_CODE == Settings.Areas[16] && a.N_LOCK_STATE == 0
+                    && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0
+                    && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()
+                    ).First();
+                }// 鍐嶆壘 绌烘墭璐ф灦搴撳尯
+
+                if (endLoc == null)
+                {
+                    endLoc = db.Queryable<TN_Location>().
+                    Where(a => a.S_AREA_CODE == Settings.Areas[4] && a.N_LOCK_STATE == 0
+                    && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0
+                    && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()
+                    ).First();
+                }// 鏈�悗鎵�绌烘墭缂撳瓨搴撳尯
+
 
                 if (endLoc == null)
                 {
diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index ac280b4..68db574 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -89,7 +89,7 @@
                                     
                                     Task task3 = Task.Run(() =>
                                     {
-                                        EmptyInStackArea(tN_Task);
+                                        EmptyInStackArea(tN_Task);//绌烘墭涓嬬嚎鍫嗗彔
                                     });
 
                                     Task task1 = Task.Run(() =>
@@ -149,7 +149,6 @@
                                         }
                                     });
 
-
                                     Task task12 = Task.Run(() =>
                                     {
                                         if (tN_Task.S_TYPE == "PDA婊℃墭涓嬬嚎鍏ュ簱" || tN_Task.S_TYPE == "PLC婊℃墭涓嬬嚎鍏ュ簱")
@@ -208,9 +207,8 @@
                         else
                         {
                             //瀹夊叏璇锋眰绛�-                            TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data);
+                            //TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data);
                         }
-                       
                     }
                     else
                     {
@@ -589,7 +587,7 @@
                         //鏌ヨ绗﹀悎鐨勬湭閿佸畾宸插惎鐢ㄦ寚瀹氳揣鍖虹殑褰撳墠鏁伴噺鍚堣鍚庢渶鎺ヨ繎瀹归噺鐨勮揣浣嶏紝缁堢偣
                         var endLoc = db.Queryable<TN_Location>().
                             Where(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM <= a.N_CAPACITY && a.S_AREA_CODE == Settings.Areas[3] && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y").
-                            OrderBy(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM - a.N_CAPACITY, OrderByType.Desc).First();
+                            ToList().OrderByDescending(a => a.N_CURRENT_NUM + item.N_CURRENT_NUM - a.N_CAPACITY).ThenBy(a=>a.N_ROW).ThenBy(a => a.N_COL).ToList().First();
 
                         if (endLoc == null)
                         {
diff --git a/models/TN_Location.cs b/models/TN_Location.cs
index fe55430..08f0c17 100644
--- a/models/TN_Location.cs
+++ b/models/TN_Location.cs
@@ -20,8 +20,21 @@
         public string S_AGV_SITE { get; set; }
         public int N_CURRENT_NUM { get; set; }
        
+        /// <summary>
+        /// 灞�+        /// </summary>
         public int N_LAYER { get; set; }
 
+        /// <summary>
+        /// 琛孿鎺�+        /// </summary>
+        public int N_ROW { get; set; }
+
+        /// <summary>
+        /// 鍒�+        /// </summary>
+        public int N_COL { get; set; }
+
 
         /// <summary>
         /// 0鏃�1鍏ュ簱閿�2鍑哄簱閿�3鍏跺畠閿�diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index 749ed00..b3bc424 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -143,7 +143,7 @@
                     start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                     end = LocationHelper.GetAgvSite(mst.S_END_LOC);
 
-                    if (mst.S_TYPE == "绌烘墭涓嬬嚎鍫嗗彔")
+                    if (mst.S_TYPE.Contains("绌烘墭涓嬬嚎鍫嗗彔"))
                     {
                         end = LocationHelper.GetAgvSite(mst.S_END_LOC,true);
                     }

--
Gitblit v1.9.1