From ff48949f706e899725c1ef7d0426c12c2b3e674f Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期四, 17 七月 2025 17:18:16 +0800
Subject: [PATCH] 1

---
 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs |  295 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 165 insertions(+), 130 deletions(-)

diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs
index 3a74ae0..7199b41 100644
--- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs
+++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs
@@ -15,6 +15,7 @@
 using System.Linq;
 using System.Net.Configuration;
 using System.Text;
+using System.Threading;
 using System.Web.UI.WebControls.WebParts;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.ApiHelper;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.EnentListen;
@@ -131,22 +132,6 @@
             if(mst.CN_S_STATUS=="鏈墽琛� || mst.CN_S_STATUS == "寰呮帹閫�)
             {
                 mst = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), "TN_I_TASK_MST");
-                if (mst.CN_S_BUSS_TYPE == "杈呮潗鍥炲簱")
-                {
-                    var CBTableList = MongoDBSingleton.Instance.FindAll<ConnectingBits>("ConnectingBits");
-                    foreach (var a in CBTableList)
-                    {
-                        if (string.IsNullOrEmpty(a.trayCode))
-                        {
-                            string cntrType = mst.transportInfo[0].trayCode;
-                            MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.Bit), Update.Set("trayCode", cntrType).Set("END_LOC", mst.CN_S_END_BIT), UpdateFlags.None);
-                
-                            MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.Bit), UpdateFlags.None);
-                
-                            new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.Bit}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.Bit)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'");
-                        }
-                    }
-                }
 
                 StringBuilder sbMsg = new StringBuilder();
                 var start = StockInstance.Instance.GetLocationInfoTwo(mst.CN_S_START_BIT);
@@ -158,11 +143,27 @@
                     //涓や釜鎺ラ┏骞冲彴
                     if (mst.CN_S_START_BIT == conn[0].locCode || mst.CN_S_START_BIT == conn[1].locCode)
                     {
-                        start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1];
+                        if(mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱锛堜簩娈碉級")
+                        {
+                            start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[0];
+                        }
+                        else
+                        {
+                            start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1];
+                        }
+                        
                     }
                     if (mst.CN_S_END_BIT == conn[0].locCode || mst.CN_S_END_BIT == conn[1].locCode)
                     {
-                        end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0];
+                        if(mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱锛堜簩娈碉級")
+                        {
+                            end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[1];
+                        }
+                        else
+                        {
+                            end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0];
+                        }
+                        
                     }
                 }
                 if (conn.Count == 1)
@@ -280,7 +281,7 @@
                 var endLoc = MongoDBSingleton.Instance.FindOne<MongoTN_AB_STOCK_LOCATION>(Query.EQ("CN_S_LOCATION_CODE", mst.CN_S_END_BIT), "MongoTN_AB_STOCK_LOCATION");
                 if(startLoc != null && endLoc != null)
                 {
-                    if(startLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CKHJ")
+                    if(startLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CPTPFCHJ" || startLoc.CN_S_AREA_CODE == "CPTPFCHJ")
                     {
                         TRow = "1";
                     }
@@ -424,11 +425,12 @@
                 if (code == 1012)
                 {
                     //鍗歌揣鐢宠锛屽厛鍒ゆ柇璁惧鏄惁鍏佽杩涙枡锛屽鏋滄槸鐩存帴鏀瑰弬鏁帮紝骞堕�鐭ヨ澶�-                    if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO}
+                    if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO, mst.CN_S_BUSS_TYPE);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO}
                     if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache1012(plc.ip, mst.CN_S_TASK_NO);//浜屾湡锛氱洿鎺ユ敼鍙傛暟
                     if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) TSHelper.GoToAGV(mst.CN_S_TASK_NO, 10, 1);
                     if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingReqUnload(plc.deviceType, mst.CN_S_TASK_NO);
                     if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO);
+                    if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc, true, mst.CN_S_TASK_NO);
                     if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc,mst.CN_S_TASK_NO,true);
                 }
                 if (code == 4)
@@ -440,7 +442,7 @@
                     if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO);
                     if (mst.CN_S_BUSS_TYPE != "3妤煎寘瑁呭彇鏂�) WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, 4);
                     if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵楴G") PLCControl.CacheStackingMouth6(plc);
-                    if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc);
+                    if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc, false);
                     if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc, mst.CN_S_TASK_NO, false);
 
                 }
@@ -546,7 +548,7 @@
                     //    }
                     //}
                 }
-                if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴� || mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱")
+                if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�)
                 {
                     //3妤兼垚鍝佸嚭搴撲换鍔℃嫤鎴�                     if (!OutWareTask(mst))
@@ -561,6 +563,10 @@
                     {
                         result = true;
                     }
+                }
+                if (mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱")
+                {
+                    FCOutTask(mst);
                 }
                 if (mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱")
                 {
@@ -629,6 +635,48 @@
         }
 
         /// <summary>
+        /// 杈呮潗鍑哄簱
+        /// </summary>
+        /// <param name="mst"></param>
+        private static void FCOutTask(TN_I_TASK_MST mst)
+        {
+            var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList();
+            if (CBInfo != null)
+            {
+                foreach (var a in CBInfo)
+                {
+                    if (!string.IsNullOrEmpty(a.locCode))
+                    {
+                        //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+                        var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits");
+                        if (CBTable != null)
+                        {
+                            if (string.IsNullOrEmpty(CBTable.trayCode))
+                            {
+                                //淇敼浠诲姟缁堢偣锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+                                MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None);
+
+                                new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'");
+
+                                MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", mst.CN_S_BATCH_NO).Set("END_LOC", a.locCode), UpdateFlags.None);
+                            }
+                        }
+                        else
+                        {
+                            //淇敼浠诲姟缁堢偣锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+                            MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None);
+
+                            new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'");
+
+                            MongoDBSingleton.Instance.Insert<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = mst.CN_S_BATCH_NO, state = "0", END_LOC = a.locCode });
+                        }
+                    }
+                    else CMMLog.Debug("鎺ラ┏浣嶇偣浣嶆湭閰嶇疆");
+                }
+            }
+        }
+
+        /// <summary>
         /// 鍥涢挻鐢熶骇閫�簱
         /// 灏嗕换鍔℃媶鍒嗘垚涓ゆ浠诲姟锛岀涓�浠诲姟缁堢偣鏀逛负鎺ラ┏骞冲彴
         /// 浜屾浠诲姟浠庢帴椹冲钩鍙板叆搴�@@ -688,90 +736,77 @@
         {
             //1銆佸垽鏂緟鏉愬叆搴撶粓鐐规槸鍚︽湁浠诲姟
             //2銆佸垽鏂緭閫佺嚎妯″紡鍜屼腑闂磋〃妯″紡閮芥槸鍏ュ簱妯″紡
-            bool action = true;
-            var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "18" && a.enable == 1).ToList();
-            if (plc.Count > 0)
+            CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼ 寮�");
+
+            bool action = false;
+            var plc = Settings.GetPlcInfo().Where(a => a.location == mst.CN_S_START_BIT && a.enable == 1).First();
+            if (plc != null)
             {
-                foreach(var a in plc)
+                var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                 {
-                    if(CheckStartFree(a.location) && CheckEndFree(a.location))
+                    dataNum = 1,
+                    addr = plc.readAddr + 3,
+                    host = plc.ip,
+                    port = plc.port
+                });
+                if (result != null && result.errCode == 0)
+                {
+                    CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{plc.ip}閫氶亾鍙蜂负锛歿plc.readAddr + 3}鐨勫�涓猴細{result.result[0]}");
+                    if (result.result[0] == 1)
                     {
-                        var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                        CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:杈撻�绾夸负 鍑哄簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿plc.location}");
+                        return action;
+                    }
+                    if (result.result[0] == 2)
+                    {
+                        //璇诲彇涓棿琛ㄦā寮�+                        var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
+                        if (modelInfo != null)
                         {
-                            dataNum = 1,
-                            addr = a.readAddr + 3,
-                            host = a.ip,
-                            port = a.port
-                        });
-                        if (result != null && result.errCode == 0)
-                        {
-                            CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{result.result[0]}");
-                            if (result.result[0] == 1)
+                            if (modelInfo.Mode == "鍑哄簱妯″紡")
                             {
-                                action = false;
-                                CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:杈撻�绾夸负 鍑哄簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}");
-                                break;
+                                CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList涓�鍑哄簱妯″紡");
+                                return action;
                             }
                             else
                             {
-                                //璇诲彇涓棿琛ㄦā寮�-                                var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
-                                if(modelInfo != null)
-                                {
-                                    if(modelInfo.Mode == "鍑哄簱妯″紡")
-                                    {
-                                        action = false;
-                                        CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList涓�鍑哄簱妯″紡");
-                                        break;
-                                    }
-                                }
-                                else
-                                {
-                                    action = false;
-                                    CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList 涓虹┖");
-                                    break;
-                                }
+                                action = true;
                             }
                         }
+                        else
+                        {
+                            CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList 涓虹┖");
+                            return action;
+                        }
                     }
-                    else
-                    {
-                        action = false;
-                        CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:褰撳墠鐐逛綅鏈変换鍔★紝鐐逛綅锛歿a.location}");
-                        break;
-                    }
-                };
+                }
 
                 if (action)
                 {
                     //鍏ュ簱妯″紡鏍搁獙姝g‘ 鍒ゆ柇璐х墿鏄惁鍒颁綅
-                    var startPlc = plc.Where(a => a.location == mst.CN_S_START_BIT).First();
-                    if(startPlc != null)
+                    result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
-                        var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                        {
-                            dataNum = 1,
-                            addr = startPlc.readAddr + 1,
-                            host = startPlc.ip,
-                            port = startPlc.port
-                        });
+                        dataNum = 1,
+                        addr = plc.readAddr + 1,
+                        host = plc.ip,
+                        port = plc.port
+                    });
 
-                        if (result != null && result.errCode == 0)
+                    if (result != null && result.errCode == 0)
+                    {
+                        CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{plc.ip}閫氶亾鍙蜂负锛歿plc.readAddr + 1}鐨勫�涓猴細{result.result[0]}");
+                        if (result.result[0] == 2)
                         {
-                            CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{startPlc.ip}閫氶亾鍙蜂负锛歿startPlc.readAddr + 3}鐨勫�涓猴細{result.result[0]}");
-                            if (result.result[0] == 2)
+                            int[] num = new int[2] { 2, 1 };
+                            var wirteal = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                             {
-                                int[] num = new int[2] { 2, 1 };
-                                var wirteal = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
-                                {
-                                    addr = startPlc.writeAddr + 1,
-                                    host = startPlc.ip,
-                                    data = num,
-                                    port = startPlc.port
-                                });
+                                addr = plc.writeAddr + 1,
+                                host = plc.ip,
+                                data = num,
+                                port = plc.port
+                            });
 
-                                return true;
-                            }
+                            return true;
                         }
                     }
                 }
@@ -813,50 +848,50 @@
                 {
                     #region 鍒ゆ柇杈撻�绾挎ā寮�鍙樻洿娉ㄩ噴
 
-                    //foreach(var a in plc)
-                    //{
-                    //    bool action = false;
-                    //    var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                    //    {
-                    //        dataNum = 1,
-                    //        addr = a.readAddr + 3,
-                    //        host = a.ip,
-                    //        port = a.port
-                    //    });
-                    //    if (modeResult != null && modeResult.errCode == 0)
-                    //    {
-                    //        CMMLog.Debug($"OutWareTask锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{modeResult.result[0]}");
-                    //        if (modeResult.result[0] == 2)
-                    //        {
-                    //            CMMLog.Debug($"OutWareTask:杈撻�绾夸负 鍏ュ簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}");
-                    //            break;
-                    //        }
-                    //        else
-                    //        {
-                    //            //璇诲彇涓棿琛ㄦā寮�-                    //            var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
-                    //            if (modelInfo != null)
-                    //            {
-                    //                if (modelInfo.Mode == "鍏ュ簱妯″紡")
-                    //                {
-                    //                    CMMLog.Debug($"OutWareTask:涓棿琛�ModeList涓�鍏ュ簱妯″紡");
-                    //                }
-                    //                else
-                    //                {
-                    //                    action = true;
-                    //                }
-                    //            }
-                    //            else
-                    //            {
-                    //                CMMLog.Debug("OutWareTask:涓棿琛�ModeList 涓虹┖");
-                    //            }
-                    //        }
-                    //    }
-                    //    if (!action)
-                    //    {
-                    //        return false;
-                    //    }
-                    //};
+                    foreach(var a in plc)
+                    {
+                        bool action = false;
+                        var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                        {
+                            dataNum = 1,
+                            addr = a.readAddr + 3,
+                            host = a.ip,
+                            port = a.port
+                        });
+                        if (modeResult != null && modeResult.errCode == 0)
+                        {
+                            CMMLog.Debug($"OutWareTask锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{modeResult.result[0]}");
+                            if (modeResult.result[0] == 2)
+                            {
+                                CMMLog.Debug($"OutWareTask:杈撻�绾夸负 鍏ュ簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}");
+                                break;
+                            }
+                            else
+                            {
+                                //璇诲彇涓棿琛ㄦā寮�+                                var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList");
+                                if (modelInfo != null)
+                                {
+                                    if (modelInfo.Mode == "鍏ュ簱妯″紡")
+                                    {
+                                        CMMLog.Debug($"OutWareTask:涓棿琛�ModeList涓�鍏ュ簱妯″紡");
+                                    }
+                                    else
+                                    {
+                                        action = true;
+                                    }
+                                }
+                                else
+                                {
+                                    CMMLog.Debug("OutWareTask:涓棿琛�ModeList 涓虹┖");
+                                }
+                            }
+                        }
+                        if (!action)
+                        {
+                            return false;
+                        }
+                    };
 
                     #endregion
 

--
Gitblit v1.9.1