From 25d5e0519ebde8a72cb5108d191ada41e64c9753 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期一, 30 六月 2025 17:31:06 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs |  767 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 533 insertions(+), 234 deletions(-)

diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
index a87bf99..0249cff 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
@@ -22,6 +22,9 @@
 using static Hanhe.iWCS.TaizhouGEMTwoProtocol.ProtocolAnalysis;
 using log4net.Appender;
 using System.Net.Configuration;
+using static System.Runtime.CompilerServices.RuntimeHelpers;
+using System.Reflection.Emit;
+using System.Text.RegularExpressions;
 
 namespace Hanhe.iWCS.TaizhouGEMTwoProtocol
 {
@@ -503,8 +506,8 @@
                 data = num,//鍘熷厛鏄�,鍗曚釜鍐欏叆
                 port = plc.port
             });
-            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�.");
-            Console.WriteLine($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�.");
+            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+            Console.WriteLine($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
             ///灏忚溅鍜屽绉颁綅瀵规帴
             //灏忚溅璇锋眰杩涙枡锛屽苟涓旀煡璇㈣澶囨槸鍚﹀厑璁窤GV杩涘叆
             var readRes = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
@@ -569,8 +572,7 @@
                         //    num[b] = Convert.ToInt32(Convert.ToString(int.Parse(taskInfo.Ext2), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2);
                         //}
 
-                        CMMLog.Debug($"{num}");
-                        Console.WriteLine(num);
+                        CMMLog.Debug($"{JsonConvert.SerializeObject(num)}");
                         var wirteall = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                         {
                             addr = plc.writeAddr + 5,
@@ -737,7 +739,9 @@
                 {
                     if(plc.deviceType == "22")
                     {
+                        var newWeight = result.result[19] + "," + result.result[20];
                         MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None);
+                        MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]).Set("oneTrayWeightFC",newWeight), UpdateFlags.None);
                     }
                     else
                     {
@@ -765,6 +769,7 @@
                     }
 
                     if (result.result[0] == 3 && result.result[2] == 1)
+                    //if (result.result[2] == 1)
                     {
                         CMMLog.Info($"SecondWeightActionOne:鍑嗗鐢熸垚澶嶇О鍏ョ紦瀛樻灦浠诲姟锛屽紑濮嬬‘瀹氭墭鐩樺彿:{model.ext2}");
                         if(plc.deviceType == "22")
@@ -957,17 +962,18 @@
                 var writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                 {
                     host = plc.ip,
-                    addr = plc.writeAddr + 3,// + 4
+                    addr = plc.writeAddr,
+                    data = 0,
+                    port = plc.port
+                });
+
+                writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                {
+                    host = plc.ip,
+                    addr = plc.writeAddr + 3,
                     data = 1,
                     port = plc.port
                 });
-                //var writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
-                //{
-                //    host = plc.ip,
-                //    addr = plc.writeAddr + 3,
-                //    data = 1,
-                //    port = plc.port
-                //});
             }
         }
 
@@ -1063,7 +1069,6 @@
 
                     WriteCacheStackingData(plc, task, machine);
 
-
                     var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                     {
                         addr = plc.writeAddr + 1,
@@ -1089,11 +1094,12 @@
                 //璇诲彇閫氶亾1閲岄潰鍙傛暟鏄惁涓�锛屽垽鏂彔鐩樻満鏄惁闇�涓婃枡
                 var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                 {
-                    dataNum = 1,
+                    dataNum = 2,
                     addr = pmInfo.readAddr + 1,
                     host = pmInfo.ip,
                     port = pmInfo.port
                 });
+                CMMLog.Info($"鑾峰彇纰熺洏鍏ュ彛淇℃伅锛歿JsonConvert.SerializeObject(result)}");
                 if (result != null && result.errCode == 0)
                 {
                     //鍙傛暟1琛ㄧず鍙犳墭鐐圭敵璇峰叆鏂�@@ -1109,6 +1115,66 @@
                             else CMMLog.Debug($"璋冪敤WMS鑾峰彇纰熺洏鍑哄簱鐢熸垚浠诲姟澶辫触锛�);
                         }
                         else CMMLog.Debug($"妫�煡褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾垨鑰匨ST涓昏〃涓湁缂撳瓨鏋跺叆鍙犵洏鏈虹殑浠诲姟锛�);
+                    }
+                    if (pmInfo.deviceType == "23" && result.result[1] == 1)
+                    {
+                        //鍥涢挻杞﹂棿锛屼汉宸ヤ笂鏂欐ā寮�+                        result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                        {
+                            dataNum = 21,
+                            addr = pmInfo.readAddr + 120,
+                            host = pmInfo.ip,
+                            port = pmInfo.port
+                        });
+                        CMMLog.Info($"鑾峰彇纰熺洏浜哄伐涓婃枡鍐欏叆淇℃伅锛歿JsonConvert.SerializeObject(result)}");
+                        if (result != null && result.errCode == 0)
+                        {
+                            string lotNo = RemoveNull(GetTrayCode(result.result.Skip(0).Take(20).ToArray()).Trim().ToString()); //鎵规鍙�+                            string bagNumber = Convert.ToInt32(Completion(result.result[20]), 2).ToString();
+                            var machinInfo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", lotNo), Query.EQ("packageCode", bagNumber)), "MachineInfoTwoTetracobalt");
+                            if(machinInfo != null)
+                            {
+                                TN_I_TASK_MST task = new TN_I_TASK_MST
+                                {
+                                    CN_S_BATCH_NO = machinInfo.trayCode
+                                };
+                                WMSInfo machine = new WMSInfo
+                                {
+                                    location = machinInfo.location,
+                                    productWeight = machinInfo.productWeight,
+                                    oneTrayWeight = machinInfo.oneTrayWeight,
+                                    addState = machinInfo.addState,
+                                    packageCode = machinInfo.packageCode,
+                                    itemCode = machinInfo.materialCode
+                                };
+                                PLCControl.WriteCacheStackingData(pmInfo, task,machine);
+                                machinInfo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", lotNo), Query.EQ("packageCode", bagNumber)), "MachineInfoTwoTetracobalt");
+                                if(machinInfo == null)
+                                {
+                                    //淇℃伅鍐欏叆鎴愬姛
+                                    var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                    {
+                                        addr = pmInfo.writeAddr + 2,
+                                        host = pmInfo.ip,
+                                        port = pmInfo.port,
+                                        data = 1
+                                    });
+                                    CMMLog.Info("浜哄伐鍙犲寘淇℃伅鏌ヨ鎴愬姛锛屽啓鍏�");
+
+                                }
+                            }
+                            else
+                            {
+                                var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                {
+                                    addr = pmInfo.writeAddr + 2,
+                                    host = pmInfo.ip,
+                                    port = pmInfo.port,
+                                    data = 2
+                                });
+                                CMMLog.Info("浜哄伐鍙犲寘淇℃伅鏌ヨ澶辫触锛屽啓鍏�");
+                            }
+                        }
                     }
                 }
                 else CMMLog.Debug($"缂撳瓨鍏ュ彔鐩樻満锛屽垱寤轰换鍔★紝result={result.errMsg}");
@@ -1159,32 +1225,6 @@
                 else if (readres.result[0] == 2)
                 {
                     TSHelper.GoToAGV(taskNo, 10, 3);
-                    //var task = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
-                    //var machine = MongoDBSingleton.Instance.FindOne<WMSInfo>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "WMSInfo");
-                    //if (machine != null)
-                    //{
-                    //    if (Settings.cacheStackWrite == "0")
-                    //    {
-                    //        int[] num = DiePan(machine);
-                    //
-                    //        var wirteall01 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
-                    //        {
-                    //            addr = plc.writeAddr + 10,
-                    //            host = plc.ip,
-                    //            port = plc.port,
-                    //            data = num
-                    //        });
-                    //    }
-                    //    else WriteCacheStackingData(plc, task, machine);
-                    //
-                    //    var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
-                    //    {
-                    //        addr = plc.writeAddr + 1,
-                    //        host = plc.ip,
-                    //        port = plc.port,
-                    //        data = 2
-                    //    });
-                    //}
                 }
             }
             else CMMLog.Debug($"缂撳瓨鍏ュ彔鐩樻満锛�013锛宲lc=null!");
@@ -1192,7 +1232,7 @@
 
         public static void WriteCacheStackingData(Settings.PlcInfo plc, TN_I_TASK_MST task, WMSInfo machine)
         {
-            if (plc.deviceType == "22")
+            if (plc.deviceType == "23")
             {
                 //鍥涢挻杞﹂棿
                 var machineTwo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwoTetracobalt");
@@ -1204,7 +1244,7 @@
                     CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鍐欏叆鏁版嵁锛歿JsonConvert.SerializeObject(num)},IPort:{plc.ip},{plc.port}");
                     var wirteall01 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                     {
-                        addr = plc.writeAddr + 10,
+                        addr = plc.writeAddr + 5,
                         host = plc.ip,
                         port = plc.port,
                         data = num
@@ -1245,12 +1285,12 @@
         {
 
             var ErpItemInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", machineInfoTwo.materialCode), "ERPItemTable");
-            CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿5锛屾煡璇achineInfoTwoTetracobalt琛ㄤ俊鎭細{JsonConvert.SerializeObject(ErpItemInfo)}銆�);
+            CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿4锛屾煡璇RPItemTable琛ㄤ俊鎭細{JsonConvert.SerializeObject(ErpItemInfo)}銆�);
 
             //鍋忕Щ閲�+11 閫氶亾鑼冨洿锛�40311 ~ 40390
             CMMLog.Info($"鍙犵洏鏈烘暟鎹鐞�");
             //10~19閫氶亾
-            int[] num = new int[105];//鎬婚暱搴︼細80
+            int[] num = new int[105];//鎬婚暱搴︼細105
 
             #region   0~23 => 6~29
             int a = 0;//鍛樺伐缂栧彿澶勭悊
@@ -1262,26 +1302,33 @@
             a = 0;//鎵樼洏鐮佸鐞�             for (int b = 5; b <= 7; b++)
             {
-                num[b] = int.Parse(AsciiToTen(machine.trayCode.Substring(a, 2)));
-                a = a + 2;
+                //num[b] = int.Parse(AsciiToTen(machine.trayCode.Substring(a, 2)));
+                //a = a + 2;
+
+                num[b] = 0;
             }
             num[8] = int.Parse(AsciiToTen(machine.location));//鍖呰鏈哄彿
             for (int b = 9; b <= 10; b++)
             {
-                int k = b % 2 == 0 ? 0 : 16;
+                int k = b % 2 == 0 ? 16 : 0;
                 num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machine.productWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2);
             }
             for (int b = 11; b <= 12; b++)
             {
-                int k = b % 2 == 0 ? 0 : 16;
+                int k = b % 2 == 0 ? 16 : 0;
                 num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machineInfoTwo.trayCodeWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2);
             }
             for (int b = 13; b <= 14; b++)
             {
-                int k = b % 2 == 0 ? 0 : 16;
+                int k = b % 2 == 0 ? 16 : 0;
                 num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machine.oneTrayWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2);
             }
-            for (int b = 15; b <= 16; b++) num[b] = 0;// 鍙犲寘鍚庡疄闄呴噸閲�&& 澶嶇О缁撴灉 榛樿锛�
+            for (int b = 15; b <= 16; b++)
+            {
+                var arrTwo = machineInfoTwo.oneTrayWeightFC.Split(',').ToList();
+                num[b] = int.Parse(arrTwo[b - 15]);//澶嶇О閲嶉噺
+            }
+            //for (int b = 15; b <= 16; b++) num[b] = 0;// 鍙犲寘鍚庡疄闄呴噸閲�&& 澶嶇О缁撴灉 榛樿锛�
             num[17] = int.Parse(machineInfoTwo.trayType);
 
             num[18] = machine.addState;//鏄惁闇�鍙犲寘
@@ -1322,9 +1369,17 @@
             for (int x = maxLength + 1; x <= 54; x++) num[x] = 0;//灏嗕骇鍝佹壒娆″彿鏃犳暟鎹殑閫氶亾鍏ㄩ儴缃负 0
             #endregion
 
-            #region   55~64 => 61~70 浜у搧鍨嬪彿
+            #region   55~64 => 61~70 浜у搧鍨嬪彿(鍥涢挻浜у搧鍨嬪彿鏈変腑鏂囧拰鑻辨枃)
 
-            ERPService.HandleItemInfoChina(machine.itemCode, 55, 64, num);// 涓枃澶勭悊 55~64 61~70
+            if (Regex.IsMatch(ErpItemInfo.item_spec, @"[\u4e00-\u9fff]"))
+            {
+                ERPService.HandleItemInfoChina(ErpItemInfo.item_spec, 55, 64, num);// 涓枃澶勭悊 55~64 61~70
+            }
+            else
+            {
+                ERPService.HandleItemInfo(ErpItemInfo.item_spec, 55, 64, num);
+            }
+            
 
             //string data2 = machine.itemCode;
             //CMMLog.Info($"51~50data2_1:{data2}");
@@ -1388,69 +1443,96 @@
             var plc = Settings.GetPlcInfo().Where(a => a.deviceType == ip).FirstOrDefault();
             if(plc != null)
             {
-                OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                if(plc.deviceType == "23")
                 {
-                    addr = plc.writeAddr + 1,
-                    host = plc.ip,
-                    data = 2,//4
-                    port = plc.port
-                });
-                Thread.Sleep(100);
-                var readres = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                {
-                    dataNum = 2,
-                    addr = plc.readAddr + 1,
-                    host = plc.ip,
-                    port = plc.port
-                });
-                if (readres != null)
-                {
-                    var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
-                    if (readres.result[0] == 3 && readres.result[1] == 1)
+                    var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                     {
-                        CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�);
-                        //璇荤爜淇℃伅姣斿缁撴灉锛歄K           璇诲埌閫氶亾2鍙傛暟涓�鏃�灏忚溅灏嗘墭鐩樻斁缃湪鍙犵洏鏈轰笂锛堟敼鍙傛暟10涓�锛�-                        var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                        addr = plc.writeAddr + 1,
+                        host = plc.ip,
+                        data = 3,
+                        port = plc.port
+                    });
+                    if (wirte.errCode == 0)
+                    {
+                        var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
+                        MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single);
+
+                        wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                         {
                             addr = plc.writeAddr + 1,
                             host = plc.ip,
-                            data = 3,//4
+                            data = 0,
                             port = plc.port
                         });
-                        if (wirte.errCode == 0)
+                        TSHelper.GoToAGV(taskNo, 10, 7);
+                    }
+                }
+                else
+                {
+                    OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                    {
+                        addr = plc.writeAddr + 1,
+                        host = plc.ip,
+                        data = 2,
+                        port = plc.port
+                    });
+                    var readres = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                    {
+                        dataNum = 2,
+                        addr = plc.readAddr + 1,
+                        host = plc.ip,
+                        port = plc.port
+                    });
+                    if (readres != null)
+                    {
+                        var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
+                        if (readres.result[0] == 3 && readres.result[1] == 1)
                         {
-                            //骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁锛堜篃鍙湪灏忚溅绂诲紑鍙犵洏鏈轰箣鍚庡垹闄わ紝鏆傚畾閫氶亾2鍙傛暟1锛�-                            CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛歄K ,骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁");
-                            MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single);
-                            CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�);
-                            if (CacheStackingMouth8(plc))
+                            CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�);
+                            //璇荤爜淇℃伅姣斿缁撴灉锛歄K           璇诲埌閫氶亾2鍙傛暟涓�鏃�灏忚溅灏嗘墭鐩樻斁缃湪鍙犵洏鏈轰笂锛堟敼鍙傛暟10涓�锛�+                            var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                             {
-                                CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊兼垚鍔燂紝鏇存敼AGV鍙傛暟10涓�锛岃灏忚溅绂诲紑銆�);
-                                TSHelper.GoToAGV(taskNo, 10, 7);
+                                addr = plc.writeAddr + 1,
+                                host = plc.ip,
+                                data = 3,
+                                port = plc.port
+                            });
+                            if (wirte.errCode == 0)
+                            {
+                                //骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁锛堜篃鍙湪灏忚溅绂诲紑鍙犵洏鏈轰箣鍚庡垹闄わ紝鏆傚畾閫氶亾2鍙傛暟1锛�+                                CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛歄K ,骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁");
+                                MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single);
+                                CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�);
+                                if (CacheStackingMouth8(plc))
+                                {
+                                    CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊兼垚鍔燂紝鏇存敼AGV鍙傛暟10涓�锛岃灏忚溅绂诲紑銆�);
+                                    TSHelper.GoToAGV(taskNo, 10, 7);
+                                }
                             }
                         }
-                    }
-                    else if (readres.result[0] == 3 && readres.result[1] == 2)
-                    {
-                        CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧");
-                        //浜屾湡--璋冪敤 WMS 鏀归亾鎺ュ彛 鑾峰彇 鐩爣鐐逛綅锛屽苟 鏇存敼 AGV 绔欑偣
-                        string ChangeBit = WMSHelper.WmsUpdateWay(taskInfo.CN_S_SOURCE_NO, plc.Extend);
-                        if (!string.IsNullOrEmpty(ChangeBit))
+                        else if (readres.result[0] == 3 && readres.result[1] == 2)
                         {
-                            int[] parms = { StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT), StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit) };
-                            TSHelper.ChangeParam(taskNo, 1, parms);
-                            TSHelper.GoToAGV(taskNo, 3, 1);// 娉板窞鏍兼灄缇庢洿鏀硅捣鐐瑰眰鏁颁负1-鑽嗛棬涔熼渶瑕佹洿鏀�+                            CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧");
+                            //浜屾湡--璋冪敤 WMS 鏀归亾鎺ュ彛 鑾峰彇 鐩爣鐐逛綅锛屽苟 鏇存敼 AGV 绔欑偣
+                            string ChangeBit = WMSHelper.WmsUpdateWay(taskInfo.CN_S_SOURCE_NO, plc.Extend);
+                            if (!string.IsNullOrEmpty(ChangeBit))
+                            {
+                                int[] parms = { StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT), StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit) };
+                                TSHelper.ChangeParam(taskNo, 1, parms);
+                                TSHelper.GoToAGV(taskNo, 3, 1);// 娉板窞鏍兼灄缇庢洿鏀硅捣鐐瑰眰鏁颁负1-鑽嗛棬涔熼渶瑕佹洿鏀� 
-                            //TSHelper.ChangeParam(taskNo, 1, StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT));
-                            //TSHelper.ChangeParam(taskNo, 2, StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit));
-                            TSHelper.GoToAGV(taskNo, 10, 8);
-                            MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), Update.Set("CN_S_END_BIT", ChangeBit).Set("CN_S_START_BIT", taskInfo.CN_S_END_BIT), "TN_I_TASK_MST", UpdateFlags.None);
+                                //TSHelper.ChangeParam(taskNo, 1, StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT));
+                                //TSHelper.ChangeParam(taskNo, 2, StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit));
+                                TSHelper.GoToAGV(taskNo, 10, 8);
+                                MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), Update.Set("CN_S_END_BIT", ChangeBit).Set("CN_S_START_BIT", taskInfo.CN_S_END_BIT), "TN_I_TASK_MST", UpdateFlags.None);
+                            }
+                            else CMMLog.Debug($"璋冪敤WMS鏀归亾鎺ュ彛锛屾湭鑾峰彇鍒板彲鐢ㄧ偣浣嶃�");
+                            Console.WriteLine($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧");
                         }
-                        else CMMLog.Debug($"璋冪敤WMS鏀归亾鎺ュ彛锛屾湭鑾峰彇鍒板彲鐢ㄧ偣浣嶃�");
-                        Console.WriteLine($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧");
+                        //PLCControl.CacheStackingMouth6(plc);
                     }
-                    //PLCControl.CacheStackingMouth6(plc);
                 }
+                
             }
         }
 
@@ -1459,19 +1541,25 @@
         /// </summary>
         /// <param name="ip"></param>
         /// <param name="taskNo"></param>
-        internal static void CacheStackingMouth6(Settings.PlcInfo plc)
+        internal static void CacheStackingMouth6(Settings.PlcInfo plc, string taskNo)
         {
-            //var readres = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-            //{
-            //    dataNum = 2,
-            //    addr = plc.readAddr + 1,
-            //    host = plc.ip,
-            //    port = plc.port
-            //});
-            //if (readres != null)
-            //{
-
-            //}
+            var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
+            MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single);
+            var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+            {
+                addr = plc.writeAddr + 1,
+                data = 3,
+                host = plc.ip,
+                port = plc.port
+            });
+            Thread.Sleep(2000);
+            wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+            {
+                addr = plc.writeAddr + 1,
+                data = 0,
+                host = plc.ip,
+                port = plc.port
+            });
         }
 
         /// <summary>
@@ -1734,18 +1822,26 @@
                     host = plc.ip,
                     port = plc.port
                 });
+                CMMLog.Info($"鍙犵洏涓嬬嚎璇诲彇閫氶亾{plc.ip}锛宲ort锛歿plc.port},鍦板潃锛歿plc.readAddr + 1}鐨勫�涓簕JsonConvert.SerializeObject(result)}");
                 if (result != null && result.errCode == 0)
                 {
                     //1.婊℃墭涓嬬嚎
                     if (result.result[0] == 1)
                     {
                         //鍒ゆ柇3妤煎彔鐩樿捣鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾病鏈夊垯鐢熸垚浠诲姟
-                        if (ProcessHelper.CheckStartFree(plc.location))
+                        if (ProcessHelper.CheckStartFree(plc.location)) 
                         {
                             string wmstaskno = "";
                             string traycode = "";
                             string trayType = "";
-                            if(plc.deviceType == "25") trayType = result.result[1] == 1 ? "宸濆瓧鎵� : "鐢板瓧鎵�;
+                            if (plc.deviceType == "25")
+                            {
+                                trayType = result.result[1] == 1 ? "宸濆瓧鎵� : result.result[1] == 2 ? "鐢板瓧鎵� : "";
+                                if (string.IsNullOrEmpty(trayType))
+                                {
+                                    return;
+                                }
+                            }
                             bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode,"","",false, trayType);
                             if (req)
                             {
@@ -2001,62 +2097,6 @@
                 }
             }
         }
-
-        /// <summary>
-        /// 3妤兼墦鍖呮満涓嬬嚎锛屽垽鏂墦鍖呮満鏄惁鐢辩敓鎴愭墦鍖呬笅绾跨殑浠诲姟锛堝洓閽磋溅闂达級
-        /// </summary>
-        /// <param name="plc"></param>
-        internal static void CheckPackingLineFullTwo(Settings.PlcInfo plc)
-        {
-            //璇籶lc淇″彿锛岀湅鏈夋病鏈変笅绾胯姹傦紝鍒ゆ柇鏄惁宸茬粡鏈変换鍔�-            //娌℃湁浠诲姟锛岀户缁璸lc锛屽寘瑁呬笅绾跨殑鐗╂枡淇″彿
-            //妫�煡鎵撳寘鏈洪�閬�鏄惁鏈夊嚭鏂欎换鍔′俊鍙凤紝濡傛灉鏈夌敓鎴愬彇鏂欎换鍔°�
-            if (CheckStartFree(plc.location))
-            {
-                try
-                {
-                    var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                    {
-                        dataNum = 1,
-                        addr = plc.readAddr + 1,
-                        host = plc.ip,
-                        port = plc.port
-                    });
-                    if (result != null && result.errCode == 0)
-                    {
-                        if (result.result[0] == 1)
-                        {
-                            //鑾峰彇MODBUS閫氶亾閲岄潰瀛樻斁鐨勬椂闂存埑
-                            var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                            {
-                                addr = plc.readAddr + 10,
-                                host = plc.ip,
-                                port = plc.port,
-                                dataNum = 170
-                            });
-                            if (resultTime.errCode == 0)
-                            {
-                                string wmstaskno = "";
-                                TimeCuoInfoComTwo timecuo = TimeCuoTwo(resultTime.result);
-                                if (timecuo != null)
-                                {
-                                    string timeStamp = timecuo.TimeCuo;
-                                    string employeeId = timecuo.employeeId1;
-                                    // ERP鍙樻洿-璋冪敤ERP鎺ュ彛浼犺緭鐩稿叧鏁版嵁
-                                    WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeStamp, timeStamp, employeeId,true);
-                                }
-                                else CMMLog.Info($"鏃堕棿鎴虫帴鍙h繑鍥炲�涓虹┖锛�);
-                            }
-                            else CMMLog.Info($"MODBUS鏃堕棿鎴虫暟鎹繑鍥炲�閿欒锛氳繑鍥炲�瑙f瀽锛歿JsonConvert.SerializeObject(result)}");
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    CMMLog.Error(ex.Message);
-                }
-            }
-        }
         #endregion
 
         #region   鎵撳寘鏈哄嚭鍙ODBUS浜や簰锛堝紑濮嬪彇鏂欙紝鍙栨枡瀹屾垚锛�@@ -2065,9 +2105,9 @@
         /// 璁惧鍏佽鍑烘枡	1	PLC鍐欙紝AMS璇�1-璁惧璇锋眰鍑烘枡锛�-鍏佽杩涘叆锛�-纭璐х墿鍙栬蛋锛岄�鍑虹墿鏂欙紱
 
         ///鎵撳寘绾夸笅绾库�鈥斿皬杞﹀紑濮嬪彇璐�-        internal static void PackingLineUnload1012(string ip, string taskNo)
+        internal static void PackingLineUnload1012(string ip, string taskNo, int port)
         {
-            var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault();
+            var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault();
             if (plc != null)
             {
                 try
@@ -2116,11 +2156,11 @@
         /// </summary>
         /// <param name="ip"></param>
         /// <param name="taskNo"></param>
-        internal static void PackingLineComplete4(string ip, string taskNo)
+        internal static void PackingLineComplete4(string ip, string taskNo, int port)
         {
             //鍙栬揣瀹屾垚鍚庨渶瑕佽鍙栬澶囨椂闂存埑閲岄潰鐨勬暟鎹紝骞跺皢鍏舵殏瀛樿嚦涓棿琛ㄧ瓑鍒板叆搴撲换鍔″畬鎴愪紶杈撶粰WMS
             
-            var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault();
+            var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault();
             if (plc != null)
             {
                 try
@@ -2742,7 +2782,7 @@
         /// <param name="info"></param>
         /// <param name="result"></param>
         /// <param name="noPack">true : MES浜や簰鏂瑰紡  false : 鏃燤ES浜や簰鏂瑰紡</param>
-        private static void GetMachineDataTetracobalt(int[] result ,bool noPack = true)
+        private static void GetMachineDataTetracobalt(int[] result, ref string timeStamp, bool noPack = true)
         {
             CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氳繘鍏ユ暟鎹鐞嗘祦绋嬶紒");
             
@@ -2792,7 +2832,7 @@
                     info.addState = Convert.ToInt32(Completion(result[18]), 2);
                     if (info.addState == 0) CMMLog.Error($"鏁版嵁澶勭悊娴佺▼锛氳幏鍙朚ODBUS淇℃伅寮傚父:鏄惁鍙犲寘鍊间负0.");
                     info.packageCode = Convert.ToInt32(Completion(result[19]), 2).ToString();
-                    info.productTime = Convert.ToInt32(Completion(result[21]) + Completion(result[22]), 2).ToString();
+                    info.productTime = Convert.ToInt32(Completion(result[20]) + Completion(result[21]), 2).ToString();
 
                     //info.addWeight = Convert.ToInt32(Completion(result[10]) + Completion(result[11]), 2).ToString();
                     //info.packNg = 1;//涓嶉渶瑕佹鍙傛暟 result[12]
@@ -2835,11 +2875,11 @@
                         //info.productType = RemoveNull(GetTrayCode(result.Skip(50).Take(10).ToArray()).Trim().ToString());
                         //info.materialCode = RemoveNull(GetTrayCode(result.Skip(60).Take(20).ToArray()).Trim().ToString());
 
-                        info.lotNo = RemoveNull(GetTrayCode(result.Skip(35).Take(20).ToArray()).Trim().ToString());
-                        info.productType = RemoveNull(GetTrayCode(result.Skip(55).Take(10).ToArray()).Trim().ToString());
-                        info.materialCode = RemoveNull(GetTrayCode(result.Skip(65).Take(15).ToArray()).Trim().ToString());
-                        info.materialName = RemoveNull(GetTrayCode(result.Skip(80).Take(20).ToArray()).Trim().ToString());
-                        info.measurementUnit = RemoveNull(GetTrayCode(result.Skip(100).Take(5).ToArray()).Trim().ToString());
+                        info.lotNo =RemoveNull(GetTrayCode(result.Skip(35).Take(20).ToArray()).Trim().ToString()).TrimStart();
+                        info.productType = RemoveNull(GetTrayCode(result.Skip(55).Take(10).ToArray()).Trim().ToString()).TrimStart();
+                        info.materialCode = RemoveNull(GetTrayCode(result.Skip(65).Take(15).ToArray()).Trim().ToString()).TrimStart();
+                        info.materialName = RemoveNull(GetTrayCode(result.Skip(80).Take(20).ToArray()).Trim().ToString()).TrimStart();
+                        info.measurementUnit = RemoveNull(GetTrayCode(result.Skip(100).Take(5).ToArray()).Trim().ToString()).TrimStart();
 
                         CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氬寘瑁呮満鏃燤ES鎯呭喌涓嬶紝鑾峰彇浠ュ線MES浼犺緭鐨勬暟鎹紝鏂拌幏寰楁暟鎹紝lotNo:{info.lotNo},productType:{info.productType},materialCode:{info.materialCode},materialName:{info.materialName},measurementUnit:{info.measurementUnit}");
                         
@@ -2847,18 +2887,22 @@
                         //娉ㄦ剰锛氳繖閲岃祴鍊间腑闂磋〃鍙傛暟璇峰鐓т俊鎭氦浜掕〃鍏蜂綋閫氶亾鍊煎搴�                         UpdateBuilder update = Update.Set("palletLayers", info.secondNg.ToString()).Set("overlappingLayers", info.addState.ToString()).Set("bagNo", info.packageCode).
                             Set("lotNo", info.lotNo).Set("productType", info.productType).Set("materialCode", info.materialCode).Set("materialName", info.materialName).Set("measurementUnit", info.measurementUnit);
-                        MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("machineNo", location), update, "MachiMachineInfoTetracobaltneInfo", UpdateFlags.None);
+                        MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("machineNo", location), update, "MachineInfoTetracobalt", UpdateFlags.None);
                         MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), update, "MachineInfoTwoTetracobalt", UpdateFlags.None);
                     }
                     //鍦ㄤ腑闂磋〃涓壘鍒板垰鍒氭彃鍏ョ殑MES鏁版嵁锛堢洰鍓嶈繕娌℃湁璇诲彇骞跺啓鍏ヨ澶囨暟鎹級
+
+                    timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1);
+                    trayCode = "VW" + timeStamp;
+
                     var query1 = Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0"));
                     UpdateBuilder updateBuider = Update.Set("empCode", info.empCode).Set("location", info.location).
-                        Set("trayCode", info.trayCode).Set("productWeight", info.productWeight).
+                        Set("trayCode", trayCode).Set("productWeight", info.productWeight).
                         Set("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight).Set("trayType", info.trayType).Set("addState", info.addState).
-                        Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime).
+                        Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime).Set("packageCode", info.packageCode).
                         Set("jsonData", json).Set("modify", DateTime.Now);
                     MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query1, updateBuider, "MachineInfoTetracobalt", UpdateFlags.None);
-                    MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None);
+                    MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(query1, updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None);
                     CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭洿鏂癕achineInfoTetracobalt涓棿琛ㄥ垰鍒氭彃鍏ョ殑MES鏁版嵁!璁惧鍙蜂负锛歿location},鎵樼洏鍙蜂负锛歿trayCode}");
                 }
                 else
@@ -3680,7 +3724,7 @@
                             if (result != null && result.errCode == 0 && result.result.Count() > 0)
                             {
                                 //1锛氬彇鏂�-                                if (result.result[0] == 1)
+                                if (result.result[0] == 1 || result.result[0] == 5)
                                 {
                                     string PlcBit02 = Settings.GetPlcInfo().Where(a => a.deviceType == "22").FirstOrDefault().location;
                                     //鍖呰涓嬬嚎浠诲姟锛岀粓鐐逛负澶嶇О浣嶇疆锛堣繖閲屽垽鏂寘瑁呮満璧风偣锛屽绉拌捣鐐圭粓鐐瑰潎鏃犱换鍔★紝鍒欐帹閫佷换鍔★級
@@ -3705,7 +3749,8 @@
                                                 if (trayCode.errCode == 0 && trayCode.result.Length == 105)
                                                 {
                                                     //鑾峰彇鎵樼洏鐮佺瓑淇℃伅  璇诲彇閫氶亾 11銆�2銆�3鐨勬暟鎹綔涓烘墭鐩樼爜   璇诲彇鍏跺畠閫氶亾 閲嶉噺 鍙犲寘绛変俊鎭�鎵�湁鏁版嵁瀛樺叆MachineInfo琛�-                                                    GetMachineDataTetracobalt(trayCode.result, false);
+                                                    string timeStamp = "";
+                                                    GetMachineDataTetracobalt(trayCode.result, ref timeStamp, false);
                                                     var tray = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTetracobalt");
                                                     if (tray != null)
                                                     {
@@ -3717,15 +3762,30 @@
                                                             CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮侊細{employeeId}");
                                                             // 鍒ゆ柇褰撳墠銆愬憳宸ョ紪鍙枫�閫氶亾淇℃伅璇诲嚭鏉ョ殑鍛樺伐缂栧彿鏄惁宸茬粡瀛樺湪浜庢垜浠殑鍛樺伐淇℃伅琛�ERPEmployeeTable(鏌ヨ瀛楁-employee_id)
                                                             var erpEmployeeInfo = MongoDBSingleton.Instance.FindOne<ERPEmployeeTable>(Query.EQ("employee_id", employeeId), "ERPEmployeeTable");
-                                                            if (erpEmployeeInfo == null) IsContLaterCode = false;
+                                                            var erpItemInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", tray.materialCode), "ERPItemTable");
+                                                            if (string.IsNullOrEmpty(tray.empCode) || string.IsNullOrEmpty(tray.materialCode) || erpEmployeeInfo == null || erpEmployeeInfo == null)
+                                                            {
+                                                                CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氫汉鍛樿〃鎴栬�鐗╂枡琛ㄦ湭鎵惧埌璇ユ暟鎹紝鍛樺伐缂栧彿锛歿employeeId}锛岀墿鏂欑紪鐮侊細{tray.materialCode}锛�);
+                                                                IsContLaterCode = false;
+                                                            }
                                                             else CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮佹煡璇㈡垚鍔�);
                                                         }
 
                                                         if (IsContLaterCode)
                                                         {
-                                                            string timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1);
-                                                            tray.trayCode = "VW" + timeStamp;
-                                                            MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("_id", tray._id), Update.Set("trayCode", tray.trayCode), UpdateFlags.None);
+                                                            //妫�储鍛樺伐淇℃伅鎴愬姛
+                                                            var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                                            {
+                                                                addr = pmInfo.writeAddr,
+                                                                host = pmInfo.ip,
+                                                                port = pmInfo.port,
+                                                                data = 4
+                                                            });
+                                                            CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛歩p:{pmInfo.ip},port:{pmInfo.port},addr:{pmInfo.writeAddr},鍐欏叆4");
+                                                            //string timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1);
+                                                            //tray.trayCode = "VW" + timeStamp;
+                                                            //MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("_id", tray._id), Update.Set("trayCode", tray.trayCode), UpdateFlags.None);
+                                                            //MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("_id", tray._id), Update.Set("trayCode", tray.trayCode), UpdateFlags.None);
                                                             CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氭墭鐩樼爜锛歿tray.trayCode}");
                                                             if (tray.addState == 0)
                                                             {
@@ -3735,22 +3795,57 @@
                                                             }
                                                             else if (tray.trayCode != "0" && !string.IsNullOrEmpty(tray.trayCode))
                                                             {
-                                                                HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), pmInfo.location, PlcBit02, "3妤煎寘瑁呭彇鏂�鍥涢挻)", 0, tray.trayCode, timeStamp);
-                                                                if (req.success)
+                                                                if (result.result[0] == 1)
                                                                 {
-                                                                    string weight = (double.Parse(tray.oneTrayWeight) / 100).ToString();
-                                                                    ERPService.packageInfo(tray.machineNo, tray.trayCode, tray.lotNo, weight);
-
-                                                                    //璁板綍鎵樼洏绫诲瀷
-                                                                    var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", pmInfo.location), "trayTypeTable");
-                                                                    if(trayTypeInfo == null)
+                                                                    HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), pmInfo.location, PlcBit02, "3妤煎寘瑁呭彇鏂�鍥涢挻)", 0, tray.trayCode, timeStamp);
+                                                                    if (req.success)
                                                                     {
-                                                                        MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable
+                                                                        string weight = (double.Parse(tray.oneTrayWeight) / 100).ToString();
+                                                                        ERPService.packageInfo(tray.machineNo, tray.trayCode, tray.lotNo, weight);
+
+                                                                        //璁板綍鎵樼洏绫诲瀷
+                                                                        var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", pmInfo.location), "trayTypeTable");
+                                                                        if (trayTypeInfo == null)
                                                                         {
-                                                                            locCode = pmInfo.location,
-                                                                            trayType = tray.trayType
-                                                                        });
+                                                                            MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable
+                                                                            {
+                                                                                locCode = pmInfo.location,
+                                                                                trayType = tray.trayType
+                                                                            });
+                                                                        }
                                                                     }
+                                                                }
+                                                                else
+                                                                {
+                                                                    //var writeRes0 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                                                    //{
+                                                                    //    host = pmInfo.ip,
+                                                                    //    addr = pmInfo.writeAddr,
+                                                                    //    data = 5,//鍘熷厛鏄�,鍗曚釜鍐欏叆
+                                                                    //    port = pmInfo.port
+                                                                    //});
+
+                                                                    //浜哄伐妯″紡锛屾棤闇�敓鎴愪换鍔�+                                                                    //鍒犻櫎MachineInfoTetracobalt琛ㄤ腑鐨勬暟鎹�+                                                                    MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", pmInfo.location), Query.EQ("trayCode", tray.trayCode)), "MachineInfoTetracobalt", RemoveFlags.None);
+
+                                                                    //鍒犻櫎 MachineInfoTwoTetracobalt 閲嶅鐨勬暟鎹�+                                                                    var twoInfo = MongoDBSingleton.Instance.Find<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", tray.lotNo), Query.EQ("packageCode",tray.packageCode)), "MachineInfoTwoTetracobalt");
+                                                                    if(twoInfo.Count > 1)
+                                                                    {
+                                                                        foreach(var a in twoInfo)
+                                                                        {
+                                                                            MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("_id", a._id),RemoveFlags.None);
+                                                                            if (MongoDBSingleton.Instance.Find<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", tray.lotNo), Query.EQ("packageCode", tray.packageCode)), "MachineInfoTwoTetracobalt").Count == 1)
+                                                                            {
+                                                                                break;
+                                                                            }
+                                                                        }
+                                                                    }
+
+                                                                    //璁板綍鍖呰闂翠笅鏂欎俊鎭�+                                                                    string Weight = (decimal.Parse(tray.oneTrayWeight) / 100).ToString("F2");
+                                                                    MongoDBSingleton.Instance.Insert<packageInfoModel>(new packageInfoModel { machineNo = tray.machineNo, trayCode = tray.trayCode, batchNo = tray.lotNo, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), weight = Weight });
                                                                 }
                                                             }
                                                         }
@@ -3940,7 +4035,7 @@
                 if (result != null && result.errCode == 0)
                 {
                     //3锛氫汉宸ュ彨绌烘墭鐩�宸濆瓧)  4:浜哄伐鍙┖鎵樼洏(鐢板瓧)
-                    if (result.result[0] == 3 || result.result[0] == 4)
+                    if ((pmInfo.deviceType == "1" && result.result[0] == 3)|| (pmInfo.deviceType == "21" &&(result.result[0] == 3 || result.result[0] == 4)))
                     {
                         //鍖呰绾胯ˉ绌烘祦绋�                         //鍒ゆ柇绌烘墭缂撳瓨鐐癸紙5 瀵�2锛夋槸鍚︽湁绌烘墭锛屾湁绌烘墭鍒ゆ柇鏄惁鏈変换鍔★紝鏈変换鍔″垯鍒ゆ柇鍙︿竴涓偣浣�@@ -3953,9 +4048,9 @@
                             {
                                 CMMLog.Info($"鍛ㄨ浆鎵樼洏浣嶏細{a}");
                                 var ddInfo = Settings.GetDDSiteList().Where(b => b.ddLoc == a && b.Enable == 1).FirstOrDefault();
-                                if(ddInfo != null)
+                                if (ddInfo != null)
                                 {
-                                    if(ddInfo.trayType == result.result[0] - 2)
+                                    if (ddInfo.trayType == result.result[0] - 2)
                                     {
                                         if (ProcessHelper.PickUpEndFree(pmInfo.location) && ProcessHelper.PickUpStartFree(a))
                                         {
@@ -3980,21 +4075,6 @@
                             CMMLog.Info("閰嶇疆鏂囦欢鏈厤缃寘瑁呮満绌烘墭缂撳瓨鐐�);
                         }
                     }
-                    //娴佺▼鏈鎺ュソ锛屾槸鍚﹁繖鏍蜂娇鐢�寰呭畾
-                    //if (result.result[0] == 4)
-                    //{
-                    //    //璋冪敤wms鍑哄簱鎺ュ彛
-                    //    var tasks = MongoDBSingleton.Instance.Find<TN_I_TASK_MST>(Query.EQ("CN_S_END_BIT", pmInfo.location), "TN_I_TASK_MST");
-                    //    //鍒ゆ柇涓�笅褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤
-                    //    if (ProcessHelper.CheckEndFree(pmInfo.location) && tasks.Count == 0)
-                    //    {
-                    //        //鍙互鐢熸垚浠诲姟锛岃皟WMS鎺ュ彛鑾峰彇浠诲姟淇℃伅
-                    //        bool req = WMSHelper.WMSOut(pmInfo.location, "");
-                    //        if (req) CMMLog.Debug($"璋冪敤WMS鑾峰彇杈呮潗鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級
-                    //        else CMMLog.Debug($"璋冪敤WMS鑾峰彇杈呮潗鍑哄簱鐢熸垚浠诲姟澶辫触锛�);
-                    //    }
-                    //    else CMMLog.Debug($"妫�煡褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾垨鑰匨ST涓昏〃涓湁缂撳瓨鏋跺叆鍙犵洏鏈虹殑浠诲姟锛�);
-                    //}
                 }
                 else
                 {
@@ -4010,7 +4090,7 @@
             {
                 if (action)
                 {
-                    int[] num = new int[3] {1,1,1};
+                    int[] num = new int[3] {1,0,1};
                     var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                     {
                         host = plc.ip,
@@ -4034,14 +4114,24 @@
                         {
                             //鎺ㄩ�灏忚溅杩涘叆
                             TSHelper.GoToAGV(taskNo, 10, 3);
-                            writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+
+                            int[] num1 = new int[2] { 1, 2};
+                            writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                             {
                                 host = plc.ip,
-                                addr = plc.writeAddr + 2,
-                                data = 2,
+                                addr = plc.writeAddr + 1,
+                                data = num1,
                                 port = plc.port
                             });
-                            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 2}閲岄潰鏁版嵁涓�.");
+
+                            //writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                            //{
+                            //    host = plc.ip,
+                            //    addr = plc.writeAddr + 2,
+                            //    data = 2,
+                            //    port = plc.port
+                            //});
+                            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num1)}.");
                         }
                     }
                 }
@@ -4066,17 +4156,28 @@
             {
                 if (action)
                 {
-                    int[] num = new int[4] { 2, 0, 1, 1 };
-                    var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
+                    var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
+                        dataNum = 1,
+                        addr = plc.readAddr + 3,
                         host = plc.ip,
-                        addr = plc.writeAddr,
-                        data = num,
                         port = plc.port
                     });
-                    CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+                    CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr + 3}閲岄潰鏁版嵁涓簕result.result[0]}.");
+                    if (result.result[0] == 1)
+                    {
+                        int[] num = new int[4] { 2, 0, 0, 1 };
+                        var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
+                        {
+                            host = plc.ip,
+                            addr = plc.writeAddr,
+                            data = num,
+                            port = plc.port
+                        });
+                        CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+                    }
 
-                    var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                    result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
                         dataNum = 4,
                         addr = plc.readAddr,
@@ -4086,11 +4187,11 @@
                     CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr}閲岄潰鏁版嵁涓簕result.result[0]}銆亄result.result[1]}銆亄result.result[3]}.");
                     if (result != null && result.errCode == 0)
                     {
-                        if (result.result[0] == 2 && result.result[1] == 2 && result.result[2] == 2)
+                        if (result.result[0] == 2 && result.result[1] == 2 && result.result[3] == 2)
                         {
                             //鎺ㄩ�灏忚溅杩涘叆
-                            TSHelper.GoToAGV(taskNo, 10, 3);
-                            writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                            TSHelper.GoToAGV(taskNo, 10, 1);
+                            var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                             {
                                 host = plc.ip,
                                 addr = plc.writeAddr + 3,
@@ -4146,6 +4247,204 @@
             }
             Thread.Sleep(100000);
         }
+
+        internal static void CheckPackingLineFullThree(Settings.PlcInfo plc)
+        {
+            var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            {
+                dataNum = 1,
+                addr = plc.readAddr + 1,
+                host = plc.ip,
+                port = plc.port
+            });
+            CMMLog.Info($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 1}锛宺euslt:{JsonConvert.SerializeObject(result)}.");
+            if(result != null && result.errCode == 0)
+            {
+                if (result.result[0] == 1)
+                {
+                    var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                    {
+                        dataNum = 26,
+                        addr = plc.readAddr + 8,
+                        host = plc.ip,
+                        port = plc.port
+                    });
+                    CMMLog.Info($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 8}锛宺euslt:{JsonConvert.SerializeObject(resultTime)}.");
+                    if (resultTime.errCode == 0)
+                    {
+                        string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString();
+                        string empCode = RemoveNull(GetTrayCode(resultTime.result.Skip(2).Take(5).ToArray()));//鍛樺伐缂栫爜
+                        string machineCode = RemoveNull(GetTrayCode(resultTime.result.Skip(10).Take(1).ToArray()));//鍖呰鏈哄彿
+                        int needWeight = Convert.ToInt32(Completion(resultTime.result[11]) + Completion(resultTime.result[12]), 2);//浜у搧闇�眰閲嶉噺
+                        int oneWeight = Convert.ToInt32(Completion(resultTime.result[13]) + Completion(resultTime.result[14]), 2);//鍗曟墭姣涢噸
+                        int readWeight = Convert.ToInt32(Completion(resultTime.result[15]) + Completion(resultTime.result[16]), 2);//鍗曟墭鍑�噸
+                        int fcWeight = Convert.ToInt32(Completion(resultTime.result[17]) + Completion(resultTime.result[18]), 2);//鍗曟墭澶嶇О閲嶉噺
+                        int trayType = Convert.ToInt32(Completion(resultTime.result[19]), 2);//鎵樼洏绫诲瀷
+                        int addState = Convert.ToInt32(Completion(resultTime.result[20]), 2);//鍙犲寘灞傛暟
+                        int bagNumber = Convert.ToInt32(Completion(resultTime.result[21]), 2);//琚嬪彿
+                        int productTime = Convert.ToInt32(Completion(resultTime.result[22]) + Completion(resultTime.result[23]), 2);//鐢熶骇鏃ユ湡
+
+                        result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                        {
+                            dataNum = 70,
+                            addr = plc.readAddr + 110,
+                            host = plc.ip,
+                            port = plc.port
+                        });
+                        CMMLog.Info($"涓嬬嚎鍙o紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr + 140},result:{JsonConvert.SerializeObject(result)}");
+                        string lotNo = RemoveNull(GetTrayCode(result.result.Skip(0).Take(20).ToArray()).Trim().ToString());
+                        string materialCode = RemoveNull(GetTrayCode(result.result.Skip(30).Take(15).ToArray()).Trim().ToString());
+                        CMMLog.Info($"涓嬬嚎鍙o細timeCuoData:{timeCuoData},empCode:{empCode},machineCode:{machineCode},needWeight:{needWeight},oneWeight:{oneWeight},readWeight:{readWeight}" +
+                            $",fcWeight:{fcWeight},trayType:{trayType},addState:{addState},bagNumber:{bagNumber},productTime:{productTime},TimeCuo:{timeCuoData}");
+                        var timeTwo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuoData), "TimeCuoInfoComTwo");
+                        if (timeTwo == null)
+                        {
+                            MongoDBSingleton.Instance.Insert<TimeCuoInfoComTwo>(new TimeCuoInfoComTwo
+                            {
+                                timeCuo = timeCuoData,
+                                employeeId = empCode,
+                                packingMachineNumber = machineCode,
+                                needWeight = needWeight,
+                                oneWeight = oneWeight,
+                                realWeight = readWeight,
+                                FCWeight = fcWeight,
+                                trayType = trayType.ToString(),
+                                isFold = addState,
+                                bagNumber = bagNumber,
+                                productData = productTime.ToString(),
+                                TimeCuo = timeCuoData,
+                                lotNo = lotNo,
+                                materialCode = materialCode
+                            }, "TimeCuoInfoComTwo");
+                        }
+                        else
+                        {
+                            var query1 = Query.EQ("TimeCuo", timeCuoData);
+                            UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight)
+                                                    .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType.ToString())
+                                                    .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime.ToString()).Set("TimeCuo", timeCuoData)
+                                                    .Set("materialCode", materialCode);
+                            MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(query1, updateBuilder, "TimeCuoInfoComTwo", UpdateFlags.None);
+                        }
+                        string wmstaskno = "";
+                        WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, empCode, true);
+                    }
+                }
+            }
+
+
+            //string trayCode = "";
+            //var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            //{
+            //    dataNum = 25,
+            //    addr = plc.readAddr,
+            //    host = plc.ip,
+            //    port = plc.port
+            //});
+            //CMMLog.Info($"璐存爣鏈鸿幏鍙栦俊鎭紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr},result:{JsonConvert.SerializeObject(result)}");
+            //if(result != null && result.errCode == 0)
+            //{
+            //    if (result.result[0] == 1)
+            //    {
+            //        //鑾峰彇鐗╂枡淇℃伅 鏍规嵁鎵樼洏鐮佸尯鍒�+            //        trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮�+            //
+            //        if (!string.IsNullOrEmpty(trayCode))
+            //        {
+            //            var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo");
+            //            if (infoPack == null)
+            //            {
+            //                string empCode = RemoveNull(GetTrayCode(result.result.Skip(1).Take(5).ToArray()));//鍛樺伐缂栫爜
+            //                string machineCode = RemoveNull(GetTrayCode(result.result.Skip(9).Take(1).ToArray()));//鍖呰鏈哄彿
+            //                int needWeight = Convert.ToInt32(Completion(result.result[10]) + Completion(result.result[11]), 2);//浜у搧闇�眰閲嶉噺
+            //                int oneWeight = Convert.ToInt32(Completion(result.result[12]) + Completion(result.result[13]), 2);//鍗曟墭姣涢噸
+            //                int readWeight = Convert.ToInt32(Completion(result.result[14]) + Completion(result.result[15]), 2);//鍗曟墭鍑�噸
+            //                int fcWeight = Convert.ToInt32(Completion(result.result[16]) + Completion(result.result[17]), 2);//鍗曟墭澶嶇О閲嶉噺
+            //                int trayType = Convert.ToInt32(Completion(result.result[18]), 2);//鎵樼洏绫诲瀷
+            //                int addState = Convert.ToInt32(Completion(result.result[19]), 2);//鍙犲寘灞傛暟
+            //                int bagNumber = Convert.ToInt32(Completion(result.result[20]), 2);//琚嬪彿
+            //                int productTime = Convert.ToInt32(Completion(result.result[21]) + Completion(result.result[22]), 2);//鐢熶骇鏃ユ湡
+            //                string timeCuoTwo = Convert.ToInt32(Completion(result.result[23]) + Completion(result.result[24]), 2).ToString(); //鏃堕棿鎴�+            //
+            //                UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("trayCode", trayCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight)
+            //                                        .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType)
+            //                                        .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime);
+            //                //浜у搧鎵规鍙� 浜у搧鍨嬪彿 鐗╂枡鍚嶇О 璁¢噺鍗曚綅鍧囧彲鍦╡rp琛ㄤ腑鏍规嵁鐗╂枡缂栫爜鑾峰彇
+            //
+            //                result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            //                {
+            //                    dataNum = 15,
+            //                    addr = plc.readAddr + 131,
+            //                    host = plc.ip,
+            //                    port = plc.port
+            //                });
+            //                CMMLog.Info($"璐存爣鏈猴紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr + 131},result:{JsonConvert.SerializeObject(result)}");
+            //                string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString());
+            //                UpdateBuilder update = Update.Set("materialCode", materialCode).Set("createTime", DateTime.Now);
+            //                MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None);
+            //
+            //                var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+            //                {
+            //                    host = plc.ip,
+            //                    addr = plc.writeAddr,
+            //                    data = 1,
+            //                    port = plc.port
+            //                });
+            //                CMMLog.Debug($"璐存爣鏈猴紝鍐欏叆 ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr}鐨勬暟鎹负1.");
+            //            }
+            //        }
+            //    }
+            //}
+            //
+            //var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault();
+            //if(xxPlc != null)
+            //{
+            //    if (CheckStartFree(plc.location))
+            //    {
+            //        result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            //        {
+            //            dataNum = 1,
+            //            addr = plc.readAddr + 1,
+            //            host = plc.ip,
+            //            port = plc.port
+            //        });
+            //
+            //        CMMLog.Debug($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 1}锛宺euslt:{JsonConvert.SerializeObject(result)}.");
+            //        if (result != null && result.errCode == 0)
+            //        {
+            //            if (result.result[0] == 1)
+            //            {
+            //                var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            //                {
+            //                    dataNum = 2,
+            //                    addr = plc.readAddr + 8,
+            //                    host = plc.ip,
+            //                    port = plc.port
+            //                });
+            //                CMMLog.Debug($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 8}锛宺euslt:{JsonConvert.SerializeObject(result)}.");
+            //                if (resultTime.errCode == 0)
+            //                {
+            //                    string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString();
+            //                    TimeCuoInfoComTwo time = null;
+            //                    var timeTwo = MongoDBSingleton.Instance.Find<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), "TimeCuoInfoComTwo");
+            //                    if (timeTwo.Count > 0)
+            //                    {
+            //                        time = timeTwo.OrderBy(a => a.createTime).FirstOrDefault();
+            //                        MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("_id", time._id), Update.Set("TimeCuo", timeCuoData));
+            //                    }
+            //                    string wmstaskno = "";
+            //                    WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, time.employeeId, true);
+            //                }
+            //            }
+            //        }
+            //    }
+            //}
+            //else
+            //{
+            //    CMMLog.Info("涓嬬嚎鍙h澶囨湭閰嶇疆");
+            //}
+
+        }
         #endregion
     }
 }

--
Gitblit v1.9.1