dengjunjie
2026-03-06 80f2457f459b32054543b05d7856c40e4c51e664
优化成品库外检失败任务
已修改6个文件
74 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -125,6 +125,11 @@
        #region å››å‘车其他任务状态
        /// <summary>
        /// å¾…外形检测
        /// </summary>
        [Description("待外形检测")]
        WaiCheckShape,
        /// <summary>
        /// å¤–形检测中
        /// </summary>
        [Description("外形检测中")]
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -92,10 +92,17 @@
                    if (task == null) throw new Exception($"未找到任务,任务编号【{Rgv.content.taskID}】");
                    if (Rgv.messageType == 72)//小车顶起货物
                    {
                        TaskFromCompleted(task, deviceTypeEnum);
                        //给质检门写入启动信号
                        var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice ?? throw new Exception("未找到1楼质检门设备信息");
                        device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                        if (task.TaskType == (int)TaskTypeEnum.CPInbound && task.TaskState == (int)TaskStatusEnum.Execut)
                        {
                            task.TaskState = (int)TaskStatusEnum.WaiCheckShape;
                            BaseDal.UpdateData(task);//给质检门写入启动信号
                            var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice ?? throw new Exception("未找到1楼质检门设备信息");
                            device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                        }
                        else
                        {
                            TaskFromCompleted(task, deviceTypeEnum);
                        }
                    }
                    else if (Rgv.messageType == 10)
                    {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -81,7 +81,7 @@
            _hKLocationInfoService = hKLocationInfoService;
            _apiInfoService = apiInfoService;
            _trackloginfoService = trackloginfoService;
            _stationMangerService=stationMangerService;
            _stationMangerService = stationMangerService;
        }
        public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs)
        {
@@ -1044,8 +1044,10 @@
        /// <exception cref="NotImplementedException"></exception>
        public WebResponseContent IQCResult(IQCResultDTO iQC)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                #region å®¹å™¨ä¸Šæž¶
                Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == iQC.StationCode) ?? throw new Exception($"未找到站台【{iQC.StationCode}】信息");
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOToccupyStation)) ?? throw new Exception("未找到站点容器上架接口配置信息!请检查接口配置");
                FOURBOToccupyStation fOURBOToccupyStation = new FOURBOToccupyStation()
@@ -1056,6 +1058,32 @@
                string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
                #endregion
                #region åˆ›å»ºå››å‘车任务
                var task = BaseDal.QueryFirst(x => x.PalletCode == iQC.ContainerCode && x.SourceAddress == iQC.StationCode && x.TaskState == (int)TaskStatusEnum.New);
                #endregion
                #region å‘¼å«å››å‘车
                apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new()
                {
                    priority = task.Grade,
                    podID = task.PalletCode,
                    //desNodeID = task.SourceAddress,
                    desExt = new
                    {
                        unload = 0//是否放下容器,0否1是
                    },
                    desStationCodes = task.SourceAddress,
                    desType = 5
                };
                response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
                fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                content.Data = fOURBOTReturn;
                if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
                task.TaskState = (int)TaskStatusEnum.Execut;
                BaseDal.UpdateData(task);
                #endregion
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -62,7 +62,7 @@
                        }
                        //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        item.RGVTaskId = fOURBO.taskID;
                        item.TaskState = (int)TaskStatusEnum.Execut;
                        item.TaskState = (int)TaskStatusEnum.TakeFinish;
                    }
                }
                _taskService.UpdateData(tasks);
@@ -363,7 +363,8 @@
                    item.NextAddress = stationManger.StationCode;
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
                    fOURBOTnewMovePodTask.destination = item.NextAddress;
                    //fOURBOTnewMovePodTask.desNodeID = item.NextAddress;
                    fOURBOTnewMovePodTask.desStationCodes = item.NextAddress;
                    fOURBOTnewMovePodTask.desExt = new
                    {
                        unload = 1//是否放下容器,0否1是
@@ -415,7 +416,7 @@
                if (FreeLocationInfos.Count < 1) throw new Exception($"成品库创建移库任务无可用空货位");
                foreach (var item in rGVLocationInfos)
                {
                    Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault();
                    Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer && x.RoadwayNo != item.RoadwayNo).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault();
                    rGVLocationInfo ??= FreeLocationInfos.First();
                    Dt_Task dt_Task = new()
                    {
@@ -544,7 +545,7 @@
                    #region ä¸‹å‘出库任务
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
                    fOURBOTnewMovePodTask.destination = item.NextAddress;
                    fOURBOTnewMovePodTask.desNodeID = item.NextAddress;
                    fOURBOTnewMovePodTask.desExt = new
                    {
                        unload = 0//是否放下容器,0否1是
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -22,7 +22,9 @@
        {
            try
            {
                var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.New).ToList();
                var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound && x.TaskState == (int)TaskStatusEnum.WaiCheckShape).ToList();
                if (newTasks.Count > 0) SendRGVInTask(newTasks);
                newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.New).ToList();
                if (newTasks.Count > 0)
                {
                    #region æŸ¥æ‰¾å‡¯ä¹å£«ä»»åŠ¡
@@ -31,12 +33,12 @@
                    #endregion
                    #region æŸ¥æ‰¾RGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
                    if (Tasks.Count > 0) SendRGVInTask(Tasks);
                    //Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
                    //if (Tasks.Count > 0) SendRGVInTask(Tasks);
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
                    if (Tasks.Count > 0) IsMoveTask(Tasks);
                    #endregion
                    #region æŸ¥æ‰¾æµ·åº·AGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.Carry || x.TaskType == (int)TaskTypeEnum.CJCarry || x.TaskType == (int)TaskTypeEnum.CJInbound || x.TaskType == (int)TaskTypeEnum.CJOutbound).ToList();
                    if (Tasks.Count > 0) HIKROBOTTask(Tasks);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -68,10 +68,13 @@
                            var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress);
                            //写入停止质检信号
                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress);
                            Thread.Sleep(500);
                            device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
                            if (qualityResult)
                            {
                                //如果质检通过了,就把任务状态改为质检完成
                                task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt();
                                task.ExceptionMessage = "";
                                Uptasks.Add(task);
                            }
                            else
@@ -83,7 +86,7 @@
                                if (R_ExtremeWarning) task.ExceptionMessage += ",超高";
                                Uptasks.Add(task);
                                //写入复位信号
                                device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                                //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
                            }
                        }
                        else