From 8741f7e84dc7c0a1150c92758ebb2cf4b7d18c73 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期五, 18 七月 2025 14:49:30 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/process/DeviceProcess.cs |  861 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 734 insertions(+), 127 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
index 72c927c..67f3ffa 100644
--- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
+++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs
@@ -1,28 +1,14 @@
-锘縰sing HH.WCS.QingXigongchang.core;
-using HH.WCS.QingXigongchang.device;
+锘縰sing HH.WCS.QingXigongchang.device;
 using HH.WCS.QingXigongchang.dispatch;
 using HH.WCS.QingXigongchang.util;
 using HH.WCS.QingXigongchang.wms;
-using Microsoft.SqlServer.Server;
 using Newtonsoft.Json;
-using NLog.Time;
 using SqlSugar;
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Data;
-using System.Diagnostics.Eventing.Reader;
 using System.Linq;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
 using System.Threading;
-using System.Threading.Tasks;
-using System.Timers;
-using System.Web.Http.Results;
-using System.Web.Security;
-using System.Web.UI.WebControls;
-using static HH.WCS.QingXigongchang.dispatch.NDC;
 using static HH.WCS.QingXigongchang.util.Settings;
 
 namespace HH.WCS.QingXigongchang.process
@@ -112,7 +98,9 @@
                         //缈绘枟鏈�-  鐡跺澂
                         else if (plc.deviceType == 5)
                         {
-                            AnalysisBottleCapTipper(data, plc);
+
+                            PpFdjData(data, plc);
+                            // AnalysisBottleCapTipper(data, plc);
                         }
                         //缈绘枟鏈�- 鐡剁洊  4 姘寸洊銆� 鏃犺弻
                         else if (plc.deviceType <= 6)
@@ -158,7 +146,6 @@
             }
 
         }
-
         private static void Analysis13(string data, deviceInfo plc)
         {
             //鐢ㄤ簬  鍑哄簱鏃�鏄惁鍙互鐩磋揪 鎻愬崌鏈恒�  00 鍚庨潰杩橀渶澧炲姞閫�枡宸ュ崟澶勭悊銆�
@@ -178,6 +165,7 @@
                     {
                         if (od.SQL_Total >= v[0])
                         {
+                            LogHelper.Info(plc.deviceName + $"宸茬疮璁′俊鍙烽噺{od.SQL_Total} 寰呴鏂欐暟{od.OutNum}--寮�杞崲锛堜俊鍙烽噺>{(od.SQL_Total - v[0])} 棰嗘枡鏁�{od.OutNum + v[1]}");
                             od.SQL_Total -= v[0];
                             od.OutNum += v[1];
                             WCSHelper.Do(db =>
@@ -274,6 +262,7 @@
                                 S_CNTR_CODE=Settings.GetTimeStamp(),
                                 S_ITEM_CODE=od.SQL_ItemCode,
                                 S_ITEM_NAME=od.SQL_ItemName,
+                                S_CJ_NAME = od.S_CJ_NAME,
                                 N_BQ_TRAY_TYPE=v1
                             }
                         };
@@ -284,6 +273,7 @@
                         if (!string.IsNullOrEmpty(od.S_ROW))
                             list.Add(od.S_ROW);
                         ma = string.Join(",", list);
+
                         List<LocCntrRel> lcrl = new List<LocCntrRel>
                         {
                             new LocCntrRel
@@ -298,6 +288,10 @@
                         {
                             db.Insertable(lirl).ExecuteCommand();
                             db.Insertable(lcrl).ExecuteCommand();
+                            db.Insertable(new Container
+                            {
+                                S_CNTR_CODE = lirl.FirstOrDefault().S_CNTR_CODE,
+                            }).ExecuteCommand();
                             db.Updateable(_cl).UpdateColumns(x => new { x.N_CURRENT_NUM }).ExecuteCommand();
                         });
                         goto ballll;
@@ -320,7 +314,7 @@
                     si = "0";
 
                 }
-                else if (data.Contains("11") && (ods.Find(x => x.SQL_PLineNo.Contains("绾哥")) != null||plc.deviceName.Contains("T1")))
+                if (data.Contains("11"))// && (ods.Find(x => x.SQL_PLineNo.Contains("绾哥")) != null || plc.deviceName.Contains("T1"))
                 {
                     //if (!ods.Any())
                     //    return;
@@ -328,17 +322,31 @@
                     if (_cl.N_CURRENT_NUM > 0 || _clrel.Any())
                     {
                         LogHelper.Info($" time锛歿_clrel0?.T_CREATE} = s_type锛歿_clrel0.S_TYPE}");
+                        //if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 10 || !string.IsNullOrEmpty(_clrel0.S_TYPE))
+                        //    goto ballll;
+                        //plg 2025骞�鏈�3鏃� 鍘婚櫎10绉掓椂闂撮檺鍒�                         if (_clrel.Any())
-                            if (DateTime.Now.Subtract(_clrel0.T_CREATE).TotalSeconds < 10 || !string.IsNullOrEmpty(_clrel0.S_TYPE))
-                                goto ballll;
-
-                        LocationHelper.DoAction(db =>
                         {
-                            db.Deleteable(_clrel).ExecuteCommand();
-                            _cl.N_CURRENT_NUM = 0;
-                            return db.Updateable(_cl).UpdateColumns(x => new { x.N_CURRENT_NUM }).ExecuteCommand() > 0;
-                        });
+                            if (od?.SQL_PLineNo == "T1鎻愬崌鏈�)
+                            {
+                                if (!string.IsNullOrEmpty(_clrel0.S_TYPE))
+                                    goto ballll;
+                            }
+                            else
+                            {
+                                if (!string.IsNullOrEmpty(_clrel0.S_TYPE))
+                                    goto ballll;
+                            }
+                        }
+                        LocationHelper.DoAction(db =>
+                            {
+                                db.Deleteable(_clrel).ExecuteCommand();
+                                _cl.N_CURRENT_NUM = 0;
+                                return db.Updateable(_cl).UpdateColumns(x => new { x.N_CURRENT_NUM }).ExecuteCommand() > 0;
+                            });
                     }
+                    if (!plc.deviceName.Contains("T1"))
+                        goto ballll;
                     else if (!plc.deviceName.Contains("姘寸嚎鏍囩"))
                     {
                         LogHelper.Info(_cl.S_LOC_CODE + $"璐т綅 鎵捐捣鐐�);
@@ -370,8 +378,10 @@
                         if (sBit != null)
                         {
                             var sign = Settings.GetTimeStamp();
-                            var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
+                            var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 60);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                             LogHelper.Info($"鍘熺墿鏂欐惉杩�涓婃彁鍗囨満銆�{sign} 浠诲姟 锛屽垱寤簕res} ");
+                            //var res = TaskProcess.CreateTransport(sign, sBit.S_LOC_CODE, _cl.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sBit.N_CURRENT_NUM, 1, 1, 50);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
+                            //LogHelper.Info($"鍘熺墿鏂欐惉杩�涓婃彁鍗囨満銆�{sign} 浠诲姟 锛屽垱寤簕res} ");
                         }
                     }
                 }
@@ -1725,18 +1735,51 @@
                鐘舵�2	閫佺┖瀹屾垚涔嬪悗涓虹姸鎬�
                鐘舵�3	婊℃墭鍙栬蛋锛岄�绌轰箣鍓嶄负鐘舵�3锛屽紑鏈洪粯璁ょ姸鎬佷篃涓虹姸鎬�
            */
+            //3F 00 12 22 0D 0A--鏃犱换鍔′俊鍙�+            //3F 00 11 22 0D 0A--A鍙e伐浣滀俊鍙�+            //3F 00 12 21 0D 0A--B鍙d俊鍙�+            //3F 00 11 21 0D 0A--A銆丅鍙e伐浣滀俊鍙�+
+            //A鍙e浣嶄俊鍙�- 3F 00 10 0D 0A
+            //B鍙e浣嶄俊鍙�- 3F 00 20 0D 0A
 
             if (data.Length == 4)
             {
-                if (data.Substring(1, 1) == "1")
+                if (data == "1122")//A鍙e伐浣滀俊鍙�                 {
-                    if (BottlePEMInfoFull(plc, plc.location[0]))
+                    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
                     {
-                        //璁惧娌℃湁鎵樼洏锛屾垨鑰呭凡缁忔湁浠诲姟锛屼笉澶勭悊婊℃墭淇″彿锛岃繑鍥炲凡缁忓彇璐у畬鎴�-                        //3F 00 11 0d 0a
-                        //PlcHelper.SendHex(plc.address, "3F00110d0a");
+
                     }
                 }
+                else if (data == "1221")//B鍙e伐浣滀俊鍙�+                {
+                    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
+                    {
+
+                    }
+                }
+                else if (data == "1121")//AB鍙e伐浣滀俊鍙�+                {
+                    if (BottlePEMInfoFullTwo(plc, plc.location[0]))
+                    {
+
+                    }
+                    if (BottlePEMInfoFullTwo(plc, plc.location[1]))
+                    {
+
+                    }
+                }
+
+                //if (data.Substring(1, 1) == "1")
+                //{
+                //    if (BottlePEMInfoFull(plc, plc.location[0]))
+                //    {
+                //        //璁惧娌℃湁鎵樼洏锛屾垨鑰呭凡缁忔湁浠诲姟锛屼笉澶勭悊婊℃墭淇″彿锛岃繑鍥炲凡缁忓彇璐у畬鎴�+                //        //3F 00 11 0d 0a
+                //        //PlcHelper.SendHex(plc.address, "3F00110d0a");
+                //    }
+                //}
                 //else if (data.Substring(1, 1) == "3")
                 //{
                 //    if (BottleCapInfoEmpty(plc, plc.location[0]))
@@ -1745,13 +1788,13 @@
                 //    }
                 //}
 
-                if (data.Substring(3, 1) == "1")
-                {
-                    if (BottlePEMInfoFull(plc, plc.location[1]))
-                    {
-                        //PlcHelper.SendHex(plc.address, "3F00210d0a");
-                    }
-                }
+                //if (data.Substring(3, 1) == "1")
+                //{
+                //    if (BottlePEMInfoFull(plc, plc.location[1]))
+                //    {
+                //        //PlcHelper.SendHex(plc.address, "3F00210d0a");
+                //    }
+                //}
                 //else if (data.Substring(3, 1) == "3")
                 //{
                 //    if (BottleCapInfoEmpty(plc, plc.location[1]))
@@ -1808,9 +1851,18 @@
             }
             if (add)
             {
+                LogHelper.Info($@"{plc.deviceName}鏂板埌浣嶄俊鍙枫� 鎵цYWL宸ュ崟淇″彿閲忓鍔�");
                 var ods = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_State == "鎵ц涓� && x.WorkType == 6 && x.SQL_LinkLineNO == plc.deviceName);//.FirstOrDefault();
                 if (ods.Any())
                 {
+                    LogHelper.Info($@"{plc.deviceName}鏂板埌浣嶄俊鍙凤紝鎵惧埌宸ュ崟{JsonConvert.SerializeObject(ods.Select(x => new
+                    {
+                        x.SQL_PLineNo,
+                        x.SQL_LinkLineNO,
+                        x.SQL_Total,
+                        x.OutNum
+                    }))}");
+
                     foreach (var od in ods)
                     {
                         od.SQL_Total += 1;
@@ -1945,6 +1997,402 @@
                         }
                     }
                 }
+            }
+        }
+        private static object locko = new object();
+        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
+            {
+                lock (locko)
+                {
+                    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);
+                            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())
+                                    {
+                                        sta = staLisL.OrderByDescending(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)
+                        {
+                            for (var i = 0; i < plc.location.Length; i++)
+                            {
+                                if (location == plc.location[i])
+                                {
+                                    PlcHelper.SendHex(plc.address, "3F00" + (i + 1) + "0" + "0d0a");
+                                    break;
+                                }
+                            }
+                            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, workOrder.SQL_ItemCode);
+                            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)
+                                    {
+                                        End = EndListT.OrderBy(e => e.N_COL).First();
+                                    }
+                                    if (End != null)
+                                    {
+                                        endBit = End;
+                                        break;
+                                    }
+                                }
+                            }
+                            if (endBit != null)
+                            {
+                                break;
+                            }
+                        }
+                        if (endBit != null)
+                        {
+                            var _ctrl = LocationHelper.GetLocCntrRel(location);
+                            List<CntrItemRel> RItem = new List<CntrItemRel>();
+                            foreach (var item in _ctrl)
+                            {
+
+                                var r = new CntrItemRel
+                                {
+                                    S_CNTR_CODE = item.S_CNTR_CODE,
+                                    S_ITEM_CODE = workOrder.SQL_ItemCode,
+                                    S_ITEM_NAME = workOrder.SQL_ItemName,
+                                    F_QTY = workOrder.SQL_UsingNowTotal,
+                                    S_ORDER_NO = workOrder.SQL_WorkNo,
+                                    S_BATCH_NO = workOrder.SQL_BatchNo
+                                };
+                                RItem.Add(r);
+                                var cntrrel = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE).FirstOrDefault();
+                                if (cntrrel != null)
+                                {
+                                    newDb.Deleteable<CntrItemRel>().Where(it => it.S_ID.Trim() == cntrrel.S_ID.Trim()).ExecuteCommand();
+                                }
+                            }
+                            var ggf = newDb.Insertable(RItem).ExecuteCommand();
+                            if (ggf > 0)
+                            {
+                                int endLayer = endBit.N_CURRENT_NUM + 1;
+                                var carryCntrs = new List<string> { _ctrl.FirstOrDefault().S_CNTR_CODE };//DateTime.Now.ToString("yyMMddHHmmss") };
+                                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;
+            }
+        }
+
+        /// <summary>
+        /// 鐡跺澂绠楁硶--鍑哄簱
+        /// </summary>
+        /// <param name="AreaCode"></param>
+        /// <param name="Row"></param>
+        /// <param name="ItemCode"></param>
+        /// <returns></returns>
+        public static List<Location> GetOutWork(string AreaCode, List<int> Row, bool InOutLock = true, string ItemCode = "")
+        {
+            var lstCanOutL = new List<Location>();
+            try
+            {
+                var chi = new SqlHelper<object>().GetInstance();
+                var newDb = chi.CopyNew();
+                var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+                if (string.IsNullOrEmpty(ItemCode))//绠楃┖鎵�
+                {
+                    ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && string.IsNullOrEmpty(t.S_ITEM_CODE) && o.S_AREA_CODE == AreaCode);
+                    ca.AndIF(Row.Count() > 0, (o, p, t) => Row.Contains(o.N_ROW));
+                    lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).LeftJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
+                }
+                else//绠楁弧鎵�+                {
+                    ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == ItemCode && o.S_AREA_CODE == AreaCode);
+                    ca.AndIF(Row.Count() > 0, (o, p, t) => Row.Contains(o.N_ROW));
+                    lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
+                }
+                //鍦板爢涓撻棬绠楁硶杩囨护
+                if (lstCanOutL.Count() > 0)
+                {
+                    var Inloca = Expressionable.Create<Location>();
+                    Inloca.And(it => it.S_AREA_CODE == AreaCode);
+                    Inloca.AndIF(Row.Count() > 0, o => Row.Contains(o.N_ROW));
+                    var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList();
+                    //绌洪棿閿�鎺掗櫎涓�暣鎺�+                    var KjLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "绌洪棿閿�).ToList();
+                    if (KjLick.Count() > 0)
+                    {
+                        foreach (var item in KjLick)
+                        {
+                            lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                        }
+                    }
+                    if (InOutLock)
+                    {
+                        var CkLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍑哄簱閿�).ToList();
+                        if (CkLick.Count() > 0)
+                        {
+                            foreach (var item in CkLick)
+                            {
+                                lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                            }
+                        }
+                        var OutLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
+                        if (OutLick.Count() > 0)
+                        {
+                            foreach (var item in OutLick)
+                            {
+                                lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                            }
+                        }
+                    }
+
+
+                }
+                return lstCanOutL;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("鐡跺澂绠楁硶" + $" 鎶ラ敊: {ex.Message}");
+                return lstCanOutL;
+            }
+        }
+
+        /// <summary>
+        /// 鐡跺澂绠楁硶--鍏ュ簱
+        /// </summary>
+        /// <param name="AreaCode"></param>
+        /// <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 = "", string Jt = "")
+        {
+            var lstCanOutL = new List<Location>();
+            try
+            {
+                lock (lockoIn)
+                {
+                    var chi = new SqlHelper<object>().GetInstance();
+                    var newDb = chi.CopyNew();
+                    var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+                    ca.And((o, p, t) => o.N_CURRENT_NUM == 0 && o.S_LOCK_STATE == "鏃� && string.IsNullOrEmpty(p.S_CNTR_CODE) && string.IsNullOrEmpty(t.S_ITEM_CODE) && o.S_AREA_CODE == AreaCode);
+                    ca.AndIF(Row.Count() > 0, (o, p, t) => Row.Contains(o.N_ROW));
+                    lstCanOutL = newDb.Queryable<Location>().LeftJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).LeftJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList();
+
+                    var Inloca = Expressionable.Create<Location>();
+                    Inloca.And(it => it.S_AREA_CODE == AreaCode);
+                    Inloca.AndIF(Row.Count() > 0, o => Row.Contains(o.N_ROW));
+                    var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList();
+
+                    //鍦板爢涓撻棬绠楁硶杩囨护
+                    if (lstCanOutL.Count() > 0)
+                    {
+                        //绌洪棿閿�鎺掗櫎涓�暣鎺�+                        var KjLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "绌洪棿閿�).ToList();
+                        if (KjLick.Count() > 0)
+                        {
+                            foreach (var item in KjLick)
+                            {
+                                lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                            }
+                        }
+
+                        //鑾峰彇鎸囧畾搴撳尯 鎸囧畾鎺�婊$殑璐т綅 鐒跺悗鎺掗櫎 姣旀渶澶у垪杩樺皬鐨勭┖璐т綅
+                        var Mhw = locationInLock.FindAll(e => e.N_CURRENT_NUM > 0 && e.S_LOCK_STATE == "鏃�).ToList();
+                        if (Mhw.Count() > 0)
+                        {
+                            var RowLis = Mhw.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
+                            foreach (var item in RowLis)
+                            {
+                                var MaxCol = Mhw.FindAll(e => e.N_ROW == item.N_ROW).OrderByDescending(c => c.N_COL).FirstOrDefault();
+                                if (MaxCol != null)
+                                {
+                                    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);
+                                    //}
+                                }
+                            }
+
+                            //鎺掗櫎鍒殑鐗╂枡鎵�湪鐨勬帓
+                            if (!string.IsNullOrEmpty(ItemCode))
+                            {
+                                var fzRow = Mhw.Select(e => e.N_ROW).Distinct().ToList();
+                                foreach (var item in fzRow)
+                                {
+                                    var mtlo = Mhw.FindAll(e => e.N_ROW == item).FirstOrDefault();
+                                    if (mtlo != null)
+                                    {
+                                        var _clrel = LocationHelper.GetLocCntrRel(mtlo.S_LOC_CODE).FirstOrDefault();
+                                        if (_clrel != null)
+                                        {
+                                            var cntritems = ContainerHelper.GetCntrItemRel(_clrel.S_CNTR_CODE).FirstOrDefault();
+                                            if (cntritems != null)
+                                            {
+                                                if (cntritems.S_ITEM_CODE != ItemCode)
+                                                {
+                                                    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == mtlo.S_AREA_CODE && e.N_ROW == mtlo.N_ROW);
+                                                }
+                                            }
+                                        }
+
+                                    }
+                                }
+                            }
+                        }
+                        if (InOutLock)
+                        {
+                            var CkLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍑哄簱閿�).ToList();
+                            if (KjLick.Count() > 0)
+                            {
+                                foreach (var item in KjLick)
+                                {
+                                    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                                }
+                            }
+                            var OutLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
+                            if (KjLick.Count() > 0)
+                            {
+                                foreach (var item in KjLick)
+                                {
+                                    lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW);
+                                }
+                            }
+                        }
+                    }
+                    return lstCanOutL;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("鐡跺澂绠楁硶" + $" 鎶ラ敊: {ex.Message}");
+                return lstCanOutL;
             }
         }
 
@@ -2703,7 +3151,6 @@
             //灏辨煡鐪嬫湁娌℃湁绌虹殑鎺掍簡銆�
             //if (endBit != null) ///  瀵绘壘鏈弧鎺掞紝 鐩存帴杩斿洖缁撴灉銆�
             return endBit;
-        //LogHelper.Info(" _tempList over锛�);
 
         //杩欓噷寮� 瀵绘壘绌烘帓
         Empty:
@@ -3474,26 +3921,27 @@
                                         }
                                     if (endBit == null && _tempList.Any())
                                     {
-                                        LogHelper.Info(" ar_RplaceRow over锛�);
-                                        var ar_RplaceRows = LocationHelper.GetLocList(x => x.S_AREA_CODE != area1 && x.S_AREA_CODE.Contains(are) && x.S_LOCK_STATE != "鎶ュ簾");//.Select(x => x.N_ROW).Distinct();
-                                                                                                                                                                            //var ar_RplaceRow1 = ar_RplaceRows.FindAll(x => x.S_LOCK_STATE != "鏃�).Select(x => x.N_ROW).Distinct();
-                                        IEnumerable<int> ar_RplaceRow1 = ar_RplaceRows.FindAll(x => "鍏ュ簱閿�鍑哄簱閿�.Contains(x.S_LOCK_STATE?.Trim())).Select(x => x.N_ROW).Distinct();
-                                        LogHelper.Info(" 鏈夐攣鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow1));                                                                                        //LogHelper.Info(" 鏈夐攣鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow1));
-                                        var ar_RplaceRow2 = ar_RplaceRows.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct();
-                                        LogHelper.Info(" 鏈夎揣鎺掞細 - " + JsonConvert.SerializeObject(ar_RplaceRow2));
-                                        var ar_RplaceRow_rowlock = LocationHelper.GetRowLock(x => x.S_AREA_CODE.Contains(are))?.Select(x => x.N_ROW);
+                                        LogHelper.Info(" ar_RplaceRow over锛� + JsonConvert.SerializeObject(_tempList.Select(x => x.N_ROW).Distinct()));
+                                        //var ar_RplaceRows = LocationHelper.GetLocList(x => x.S_AREA_CODE != area1 && x.S_AREA_CODE.Contains(are) && x.S_LOCK_STATE != "鎶ュ簾");//.Select(x => x.N_ROW).Distinct();
+                                        //                                                                                                                                    //var ar_RplaceRow1 = ar_RplaceRows.FindAll(x => x.S_LOCK_STATE != "鏃�).Select(x => x.N_ROW).Distinct();
+                                        //IEnumerable<int> ar_RplaceRow1 = ar_RplaceRows.FindAll(x => "鍏ュ簱閿�鍑哄簱閿�.Contains(x.S_LOCK_STATE?.Trim())).Select(x => x.N_ROW).Distinct();
+                                        //LogHelper.Info(" 鏈夐攣鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow1));                                                                                        //LogHelper.Info(" 鏈夐攣鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow1));
+                                        //var ar_RplaceRow2 = ar_RplaceRows.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct();
+                                        //LogHelper.Info(" 鏈夎揣鎺掞細 - " + JsonConvert.SerializeObject(ar_RplaceRow2));
+                                        //var ar_RplaceRow_rowlock = LocationHelper.GetRowLock(x => x.S_AREA_CODE.Contains(are))?.Select(x => x.N_ROW);
 
-                                        var ar_RplaceRow = ar_RplaceRow1.Concat(ar_RplaceRow2).Concat(ar_RplaceRow_rowlock).Distinct();
+                                        //var ar_RplaceRow = ar_RplaceRow1.Concat(ar_RplaceRow2).Concat(ar_RplaceRow_rowlock).Distinct();
 
-                                        if (ar_RplaceRow.Any())
-                                        {
-                                            LogHelper.Info("鎺掗櫎闈炵┖鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow));
-                                            _tempList.RemoveAll(x => ar_RplaceRow.Contains(x.N_ROW));
-                                        }
-                                        if (_tempList.Any())//涓変釜搴撳尯鐨勪氦闆嗙┖鎺�-                                        {
-                                            endBit = _tempList.OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
-                                        }
+                                        //if (ar_RplaceRow.Any())
+                                        //{
+                                        //    LogHelper.Info("鎺掗櫎闈炵┖鎺�- " + JsonConvert.SerializeObject(ar_RplaceRow));
+                                        //    _tempList.RemoveAll(x => ar_RplaceRow.Contains(x.N_ROW));
+                                        //}
+                                        //if (_tempList.Any())//涓変釜搴撳尯鐨勪氦闆嗙┖鎺�+                                        //{
+                                        //    endBit = _tempList.OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                                        //}
+                                        endBit = _tempList.OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
                                     }
 
                                     #endregion
@@ -3712,6 +4160,227 @@
             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)//涓婃墭鐩�鍚﹀垯涓嬫墭鐩�+                    {
+                        List<string> TaskState = new List<string>() { "瀹屾垚", "鍙栨秷" };
+                        var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_START_LOC == location && !TaskState.Contains(x.S_B_STATE));
+                        if (TaskListNum.Count() > 0)
+                        {
+                            throw new Exception("鍙兘鐢熸垚涓�釜浠诲姟 杩涘嚭");
+                        }
+
+                        //涓婃墭鐩�婊℃墭
+                        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).TotalSeconds < 10)
+                        {
+                            PlcHelper.SendHex(plc.address, "3F00110D0A");
+                            return false;
+                        }
+                        List<string> TaskState = new List<string>() { "瀹屾垚", "鍙栨秷", "鎺ㄩ�寮傚父" };
+                        var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_END_LOC == location && !TaskState.Contains(x.S_B_STATE));
+                        if (TaskListNum.Count() > 0)
+                        {
+                            throw new Exception("鍙兘鐢熸垚涓�釜浠诲姟 杩涘嚭");
+                        }
+                        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;
+            }
+        }
 
 
 
@@ -3728,7 +4397,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))
@@ -3744,46 +4412,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);
@@ -3793,11 +4423,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";
@@ -3810,15 +4436,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;
@@ -3873,21 +4491,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);
 
@@ -3901,20 +4515,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;
-                                            //}
                                         }
                                     }
                                 }

--
Gitblit v1.9.1