From 265fbfa342cc03991c79934b162f26c0a6699f95 Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期五, 25 七月 2025 17:31:20 +0800 Subject: [PATCH] 0725 --- process/TaskProcess.cs | 783 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 613 insertions(+), 170 deletions(-) diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 8fff495..63905a7 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -210,10 +210,20 @@ } if (state == 6)//鍗歌揣瀹屾垚 { + //鎺ラ┏浣嶄笉缁戝畾 + var safety = Settings.safetyLocations.Where(a => a.Area.Contains(mst.S_END_AREA)).FirstOrDefault(); + if (safety != null) { + if (safety.type==1) + { + return; + } + } //閫�簱浠诲姟涓嶇粦瀹�- if (!LocationHelper.GetErroArea(mst.S_END_AREA)) { - CacheBitUpdate(mst, false); - } + if (LocationHelper.GetErroArea(mst.S_END_AREA)) { + return; + } + + CacheBitUpdate(mst, false); } if (state == 7) { @@ -543,14 +553,33 @@ return false; } - if (wcsTask.S_B_STATE == "鏈墽琛�) + if (wcsTask.S_B_STATE == "鏈墽琛� || wcsTask.S_B_STATE == "宸叉帹閫�) { LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽搴旂殑Wcs鍑哄簱浠诲姟鏈墽琛岋紝鏆備笉鎺ㄩ�", "NDC"); return false; } + + //鎺ラ┏浣嶄袱涓猘gv浠诲姟锛宎浠诲姟鍙栬揣瀹屾垚 鎺ㄩ�b浠诲姟 + var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION,"agv", mst.T_CREATE); + + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛岀涓�釜agv浠诲姟淇℃伅"+JsonConvert.SerializeObject(agvTask), "NDC"); + //if (agvTask==null) + //{ + // LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟娌℃壘鍒帮紝鏆備笉鎺ㄩ�", "NDC"); + // return false; + //} + + if (agvTask != null) + { + if (agvTask.S_B_STATE != "鍙栬揣瀹屾垚") + { + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟{agvTask.S_CODE},鐘舵�{agvTask.S_B_STATE}锛屾殏涓嶆帹閫�, "NDC"); + return false; + } + } } - //鎺ラ┏浣嶄袱涓猘gv浠诲姟锛宎浠诲姟鍙栬揣瀹屾垚 鎺ㄩ�b浠诲姟 - + + } @@ -637,6 +666,15 @@ } return result; } + + internal static LocationRecordsResult LocationRecords(LocationRecordsParme model) { + var result = new LocationRecordsResult(); + var db = new SqlHelper<object>().GetInstance(); + + return result; + } + + internal static Result MesUdeItem(MesUdeItemParme model) { @@ -952,87 +990,202 @@ return result; } + if (string.IsNullOrEmpty(model.task_no)) + { + result.errMsg = "task_no涓簄ull"; + result.errCode = 1; + result.success = false; + return result; + } + + try { var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv"); - var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no,"wcs"); - if (task != null && wcsTask != null) + + var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs"); + + var work = TaskHelper.GetWmsWork(model.task_no); + + if (work==null) { - if (task.S_B_STATE.Trim() == "鏈墽琛�) + result.errCode = 1; + result.errMsg = $"{model.task_no}浣滀笟涓嶅瓨鍦紝涓嶅厑璁稿彇娑�; + result.success = false; + return result; + } + + if (work.S_B_STATE == "绛夊緟") + { + work.N_B_STATE = 7; + work.S_B_STATE = "鍙栨秷"; + work.T_MODIFY = DateTime.Now; + work.T_END_TIME = DateTime.Now; + var db = new SqlHelper<object>().GetInstance(); + db.Updateable(work).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY, it.T_END_TIME }).ExecuteCommand(); + LocationHelper.UnLockLoc(work.S_START_LOC); + LocationHelper.UnLockLoc(work.S_END_LOC); + if (!string.IsNullOrEmpty(work.CONNECTION)) { - //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 - LogHelper.Info("cancelTask1鍙栨秷agv浠诲姟锛�, "鍙栨秷"); - TaskHelper.Fail(task); - TaskProcess.CacheBitCancelUpdate(task); - if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱")) - { - ContainerHelper.delCntr(task.S_CNTR_CODE); - ContainerHelper.delCntrItem(task.S_CNTR_CODE); - } - else { - WcsTask.WcsCancellTask(wcsTask); - } - - - TaskHelper.Fail(wcsTask); - TaskProcess.OperateStatus(wcsTask, 7); - result.errCode = 0; - result.errMsg = "鍙栨秷鎴愬姛"; - result.success = true; - return result; + LocationHelper.UnLockLoc(work.CONNECTION); } - else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触") + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + return result; + } + + + //浣滀笟娌℃湁鎺ラ┏浣嶏紝涓�浠诲姟鍙栨秷 + if (string.IsNullOrEmpty(work.CONNECTION)) { + if (task != null) { - var db = new SqlHelper<object>().GetInstance(); - var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First(); - - - if (qhflag != null) + if (task.S_TYPE.Contains("鍑哄簱")) { - LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷"); - result.errCode = 1; - result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷"; - result.success = false; - return result; - } - - //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv - TaskHelper.Fail(task); - - NDCApi.CancelOrder(task.S_CODE.Trim()); - TaskProcess.CacheBitCancelUpdate(task); - if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱")) - { - ContainerHelper.delCntr(task.S_CNTR_CODE); - ContainerHelper.delCntrItem(task.S_CNTR_CODE); + } else { - WcsTask.WcsCancellTask(wcsTask); + if (task.S_B_STATE.Trim() == "鏈墽琛�) + { + //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 + TaskHelper.opMesTask(task, 3); + TaskHelper.Fail(task); + TaskProcess.CacheBitCancelUpdate(task); + + ContainerHelper.delCntr(task.S_CNTR_CODE); + ContainerHelper.delCntrItem(task.S_CNTR_CODE); + + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } + else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触" && task.S_B_STATE.Trim() != "瀹屾垚") + { + var db = new SqlHelper<object>().GetInstance(); + var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First(); + + if (qhflag != null) + { + LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷"); + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷"; + result.success = false; + return result; + } + ContainerHelper.delCntr(task.S_CNTR_CODE); + ContainerHelper.delCntrItem(task.S_CNTR_CODE); + ContainerHelper.delCntrLoc(task.S_CNTR_CODE); + + + TaskHelper.opMesTask(task, 3); + //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv + TaskHelper.Fail(task); + + NDCApi.CancelOrder(task.S_CODE.Trim()); + TaskProcess.CacheBitCancelUpdate(task); + + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } + else + { + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡缁撴潫"; + result.success = false; + } } - TaskHelper.Fail(wcsTask); - TaskProcess.OperateStatus(wcsTask, 7); - result.errCode = 0; - result.errMsg = "鍙栨秷鎴愬姛"; - result.success = true; + LogHelper.Info($"cancelTask1鍙栨秷agv浠诲姟{task.S_CODE}锛�, "鍙栨秷"); } else { result.errCode = 1; - result.errMsg = "浠诲姟宸茬粡缁撴潫"; + result.errMsg = $"{model.task_no},Agv浠诲姟涓嶅瓨鍦�; result.success = false; } - } - else + }else { - result.errCode = 1; - result.errMsg = $"{model.task_no}浠诲姟涓嶅瓨鍦�; - result.success = false; + //浜屾浠诲姟鍙栨秷 + + + if (wcsTask != null) + { + LogHelper.Info($"cancelTask1鍙栨秷Wcs浠诲姟{wcsTask.S_CODE}", "鍙栨秷"); + if (wcsTask.S_B_STATE.Trim() == "鏈墽琛�) + { + //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 + TaskHelper.Fail(wcsTask); + TaskProcess.OperateStatus(wcsTask, 7); + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } + else + { + LogHelper.Info($"璇ヤ换鍔wcsTask.S_CODE}宸茬粡鎺ㄩ�", "鍙栨秷"); + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡鎺ㄩ�锛屼笉鍏佽鍙栨秷"; + result.success = false; + return result; + } + } + + + if (task.S_B_STATE.Trim() == "鏈墽琛�) + { + //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷 + TaskHelper.opMesTask(task, 3); + TaskHelper.Fail(task); + TaskProcess.CacheBitCancelUpdate(task); + + ContainerHelper.delCntr(task.S_CNTR_CODE); + ContainerHelper.delCntrItem(task.S_CNTR_CODE); + + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } + else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触" && task.S_B_STATE.Trim() != "瀹屾垚") + { + var db = new SqlHelper<object>().GetInstance(); + var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First(); + + if (qhflag != null) + { + LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷"); + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷"; + result.success = false; + return result; + } + ContainerHelper.delCntr(task.S_CNTR_CODE); + ContainerHelper.delCntrItem(task.S_CNTR_CODE); + ContainerHelper.delCntrLoc(task.S_CNTR_CODE); + + + TaskHelper.opMesTask(task, 3); + //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv + TaskHelper.Fail(task); + + NDCApi.CancelOrder(task.S_CODE.Trim()); + TaskProcess.CacheBitCancelUpdate(task); + + result.errCode = 0; + result.errMsg = "鍙栨秷鎴愬姛"; + result.success = true; + } + else + { + result.errCode = 1; + result.errMsg = "浠诲姟宸茬粡缁撴潫"; + result.success = false; + } } } catch (Exception ex) { - LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛�+ex.Message, "鍙栨秷"); + LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛� + ex.Message, "鍙栨秷"); result.errCode = 1; result.errMsg = "鍙栨秷浠诲姟寮傚父"; return result; @@ -1340,7 +1493,260 @@ } - + + /// <summary> + /// 娣诲姞mes浠诲姟 + /// </summary> + internal static Result addMesTaskInWorkArea(InWorkAreaParme model) + { + var result = new Result(); + var TOOLSTYPE = ""; + try + { + if (string.IsNullOrEmpty(model.BUSI_TYPE.ToString())) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癇USI_TYPE銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟BUSI_TYPE"); + } + if (string.IsNullOrEmpty(model.PROD_NO)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癙ROD_NO銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟PROD_NO"); + } + if (string.IsNullOrEmpty(model.Location_To)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐逛负绌恒�", "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯缁堢偣Location_To"); + } + if (string.IsNullOrEmpty(model.CHECK_INFO)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癈HECK_INFO銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟CHECK_INFO"); + } + if (string.IsNullOrEmpty(model.task_no)) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁皌ask_no銆�, "Mes浠诲姟涓嬪彂"); + throw new Exception("缂哄皯鍙傛暟task_no"); + } + + if (model.Task_type==2) + { + //鍛煎彨鑳舵枡鍑哄簱 + + + + var workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE); + + + if (workFlow == null) + { + LogHelper.Info($"InWorkArea浠诲姟涓嬪彂澶辫触锛孊USI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"BUSI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�); + } + else + { + LogHelper.Info($"鍑哄簱浣滀笟娴佺▼淇℃伅" + JsonConvert.SerializeObject(workFlow), "Mes浠诲姟涓嬪彂"); + } + + //鍑哄簱浠诲姟 + + //鎺ラ┏浣�+ var connection = ""; + + //鎺ラ┏浣嶅簱鍖�+ var connectionArea = ""; + + + //鏌ユ壘缁欏畾缁堢偣 + var end = LocationHelper.GetLoc(model.Location_To); + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + + + if (end == null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�); + } + + + var unlimitedLocation = TaskHelper.GetMesKtLoc(); + + //鏍囪缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟 + var endLocFlag = true; + + foreach (var item in unlimitedLocation) + { + //鍑哄簱缁堢偣璐т綅鍦ㄩ厤缃噷 鍙互鏃犻檺鍒朵笅浠诲姟 + if (item.Loc.Contains(model.Location_To)) + { + endLocFlag = false; + break; + } + } + + if (endLocFlag) + { + var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To); + if (endTask != null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}"); + } + } + + + + //鏌ユ壘璧风偣 + List<Location> strrtList; + + Location start = null; + + + if (!string.IsNullOrEmpty(workFlow.ZONECODE)) + { + strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE); + } + else + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + } + + + + if (workFlow.FLOWCODE == "9") + { + //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�+ start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY, workFlow.CONNECTION); + if (start == null) + { + strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA); + LogHelper.Info($"InWorkArea婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂"); + if (itemFlag) + { + result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ"; + result.errCode = 2001; + result.success = true; + return result; + } + } + + + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂"); + + if (start == null) + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�); + } + + + + + //鑾峰彇鎵樼洏鐮�+ var cntrCode = LocationHelper.GetLocCntrCode(start.S_CODE); + + if (workFlow.SENDWCS == "Y") + { + + //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 + var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + + //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅 + var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList); + foreach (var item in balanceConnectionList) + { + if (item.loc.CONNEC_ROADWAY == start.N_ROADWAY) + { + connection = item.loc.S_CODE; + connectionArea = item.loc.S_AREA_Name; + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + break; + } + } + + if (connection == "") + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�); + } + } + + + //璧风偣缁堢偣鏌ユ壘鎴愬姛锛屽垱寤轰綔涓�+ + var taskType = int.Parse(workFlow.FLOWCODE); + + var operation = new WmsWork + { + // 浣滀笟鍙�+ S_CODE = model.task_no, + // 浣滀笟绫诲瀷 + N_TYPE = taskType, + // 浣滀笟绫诲瀷 + S_TYPE = workFlow.FLOWNAME, + // 璧风偣璐т綅 + S_START_LOC = start.S_CODE, + // 璧风偣搴撳尯缂栫爜 + S_START_AREA = start.S_AREA_CODE, + //鎺ラ┏浣�+ CONNECTION = connection, + // 缁堢偣璐т綅 + S_END_LOC = end.S_CODE, + // 缁堢偣搴撳尯缂栫爜 + S_END_AREA = end.S_AREA_CODE, + // 瀹瑰櫒缂栫爜 + S_CNTR_CODE = cntrCode, + // 浣滀笟瀹氫箟鍚嶇О + S_OP_DEF_NAME = workFlow.FLOWNAME, + //浼樺厛绾�+ N_PRIORITY = model.Priority, + //宸ヨ绫诲瀷 + TOOLSTYPE = TOOLSTYPE, + //璧风偣搴撳尯鍚嶇О + S_START_AREA_NAME = start.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + S_END_AREA_NAME = end.S_AREA_Name, + //璧风偣搴撳尯鍚嶇О + CONNECTION_AREA = connectionArea + }; + + //鍒涘缓浣滀笟 + 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($"InWorkArea鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂"); + result.errMsg = "鍑哄簱浣滀笟鍒涘缓鎴愬姛"; + result.errCode = 0; + result.success = true; + return result; + } + else + { + LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂"); + throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触"); + } + } + } + } + catch (Exception ex) + { + LogHelper.Info("InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message, "Mes浠诲姟涓嬪彂"); + result.errMsg = "InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message; + result.errCode = 1; + result.success = false; + throw; + } + + return result; + } /// <summary> @@ -1409,6 +1815,12 @@ throw new Exception("缂哄皯鍙傛暟task_no"); } + var work = TaskHelper.GetWmsWork(model.task_no); + if (work != null) + { + throw new Exception($"浠诲姟{model.task_no}宸茬粡鍒涘缓浣滀笟锛岃鍕块噸澶嶇敵璇�); + } + //var wmsWork = TaskHelper.GetTaskByCntrCode(model.TOOLS_NO); @@ -1433,15 +1845,38 @@ var TOOLSTYPE = ""; if (!string.IsNullOrEmpty(model.TOOLS_TPYE)) { - TOOLSTYPE = model.TOOLS_TPYE; - + TOOLSTYPE = model.TOOLS_TPYE; } - workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE, TOOLSTYPE); - + //鍏ュ簱鎸夌収宸ヨ鍜屾祦绋嬬紪鍙�+ if (model.Task_type == 1) { + workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE, TOOLSTYPE); + } + else if (model.Task_type == 2) + { + //鍑哄簱鎸夌収缁堢偣搴撳尯鍜屾祦绋嬬紪鍙�+ + var end = LocationHelper.GetLoc(model.Location_To); + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂"); + + + if (end == null) + { + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�); + } + + workFlow = TaskHelper.selectWorkFlowByEndArea(model.BUSI_TYPE, end.S_AREA_CODE); + if (workFlow != null) + { + TOOLSTYPE = workFlow.TOOLSTYPE; + } + } + LogHelper.Info($"浣滀笟{model.task_no}锛屽伐瑁呯被鍨媨TOOLSTYPE}", "Mes浠诲姟涓嬪彂"); - + + if (workFlow == null) { LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂澶辫触锛孊USI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "Mes浠诲姟涓嬪彂"); throw new Exception($"BUSI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�); @@ -1506,112 +1941,112 @@ { //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅 - //var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); - //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); - //if (usableConnectionList != null && usableConnectionList.code == "0") - //{ - // var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available); - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍙敤鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂"); - - // if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2") - // { - // //婊℃墭鍏�- // balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); - - // if (TOOLSTYPE == "25" || TOOLSTYPE == "35") { - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); - // balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO); - // } - - - - // } - // else if (workFlow.FLOWCODE == "3") - // { - // //绌烘墭鍏ョ珛搴撳尯 - // cntrCount = 0; - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); - // balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); - // } - - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘缁堢偣鏁伴噺{balanceLocList.Count}", "Mes浠诲姟涓嬪彂"); - - // foreach (var item in balanceLocList) - // { - // if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0) - // { - // // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂item淇℃伅" + JsonConvert.SerializeObject(item), "Mes浠诲姟涓嬪彂"); - // foreach (var item1 in balanceConnectionList) - // { - // if (item1.CONNEC_ROADWAY == item.N_ROADWAY) - // { - // connection = item1.S_CODE; - // connectionArea = item1.S_AREA_Name; - // end = item; - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); - // break; - // } - // } - // if (end!=null) - // { - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒扮粓鐐箋end.S_CODE}", "Mes浠诲姟涓嬪彂"); - // break; - // } - // } - // } - // if (connection == "") - // { - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂"); - // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅"); - // } - //} - //else - //{ - // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂"); - // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�); - //} - - - if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2") + var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION); + var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList); + if (usableConnectionList != null && usableConnectionList.code == "0") { - //婊℃墭鍏�+ var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available); + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍙敤鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂"); - if (TOOLSTYPE == "25" || TOOLSTYPE == "35") + if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11") { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); - end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO); + //婊℃墭鍏�+ if (TOOLSTYPE == "25" || TOOLSTYPE == "35") + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); + balanceLocList = LocationHelper.RoadWayBalance1ByItem(endList, model.PROD_NO); + } + else { + balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); + } } - else { - end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); + else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10") + { + //绌烘墭鍏ョ珛搴撳尯 + cntrCount = 0; + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); + balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY); } + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘缁堢偣鏁伴噺{balanceLocList.Count}", "Mes浠诲姟涓嬪彂"); + + foreach (var item in balanceLocList) + { + if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0) + { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂item淇℃伅" + JsonConvert.SerializeObject(item), "Mes浠诲姟涓嬪彂"); + foreach (var item1 in balanceConnectionList) + { + if (item1.CONNEC_ROADWAY == item.N_ROADWAY) + { + connection = item1.S_CODE; + connectionArea = item1.S_AREA_Name; + end = item; + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂"); + break; + } + } + if (end != null) + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒扮粓鐐箋end.S_CODE}", "Mes浠诲姟涓嬪彂"); + break; + } + } + } + if (connection == "") + { + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐瑰贩閬撴垨鎺ラ┏浣嶄笉鍙敤", "Mes浠诲姟涓嬪彂"); + throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�宸烽亾鎴栨帴椹充綅涓嶅彲鐢�); + } } - else if (workFlow.FLOWCODE == "3") + else { - //绌烘墭鍏ョ珛搴撳尯 - cntrCount = 0; - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); - end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); - } - - if (end == null) - { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐瑰贩閬撴垨鎺ラ┏浣嶄笉鍙敤", "Mes浠诲姟涓嬪彂"); - throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�宸烽亾鎴栨帴椹充綅涓嶅彲鐢�); - } - - var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY); - - if (jb==null) - { - LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂"); - throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅"); + LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂"); + throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�); } - connection = jb.S_CODE; - connectionArea = jb.S_AREA_Name; + //if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11") + //{ + // //婊℃墭鍏�+ + // if (TOOLSTYPE == "25" || TOOLSTYPE == "35") + // { + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂"); + // end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO); + + // } + // else { + // end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); + // } + + //} + //else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10") + //{ + // //绌烘墭鍏ョ珛搴撳尯 + // cntrCount = 0; + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂"); + // end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no); + //} + + //if (end == null) + //{ + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐瑰贩閬撴垨鎺ラ┏浣嶄笉鍙敤", "Mes浠诲姟涓嬪彂"); + // throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�宸烽亾鎴栨帴椹充綅涓嶅彲鐢�); + //} + + //var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY); + + //if (jb==null) + //{ + // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂"); + // throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅"); + //} + + + //connection = jb.S_CODE; + //connectionArea = jb.S_AREA_Name; } @@ -1701,7 +2136,7 @@ cntr1.S_CODE = cntrCode; cntr1.C_ENABLE = "Y"; cntr1.N_DETAIL_COUNT = cntrCount; - cntr1.S_TYPE = ""; + cntr1.S_TYPE = TOOLSTYPE; LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅" + JsonConvert.SerializeObject(cntr1), "Mes浠诲姟涓嬪彂"); if (ContainerHelper.CreateCntr(cntr1)) @@ -1749,7 +2184,7 @@ S_START_AREA_NAME = start.S_AREA_Name, //璧风偣搴撳尯鍚嶇О S_END_AREA_NAME = end.S_AREA_Name, - //璧风偣搴撳尯鍚嶇О + //鎺ラ┏搴撳尯鍚嶇О CONNECTION_AREA = connectionArea, }; @@ -1804,6 +2239,8 @@ } + //LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鍒ゆ柇缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟寮�", "Mes浠诲姟涓嬪彂"); + var unlimitedLocation = TaskHelper.GetMesKtLoc(); //鏍囪缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟 @@ -1819,17 +2256,20 @@ } } + //LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鍒ゆ柇缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟endLocFlag淇℃伅{endLocFlag}", "Mes浠诲姟涓嬪彂"); if (endLocFlag) { var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To); + + //LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鍒ゆ柇缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟endTask淇℃伅"+JsonConvert.SerializeObject(endTask), "Mes浠诲姟涓嬪彂"); if (endTask != null) { LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂"); throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}"); } } - + // LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鍒ゆ柇缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟瀹屾垚", "Mes浠诲姟涓嬪彂"); //鏌ユ壘璧风偣 List<Location> strrtList; @@ -1844,11 +2284,12 @@ else { strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA); + } + //LogHelper.Info($"CSendTask鍑哄簱浠诲姟鑾峰彇璧风偣璐т綅闆嗗悎瀹屾垚", "Mes浠诲姟涓嬪彂"); - - if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4") + if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4" || workFlow.FLOWCODE == "6") { if (TOOLSTYPE == "85" || TOOLSTYPE == "95") { @@ -1858,6 +2299,8 @@ else { //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�+ + LogHelper.Info($"CSendTask鍑哄簱浠诲姟鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�, "Mes浠诲姟涓嬪彂"); start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY,workFlow.CONNECTION); if (start == null) { @@ -2047,7 +2490,7 @@ S_START_AREA_NAME = start.S_AREA_Name, //璧风偣搴撳尯鍚嶇О S_END_AREA_NAME = end.S_AREA_Name, - //璧风偣搴撳尯鍚嶇О + //鎺ラ┏搴撳尯鍚嶇О CONNECTION_AREA = connectionArea }; -- Gitblit v1.9.1