From 265fbfa342cc03991c79934b162f26c0a6699f95 Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期五, 25 七月 2025 17:31:20 +0800 Subject: [PATCH] 0725 --- dispatch/WcsTask.cs | 286 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 240 insertions(+), 46 deletions(-) diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs index ef7dba2..9528c7f 100644 --- a/dispatch/WcsTask.cs +++ b/dispatch/WcsTask.cs @@ -16,6 +16,7 @@ using System.Web.Services.Description; using Top.Api; using static HH.WCS.ZhongCeJinTan.api.ApiModel; +using static HH.WCS.ZhongCeJinTan.util.Settings; using static HH.WCS.ZhongCeJinTan.wms.WcsModel; namespace HH.WCS.ZhongCeJinTan.dispatch @@ -52,18 +53,14 @@ isFu = "1"; } } - var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE); - - - - if (workFlow != null) - { - if (workFlow.INOROUT.Contains("鍏ュ簱")) + + + if (mst.S_TYPE.Contains("鍏ュ簱")|| mst.S_TYPE.Contains("鍥炲簱")) { Type = "1"; } - if (workFlow.INOROUT.Contains("鍑哄簱")) + if (mst.S_TYPE.Contains("鍑哄簱")) { Type = "2"; var count = TaskHelper.GetConnectionTask(mst.S_END_LOC); @@ -74,7 +71,7 @@ } - } + if (mst.S_CNTR_CODE.Contains("KJZ")) { @@ -193,10 +190,10 @@ stnNo = aloneWcsTask.S_START_LOC,//鎺ラ┏浣� reqTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿 }; - LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍦板潃淇℃伅:" + baseUrl + "CV-state", "绔嬪簱"); - LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱"); + LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍦板潃淇℃伅:" + baseUrl + "CV-state", "鏄惁鏈夎揣"); + LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "鏄惁鏈夎揣"); var result = apiHelper.Post(baseUrl + "CV-state", JsonConvert.SerializeObject(interact)); - LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱"); + LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "鏄惁鏈夎揣"); if (!string.IsNullOrEmpty(result)) { var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result); @@ -211,7 +208,7 @@ } else { - LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅涓虹┖", "绔嬪簱"); + LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅涓虹┖", "鏄惁鏈夎揣"); return false; } } @@ -692,6 +689,14 @@ LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡"); throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟"); } + + WmsTaskAction ac7 = TaskHelper.GetActionRecord(agvTask.S_CODE, "7"); + if (ac7!=null) + { + LogHelper.Info($"RFID鏍¢獙澶辫触锛宎gv浠诲姟{agvTask.S_CODE},宸茬粡鍙栨秷锛岃浜哄伐澶勭悊", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"RFID鏍¢獙澶辫触锛宎gv浠诲姟{agvTask.S_CODE},宸茬粡鍙栨秷锛岃浜哄伐澶勭悊"); + } + var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE); if (workFlow == null) @@ -739,6 +744,112 @@ throw new Exception($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触"); } } + + if (model.code == "2") { + + TaskHelper.Fail(transportTask); + TaskProcess.OperateStatus(transportTask, 7); + + if (!WcsCancellTask(transportTask)) { + LogHelper.Info($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触"); + } + + var work = TaskHelper.GetWmsWork(transportTask.S_OP_CODE); + if (work==null) + { + LogHelper.Info($"鏈煡璇㈠埌{transportTask.S_OP_CODE}瀵瑰簲鐨勪綔涓�, "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪綔涓�); + } + + var workFlow = TaskHelper.selectWorkFlowByType(work.N_TYPE.ToString(), work.TOOLSTYPE); + + if (workFlow == null) + { + LogHelper.Info($"澶栧舰妫�祴澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"澶栧舰妫�祴澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�); + } + //鏌ユ壘缁堢偣 + var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA); + + //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY); + var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA); + LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡"); + + + if (end == null) + { + LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"澶栧舰妫�祴澶辫触澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�); + } + + LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); + + + var connectionLoc = LocationHelper.GetLoc(work.CONNECTION.Replace("R", "C")); + + if (connectionLoc==null) + { + LogHelper.Info($"鏈煡璇㈠埌{work.CONNECTION.Replace("R", "C")}瀵瑰簲鐨勬帴椹充綅", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勫嚭搴撴帴椹充綅"); + } + + var connection = connectionLoc.S_CODE; + + var operation = new WmsWork + { + // 浣滀笟鍙�+ S_CODE = TaskHelper.GenerateTaskNo(), + // 浣滀笟绫诲瀷 + N_TYPE = 99, + // 浣滀笟绫诲瀷 + S_TYPE = work.S_TYPE.Replace("鍏�,"鍑�), + // 璧风偣璐т綅 + S_START_LOC = work.CONNECTION, + // 璧风偣搴撳尯缂栫爜 + S_START_AREA = work.CONNECTION_AREA, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = work.CONNECTION_AREA, + //鎺ラ┏浣�+ CONNECTION = connection, + //鎺ラ┏搴撳尯鍚嶇О + CONNECTION_AREA = connectionLoc.S_AREA_Name, + // 缁堢偣璐т綅 + S_END_LOC = end.S_CODE, + // 缁堢偣搴撳尯缂栫爜 + S_END_AREA = end.S_AREA_CODE, + //缁堢偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + // 瀹瑰櫒缂栫爜 + S_CNTR_CODE = work.S_CNTR_CODE, + // 浣滀笟瀹氫箟鍚嶇О + S_OP_DEF_NAME = workFlow.FLOWNAME, + //浼樺厛绾�+ N_PRIORITY = work.N_PRIORITY, + //宸ヨ绫诲瀷 + TOOLSTYPE = work.TOOLSTYPE + }; + + //鍒涘缓浣滀笟 + if (WMSHelper.CreateWmsWork(operation)) + { + if (connection != "") + { + LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2); + LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1); + LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1); + } + + LogHelper.Info($"寮傚父鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂"); + } + else + { + LogHelper.Info($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂"); + throw new Exception($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触"); + } + } + + newDb.BeginTran(); var R = newDb.Insertable(RfidChek).ExecuteCommand(); if (R == 0) @@ -1207,8 +1318,72 @@ } } + + /// <summary> + /// 鍙栬揣鏃犺揣 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static WcsWarningReurn ZcOutChangeBit(changeBitParme model) + { + var result = new WcsWarningReurn(); + var newDb = new SqlHelper<object>().GetInstance(); + try + { + if (string.IsNullOrEmpty(model.taskNo)) + { + throw new Exception("浠诲姟鍙蜂负绌�); + } + var task = TaskHelper.GetTask(model.taskNo); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙穥model.taskNo}鐨勪换鍔�); + } + + if (task.S_TYPE.Contains("鍑哄簱")) + { + //鍙栬揣鏃犺揣 + LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "鍙栬揣鏃犺揣"); + if (WcsCancellTask(task)) + { + LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鍙栬揣鏃犺揣"); + TaskHelper.Fail(task); + TaskProcess.OperateStatus(task, 7); + LocationHelper.updateLocLock(task.S_START_LOC, 3, "鍏朵粬閿�); + var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); + if (agvTask != null) + { + if (agvTask.S_B_STATE != "鏈墽琛�) + { + NDCApi.CancelOrder(agvTask.S_CODE.Trim()); + } + TaskHelper.Fail(agvTask); + TaskProcess.CacheBitCancelUpdate(agvTask); + } + } + + } + else + { + throw new Exception($"浠诲姟鍙穥model.taskNo},浠诲姟绫诲瀷{task.S_TYPE}"); + } + result.msg = "Wcs鍙栬揣鏃犺揣澶勭悊鎴愬姛"; + result.code = "0"; + result.requestPk = model.requestPk; + return result; + } + catch (Exception ex) + { + newDb.RollbackTran(); + result.msg = "Wcs鍙栬揣鏃犺揣寮傚父"; + result.code = "1"; + result.requestPk = model.requestPk; + LogHelper.Info("Wcs鍙栬揣鏃犺揣寮傚父" + ex.Message, "鍙栬揣鏃犺揣"); + return result; + } + } /// <summary> /// 鏀捐揣鏈夎揣 @@ -1233,47 +1408,24 @@ throw new Exception($"鏈煡璇㈠埌浠诲姟鍙穥model.taskNo}鐨勪换鍔�); } - if (task.S_TYPE.Contains("鍑哄簱")) - { - //鍙栬揣鏃犺揣 - LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "鏀捐揣鏈夎揣"); - if (WcsCancellTask(task)) - { - LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鏀捐揣鏈夎揣"); - TaskHelper.Fail(task); - TaskProcess.OperateStatus(task, 7); - LocationHelper.updateLocLock(task.S_START_LOC, 4, "寮傚父閿�); - var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); - if (agvTask != null) - { - if (agvTask.S_B_STATE!="鏈墽琛�) - { - NDCApi.CancelOrder(agvTask.S_CODE.Trim()); - } - TaskHelper.Fail(agvTask); - TaskProcess.CacheBitCancelUpdate(agvTask); - } - } - - } - else { + if (!task.S_TYPE.Contains("鍑哄簱")) { //鍗歌揣鏈夎揣 - if (task.S_B_STATE.Contains("瀹屾垚") || task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触")) + if (task.S_B_STATE == "瀹屾垚" || task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触")) { throw new Exception($"浠诲姟鍙穥model.taskNo}锛屼换鍔$姸鎬侊細{task.S_B_STATE}锛屼笉鑳芥敼閬�); } var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); - var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First(); + var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROADWAY == endLoc.N_ROADWAY && a.N_COL != endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).First(); LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣"); if (end != null) { newDb.BeginTran(); - endLoc.N_LOCK_STATE = 4; - endLoc.S_LOCK_STATE = "寮傚父閿�; + endLoc.N_LOCK_STATE = 3; + endLoc.S_LOCK_STATE = "鍏朵粬閿�; newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); task.S_END_LOC = end.S_CODE; newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); @@ -1282,17 +1434,19 @@ result.msg = end.S_CODE; result.code = "0"; result.requestPk = model.requestPk; + return result; } else { throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅"); } + }else + { + throw new Exception($"浠诲姟鍙穥model.taskNo},浠诲姟绫诲瀷{task.S_TYPE}"); + } - result.msg = "Wcs鏀捐揣鏈夎揣/鍙栬揣鏃犺揣澶勭悊鎴愬姛"; - result.code = "0"; - result.requestPk = model.requestPk; - return result; + } catch (Exception ex) { @@ -1303,7 +1457,6 @@ LogHelper.Info("Wcs鏀捐揣鏈夎揣寮傚父" + ex.Message, "鏀捐揣鏈夎揣"); return result; } - return result; } @@ -1338,6 +1491,47 @@ result.msg = "鎴愬姛"; result.requestPk = model.requestPk; LogHelper.Info("Wcs閫氱煡纭杩斿洖" + JsonConvert.SerializeObject(result), "閫氱煡纭"); + + //鏌ユ壘绔嬪簱閫氱煡纭琛�+ var mst = TaskHelper.GetTask(model.requestPk); + if (mst==null) + { + throw new Exception($"涓烘煡璇㈠埌浠诲姟{model.requestPk}"); + } + + if (mst.S_TYPE.Contains("鍑哄簱")) + { + var ac1102 = TaskHelper.GetWcsSafety(mst.S_CODE, "1102"); + if (ac1102 == null) { + if (model.trkType == "1" && model.isAllow == "1") + { + //绔嬪簱閫氱煡鎴愬姛淇敼鍙傛暟 + LogHelper.Info($"绔嬪簱閫氱煡纭锛屽彇璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); + } + else + { + LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽彇璐т氦绠′笉鍏佽锛屼笉淇敼鍙傛暟", "瀹夊叏浜や簰"); + } + } + } + else { + var ac1104 = TaskHelper.GetWcsSafety(mst.S_CODE, "1104"); + if (ac1104==null) + { + if (model.trkType == "2" && model.isAllow == "1") + { + //绔嬪簱閫氱煡鎴愬姛淇敼鍙傛暟 + LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰"); + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); + } + else + { + LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠′笉鍏佽锛屼笉淇敼鍙傛暟", "瀹夊叏浜や簰"); + } + } + } + return result; } catch (Exception ex) -- Gitblit v1.9.1