From 0fc71730109bb5904ded8e1a14c945e45b289c50 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期四, 03 七月 2025 18:24:05 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs | 315 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 302 insertions(+), 13 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs index 2c58360..2736558 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 { @@ -305,6 +308,7 @@ public class bzxxModel { + public string machineNo { get; set; } public string mesCode { get; set; } } @@ -381,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; } @@ -406,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 }); @@ -427,17 +440,285 @@ internal static BZXXResult Bzxx(bzxxModel models) { - BZXXResult result = new BZXXResult() {sucess = false }; + 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.isSucess) + { + var mesCodeLen = req.data.mesCode.Length; + var mesCodeTwo = int.Parse(req.data.mesCode.Substring(0, mesCodeLen - 3)); + 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, + timeStamp = mesCodeTwo, + 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, + }); + } + 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("timeStamp", mesCodeTwo) + .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("-", ""); + string timeCuo2 = mesCodeTwo.ToString(); + 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", timeCuo2), UpdateFlags.None); + + //涓婃姤鏉$爜琛�+ 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); + + 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 = timeCuo2 }); + + //涓婃姤鏉$爜琛�+ 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); + + break; + } + else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + 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 isSucess { 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 @@ -486,6 +767,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 @@ -545,7 +834,7 @@ public class BZXXResult { - public bool sucess { get; set;} + public bool success { get; set;} public string errMsg { get; set; } } -- Gitblit v1.9.1