From e0471620ed16295a330ce18bcfe1654c91138996 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期五, 18 七月 2025 17:24:42 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs | 346 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 334 insertions(+), 12 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs index ea1ad24..61f4a59 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs @@ -8,10 +8,13 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; +using System.Timers; using static Hanhe.iWCS.JingmenGEMTwoProtocol.MESHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl; using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProcessHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProtocolAnalysis; +using static System.Runtime.CompilerServices.RuntimeHelpers; namespace Hanhe.iWCS.JingmenGEMTwoProtocol { @@ -302,7 +305,13 @@ /// </summary> public int direction { get; set; } } - + + public class bzxxModel + { + public string machineNo { get; set; } + public string mesCode { get; set; } + } + #region 鏁欑О娴佺▼锛屼汉宸DA杩斿洖澶嶇О骞冲彴锛屽寘瑁呮満澶嶇О淇℃伅 @@ -376,23 +385,31 @@ internal static ErrInfoResult getErrInfo(string factory) { ErrInfoResult result = new ErrInfoResult() { sucess = false }; - - if(factory == "sanyuan") + try { - var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("ErrInfoResult"); - if (errList.Count > 0) + if (factory.Contains("sanyuan")) { - result.sucess = true; - errList.ForEach(r => + var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("errInfoTable"); + if (errList.Count > 0) { - result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime }); - }); + result.sucess = true; + result.errInfo = new List<errInfo>(); + errList.ForEach(r => + { + result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime }); + }); + } + } + else + { + } } - else + catch(Exception ex) { - + CMMLog.Info("getErrInfo err:"+ex.Message); } + return result; } @@ -401,12 +418,13 @@ { ZZTPWNumResult result = new ZZTPWNumResult() { sucess = false }; - if(factory == "sanyuan") + if(factory.Contains("sanyuan")) { var bzEmpInfo = MongoDBSingleton.Instance.FindAll<BZEmptyPoint>("BZEmptyPoint"); if (bzEmpInfo.Count > 0) { result.sucess = true; + result.zztpwInfo = new List<zztpwInfo>(); bzEmpInfo.ForEach(r => { result.zztpwInfo.Add(new zztpwInfo { S_LOC_CODE = r.Bit, N_QTY = r.Quantity }); @@ -418,6 +436,296 @@ } return result; + } + + internal static BZXXResult Bzxx(bzxxModel models) + { + BZXXResult result = new BZXXResult() {success = false }; + if(models != null && !string.IsNullOrEmpty(models.mesCode)) + { + //閫氳繃mesCode鑾峰彇mes鐨勭墿鏂欎俊鎭�+ var res = helper.WebGet(Settings.MESUrl2 + "?mesCode=" + models.mesCode); + CMMLog.Info($"Bzxx ReqMsg:{JsonConvert.SerializeObject(res)},url:{Settings.MESUrl2}"); + try + { + if (!string.IsNullOrEmpty(res)) + { + var req = JsonConvert.DeserializeObject<mesInfo>(res); + if(req != null) + { + if (req.isSuccess) + { + var timeCuo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("packingMachineNumber", models.machineNo), "TimeCuoInfoCom"); + if (timeCuo == null) + { + MongoDBSingleton.Instance.Insert<TimeCuoInfoCom>(new TimeCuoInfoCom + { + isFold = 1, + packingMachineNumber = models.machineNo, + needWeight = (int)req.data.FMustQty, + realWeight = (int)req.data.FMustQty, + totalWeight = (int)req.data.FMustQty, + batchNumber = req.data.Flot, + productModel = req.data.materialSpec, + bagNumber_1 = req.data.bagNum, + totalCount = 1, + timeStampMES = req.data.mesCode, + photoURL = req.data.barCode, + ProductionDate = req.data.ywDate, + // ERP鍙樻洿-鐓х浉鏈烘柊澧炲瓧娈�+ materialCode = req.data.FMaterialNumber, + materialName = req.data.materialName, + measurementUnit = req.data.FUnit, + createOrganization = req.data.FPrdOrgNumber, + WarehouseCode = req.data.FStockNumber, + workshopCode = req.data.FWorkShopNumber, + BusinessDate = req.data.ywDate, + barcode = req.data.barCode, + + employeeID1 = req.data.jycjj, + + //鍙樻洿娉ㄩ噴 + totalNeedWeight = (int)req.data.FMustQty, + FEntryID_1 = 0, + orderCode = "" + }); + } + else + { + var query = Query.EQ("packingMachineNumber", models.machineNo); + //鍙樻洿娉ㄩ噴 + UpdateBuilder update = Update.Set("isFold", 1).Set("packingMachineNumber", models.machineNo).Set("needWeight", (int)req.data.FMustQty) + .Set("realWeight", (int)req.data.FMustQty).Set("totalWeight", (int)req.data.FMustQty).Set("batchNumber", req.data.Flot) + .Set("productModel", req.data.materialSpec).Set("bagNumber_1", req.data.bagNum).Set("totalCount", 1).Set("timeStampMES", req.data.mesCode) + .Set("photoURL", req.data.barCode).Set("ProductionDate", req.data.ywDate).Set("materialCode", req.data.FMaterialNumber) + .Set("materialName", req.data.materialName).Set("measurementUnit", req.data.FUnit) + .Set("createOrganization", req.data.FPrdOrgNumber).Set("WarehouseCode", req.data.FStockNumber).Set("workshopCode", req.data.FWorkShopNumber) + .Set("BusinessDate", req.data.ywDate).Set("barcode", req.data.barCode).Set("employeeID1", req.data.jycjj) + .Set("totalNeedWeight", (int)req.data.FMustQty).Set("FEntryID_1", 0); + MongoDBSingleton.Instance.Update<TimeCuoInfoCom>(query, update, UpdateFlags.None); + } + + //鐢熸垚鍒版帴椹冲钩鍙扮殑浠诲姟 + string traycode = DateTime.Now.ToString("yyyy-MM-dd").Replace("-", ""); + var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + AMSHelper.HHAmsExecuteResult amsResult = null; + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits"); + if (CBTable != null) + { + if (string.IsNullOrEmpty(CBTable.trayCode)) + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode); + if (amsResult.success) + { + result.success = true; + CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�); + MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode).Set("timeCuo", req.data.mesCode), UpdateFlags.None); + + break; + } + else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode); + if (amsResult.success) + { + result.success = true; + CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�); + //鎵撳寘涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛屽悜涓棿琛ㄦ彃鍏ユ暟鎹�+ MongoDBSingleton.Instance.Insert<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0", timeCuo = req.data.mesCode }); + + break; + } + else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + if (amsResult != null && amsResult.success) + { + //涓婃姤鏉$爜琛�+ CMMLog.Info($"INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')"); + new SqlHelper<object>().ExecuteSql($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')", false); + var plc = Settings.GetPlcInfo().Where(b => b.location == models.machineNo && b.enable == 1).First(); + if(plc != null) + { + var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + addr = plc.writeAddr, + host = plc.ip, + port = plc.port, + data = 4 + }); + } + + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鐐逛綅鏈厤缃�); + } + if (amsResult == null || amsResult.success == false) + { + result.errMsg = "浠诲姟鐢熸垚澶辫触锛屾帴椹充綅鏈変换鍔″崰鐢�; + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鏈厤缃�); + } + else + { + result.errMsg = req.msg; + } + + } + else + { + result.errMsg = $"鏁版嵁瑙f瀽澶辫触"; + } + } + else + { + result.errMsg = $"鏌ヨmes淇℃伅澶辫触锛宮esCode锛歿models.mesCode}"; + } + } + catch(Exception ex) + { + result.errMsg = ex.Message; + } + } + else + { + result.errMsg = "鍙傛暟杈撳叆閿欒"; + } + return result; + } + + /// <summary> + /// 鐢甸挻杞﹂棿鍖呰涓嬬嚎鑾峰彇wms浼犲叆鐨勬墭鐩�+ /// </summary> + /// <param name="trayCode"></param> + /// <returns></returns> + /// <exception cref="NotImplementedException"></exception> + internal static SimpleResult DGPackingLineFull(string trayCode) + { + SimpleResult result = new SimpleResult() { success = false,errCode = -1 }; + + if (!string.IsNullOrEmpty(trayCode)){ + var DGInfo = MongoDBSingleton.Instance.FindOne<DGPackingLineFullModel>(Query.EQ("trayCode", trayCode), "DGPackingLineFullModel"); + if (DGInfo == null) + { + MongoDBSingleton.Instance.Insert<DGPackingLineFullModel>(new DGPackingLineFullModel() { trayCode = trayCode, createTime = DateTime.Now }, "DGPackingLineFullModel"); + result.success = true; + result.errCode = 0; + } + else + { + result.errMsg = $"褰撳墠鎵樼洏鍙凤紝宸插瓨鍦ㄤ簬ams涓棿琛ㄤ腑锛屾墭鐩樺彿锛歿trayCode}"; + } + } + else + { + result.errMsg = $"褰撳墠鎵樼洏鍙蜂负绌�; + } + + return result; + } + + public class mesInfo + { + public int code { get; set; } + public string msg { get; set; } + public mesData data { get; set; } + public bool isSuccess { get; set; } + } + + public class mesData + { + /// <summary> + /// 鍏ュ簱缁勭粐 + /// </summary> + public string FStockOrgNumber { get; set;} + /// <summary> + /// 鐢熶骇缁勭粐 + /// </summary> + public string FPrdOrgNumber { get; set; } + /// <summary> + /// 鍏ュ簱绫诲瀷 + /// </summary> + public string FInStockType { get; set; } + /// <summary> + /// 浠撳簱缂栫爜 + /// </summary> + public string FStockNumber { get; set; } + /// <summary> + /// 鐢熶骇杞﹂棿 + /// </summary> + public string FWorkShopNumber { get; set; } + /// <summary> + /// 搴撳瓨鐘舵� + /// </summary> + public string FStockStatus { get; set; } + /// <summary> + /// 鍗曚綅 + /// </summary> + public string FUnit { get; set; } + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string FMaterialNumber { get; set; } + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string materialName { get; set; } + /// <summary> + /// 鐗╂枡瑙勬牸 + /// </summary> + public string materialSpec { get; set; } + /// <summary> + /// 鎵瑰彿 + /// </summary> + public string Flot { get; set; } + /// <summary> + /// 闇�眰閲嶉噺 + /// </summary> + public double FMustQty { get; set; } + /// <summary> + /// 閫�簱鏃堕棿 + /// </summary> + public string FProduceDate { get; set; } + /// <summary> + /// 鍞竴鏍囪瘑 + /// </summary> + public string FExpiryDate { get; set; } + /// <summary> + /// 鍞竴鐮�+ /// </summary> + public string mesCode { get; set; } + /// <summary> + /// 瀹屾暣鏉$爜 + /// </summary> + public string barCode { get; set; } + /// <summary> + /// 琚嬪彿 + /// </summary> + public string bagNum { get; set; } + /// <summary> + /// mes鍖呭彿 + /// </summary> + public string bagCode { get; set; } + /// <summary> + /// 鍛樺伐缂栫爜 + /// </summary> + public string jycjj { get; set; } + /// <summary> + /// 涓氬姟鏃ユ湡 + /// </summary> + public string ywDate { get; set; } } public class AGV_STATE @@ -466,6 +774,14 @@ /// 鏄惁鏈夎揣 /// </summary> public int haveItem { get; set; } + } + + public class DGPackingLineFullModel + { + public ObjectId _id { get; set; } + public string trayCode { get; set; } + public string isUse { get; set; } = "0"; + public DateTime createTime { get; set; } } public class secondResultCache @@ -523,6 +839,12 @@ public int N_QTY { get; set; } } + public class BZXXResult + { + public bool success { get; set;} + public string errMsg { get; set; } + } + /// <summary> /// hosttoagv涓婃姤杞﹁締鐘舵�锛堝弬鏁板湪hosttoagv鏈嶅姟閰嶇疆锛屽彲淇敼锛� /// </summary> -- Gitblit v1.9.1