From c248264e3bc150d145fd38f76f468f938270782a Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期五, 20 六月 2025 17:14:26 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs   |    4 
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs |    2 
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs  |  245 +++++++++++++++++++++++++++++++++---------------
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ERPService.cs  |    1 
 4 files changed, 173 insertions(+), 79 deletions(-)

diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ERPService.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ERPService.cs
index a5d34e3..42ab204 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ERPService.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ERPService.cs
@@ -230,6 +230,7 @@
                     {
                         MongoDBSingleton.Instance.Remove<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", RemoveFlags.None);
                         MongoDBSingleton.Instance.Remove<TimeCuoInfoCom>(Query.EQ("timeStamp", int.Parse(a.timeStamp)), "TimeCuoInfoCom", RemoveFlags.None);
+                        MongoDBSingleton.Instance.Remove<TimeCuoInfoComTwo>(Query.EQ("timeStamp", int.Parse(a.timeStamp)), "TimeCuoInfoComTwo", RemoveFlags.None);
                     }
                 });
             }
diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs
index 126e53a..67b86a9 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs
@@ -339,7 +339,7 @@
             //鍥涢挻杞﹂棿鎵撳寘涓嬬嚎鐗╂枡淇℃伅闇�浠庝笅绾垮彛鑾峰彇
             if (currActionModel.CN_N_ACTION_CODE == 10016)
             {
-                var plc = Settings.GetPlcInfo().Where(a => a.enable == 1 && a.deviceType == "26").FirstOrDefault();
+                var plc = Settings.GetPlcInfo().Where(a => a.enable == 1 && a.deviceType == "27").FirstOrDefault();
                 if (plc != null)
                 {
                     if (CheckStartFree(plc.location))
diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
index d541128..7d3bc4d 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
@@ -22,6 +22,8 @@
 using static Hanhe.iWCS.TaizhouGEMTwoProtocol.ProtocolAnalysis;
 using log4net.Appender;
 using System.Net.Configuration;
+using static System.Runtime.CompilerServices.RuntimeHelpers;
+using System.Reflection.Emit;
 
 namespace Hanhe.iWCS.TaizhouGEMTwoProtocol
 {
@@ -4144,107 +4146,198 @@
 
         internal static void CheckPackingLineFullThree(Settings.PlcInfo plc)
         {
-            string trayCode = "";
             var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
             {
-                dataNum = 25,
-                addr = plc.readAddr,
+                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)
                 {
-                    //鑾峰彇鐗╂枡淇℃伅 鏍规嵁鎵樼洏鐮佸尯鍒�-                    trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮�-
-
-                    var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo");
-                    if (infoPack != null)
+                    var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
-                        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琛ㄤ腑鏍规嵁鐗╂枡缂栫爜鑾峰彇
+                        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 = 15,
-                            addr = plc.readAddr + 131,
+                            addr = plc.readAddr + 140,
                             host = plc.ip,
                             port = plc.port
                         });
-
+                        CMMLog.Info($"涓嬬嚎鍙o紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr + 140},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
+                        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)
                         {
-                            host = plc.ip,
-                            addr = plc.writeAddr,
-                            data = 1,
-                            port = plc.port
-                        });
-                        CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�.");
-                    }
-                }
-            }
-
-            var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault();
-            if(xxPlc != null)
-            {
-                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)
-                    {
-                        var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-                        {
-                            dataNum = 2,
-                            addr = plc.readAddr + 8,
-                            host = plc.ip,
-                            port = plc.port
-                        });
-                        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)
+                            MongoDBSingleton.Instance.Insert<TimeCuoInfoComTwo>(new TimeCuoInfoComTwo
                             {
-                                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);
+                                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,
+                                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);
                     }
                 }
             }
-            else
-            {
-                CMMLog.Info("涓嬬嚎鍙h澶囨湭閰嶇疆");
-            }
+
+
+            //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
diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs
index 6a3d933..044cfd0 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs
@@ -423,8 +423,8 @@
                         }
                         else
                         {
-                            var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("timeStamp", timeStamp), "TimeCuoInfoCom");
-                            CMMLog.Info($"WMSIn-{startBit}:{ItemCode}锛氭煡璇㈡潯浠讹細timeStamp={timeStamp},璇诲嚭 TimeCuoInfoComTwo 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(time)}");
+                            var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeStamp), "TimeCuoInfoComTwo");
+                            CMMLog.Info($"WMSIn-{startBit}:{ItemCode}锛氭煡璇㈡潯浠讹細TimeCuo={timeStamp},璇诲嚭 TimeCuoInfoComTwo 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(time)}");
                             var erpItemTableInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", time.materialCode), "ERPItemTable");
                             CMMLog.Info($"WMSIn-{startBit}:鏌ヨ鏉′欢锛歩tem_code={time.materialCode},璇诲嚭 ERPItemTable 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(erpItemTableInfo)}");
                             if (ItemCode == "time" && time != null && erpItemTableInfo != null)

--
Gitblit v1.9.1