| | |
| | | //[Route("CancelTask")] |
| | | public SimpleResult CancelTask(MoboxTaskBase model) { |
| | | var result=new SimpleResult(); |
| | | var task=TaskHelper.GetTask(model.TaskNo); |
| | | if (task != null) { |
| | | if (task.S_B_STATE.Trim() == "未执行") { |
| | | //未执行直接修改状态为取消 |
| | | |
| | | LogHelper.Info($"mobox取消agv任务{task.S_CODE}:", "取消"); |
| | | TaskHelper.Fail(task); |
| | | TaskProcess.CacheBitCancelUpdate(task); |
| | | TaskHelper.opMesTask(task, 3); |
| | | } |
| | | else if(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(); |
| | | LogHelper.Info($"CancelTask取消:参数"+JsonConvert.SerializeObject(model), "Mobox取消"); |
| | | if (model==null) |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "参数为null"; |
| | | LogHelper.Info($"CancelTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | if (string.IsNullOrEmpty(model.TaskNo)) |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "任务号为空"; |
| | | LogHelper.Info($"CancelTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | if (qhflag != null) |
| | | { |
| | | LogHelper.Info($"mobox取消,该任务{task.S_CODE}已经取货完成,,不允许取消", "取消"); |
| | | return result; |
| | | } |
| | | TaskHelper.opMesTask(task, 3); |
| | | //已推送但是没有完成或者取消,通知hosttoagv |
| | | TaskHelper.Fail(task); |
| | | NDCApi.CancelOrder(task.S_CODE.Trim()); |
| | | TaskProcess.CacheBitCancelUpdate(task); |
| | | } |
| | | else { |
| | | var wmsTask = TaskHelper.GetTaskByNoType(model.TaskNo, "agv"); |
| | | if (wmsTask != null) { |
| | | if (wmsTask.S_TYPE == "取消" || wmsTask.S_TYPE == "完成") |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "任务已结束"; |
| | | result.resultMsg = $"{model.TaskNo},取消agv任务失败,任务状态{wmsTask.S_TYPE}"; |
| | | LogHelper.Info($"CancelTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs"); |
| | | |
| | | WmsTaskAction ac6 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "6"); |
| | | TaskProcess.OperateStatus(wmsTask, 7); |
| | | if (wmsTask.S_TYPE != "未执行") { |
| | | NDCApi.CancelOrder(wmsTask.S_CODE.Trim()); |
| | | |
| | | LogHelper.Info($"任务{wmsTask.S_CODE},取消通知小车", "Mobox取消"); |
| | | } |
| | | |
| | | |
| | | if (ac6 == null) |
| | | { |
| | | TaskHelper.Fail(wmsTask); |
| | | //入库或者回库任务取消删除托盘物料 |
| | | if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库") || LocationHelper.GetErroArea(wmsTask.S_END_AREA)) |
| | | { |
| | | ContainerHelper.delCntr(wmsTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrLoc(wmsTask.S_CNTR_CODE); |
| | | } |
| | | if (!LocationHelper.GetErroArea(wmsTask.S_END_AREA)) |
| | | { |
| | | TaskHelper.opMesTask(wmsTask, 3); |
| | | } |
| | | |
| | | if (wcsTask1 != null) |
| | | { |
| | | if (wcsTask1.S_B_STATE != "取消" && wcsTask1.S_B_STATE != "完成") |
| | | { |
| | | TaskHelper.Fail(wcsTask1); |
| | | } |
| | | TaskProcess.OperateStatus(wcsTask1, 7); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //收到6强制完成 |
| | | TaskHelper.End(wmsTask); |
| | | } |
| | | |
| | | if (wcsTask1 != null) |
| | | { |
| | | if (wmsTask.S_TYPE.Contains("出库")) |
| | | { |
| | | var ac1101 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1101"); |
| | | var ac1102 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1102"); |
| | | if ((ac1101 != null)) |
| | | { |
| | | if (ac1102 == null) |
| | | { |
| | | //agv执行通知 wcs取消 |
| | | WcsTask.WcsCallback(wmsTask, 7, wmsTask.S_EQ_NO.ToString()); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var ac1103 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1103"); |
| | | var ac1104 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1104"); |
| | | |
| | | if ((ac1103 != null)) |
| | | { |
| | | if (ac1104 == null) |
| | | { |
| | | //agv执行通知 wcs取消 |
| | | WcsTask.WcsCallback(wmsTask, 7, wmsTask.S_EQ_NO.ToString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | if (wmsTask.S_TYPE.Contains("出库")) |
| | | { |
| | | //出库取消判断接驳位是否有货,有货需要解绑 |
| | | var wmsWork = TaskHelper.GetWmsWork(wmsTask.S_OP_CODE); |
| | | if (wmsWork != null) |
| | | { |
| | | if (!string.IsNullOrEmpty(wmsWork.CONNECTION)) |
| | | { |
| | | var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION, "agv", wmsTask.T_CREATE); |
| | | LogHelper.Info($"取消任务{wmsTask.S_CODE},当前接驳位{wmsWork.CONNECTION},第一个agv任务信息" + JsonConvert.SerializeObject(agvTask), "Mobox取消"); |
| | | if (agvTask != null) |
| | | { |
| | | WmsTaskAction qh = TaskHelper.GetActionRecord(agvTask.S_CODE, "4"); |
| | | //已经取货完成 |
| | | if (qh != null) |
| | | { |
| | | if (WcsTask.WcsCvstate(wmsTask)) |
| | | { |
| | | LogHelper.Info($"Wcs立库接驳位有货,解绑货位:{wmsTask.S_END_LOC}", "Mobox取消"); |
| | | ContainerHelper.delCntr(wmsTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | | WmsTaskAction ac4 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "4"); |
| | | |
| | | LogHelper.Info($"查询任务{wmsTask.S_CODE},是否取货完成:" + JsonConvert.SerializeObject(ac4), "Mobox取消"); |
| | | if (ac4 != null) |
| | | { |
| | | ContainerHelper.delCntr(wmsTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrLoc(wmsTask.S_CNTR_CODE); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | result.resultCode = 0; |
| | | result.resultMsg = $"{model.TaskNo},agv任务取消成功"; |
| | | } |
| | | else { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "任务不存在"; |
| | | result.resultMsg = $"{model.TaskNo},agv任务不存在"; |
| | | } |
| | | |
| | | LogHelper.Info($"CancelTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | internal static Result cancelTask1(cancleTaskParme model) |
| | | [HttpPost] |
| | | //[Route("CancelWcsTask")] |
| | | public SimpleResult CancelWcsTask(MoboxTaskBase model) |
| | | { |
| | | var result = new SimpleResult(); |
| | | |
| | | LogHelper.Info($"CancelWcsTask取消:参数" + JsonConvert.SerializeObject(model), "Mobox取消"); |
| | | if (model == null) |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "参数为null"; |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | if (string.IsNullOrEmpty(model.TaskNo)) |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = "任务号为空"; |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | var transportTask = TaskHelper.GetTaskByNoType(model.TaskNo,"wcs"); |
| | | |
| | | |
| | | if (transportTask != null) |
| | | { |
| | | if (transportTask.S_B_STATE == "取消"|| transportTask.S_B_STATE == "完成") |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = $"{model.TaskNo},通知Wcs取消任务失败,任务状态{transportTask.S_B_STATE}"; |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | if (transportTask.S_B_STATE == "未执行") |
| | | { |
| | | TaskHelper.Fail(transportTask); |
| | | TaskProcess.OperateStatus(transportTask, 7); |
| | | result.resultCode = 0; |
| | | result.resultMsg = $"{model.TaskNo},wcs任务取消成功"; |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | if (WcsTask.WcsCancellTask(transportTask)) |
| | | { |
| | | TaskHelper.Fail(transportTask); |
| | | TaskProcess.OperateStatus(transportTask, 7); |
| | | |
| | | if (transportTask.S_TYPE.Contains("出库")) |
| | | { |
| | | var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv"); |
| | | if (agvTask1 != null) |
| | | { |
| | | TaskHelper.Fail(agvTask1); |
| | | NDCApi.CancelOrder(agvTask1.S_CODE.Trim()); |
| | | |
| | | LogHelper.Info($"CancelWcsTask取消{model.TaskNo},解锁", "解锁"); |
| | | TaskProcess.CacheBitCancelUpdate(agvTask1); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ContainerHelper.delCntr(transportTask.S_CNTR_CODE); |
| | | ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE); |
| | | } |
| | | |
| | | result.resultCode = 0; |
| | | result.resultMsg = $"{model.TaskNo},wcs任务取消成功"; |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | else { |
| | | LogHelper.Info($"通知Wcs取消任务失败", "Wcs任务执行通知"); |
| | | result.resultCode = 1; |
| | | result.resultMsg = $"{model.TaskNo},通知Wcs取消任务失败"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | result.resultCode = 1; |
| | | result.resultMsg = $"{model.TaskNo},wcs任务不存在"; |
| | | } |
| | | LogHelper.Info($"CancelWcsTask返回:" + JsonConvert.SerializeObject(result), "Mobox取消"); |
| | | return result; |
| | | } |
| | | |
| | | internal static Result cancelTask1(MoboxTaskBase model) |
| | | { |
| | | var result = new Result(); |
| | | LogHelper.Info("cancelTask1取消任务信息:" + JsonConvert.SerializeObject(model), "取消"); |
| | |
| | | |
| | | try |
| | | { |
| | | var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv"); |
| | | var task = TaskHelper.GetTaskByWorkNo(model.TaskNo, "agv"); |
| | | |
| | | var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs"); |
| | | var wcsTask = TaskHelper.GetTaskByWorkNo(model.TaskNo, "wcs"); |
| | | |
| | | if (task != null) |
| | | { |
| | |
| | | else |
| | | { |
| | | result.errCode = 1; |
| | | result.errMsg = $"{model.task_no}任务不存在"; |
| | | result.errMsg = $"{model.TaskNo}任务不存在"; |
| | | result.success = false; |
| | | return result; |
| | | } |
| | | |
| | | if (wcsTask != null) |
| | |
| | | WmsTaskAction ac4 = TaskHelper.GetActionRecord(task.S_CODE, "4"); |
| | | if (ac4 != null) |
| | | { |
| | | |
| | | LogHelper.Info("CompleteTask agv任务已经取货完成,任务强制完成处理", "强制完成"); |
| | | |
| | | |
| | | TaskHelper.UpdateStatus(task, "卸货完成"); |
| | | LocationHelper.UnLockLoc(task.S_END_LOC); |
| | | |
| | | //LocationHelper.UnLockLoc(task.S_END_LOC); |
| | | TaskProcess.OperateStatus(task, 6); |
| | | |
| | | //如果是二段任务则下发立库任务 |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | LogHelper.Info("CompleteTask agv任务没有取货完成,任务取消处理", "强制完成"); |
| | | var cancle = new cancleTaskParme(); |
| | | cancle.task_no = task.S_CODE; |
| | |
| | | |
| | | if (task.S_SCHEDULE_TYPE.Contains("wcs")) { |
| | | LogHelper.Info("CompleteTask wcs任务强制完成处理", "强制完成"); |
| | | LocationHelper.UnLockLoc(task.S_START_LOC); |
| | | //LocationHelper.UnLockLoc(task.S_START_LOC); |
| | | TaskProcess.OperateStatus(task, 4); |
| | | LocationHelper.UnLockLoc(task.S_END_LOC); |
| | | //LocationHelper.UnLockLoc(task.S_END_LOC); |
| | | TaskProcess.OperateStatus(task, 6); |
| | | TaskHelper.End(task); |
| | | LocationHelper.CreateUpAndDown(task); |