From dc600c6298a3231e05875813ec0fa2fa18151d84 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期一, 14 七月 2025 10:14:38 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/settings.xml             |    8 
 HH.WCS.QingXiNongfu/bin/Debug/settings.xml   |    8 
 HH.WCS.QingXiNongfu/process/DeviceProcess.cs |  324 +++++++++++++++++++++++++++--------
 HH.WCS.QingXiNongfu/core/TaskCore.cs         |   55 ++++++
 HH.WCS.QingXiNongfu/core/Monitor.cs          |   99 +++++-----
 HH.WCS.QingXiNongfu/process/TaskProcess.cs   |   14 +
 6 files changed, 375 insertions(+), 133 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/bin/Debug/settings.xml b/HH.WCS.QingXiNongfu/bin/Debug/settings.xml
index 8bb2509..423877b 100644
--- a/HH.WCS.QingXiNongfu/bin/Debug/settings.xml
+++ b/HH.WCS.QingXiNongfu/bin/Debug/settings.xml
@@ -62,15 +62,15 @@
     [
 	{"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"闈掓邯鎴愬搧浠換X1杈撻�绾�,"deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
 
-{"address":"10.140.9.168","deviceName":"娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
+{"address":"10.140.9.168","deviceName":"550娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
 	
 	{"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1},
 	
-	{"address":"10.140.3.176","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
+	{"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
 	
 	{"address":"10.140.3.150","deviceName":"娉ㄥ鏈�","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1},
 	
-	{"address":"10.140.3.161","deviceName":"缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
+	{"address":"10.140.9.167","deviceName":"550缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
 	
 	{"address":"10.140.3.181","deviceName":"3绾跨炕鏂楁満","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1},
 		
@@ -88,7 +88,7 @@
 	{"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"闈掓邯鎴愬搧浠換X4杈撻�绾�,"deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
 	
 	
-	{"address":"10.140.9.167","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
+	{"address":"10.140.9.161","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
 	{"address":"10.140.3.167","deviceName":"5L缈绘枟鏈�,"deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
 	
 	{"address":"10.140.3.155","deviceName":"闂╬lc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1},
diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 972758d..29f31af 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1294,18 +1294,18 @@
                                                 var sign = Settings.GetTimeStamp();
                                                 var res = TaskProcess.CreateTransport(sign, _cl.S_LOC_CODE, endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", _clrel.Select(x => x.S_CNTR_CODE).ToList(), 1, endbit.N_CURRENT_NUM + 1, 1, 50, Last);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                                                 LogHelper.Info($"{r.Key}鍘熺墿鏂欐惉杩�{sign} 浠诲姟 锛屽垱寤簕res} ");
-                                                if (CDlist.Contains(endbit.S_AREA_CODE) && res)
-                                                {
-                                                    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣");
-                                                    var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW);
-                                                    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 鏄惁鏌ヨ鍒版暟鎹�{JsonConvert.SerializeObject(ggf)}");
-                                                    if (ggf == null)
-                                                    {
-                                                        var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
-                                                        inlockLis.Add(rrrr);
-                                                        LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 娣诲姞鏁版嵁鍒板唴瀛樻帓閿佷腑:{JsonConvert.SerializeObject(inlockLis)}");
-                                                    }
-                                                }
+                                                //if (CDlist.Contains(endbit.S_AREA_CODE) && res)
+                                                //{
+                                                //    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣");
+                                                //    var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW);
+                                                //    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 鏄惁鏌ヨ鍒版暟鎹�{JsonConvert.SerializeObject(ggf)}");
+                                                //    if (ggf == null)
+                                                //    {
+                                                //        var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
+                                                //        inlockLis.Add(rrrr);
+                                                //        LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 娣诲姞鏁版嵁鍒板唴瀛樻帓閿佷腑:{JsonConvert.SerializeObject(inlockLis)}");
+                                                //    }
+                                                //}
                                                 //if (res && inlock == null && isCd)
                                                 //{
                                                 //    var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
@@ -1490,31 +1490,29 @@
                 }
                 //});
 
-                var task11 = Task.Run(() =>
+                try
                 {
-                    try
+                    // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
+                    var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList();
+                    if (LocLock(SX_BQ.RK_BBHJQ))
                     {
-                        // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
-                        var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList();
-                        if (LocLock(SX_BQ.RK_BBHJQ))
-                        {
-                            //姘存爣鍏ュ簱
-                            YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
-                        }
-                        if (yuworders.Any())
-                        {
-                            LogHelper.Info($" 鏃犺弻鍑哄簱  宸ュ崟寮�惎涓�");
-                            // 涓按鏍囩閫�簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈�-                            ZsBQ_CreWJOutOrder();
-                        }
-                        // 涓按鏍囩閫�簱銆�
-                        ZsBQ_CreWJTK();
+                        //姘存爣鍏ュ簱
+                        YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                     }
-                    catch (Exception ex)
+                    if (yuworders.Any())
                     {
-                        LogHelper.Error(ex.Message, ex);
+                        LogHelper.Info($" 鏃犺弻鍑哄簱  宸ュ崟寮�惎涓�");
+                        // 涓按鏍囩閫�簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈�+                        ZsBQ_CreWJOutOrder();
                     }
-                });
+                    // 涓按鏍囩閫�簱銆�
+                    ZsBQ_CreWJTK();
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Error(ex.Message, ex);
+                }
+
 
                 var plc = Settings.GetDeviceInfoList().Where(a => a.deviceName == "T2鎻愬崌鏈�).FirstOrDefault();
                 var task2 = Task.Run(() =>
@@ -2007,8 +2005,9 @@
                                 Location Endbit = null;
                                 //if (area == area/* WJ_BQ.RK_BQJBQ*/)
                                 //{
-                                var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false);
-                                Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                                var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false);
+                                var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3);
+                                Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
                                 if (Endbit != null)
                                 {
                                     var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
@@ -4716,21 +4715,21 @@
                                 else
                                 {
                                     //妫�祴鎸囧畾搴撳尯鐨勭墿鏂欐帓鎬绘暟閲�-                                    if (dsi.TryGetValue(od.S_ROW, out var dictitems1))
-                                    {
-                                        //var rows = dictitems1.Select(x => x.Row).Distinct();
-                                        //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
-                                        ////鏌ヨ鍙敤璐т綅鏈夊灏�-                                        //List<string> Ky = new List<string>() { "鏃�, "鍑哄簱閿�, "鍏ュ簱閿� };
-                                        //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count();
-                                        //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM);
-                                        //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7");
-                                        //if (count < loclistK - 7)
-                                        //{
-                                        //    autoTurn = true;
-                                        //    _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
-                                        //}
-                                    }
+                                    //if (dsi.TryGetValue(od.S_ROW, out var dictitems1))
+                                    //{
+                                    //    //var rows = dictitems1.Select(x => x.Row).Distinct();
+                                    //    //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
+                                    //    ////鏌ヨ鍙敤璐т綅鏈夊灏�+                                    //    //List<string> Ky = new List<string>() { "鏃�, "鍑哄簱閿�, "鍏ュ簱閿� };
+                                    //    //var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count();
+                                    //    //var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM);
+                                    //    //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7");
+                                    //    //if (count < loclistK - 7)
+                                    //    //{
+                                    //    //    autoTurn = true;
+                                    //    //    _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
+                                    //    //}
+                                    //}
                                 }
                                 Location Endbit = null;
 
@@ -4786,7 +4785,7 @@
                                         var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver, it.OutNum }).ExecuteCommand();
                                         LogHelper.Info($"涓婃彁鍗囨満浠诲姟 鏇存柊宸ュ崟鐨勬椂闂村奖鍝嶈鏁� {ggf}");
 
-                                        var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
+                                        // var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
 
                                         //缁欑粓鐐归攣瀹氫綇
                                         if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ")
diff --git a/HH.WCS.QingXiNongfu/core/TaskCore.cs b/HH.WCS.QingXiNongfu/core/TaskCore.cs
index 6035cc5..2c83a51 100644
--- a/HH.WCS.QingXiNongfu/core/TaskCore.cs
+++ b/HH.WCS.QingXiNongfu/core/TaskCore.cs
@@ -91,6 +91,61 @@
                                 TaskProcess.OperateStatus(wmsTask, 7);
                                 wmsTask.T_END_TIME = DateTime.Now;
                                 TaskHelper.UpdateStatus(wmsTask, "鍙栨秷");
+                                try
+                                {
+                                    if (wmsTask.S_TYPE.Contains("娉ㄥ婊℃墭-鍏ュ簱"))
+                                    {
+                                        var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_START_LOC)).FirstOrDefault();
+                                        if (plc != null)
+                                        {
+                                            for (var i = 0; i < plc.location.Length; i++)
+                                            {
+                                                if (wmsTask.S_START_LOC == plc.location[i])
+                                                {
+                                                    PlcHelper.SendHex(plc.address, "3F00" + (i + 1) + "0" + "0d0a");
+                                                    break;
+                                                }
+                                            }
+                                        }
+                                    }
+                                    else if (wmsTask.S_TYPE.Contains("娉ㄥ绌烘嫋-鍑哄簱"))
+                                    {
+                                        var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_END_LOC)).FirstOrDefault();
+                                        if (plc != null)
+                                        {
+                                            for (var i = 0; i < plc.location.Length; i++)
+                                            {
+                                                if (wmsTask.S_END_LOC == plc.location[i])
+                                                {
+                                                    PlcHelper.SendHex(plc.address, "3F00" + (i + 1) + "0" + "0d0a");
+                                                    break;
+                                                }
+                                            }
+                                        }
+                                    }
+                                    else if (wmsTask.S_TYPE.Contains("鐡跺澂缈绘枟鏈烘弧鎵�鍑哄簱"))
+                                    {
+                                        var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_END_LOC)).FirstOrDefault();
+                                        if (plc != null)
+                                        {
+                                            PlcHelper.SendHex(plc.address, "3F00110D0A");
+                                        }
+
+                                    }
+                                    else if (wmsTask.S_TYPE.Contains("鐡跺澂缈绘枟鏈虹┖鎵�鍏ュ簱"))
+                                    {
+                                        var plc = Settings.GetDeviceInfoList().Where(a => a.location.Any(str => str == wmsTask.S_START_LOC)).FirstOrDefault();
+                                        if (plc != null)
+                                        {
+                                            PlcHelper.SendHex(plc.address, "3F00110D0A");
+                                        }
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+
+                                    throw;
+                                }
                                 break;
                             case 8://寮哄埗瀹屾垚  -  鏈娇鐢�                                 r = TaskProcess.OperateStatus(wmsTask, 8);
diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
index 402373f..f85d37e 100644
--- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -98,7 +98,9 @@
                         //缈绘枟鏈�-  鐡跺澂
                         else if (plc.deviceType == 5)
                         {
-                            AnalysisBottleCapTipper(data, plc);
+
+                            PpFdjData(data, plc);
+                            // AnalysisBottleCapTipper(data, plc);
                         }
                         //缈绘枟鏈�- 鐡剁洊  4 姘寸洊銆� 鏃犺弻
                         else if (plc.deviceType <= 6)
@@ -2001,6 +2003,12 @@
         private static object lockoIn = new object();
         private static object lockoOut = new object();
 
+        /// <summary>
+        /// 鐡跺澂鏈�+        /// </summary>
+        /// <param name="plc"></param>
+        /// <param name="location"></param>
+        /// <returns></returns>
         static bool BottlePEMInfoFullTwo(Settings.deviceInfo plc, string location)
         {
             try
@@ -2060,6 +2068,10 @@
                                     }
                                 }
                             }
+                            if (staBit != null)
+                            {
+                                break;
+                            }
                         }
                         if (staBit != null)
                         {
@@ -2103,9 +2115,6 @@
                         foreach (var Area in AreaList)
                         {
                             var Row = jcjykk.Select(e => e.N_ROW).Distinct().ToList();
-
-
-
                             var EndList = GetInWork(Area, Row, true, workOrder.SQL_ItemCode);
                             if (EndList.Any())
                             {
@@ -2123,6 +2132,10 @@
                                         break;
                                     }
                                 }
+                            }
+                            if (endBit != null)
+                            {
+                                break;
                             }
                         }
                         if (endBit != null)
@@ -2266,7 +2279,7 @@
         /// <param name="Row"></param>
         /// <param name="ItemCode"></param>
         /// <returns></returns>
-        public static List<Location> GetInWork(string AreaCode, List<int> Row, bool InOutLock = true, string ItemCode = "")
+        public static List<Location> GetInWork(string AreaCode, List<int> Row, bool InOutLock = true, string ItemCode = "", string Jt = "")
         {
             var lstCanOutL = new List<Location>();
             try
@@ -2308,7 +2321,22 @@
                                 var MaxCol = Mhw.FindAll(e => e.N_ROW == item.N_ROW).OrderByDescending(c => c.N_COL).FirstOrDefault();
                                 if (MaxCol != null)
                                 {
-                                    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL);
+                                    if (!string.IsNullOrEmpty(ItemCode) && AreaCode == "QXPPXXQ")
+                                    {
+                                        lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL);
+                                    }
+                                    else if (AreaCode == "QXPPXXQ" && Jt == "缈绘枟鏈�)
+                                    {
+                                        lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL > MaxCol.N_COL);
+                                    }
+                                    //if (!string.IsNullOrEmpty(ItemCode) && AreaCode == "QXPPXXQ")
+                                    //{
+                                    //    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL < MaxCol.N_COL);
+                                    //}
+                                    //else
+                                    //{
+                                    //    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW && e.N_COL > MaxCol.N_COL);
+                                    //}
                                 }
                             }
 
@@ -4132,6 +4160,214 @@
             return result;
         }
 
+        public static void PpFdjData(string Data, Settings.deviceInfo plc)
+        {
+            try
+            {
+                if (Data.Length == 2)
+                {
+                    if (Data == "11")
+                    {
+                        BottlePpFdjFullTwo(plc, plc.location[0]);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+                throw;
+            }
+        }
+        private static object lockoPp = new object();
+        /// <summary>
+        /// 鐡跺澂缈绘枟鏈�+        /// </summary>
+        /// <param name="plc"></param>
+        /// <param name="location"></param>
+        /// <returns></returns>
+        static bool BottlePpFdjFullTwo(Settings.deviceInfo plc, string location)
+        {
+            try
+            {
+                lock (lockoPp)
+                {
+                    var chi = new SqlHelper<object>().GetInstance();
+                    var newDb = chi.CopyNew();
+                    Location endBit = null;
+                    Location staBit = null;
+                    bool SentTask = false;
+                    if (location == "")
+                    {
+                        throw new Exception("璐т綅涓虹┖");
+                    }
+                    var workOrder = WCSHelper.GetWorkOrder(plc.deviceName);
+                    if (workOrder == null)
+                    {
+                        throw new Exception("娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟");
+                    }
+                    //鍏堟煡璇㈣揣浣嶆湁娌℃湁璐� 婊$殑涓嬫弧 绌虹殑鍒欎笂绌�+                    //  = newDb.Queryable<Location>().FindAll(x => x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM == 0);
+                    var hojs = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == location).First();
+                    if (hojs != null && hojs.S_LOCK_STATE != "鏃�)
+                    {
+                        return false;
+                    }
+                    var bcpList = WCSHelper.BcpQyOrderList(plc.deviceName);
+                    if (bcpList.Count() == 0)
+                    {
+                        throw new Exception("鏈垝鍒嗗搴旂殑鍖哄煙 鏌ョ湅杩欎釜浜х嚎鏄惁鍦ㄥ崐鎴愬搧鍖哄煙琛ㄨ繘琛岄厤缃�骞跺惎鐢�);
+                    }
+                    if (hojs.N_CURRENT_NUM == 0)//涓婃墭鐩�鍚﹀垯涓嬫墭鐩�+                    {
+                        //涓婃墭鐩�婊℃墭
+                        var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "婊℃墭").OrderByDescending(g => g.N_PRI).ToList();
+                        var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList();
+                        foreach (var Area in AreaList)
+                        {
+                            var Row = jcjykk.FindAll(f => f.S_AREA_CODE == Area).Select(e => e.N_ROW).Distinct().ToList();
+                            //杩囩畻娉�璁$畻璧风偣
+                            var staList = GetOutWork(Area, Row, true, workOrder.SQL_ItemCode);
+                            if (staList.Any())
+                            {
+                                foreach (var item in jcjykk)
+                                {
+                                    Location sta = null;
+                                    var staLisL = staList.FindAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW).ToList();
+                                    if (staLisL.Any())
+                                    {
+                                        if (item.S_AREA_CODE != "QXPPXXQ")
+                                        {
+                                            sta = staLisL.OrderByDescending(e => e.N_COL).First();
+                                        }
+                                        else
+                                        {
+                                            sta = staLisL.OrderBy(e => e.N_COL).First();
+                                        }
+
+                                    }
+                                    if (sta != null)
+                                    {
+                                        staBit = sta;
+                                        break;
+                                    }
+                                }
+                            }
+                            if (staBit != null)
+                            {
+                                break;
+                            }
+                        }
+                        if (staBit != null)
+                        {
+                            var _ctrl = LocationHelper.GetLocCntrRel(staBit.S_LOC_CODE);
+                            int StaLayer = staBit.N_CURRENT_NUM;
+                            var carryCntrs = new List<string> { _ctrl.FirstOrDefault().S_CNTR_CODE };//DateTime.Now.ToString("yyMMddHHmmss") };
+                            var bb = TaskProcess.CreateTransport(workOrder.SQL_WorkNo, staBit.S_LOC_CODE, location, "鐡跺澂缈绘枟鏈烘弧鎵�鍑哄簱", carryCntrs, StaLayer, 1, carryCntrs.Count, plc.taskPri);
+                            if (bb)
+                            {
+                                SentTask = true;
+                            }
+                        }
+                        if (SentTask)
+                        {
+                            return SentTask;
+                        }
+                    }
+                    else
+                    {
+                        var time = LocationHelper.GetT_FULL_TIME(location);
+                        LogHelper.Info(location + "锛氭墭鐩樻斁缃椂闂�(" + time + ") 璐т綅鎵樼洏鏁伴噺(" + hojs.N_CURRENT_NUM + ")");
+                        if (DateTime.Now.Subtract(time ?? DateTime.Now).TotalMinutes < 1)
+                        {
+                            PlcHelper.SendHex(plc.address, "3F00110D0A");
+                            return false;
+                        }
+                        LocCntrRel _clrel = LocationHelper.GetLocCntrRel(hojs.S_LOC_CODE).FirstOrDefault();
+                        //涓嬫墭鐩�绌烘
+                        var jcjykk = bcpList.FindAll(e => e.S_CNTR_TYPE == "绌烘墭").OrderByDescending(g => g.N_PRI).ToList();
+                        var AreaList = jcjykk.Select(e => e.S_AREA_CODE).Distinct().ToList();
+
+                        //杩囩畻娉�璁$畻璧风偣
+                        foreach (var Area in AreaList)
+                        {
+                            var Row = jcjykk.Select(e => e.N_ROW).Distinct().ToList();
+                            var EndList = GetInWork(Area, Row, true, "", "缈绘枟鏈�);
+                            if (EndList.Any())
+                            {
+                                foreach (var item in jcjykk)
+                                {
+                                    Location End = null;
+                                    var EndListT = EndList.FindAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW).ToList();
+                                    if (EndListT.Count() > 0)
+                                    {
+                                        if (item.S_AREA_CODE != "QXPPXXQ")
+                                        {
+                                            End = EndListT.OrderBy(e => e.N_COL).First();
+                                        }
+                                        else
+                                        {
+                                            End = EndListT.OrderByDescending(e => e.N_COL).First();
+                                        }
+                                    }
+                                    if (End != null)
+                                    {
+                                        endBit = End;
+                                        break;
+                                    }
+                                }
+                            }
+                            if (endBit != null)
+                            {
+                                break;
+                            }
+                        }
+                        if (endBit != null)
+                        {
+                            var _ctrl = LocationHelper.GetLocCntrRel(location);
+                            var ggf = 0;
+                            foreach (var item in _ctrl)
+                            {
+                                var cntrrel = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE).FirstOrDefault();
+                                if (cntrrel != null)
+                                {
+                                    ggf = newDb.Deleteable<CntrItemRel>().Where(it => it.S_ID.Trim() == cntrrel.S_ID.Trim()).ExecuteCommand();
+                                }
+                            }
+                            //if (ggf > 0)
+                            //{
+                            int endLayer = endBit.N_CURRENT_NUM + 1;
+                            var carryCntrs = new List<string> { _ctrl.FirstOrDefault().S_CNTR_CODE };
+                            var bb = TaskProcess.CreateTransport(workOrder.SQL_WorkNo, location, endBit.S_LOC_CODE, "鐡跺澂缈绘枟鏈虹┖鎵�鍏ュ簱", carryCntrs, 1, endLayer, carryCntrs.Count, plc.taskPri);
+                            if (bb)
+                            {
+                                SentTask = true;
+                                //瑙﹀彂鑷姩瑙g粦
+                                //var zdjb = jcjykk.FindAll(e => e.SQL_UsingNow == "Y").OrderByDescending(g => g.N_PRI).ToList();
+                                //foreach (var item in zdjb)
+                                //{
+
+                                //}
+                                //var Jb = newDb.Queryable<Location>().Where(e => e.S_AREA_CODE == Area && Row.Contains(e.N_ROW)).ToList();
+                                ////鏌ヨ绗竴鎺掓槸鍚︽弧 骞朵笖绗簩鎺掑叆婊′笁涓悗瑙g粦绗竴鎺�+                                ////1.鏌ヨ绗竴鎺掓槸鍚︽湁绌鸿揣浣�鏈�鍒欒烦杩�+                            }
+                            // }
+                        }
+                        if (SentTask)
+                        {
+                            return SentTask;
+                        }
+
+                    }
+                    return true;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info(plc.deviceName + $" 鎶ラ敊: {ex.Message}");
+                return false;
+            }
+        }
 
 
 
@@ -4148,7 +4384,6 @@
 
         internal static void AnalysisBottleCapTipper(string data, Settings.deviceInfo plc)
         {
-            //LogHelper.Info($"{plc.deviceName}-{plc.address}-{plc.deviceType}-data:{data}銆�");
             bool containsKey = true;
             int llll = 0;
             if (!FJD_wwwwFD.TryGetValue(plc.deviceName.Trim(), out llll))
@@ -4164,46 +4399,8 @@
             bool flag = data.Length == 2;
             if (flag)
             {
-                //LogHelper.Info(string.Concat(new string[]
-                //{
-                //    "缈绘枟鏈洪棬 ",
-                //    plc.deviceNo[1],
-                //    " - 淇″彿锛�",
-                //    data,
-                //    " 闂ㄧ姸鎬侊細锛�寮�鍏筹級 ",
-                //    data.Substring(3, 1)
-                //        }), "鑷姩闂�);
-                string s = "2";// data.Substring(3, 1);
+                string s = "2";
 
-                //bool flag4 = DeviceProcess.doorStatus.Keys.Contains(plc.deviceNo[1]);
-                //if (flag4)
-                //{
-                //    DeviceProcess.doorStatus[plc.deviceNo[1]].info = s;
-                //    DeviceProcess.doorStatus[plc.deviceNo[1]].modify = DateTime.Now;
-                //}
-                //else
-                //{
-                //    DeviceProcess.doorStatus.Add(plc.deviceNo[1], new DeviceProcess.signalInfo
-                //    {
-                //        info = data.Substring(3, 1),
-                //        modify = DateTime.Now
-                //    });
-                //}
-                //if (data.Substring(1, 1) == "1")
-                //{
-                //    LogHelper.Info(plc.location[0] + "璇诲埌11淇″彿銆傦紙12淇″彿鎸佺画鏁伴噺锛夛細" + llll);
-                //    if (llll < 10)
-                //    {
-                //        llll = 0;
-                //        LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿,鎴栬繛缁�2淇″彿涓嶈冻10娆�);
-                //        if (containsKey)
-                //            FJD_wwwwFD[plc.deviceName.Trim()] = llll;
-                //        else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll);
-
-                //        return;
-                //    }
-                //}
-                //else 
                 if (data.Substring(1, 1) == "0" || data.Substring(1, 1) == "2")
                 {
                     LogHelper.Info(plc.location[0] + $"璇诲埌1 0/2淇″彿銆傦紙1 0/2淇″彿鎸佺画鏁伴噺锛夛細" + llll);
@@ -4213,11 +4410,7 @@
                     else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll);
                 }
 
-                //if (llll < 10)
-                //{
-                //    LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿 ,鎴栬繛缁�2淇″彿涓嶈冻10娆�" + llll + "娆�");
-                //    return;
-                //}
+
 
                 LogHelper.Info(plc.deviceName + "鏌ョ湅缈绘枟楦$┖绛愪綅" + (data.Substring(1, 1) == "1").ToString() + LocationHelper.CheckLocFree(plc.location[0]).ToString(), "缈绘枟鏈�);
                 bool flag5 = data.Substring(1, 1) == "1" && LocationHelper.CheckLocFree(plc.location[0]) && s == "2";
@@ -4230,15 +4423,7 @@
                     }
                     else
                     {
-                        //if (llll > 10)
-                        //{
-                        //    LogHelper.Info(plc.deviceName + "浜ょ缁欑炕鏂椾俊鍙峰悗杩樻病鏈夌炕鏂�, "缈绘枟鏈�);
-                        //    return;
-                        //}
-                        //else
-                        //{
-                        //    LogHelper.Info(plc.deviceName + "浜ょ缁欑炕鏂椾俊鍙峰悗 宸茬炕鏂�" + llll, "缈绘枟鏈�);
-                        //}
+
 
                         WorkOrder workOrder = WCSHelper.GetWorkOrder(plc.deviceName);
                         bool flag7 = workOrder == null;
@@ -4293,21 +4478,17 @@
                                         if (flag11 > 30)
                                         {
 
-                                            //if (data.Substring(1, 1) == "1")
-                                            //{
+
                                             LogHelper.Info(plc.location[0] + "璇诲埌11淇″彿銆傦紙1 0/2淇″彿鎸佺画鏁伴噺锛夛細" + llll);
-                                            //if (flag11 < 3.0)
+
                                             if (llll < 0)
                                             {
-                                                //llll = 0;
+
                                                 LogHelper.Info(plc.deviceName + "璇诲埌11淇″彿,浣嗘槸娌″嚭鐜拌繃1 0/2");
-                                                //if (containsKey)
-                                                //    FJD_wwwwFD[plc.deviceName.Trim()] = llll;
-                                                //else FJD_wwwwFD.Add(plc.deviceName.Trim(), llll);
+
 
                                                 return;
                                             }
-                                            //}
 
                                             var b = TaskProcess.FDJTakeEmpyt2(plc, workOrder);
 
@@ -4321,20 +4502,13 @@
                                         }
                                         else
                                         {
-                                            ///- 
                                             LogHelper.Info($"{plc.deviceName} 璐т綅 {plc.location} 婊℃鍗歌揣涓嶈冻30S缂撳啿鏃堕棿銆�");
-
-                                            //if (time != null && DateTime.Now.Subtract(time ?? DateTime.Now).TotalSeconds < 30)
-                                            //{
                                             LogHelper.Info($"缈绘枟鏈烘弧妗嗘斁涓嬫椂闂磠time}涓嶈冻30绉� 鍥炲啓缈绘枟淇″彿", "缈绘枟鏈�);
                                             PlcHelper.SendHex(plc.address, $"3f 00 11 0d 0a");
-
                                             if (containsKey)
                                                 FJD_wwwwFD[plc.deviceName.Trim()] = 0;
                                             else FJD_wwwwFD.Add(plc.deviceName.Trim(), 0);
-
                                             return;
-                                            //}
                                         }
                                     }
                                 }
diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
index da88055..a058a04 100644
--- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -1353,6 +1353,19 @@
                         else return false;
                     }
                 }
+                else if (taskType.Contains("鐡跺澂缈绘枟鏈虹┖鎵�) && mst.S_END_LAREA == "QXPPXXQ")
+                {
+                    start = LocationHelper.GetAgvSite(mst.S_START_LOC);
+                    end = LocationHelper.GetAgvSite(mst.S_END_LOC, "2");
+                    LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
+
+                }
+                else if (taskType.Contains("鐡跺澂缈绘枟鏈烘弧鎵�) && mst.S_START_LAREA == "QXPPXXQ")
+                {
+                    start = LocationHelper.GetAgvSite(mst.S_START_LOC, "2");
+                    end = LocationHelper.GetAgvSite(mst.S_END_LOC);
+                    LogHelper.Info($"鐡跺澂鏈轰换鍔�璧风偣缁堢偣瀵瑰簲鐨刟gv绔欑偣 start {start} end {end}  浠诲姟:" + mst.S_TASK_NO);
+                }
                 //else if (taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�鍏ュ簱") || taskType.Contains("鏀剁缉鑶滃弶杩�璐ф灦鍑烘彁鍗囨満"))
                 //{
                 //    var ts = 5;
@@ -1581,6 +1594,7 @@
                 LogHelper.Info("SendTask " + mst.S_TASK_NO);
                 Console.WriteLine("start=" + start.ToString());
                 Console.WriteLine("end= " + end.ToString());
+
                 NDC.AGVResult res = NDC.AddNewOrder(TSNo, new Dictionary<string, string>
                 {
                     {
diff --git a/HH.WCS.QingXiNongfu/settings.xml b/HH.WCS.QingXiNongfu/settings.xml
index 8bb2509..423877b 100644
--- a/HH.WCS.QingXiNongfu/settings.xml
+++ b/HH.WCS.QingXiNongfu/settings.xml
@@ -62,15 +62,15 @@
     [
 	{"address":"10.140.3.164","deviceName":"550","FuLeLineNo":"闈掓邯鎴愬搧浠換X1杈撻�绾�,"deviceNo":[],"location":["CX-2","CX-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
 
-{"address":"10.140.9.168","deviceName":"娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
+{"address":"10.140.9.168","deviceName":"550娉ㄥ鏈�,"deviceNo":["","666"],"location":["ZSJ1-1","ZSJ1-2"],"deviceType":8,"enable":1},
 	
 	{"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","664"],"location":["ZSJ3-1","ZSJ3-2"],"deviceType":8,"enable":1},
 	
-	{"address":"10.140.3.176","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
+	{"address":"10.140.9.169","deviceName":"娉ㄥ鏈�","deviceNo":["","666"],"location":["ZSJ4-1","ZSJ4-2"],"deviceType":8,"enable":1},
 	
 	{"address":"10.140.3.150","deviceName":"娉ㄥ鏈�","deviceNo":["","659"],"location":["ZSJ5-1","ZSJ5-2"],"deviceType":8,"enable":1},
 	
-	{"address":"10.140.3.161","deviceName":"缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
+	{"address":"10.140.9.167","deviceName":"550缈绘枟鏈�,"deviceNo":["","999"],"location":["FDJ-1P-1L-1C"],"deviceType":5,"enable":1},
 	
 	{"address":"10.140.3.181","deviceName":"3绾跨炕鏂楁満","deviceNo":["","979"],"location":["SXFDJ1"],"deviceType":5,"enable":1},
 		
@@ -88,7 +88,7 @@
 	{"address":"10.140.3.178","deviceName":"CX4","FuLeLineNo":"闈掓邯鎴愬搧浠換X4杈撻�绾�,"deviceNo":[],"location":["CX4-2","CX4-1"],"areaPriy":["QX-01","QX-02","QX-03","QX-04","QX-05","QX-06","QX-07","QX-08","QX-09","QX-10","QX-11","QX-12","QX-13","QX-14","QX-15","QX-16","QX-19",],"deviceType":9,"enable":1},
 	
 	
-	{"address":"10.140.9.167","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
+	{"address":"10.140.9.161","deviceName":"5L娉ㄥ鏈�,"deviceNo":["","665"],"location":["5LZSJ1-1","5LZSJ1-2"],"deviceType":8,"enable":1},
 	{"address":"10.140.3.167","deviceName":"5L缈绘枟鏈�,"deviceNo":["","998"],"location":["5LFDJ"],"deviceType":5,"enable":1},
 	
 	{"address":"10.140.3.155","deviceName":"闂╬lc2","deviceNo":["2"],"location":[],"deviceType":1,"enable":1},

--
Gitblit v1.9.1