dengjunjie
7 天以前 3b7569285434bb38736627821f7d7eb34fabca28
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs
@@ -50,10 +50,10 @@
            foreach (var item in tasks)
            {
                // å‡ºåº“任务处理 (从1楼出库到6楼)
                if (item.TaskType == (int)TaskTypeEnum.Q3CK)
                if (item.TaskType == (int)TaskTypeEnum.Q3CK || item.TaskType == (int)TaskTypeEnum.Q3RK)
                {
                    // è°ƒç”¨æŽ¥å£èŽ·å–å°è½¦ä¿¡æ¯
                    var result = _agvcartInfoService.CheckTheCar();
                    var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)(YWGP)");
                    if (result != null && result.Status)
                    {
                        var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -61,7 +61,8 @@
                        {
                            // å‡ºåº“任务:检查是否有在1楼(AA)的小车
                            // Q3CK æ˜¯AA→FF的跨楼层任务,只能使用专用小车
                            var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
                            var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF";
                            var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code);
                            if (specialCarInAA != null)
                            {
@@ -75,11 +76,11 @@
                            else
                            {
                                // æ²¡æœ‰ä¸“用小车在1楼,需要呼叫专用小车来到1楼
                                var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
                                var anySpecialCar = dataList.FirstOrDefault();
                                if (anySpecialCar != null)
                                {
                                    // èµ·ç‚¹ï¼šå°è½¦å½“前所在楼层的点位,目标:1楼点位
                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA");
                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, code);
                                    if (callCarResult.Status)
                                    {
                                        // åŽŸä»»åŠ¡çŠ¶æ€æ”¹ä¸ºç­‰å¾…ç©ºè½¦
@@ -98,54 +99,10 @@
                        item.ExceptionMessage = "获取AGV小车信息失败";
                    }
                }
                // å…¥åº“任务处理 (从6楼入库到1楼)
                else if (item.TaskType == (int)TaskTypeEnum.Q3RK)
                {
                    var result = _agvcartInfoService.CheckTheCar();
                    if (result != null && result.Status)
                    {
                        var dataList = result.Data as List<HIKROBOTQueryData>;
                        if (dataList != null && dataList.Any())
                        {
                            // Q3RK æ˜¯FF→AA的跨楼层任务,只能使用专用小车
                            var specialCarInFF = dataList.FirstOrDefault(d => d.mapCode == "FF" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
                            if (specialCarInFF!=null)
                            {
                                // æœ‰åœ¨1楼的小车,直接执行任务
                                var content = _taskService.SendHIKROBOTTask(item);
                                item.TaskState = (int)TaskStatusEnum.Execut;
                            }
                            else
                            {
                                // æ²¡æœ‰ä¸“用小车在6楼,需要呼叫专用小车来到6楼
                                var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
                                if (anySpecialCar != null)
                                {
                                    // èµ·ç‚¹ï¼šå°è½¦å½“前所在楼层的点位,目标:6楼点位
                                    var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "FF");
                                    if (callCarResult.Status)
                                    {
                                        item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
                                    }
                                }
                                else
                                {
                                    item.ExceptionMessage = "未找到可用AGV小车";
                                }
                            }
                        }
                    }
                    else
                    {
                        item.ExceptionMessage = "获取AGV小车信息失败";
                    }
                }
                else if (item.TaskType == (int)TaskTypeEnum.F01)
                {
                    // F01任务处理:根据目标地址判断需要哪个楼层的小车
                    var result = _agvcartInfoService.CheckTheCar();
                    var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)");
                    if (result != null && result.Status)
                    {
@@ -162,7 +119,7 @@
                            }
                            // æ£€æŸ¥æ˜¯å¦æœ‰åœ¨ç›®æ ‡æ¥¼å±‚的小车
                            var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)");
                            var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode);
                            if (hasRequiredCar!=null)
                            {
@@ -239,7 +196,7 @@
                Dt_Task newTask = new Dt_Task
                {
                    WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // ç”Ÿæˆå”¯ä¸€çš„WMS任务号
                    WMSTaskNum = "HK_" + task.WMSTaskNum, // ç”Ÿæˆå”¯ä¸€çš„WMS任务号
                    TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                    SourceAddress = currentFloorInfo.PointCode,
                    CurrentAddress = currentFloorInfo.PointCode,
@@ -247,16 +204,16 @@
                    NextAddress = targetFloorInfo.PointCode,
                    TaskType = (int)TaskTypeEnum.MOVE,
                    Grade = task.Grade,
                    PalletCode = null,
                    PalletCode = "",
                    TaskState = (int)TaskStatusEnum.CallingHKtransportation,
                    // å¤åˆ¶å…¶ä»–必要字段
                    CreateDate = DateTime.Now,
                    Creater = "System"
                };
                _taskService.AddData(newTask);  // æ·»åŠ æ–°ä»»åŠ¡
                var result = _taskService.SendHIKROBOTTask(newTask);
                if (result.Status)
                {
                    _taskService.AddData(newTask);  // æ·»åŠ æ–°ä»»åŠ¡
                    content.OK("空车呼叫任务创建成功", newTask);
                }
                else
@@ -274,25 +231,21 @@
        #endregion
        #region å¤„理agv待空车搬运任务
        public void SendHKWaitTask()
        public void SendHKWaitTask(List<Dt_Task> Tasks)
        {
            try
            {
                List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE);
                if (reslut.Count<=0)
                {
                    List<Dt_Task> reslut2 = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.Q3CK || x.TaskType == (int)TaskTypeEnum.F01);
                    foreach (var item in reslut2)
                List<Dt_Task> Uptasks = new List<Dt_Task>();
                foreach (var item in Tasks)
                    {
                        var content = _taskService.SendHIKROBOTTask(item);
                    }
                    reslut.ForEach(x =>
                    if (content.Status)
                    {
                        x.TaskState =(int)TaskStatusEnum.Execut;
                    });
                        item.TaskState = (int)TaskStatusEnum.Execut;
                        Uptasks.Add(item);
                }
                _taskService.UpdateData(reslut);
                }
                _taskService.UpdateData(Uptasks);
               
            }
            catch (Exception ex)
@@ -321,7 +274,6 @@
                    return floorCode;//返回的就是AA、BB、CC、DD、EE、FF中的一个,代表对应的楼层
                }
            }
            return null;
        }