From b754b0d966600a3b12f7c6d2449e5bcb00e34779 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期五, 06 六月 2025 16:56:07 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs | 112 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 85 insertions(+), 27 deletions(-) diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs index 70ca140..a87bf99 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs @@ -543,10 +543,10 @@ CMMLog.Debug($"鏀笰GV鍙傛暟锛�0锛�"); //鍒ゆ柇浠诲姟璧风偣锛屾壘鍒拌捣鐐瑰寘瑁呮満璁惧鍙凤紝鍦ㄤ腑闂磋〃MachineInfo涓煡鎵句笂涓�彴璁惧锛堝寘瑁呮満锛夌殑鏁版嵁锛岄�杩噈odbus閫氶亾浼犲叆锛堟暟鎹渶瑕佽浆鎹紝ASCII杞�6short锛屽彲鑳借繕闇�鏁版嵁鎷嗗垎锛� var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST"); - if (plc.deviceType == "21") + if (plc.deviceType == "22") { //鍥涢挻杞﹂棿 - var machine = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), "MachineInfo"); + var machine = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), "MachineInfoTetracobalt"); if (machine != null) { CMMLog.Debug("杩涘叆machine鍒ゆ柇"); @@ -735,7 +735,15 @@ }); if (result.result.Length > 0) { - MongoDBSingleton.Instance.Update<MachineInfo>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + if(plc.deviceType == "22") + { + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + } + else + { + MongoDBSingleton.Instance.Update<MachineInfo>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + } + //鑾峰彇浠庡绉板钩鍙拌鍑虹殑 鏃堕棿鎴筹紝骞惰浆鎹㈠鐞嗕负 string 瀛楃涓� //string timeStamp = Convert.ToInt32(Completion(result.result[26]) + Completion(result.result[27]), 2).ToString(); string timeStamp = Convert.ToInt32(Completion(result.result[25]) + Completion(result.result[26]), 2).ToString(); @@ -759,7 +767,15 @@ if (result.result[0] == 3 && result.result[2] == 1) { CMMLog.Info($"SecondWeightActionOne:鍑嗗鐢熸垚澶嶇О鍏ョ紦瀛樻灦浠诲姟锛屽紑濮嬬‘瀹氭墭鐩樺彿:{model.ext2}"); - req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + if(plc.deviceType == "22") + { + req = WMSHelper.WMSInTwo(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + else + { + req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + ERPService.updatePackageInfo(model.machince, model.ext2, result.result); //if (req) TSHelper.GoToAGV(cN_S_TASK_NO, 10, 6); //else CMMLog.Debug($"WMS杩斿洖{req}"); @@ -775,7 +791,15 @@ { //澶嶇О骞冲彴澶嶇О璐х墿NG鈥斺�杩涘叆NG澶嶇О娴佺▼ 璋冪敤WMS鎺ュ彛鍒嗛厤璐ф灦搴撲綅 //TSHelper.GoToAGV(cN_S_TASK_NO, 10, 6); - req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + if(plc.deviceType == "22") + { + req = WMSHelper.WMSInTwo(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + else + { + req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + if (req) CMMLog.Info($"SecondWeightActionOne:澶嶇О鍏ョ紦瀛樻灦NG娴佺▼锛歐MS鐢熸垚浠诲姟鎴愬姛锛�); else CMMLog.Info($"SecondWeightActionOne:澶嶇О鍏ョ紦瀛樻灦NG娴佺▼锛歐MS鐢熸垚浠诲姟澶辫触锛�); var plcInfo = Settings.GetPlcInfo().Where(a => a.location == model.ext3).FirstOrDefault(); @@ -914,7 +938,7 @@ CMMLog.Debug($"涓夋ゼ鍙屽眰缂撳瓨鏋跺嵏璐т氦浜掞細trayCode:{trayCodeTask.CN_S_BATCH_NO}"); if (plc.deviceType =="22") { - MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfo", RemoveFlags.Single); + MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfoTetracobalt", RemoveFlags.Single); if (ERPService.ERPSwitch01 == "0") MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfoTetracobalt", RemoveFlags.Single); } else @@ -1168,10 +1192,10 @@ public static void WriteCacheStackingData(Settings.PlcInfo plc, TN_I_TASK_MST task, WMSInfo machine) { - if (plc.deviceType == "23") + if (plc.deviceType == "22") { //鍥涢挻杞﹂棿 - var machineTwo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwo"); + var machineTwo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwoTetracobalt"); CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿4锛屾煡璇achineInfoTwoTetracobalt琛ㄤ俊鎭細{JsonConvert.SerializeObject(machineTwo)}銆�); if (machineTwo != null) { @@ -1188,7 +1212,7 @@ CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�杩斿洖鏁版嵁锛歿JsonConvert.SerializeObject(wirteall01)},IPort:{plc.ip},{plc.port}"); if (wirteall01.errCode == 0) { - MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwo", RemoveFlags.Single); + MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwoTetracobalt", RemoveFlags.Single); } } } @@ -1723,7 +1747,23 @@ string trayType = ""; if(plc.deviceType == "25") trayType = result.result[1] == 1 ? "宸濆瓧鎵� : "鐢板瓧鎵�; bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode,"","",false, trayType); - if (req) CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔℃垚鍔燂紒"); + if (req) + { + CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔℃垚鍔燂紒"); + if (plc.deviceType == "25") + { + //璁板綍鎵樼洏绫诲瀷 + var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", plc.location), "trayTypeTable"); + if (trayTypeInfo == null) + { + MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable + { + locCode = plc.location, + trayType = result.result[1].ToString() + }); + } + } + } else CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔″け璐ワ紒"); } } @@ -2706,8 +2746,9 @@ { CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氳繘鍏ユ暟鎹鐞嗘祦绋嬶紒"); - string empCode = GetTrayCode(result.Take(5).ToArray());//鍛樺伐缂栫爜 + string empCode = RemoveNull(GetTrayCode(result.Take(5).ToArray()));//鍛樺伐缂栫爜 string trayCode = GetTrayCode(result.Skip(5).Take(3).ToArray());//鎵樼洏鐮�+ trayCode = "0"; string location = GetTrayCode(result.Skip(8).Take(1).ToArray());//璁惧璐т綅缂栫爜 if(trayCode != null && location != null) { @@ -2731,7 +2772,7 @@ } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氬寘瑁呮満鏃燤ES鎯呭喌涓嬶紝妯℃嫙MES鏁版嵁锛屼腑闂磋〃<MachineInfoTetracobalt>涓凡鏈夊綋鍓嶅寘瑁呮満鍙穥location}涓洪鐨勬暟鎹�); } - var info = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", location), "MachineInfo"); + var info = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", location), "MachineInfoTetracobalt"); if (info != null) { @@ -2777,7 +2818,7 @@ } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氳鏌ヨ<MachineInfoTetracobalt>琛ㄤ腑machineNo瀛楁鏄惁涓哄綋鍓嶅寘瑁呮満鍙凤紝骞朵笖trayCode鏄惁涓�"); - var infoPack = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0")), "MachineInfo"); + var infoPack = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0")), "MachineInfoTetracobalt"); if (infoPack != null) { @@ -2806,18 +2847,18 @@ //娉ㄦ剰锛氳繖閲岃祴鍊间腑闂磋〃鍙傛暟璇峰鐓т俊鎭氦浜掕〃鍏蜂綋閫氶亾鍊煎搴� 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, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), update, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("machineNo", location), update, "MachiMachineInfoTetracobaltneInfo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), update, "MachineInfoTwoTetracobalt", UpdateFlags.None); } //鍦ㄤ腑闂磋〃涓壘鍒板垰鍒氭彃鍏ョ殑MES鏁版嵁锛堢洰鍓嶈繕娌℃湁璇诲彇骞跺啓鍏ヨ澶囨暟鎹級 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("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight). + 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("jsonData", json).Set("modify", DateTime.Now); - MongoDBSingleton.Instance.Update<MachineInfo>(query1, updateBuider, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query1, updateBuider, "MachineInfoTetracobalt", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None); CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭洿鏂癕achineInfoTetracobalt涓棿琛ㄥ垰鍒氭彃鍏ョ殑MES鏁版嵁!璁惧鍙蜂负锛歿location},鎵樼洏鍙蜂负锛歿trayCode}"); } else @@ -2834,8 +2875,8 @@ Set("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight). Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime). Set("jsonData", json).Set("modify", DateTime.Now); - MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query2, updateBuider, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query2, updateBuider, "MachineInfoTetracobalt", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None); CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭洿鏂癕achineInfoTetracobalt涓棿琛ㄥ叾浠栬澶囩殑鏁版嵁!璁惧鍙蜂负锛歿location},鎵樼洏鍙蜂负锛歿trayCode}"); } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭棤娉曞湪MachineInfoTetracobalt涓棿琛ㄤ腑鎵惧埌褰撳墠璁惧缂栧彿鐨勬暟鎹紒褰撳墠璁惧缂栧彿涓猴細{location}锛屾墭鐩樼爜涓猴細{trayCode}"); @@ -3613,7 +3654,7 @@ internal static void CheckPackingMachineTetracobalt(Settings.PlcInfo pmInfo) { //var count = MongoDBSingleton.Instance.FindOne<>//occupy - var count = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("occupy", "1"), "MachineInfo"); + var count = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("occupy", "1"), "MachineInfoTetracobalt"); //妫�煡鍖呰鏈洪�閬�鏄惁鏈変笅鏂欎俊鍙凤紝濡傛灉鏈夌敓鎴愪笅鏂欎换鍔°�绾跨▼寰幆璇诲彇锛屾棤闇�缃惊鐜�鈥斺�閫氶亾0鍙傛暟涓� if (count == null) @@ -3665,40 +3706,57 @@ { //鑾峰彇鎵樼洏鐮佺瓑淇℃伅 璇诲彇閫氶亾 11銆�2銆�3鐨勬暟鎹綔涓烘墭鐩樼爜 璇诲彇鍏跺畠閫氶亾 閲嶉噺 鍙犲寘绛変俊鎭�鎵�湁鏁版嵁瀛樺叆MachineInfo琛� GetMachineDataTetracobalt(trayCode.result, false); - var tray = MongoDBSingleton.Instance.FindOne<MachineInfo>(Query.EQ("machineNo", pmInfo.location), "MachineInfo"); + var tray = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTetracobalt"); if (tray != null) { + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛歁achineInfoTetracobalt鏁版嵁鎻掑叆鎴愬姛锛�); bool IsContLaterCode = true; if (ERPService.ERPSwitch01 == "1") { - string employeeId = "G" + tray.trayCodeWeight.PadLeft(7, '0'); + string employeeId = "G" + tray.empCode.PadLeft(7, '0'); + 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; + 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); + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氭墭鐩樼爜锛歿tray.trayCode}"); if (tray.addState == 0) { - MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfo", RemoveFlags.None); + MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTetracobalt", RemoveFlags.None); if (ERPService.ERPSwitch01 == "0") MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTwo", RemoveFlags.None); CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬彔鎵樺眰鏁颁负0锛屼笉鍏佽鐢熸垚浠诲姟"); } else if (tray.trayCode != "0" && !string.IsNullOrEmpty(tray.trayCode)) { - string timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1); HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), pmInfo.location, PlcBit02, "3妤煎寘瑁呭彇鏂�鍥涢挻)", 0, tray.trayCode, timeStamp); if (req.success) { string weight = (double.Parse(tray.oneTrayWeight) / 100).ToString(); - //int weight = int.Parse(tray.oneTrayWeight) / 100; ERPService.packageInfo(tray.machineNo, tray.trayCode, tray.lotNo, weight); + + //璁板綍鎵樼洏绫诲瀷 + var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", pmInfo.location), "trayTypeTable"); + if(trayTypeInfo == null) + { + MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable + { + locCode = pmInfo.location, + trayType = tray.trayType + }); + } } } } else { + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮佹煡璇㈠け璐�); //妫�储鍛樺伐淇℃伅澶辫触鍐欏叆瀵规柟閫氶亾鍊� 璇诲彇鍦板潃+3 var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { @@ -3749,7 +3807,7 @@ // } // else CMMLog.Info($"褰撳墠鍖呰鏈哄嚭鐜版晠闅滐紝鏃犳硶鐢熸垚浠诲姟銆傚寘瑁呮満鍙凤細{pmInfo.location}"); } - else CMMLog.Debug($"褰撳墠machineInfo涓棿琛ㄥ凡瀛樺湪鏁版嵁锛歿JsonConvert.SerializeObject(count)}"); + else CMMLog.Debug($"褰撳墠MachineInfoTetracobalt涓棿琛ㄥ凡瀛樺湪鏁版嵁锛歿JsonConvert.SerializeObject(count)}"); } -- Gitblit v1.9.1