From 5ccc957c0e4768336e3272346942e1d5e2f14624 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期一, 23 六月 2025 17:31:02 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs |  155 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 130 insertions(+), 25 deletions(-)

diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
index 7d3bc4d..bf0202b 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
@@ -24,6 +24,7 @@
 using System.Net.Configuration;
 using static System.Runtime.CompilerServices.RuntimeHelpers;
 using System.Reflection.Emit;
+using System.Text.RegularExpressions;
 
 namespace Hanhe.iWCS.TaizhouGEMTwoProtocol
 {
@@ -1068,7 +1069,6 @@
 
                     WriteCacheStackingData(plc, task, machine);
 
-
                     var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                     {
                         addr = plc.writeAddr + 1,
@@ -1094,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琛ㄧず鍙犳墭鐐圭敵璇峰叆鏂�@@ -1114,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}");
@@ -1249,17 +1310,17 @@
             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++)
@@ -1308,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}");
@@ -3655,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;
                                     //鍖呰涓嬬嚎浠诲姟锛岀粓鐐逛负澶嶇О浣嶇疆锛堣繖閲屽垽鏂寘瑁呮満璧风偣锛屽绉拌捣鐐圭粓鐐瑰潎鏃犱换鍔★紝鍒欐帹閫佷换鍔★級
@@ -3712,7 +3781,7 @@
                                                                 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);
@@ -3726,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 });
                                                                 }
                                                             }
                                                         }
@@ -4182,14 +4286,14 @@
 
                         result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                         {
-                            dataNum = 15,
-                            addr = plc.readAddr + 140,
+                            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 materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString());
-
+                        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");
@@ -4209,6 +4313,7 @@
                                 bagNumber = bagNumber,
                                 productData = productTime.ToString(),
                                 TimeCuo = timeCuoData,
+                                lotNo = lotNo,
                                 materialCode = materialCode
                             }, "TimeCuoInfoComTwo");
                         }

--
Gitblit v1.9.1