海波 张
2025-07-07 00b6105b34870f6f5a33551534d0088f3f741906
core/TaskCore.cs
@@ -20,96 +20,97 @@
    internal class TaskCore
    {
        public static void OperateTaskStatus(AgvTaskState model) {
            var wmsTask = TaskHelper.GetTask(model.task_no);
            var db = new SqlHelper<object>().GetInstance();
            //var wmsTask = TaskHelper.GetTask(model.task_no);
            //var db = new SqlHelper<object>().GetInstance();
            LogHelper.Info("OperateTaskStatus--任务信息" + JsonConvert.SerializeObject(wmsTask), "API");
            LogHelper.Info("OperateTaskStatus--参数信息" + JsonConvert.SerializeObject(model), "API");
            if (wmsTask != null)
                {
                    if (model.state <= 7)
                    {
                        //有任务号请求
                        switch (model.state)
                        {
                            case 1:
                                TaskHelper.Begin(wmsTask,model.forklift_no.ToString());
                                //胎面交互
                                TaskHelper.TmSafety(wmsTask);
                                break;
                            case 3:
                                TaskHelper.UpdateStatus(wmsTask, "开始取货");
                            break;
                            case 4:
                                TaskHelper.UpdateStatus(wmsTask, "取货完成");
                                LocationHelper.UnLockLoc(wmsTask.S_START_LOC);
                                TaskProcess.OperateStatus(wmsTask, 4);
                            break;
                            case 5:
                                TaskHelper.UpdateStatus(wmsTask, "开始卸货");
                                break;
                            case 6:
                                TaskHelper.UpdateStatus(wmsTask, "卸货完成");
                                LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
                                TaskProcess.OperateStatus(wmsTask, 6);
            //LogHelper.Info("OperateTaskStatus--任务信息" + JsonConvert.SerializeObject(wmsTask), "API");
            //LogHelper.Info("OperateTaskStatus--参数信息" + JsonConvert.SerializeObject(model), "API");
            //if (wmsTask != null)
            //    {
            //        if (model.state <= 7)
            //        {
            //            //有任务号请求
            //            switch (model.state)
            //            {
            //                case 1:
            //                    TaskHelper.Begin(wmsTask,model.forklift_no.ToString());
            //                    //胎面交互
            //                    TaskHelper.TmSafety(wmsTask);
            //                    break;
            //                case 3:
            //                    TaskHelper.UpdateStatus(wmsTask, "开始取货");
            //                break;
            //                case 4:
            //                    TaskHelper.UpdateStatus(wmsTask, "取货完成");
            //                    LocationHelper.UnLockLoc(wmsTask.S_START_LOC);
            //                    TaskProcess.OperateStatus(wmsTask, 4);
            //                break;
            //                case 5:
            //                    TaskHelper.UpdateStatus(wmsTask, "开始卸货");
            //                    break;
            //                case 6:
            //                    TaskHelper.UpdateStatus(wmsTask, "卸货完成");
            //                    LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
            //                    TaskProcess.OperateStatus(wmsTask, 6);
                                //如果是二段任务则下发立库任务
                                var wcsTask = TaskHelper.GetTaskByState("未执行", "wcs", wmsTask.S_OP_CODE,"入库");
                                if (wcsTask!=null)
                                {
                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, "出库锁", 2);
                                    WcsTask.WcsTaskEntity(wcsTask);
                                }
                            break;
                            case 2:
                            //空托出或者满托出任务完成判断是否要提高入库优先级
            //                    //如果是二段任务则下发立库任务
            //                    var wcsTask = TaskHelper.GetTaskByState("未执行", "wcs", wmsTask.S_OP_CODE,"入库");
            //                    if (wcsTask!=null)
            //                    {
            //                        LocationHelper.LockLoc(wcsTask.S_START_LOC, "出库锁", 2);
            //                        WcsTask.WcsTaskEntity(wcsTask);
            //                    }
            //                break;
            //                case 2:
            //                //空托出或者满托出任务完成判断是否要提高入库优先级
                            LogHelper.Info($"任务{wmsTask.S_CODE}完成,判断入库优先级", "入库优先级");
                            TaskProcess.inPri(wmsTask);
                            TaskHelper.End(wmsTask);
                            break;
                            case 7:
            //                LogHelper.Info($"任务{wmsTask.S_CODE}完成,判断入库优先级", "入库优先级");
            //                TaskProcess.inPri(wmsTask);
            //                TaskHelper.End(wmsTask);
            //                break;
            //                case 7:
                                var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
                                if (wcsTask1!=null)
                                {
                                    //agv执行通知 wcs取消
                                    WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
                                    if (!TaskHelper.CheckActionRecordExist(wcsTask1.S_CODE, "6"))
                                    {
                                        TaskHelper.Fail(wcsTask1);
                                        TaskProcess.OperateStatus(wcsTask1, 7);
                                    }
                                }
            //                    var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
            //                    if (wcsTask1!=null)
            //                    {
            //                            //退库任务不通知
            //                            //agv执行通知 wcs取消
            //                            if (wcsTask1.S_B_STATE!="未执行"&& wcsTask1.S_B_STATE != "完成"&& wcsTask1.S_B_STATE != "取消")
            //                            {
            //                                WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
            //                            }
            //                            TaskHelper.Fail(wcsTask1);
            //                            TaskProcess.OperateStatus(wcsTask1, 7);
            //                    }
                                TaskHelper.Fail(wmsTask);
                                TaskProcess.OperateStatus(wmsTask, 7);
                                //入库或者回库任务取消删除托盘物料
                                if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库"))
                                {
                                    ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
                                    ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
                                }
            //                    TaskHelper.Fail(wmsTask);
            //                    TaskProcess.OperateStatus(wmsTask, 7);
            //                    //入库或者回库任务取消删除托盘物料
            //                    if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库"))
            //                    {
            //                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
            //                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
            //                    }
                                //出库取消判断接驳位是否有货,有货需要解绑
                                if (!WcsTask.WcsCvstate(wmsTask))
                                {
                                    LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库");
                                    TaskProcess.OperateStatus(wmsTask, 4);
                                    ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
                                    ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
                                }
                            break;
            //                    //出库取消判断接驳位是否有货,有货需要解绑
            //                    if (!WcsTask.WcsCvstate(wmsTask))
            //                    {
            //                        LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库");
            //                        TaskProcess.OperateStatus(wmsTask, 4);
            //                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
            //                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
            //                    }
            //                break;
                        }
                         TaskHelper.AddActionRecord(wmsTask.S_CODE, model.state, model.forklift_no.ToString());
                }
                else
                {
                    //安全请求等
                    TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no.ToString());
                }
            }
            //            }
            //             TaskHelper.AddActionRecord(wmsTask.S_CODE, model.state, model.forklift_no.ToString());
            //    }
            //    else
            //    {
            //        //安全请求等
            //        TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no.ToString());
            //    }
            //}
        }
        public static void addAgvActionState(AgvTaskState model)