From 30b008a25cc30a32f1e2fdee4a34ae71146e990e Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期一, 21 七月 2025 17:28:09 +0800 Subject: [PATCH] 取消,异常流程,修改 --- wms/TaskHelper.cs | 182 ++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 170 insertions(+), 12 deletions(-) diff --git a/wms/TaskHelper.cs b/wms/TaskHelper.cs index 05a3184..59dfbe5 100644 --- a/wms/TaskHelper.cs +++ b/wms/TaskHelper.cs @@ -1,6 +1,9 @@ -锘縰sing HH.WCS.ZhongCeJinTan.device; +锘縰sing HH.WCS.ZhongCeJinTan.api; +using HH.WCS.ZhongCeJinTan.core; +using HH.WCS.ZhongCeJinTan.device; using HH.WCS.ZhongCeJinTan.dispatch; using HH.WCS.ZhongCeJinTan.util; +using ICSharpCode.SharpZipLib.Zip; using Newtonsoft.Json; using SqlSugar; using System; @@ -10,8 +13,11 @@ using System.Threading.Tasks; using System.Web.Services.Description; using System.Xml.Linq; +using Top.Api; using static HH.WCS.ZhongCeJinTan.util.Settings; using static HH.WCS.ZhongCeJinTan.wms.WcsModel; + + namespace HH.WCS.ZhongCeJinTan.wms { @@ -60,7 +66,7 @@ internal static WmsWork GetWmsWork(string no) { var db = new SqlHelper<WmsWork>().GetInstance(); - return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First(); + return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).OrderByDescending(b=>b.T_CREATE).First(); } @@ -304,12 +310,14 @@ { LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); - LogHelper.Info($"浠诲姟{task1.S_OP_CODE}鍒涘缓鎴愬姛", "浠诲姟"); + LogHelper.Info($"浠诲姟{task1.S_CODE}鍒涘缓鎴愬姛", "浠诲姟"); var db = new SqlHelper<object>().GetInstance(); db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); + + TaskHelper.opMesTask(task1, 0); } else { - LogHelper.Info($"浠诲姟{task1.S_OP_CODE}鍒涘缓澶辫触", "浠诲姟"); + LogHelper.Info($"浠诲姟{task1.S_CODE}鍒涘缓澶辫触", "浠诲姟"); } } @@ -413,12 +421,14 @@ if (CreateTask(task1) && CreateTask(task2)) { - LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); - LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); - LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3); + //LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + //LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + //LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3); LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓鎴愬姛", "浠诲姟"); var db = new SqlHelper<object>().GetInstance(); db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); + LogHelper.Info($"鍥炴姤{task1.S_OP_CODE}", "鍥炴姤Mes浠诲姟"); + TaskHelper.opMesTask(task1, 0); } else { @@ -440,7 +450,7 @@ var count = LocationHelper.GetConnectionTaskCount(operation.CONNECTION); LogHelper.Info($"CreateOneTask 浣滀笟:{operation.S_CODE},鎺ラ┏浣�{operation.CONNECTION}锛屼换鍔℃暟閲忥細{count}", "浠诲姟"); - if (count<4) + if (count<=2) { // 浠诲姟1 @@ -525,12 +535,14 @@ if (CreateTask(task1) && CreateTask(task2)) { - LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); - LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); - LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1); + //LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + //LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + //LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1); LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓鎴愬姛", "浠诲姟"); var db = new SqlHelper<object>().GetInstance(); db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); + + TaskHelper.opMesTask(task2, 0); } else { @@ -576,7 +588,95 @@ }; return db.Insertable(action).ExecuteCommand() > 0; } - internal static WmsTaskAction GetActionRecord(string taskNo,string action) + + internal static bool opMesTask(WMSTask task, int state) + { + + HttpHelper apiHelper = new HttpHelper(); + string baseUrl = Settings.MesApiAddres; + try + { + var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE); + if (cntrItem == null) + { + LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒板鍣ㄧ墿鏂檣task.S_CNTR_CODE}", "鍥炴姤Mes浠诲姟"); + return false; + } + + var work = TaskHelper.GetWmsWork(task.S_OP_CODE); + + if (work == null) { + LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒颁綔涓歿task.S_OP_CODE}", "鍥炴姤Mes浠诲姟"); + return false; + } + var endArea = ""; + + if (LocationHelper.GetErroArea(task.S_END_AREA)) + { + if (task.S_TYPE.Contains("鍑哄簱")) + { + endArea = task.S_END_LOC; + } + else { + endArea = task.S_END_AREA; + } + + + } + else { + if (task.S_TYPE.Contains("鍑哄簱")) + { + endArea = task.S_END_LOC; + } + else { + endArea = work.S_END_AREA; + } + } + + + + + var interact = new + { + taskNo = task.S_OP_CODE,//浠诲姟鍙�+ updater = "WMS",// 鎿嶄綔浜�濡俉MS/MES绛�+ endStock = endArea,//缁堢偣 + taskStatus = state,//0锛氬垵濮嬬姸鎬侊紝1锛氳繘琛屼腑锛�锛氬畬鎴愶紝3锛氫换鍔″彇娑�+ updateTime = DateTime.Now.ToString(),//鎿嶄綔鏃堕棿 + TurnCardNum = cntrItem.TurnCardNum,//鍛ㄨ浆鍗″彿 + TOOLS_NO = task.S_CNTR_CODE//宸ヨ缂栧彿 + + }; + LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 鍦板潃淇℃伅:" + baseUrl + "updateTask", "鍥炴姤Mes浠诲姟"); + LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "鍥炴姤Mes浠诲姟"); + var result = apiHelper.Post(baseUrl + "updateTask", JsonConvert.SerializeObject(interact)); + LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "鍥炴姤Mes浠诲姟"); + if (!string.IsNullOrEmpty(result)) + { + var res = JsonConvert.DeserializeObject<MesTaskReturn>(result); + if (res.success && res.code == "0") + { + return true; + } + else + { + return false; + } + } + else + { + LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 杩斿洖淇℃伅涓虹┖", "鍥炴姤Mes浠诲姟"); + return false; + } + } + catch (Exception ex) + { + LogHelper.Info("Mes鏇存柊浠诲姟鐘舵�寮傚父"+ex.Message, "鍥炴姤Mes浠诲姟"); + return false; + } + + } + internal static WmsTaskAction GetActionRecord(string taskNo,string action) { var db = new SqlHelper<WmsTaskAction>().GetInstance(); @@ -584,6 +684,17 @@ return ac; } + internal static WcsSafety GetWcsSafety(string taskNo, string action) + { + var db = new SqlHelper<WcsSafety>().GetInstance(); + + var ac = db.Queryable<WcsSafety>().Where(a => a.TaskNo == taskNo && a.Sign.ToString() == action).First(); + + return ac; + } + + + /// <summary> /// 浠诲姟鎷︽埅 @@ -732,6 +843,22 @@ LocationHelper.LockLoc(task.S_END_LOC, "鍑哄簱閿�, 2); } + if (task.S_SCHEDULE_TYPE.Contains("agv")) + { + + if (LocationHelper.GetErroArea(task.S_END_AREA)) + { + db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand(); + db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); + db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); + } + else + { + TaskHelper.opMesTask(task, 2); + } + } + + if (task.S_TYPE.Contains("鍑哄簱") && task.S_SCHEDULE_TYPE.Contains("agv")) { var location = db.Queryable<Location>().Where(a => a.S_CODE == task.S_END_LOC).First(); @@ -760,6 +887,14 @@ internal static bool CreateTask(WMSTask wmsTask) { var db = new SqlHelper<WMSTask>().GetInstance(); + + var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == wmsTask.S_CODE).First(); + + if (task!=null) + { + return false; + } + return db.Insertable(wmsTask).ExecuteCommand() > 0; } @@ -809,12 +944,22 @@ return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.TOOLSTYPE == type).First(); } + + //鏍规嵁娴佺▼缂栧彿鍜岃捣鐐瑰簱鍖烘煡鎵句綔涓氭祦绋� public static WorkFlow selectWorkFlowByStratArea(string flowCode, string startArea) { var db = new SqlHelper<WorkFlow>().GetInstance(); return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.STARTAREA==startArea).First(); } + + //鏍规嵁娴佺▼缂栧彿鍜岀粓鐐瑰簱鍖烘煡鎵句綔涓氭祦绋�+ public static WorkFlow selectWorkFlowByEndArea(string flowCode, string endArea) + { + var db = new SqlHelper<WorkFlow>().GetInstance(); + return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.ENDAREA == endArea).First(); + } + /// <summary> /// 鏍规嵁浠诲姟鐘舵�鑾峰彇agv浠诲姟 @@ -999,6 +1144,19 @@ return db.Queryable<InPri>().Where(a=>a.Enable=="Y") .ToList(); } + /// <summary> + /// 鑾峰彇鍑哄簱鎻愰珮浼樺厛绾ц〃 + /// </summary> + /// <returns></returns> + internal static OutMinutePriority GetOutMinutePriority() + { + + var db = new SqlHelper<object>().GetInstance(); + + return db.Queryable<OutMinutePriority>().Where(a => a.Enable == "Y").First(); + } + + /// <summary> -- Gitblit v1.9.1