海波 张
16 小时以前 5321419f5fddb4e877fe90ccd90ebdc1a115af64
api/MoboxController.cs
@@ -1,9 +1,11 @@
using HH.WCS.ZhongCeJinTan.device;
using HH.WCS.Mobox3.ZhongCeJinTan.dispatch;
using HH.WCS.ZhongCeJinTan.device;
using HH.WCS.ZhongCeJinTan.dispatch;
using HH.WCS.ZhongCeJinTan.process;
using HH.WCS.ZhongCeJinTan.util;
using HH.WCS.ZhongCeJinTan.wms;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
@@ -25,13 +27,27 @@
            if (task != null) {
                if (task.S_B_STATE.Trim() == "未执行") {
                    //未执行直接修改状态为取消
                    TaskHelper.UpdateStatus(model.TaskNo, "取消");
                    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() != "完成")  {
                    //if (GZRobot.CancelOrder(task.GZ_ID))
                    //{
                    //    result.resultMsg = "任务取消已经发送给小车";
                    //}
                    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($"mobox取消,该任务{task.S_CODE}已经取货完成,,不允许取消", "取消");
                        return result;
                    }
                    TaskHelper.opMesTask(task, 3);
                    //已推送但是没有完成或者取消,通知hosttoagv
                    TaskHelper.Fail(task);
                    NDCApi.CancelOrder(task.S_CODE.Trim());
                    TaskProcess.CacheBitCancelUpdate(task);
                }
                else {
                    result.resultCode = 1;
@@ -45,6 +61,150 @@
            return result;
        }
        internal static Result cancelTask1(cancleTaskParme model)
        {
            var result = new Result();
            LogHelper.Info("cancelTask1取消任务信息:" + JsonConvert.SerializeObject(model), "取消");
            if (model == null)
            {
                result.errMsg = "参数为null";
                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)
                {
                    LogHelper.Info($"cancelTask1取消agv任务{task.S_CODE}:", "取消");
                    if (task.S_B_STATE.Trim() == "未执行")
                    {
                        //未执行直接修改状态为取消
                        TaskHelper.opMesTask(task, 3);
                        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);
                        }
                        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;
                        }
                        if (task.S_TYPE.Contains("入库") || task.S_TYPE.Contains("回库"))
                        {
                            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;
                    }
                }
                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() == "未执行")
                    {
                        //未执行直接修改状态为取消
                        if (wcsTask.S_TYPE.Contains("入库") || wcsTask.S_TYPE.Contains("回库"))
                        {
                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
                        }
                        TaskHelper.Fail(wcsTask);
                        TaskProcess.OperateStatus(wcsTask, 7);
                        result.errCode = 0;
                        result.errMsg = "取消成功";
                        result.success = true;
                        return result;
                    }
                    else if (wcsTask.S_B_STATE.Trim() != "取消" && wcsTask.S_B_STATE.Trim() != "失败" && wcsTask.S_B_STATE.Trim() != "完成")
                    {
                        var db = new SqlHelper<object>().GetInstance();
                        var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == wcsTask.S_CODE && a.S_ACTION == "5").First();
                        LogHelper.Info($"该任务{wcsTask.S_CODE}动作信息" + JsonConvert.SerializeObject(qhflag), "取消");
                        if (qhflag != null)
                        {
                            LogHelper.Info($"该任务{wcsTask.S_CODE}已经取货完成", "取消");
                            result.errCode = 1;
                            result.errMsg = "任务已经取货完成,不允许取消";
                            result.success = false;
                            return result;
                        }
                        if (wcsTask.S_TYPE.Contains("入库") || wcsTask.S_TYPE.Contains("回库"))
                        {
                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
                            ContainerHelper.delCntrLoc(wcsTask.S_CNTR_CODE);
                        }
                        WcsTask.WcsCancellTask(wcsTask);
                        TaskHelper.Fail(wcsTask);
                        TaskProcess.OperateStatus(wcsTask, 7);
                        result.errCode = 0;
                        result.errMsg = "取消成功";
                        result.success = true;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info("cancelTask1取消任务异常:" + ex.Message, "取消");
                result.errCode = 1;
                result.errMsg = "取消任务异常";
                return result;
            }
            return result;
        }
        //作业任务强制完成 
        [HttpPost]