From 265fbfa342cc03991c79934b162f26c0a6699f95 Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期五, 25 七月 2025 17:31:20 +0800 Subject: [PATCH] 0725 --- wms/TaskHelper.cs | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 102 insertions(+), 13 deletions(-) diff --git a/wms/TaskHelper.cs b/wms/TaskHelper.cs index ee18278..a4dd619 100644 --- a/wms/TaskHelper.cs +++ b/wms/TaskHelper.cs @@ -1,4 +1,5 @@ 锘縰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; @@ -12,6 +13,7 @@ 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; @@ -52,6 +54,21 @@ var task = db.Queryable<WMSTask>().Where(a => a.S_CODE.Trim() == no).First(); return task; } + internal static WMSTask GetTaskByNoType(string no, string type) + { + var db = new SqlHelper<WMSTask>().GetInstance(); + var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == no && a.S_SCHEDULE_TYPE == type).First(); + return task; + } + + internal static List<WMSTask> GetTaskByNoTypeList(string no, string type) + { + var db = new SqlHelper<WMSTask>().GetInstance(); + var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == no && a.S_SCHEDULE_TYPE == type).ToList(); + return task; + } + + //鏌ユ壘WCS绔嬪簱浠诲姟 鍙傛暟浣滀笟缂栫爜,璋冨害绫诲瀷 agv/wcs internal static WMSTask GetTaskByWorkNo(string no,string type) @@ -64,7 +81,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(); } @@ -239,6 +256,10 @@ break; case 12: CreateOneTask(operation); + break; + case 99: + //澶栧舰妫�祴鍑哄簱涓ゆ浠诲姟 + CreateOutTowTask(operation); break; case 20: CreateOneTask(operation); @@ -425,7 +446,7 @@ 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 @@ -597,16 +618,48 @@ var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE); if (cntrItem == null) { - LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒板鍣ㄧ墿鏂檣task.S_CNTR_CODE}", "涓婁笅鏋惰褰�); + 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 = task.S_END_LOC,//缁堢偣 + endStock = endArea,//缁堢偣 taskStatus = state,//0锛氬垵濮嬬姸鎬侊紝1锛氳繘琛屼腑锛�锛氬畬鎴愶紝3锛氫换鍔″彇娑� updateTime = DateTime.Now.ToString(),//鎿嶄綔鏃堕棿 TurnCardNum = cntrItem.TurnCardNum,//鍛ㄨ浆鍗″彿 @@ -650,6 +703,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> /// 浠诲姟鎷︽埅 @@ -798,6 +862,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(); @@ -807,15 +887,6 @@ 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(); } - - - 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(); - } - - } @@ -835,6 +906,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; } @@ -884,6 +963,8 @@ return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.TOOLSTYPE == type).First(); } + + //鏍规嵁娴佺▼缂栧彿鍜岃捣鐐瑰簱鍖烘煡鎵句綔涓氭祦绋� public static WorkFlow selectWorkFlowByStratArea(string flowCode, string startArea) { @@ -891,6 +972,14 @@ 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浠诲姟 /// </summary> -- Gitblit v1.9.1