yanjinhui
9 小时以前 52ba6b195a4126df405ef453d52ba6eaab6521da
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -1,4 +1,5 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -6,9 +7,12 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DTO;
namespace WIDESEAWCS_Tasks
{
@@ -37,9 +41,16 @@
                    if (Tasks.Count > 0) IsMoveTask(Tasks);
                    #endregion
                    #region æŸ¥æ‰¾æµ·åº·AGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.F01 || x.TaskType == (int)TaskTypeEnum.RK3F || x.TaskType == (int)TaskTypeEnum.CK3F || x.TaskType == (int)TaskTypeEnum.Q1TSJ4 || x.TaskType == (int)TaskTypeEnum.STU0003 || x.TaskType == (int)TaskTypeEnum.F02 || x.TaskType == (int)TaskTypeEnum.CHUKU1 || x.TaskType == (int)TaskTypeEnum.Q3RK || x.TaskType == (int)TaskTypeEnum.Q3CK).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) HIKROBOTTask(Tasks);
                    //#region æŸ¥æ‰¾æµ·åº·AGV任务
                    //Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.F01 || x.TaskType == (int)TaskTypeEnum.RK3F || x.TaskType == (int)TaskTypeEnum.CK3F || x.TaskType == (int)TaskTypeEnum.Q1TSJ4 || x.TaskType == (int)TaskTypeEnum.STU0003 || x.TaskType == (int)TaskTypeEnum.F02 || x.TaskType == (int)TaskTypeEnum.CHUKU1 || x.TaskType == (int)TaskTypeEnum.Q3RK || x.TaskType == (int)TaskTypeEnum.Q3CK).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) HIKROBOTTask(Tasks);
                    //#endregion
                    #region ä¸‹å‘海康1到6楼的AGV任务/下发海康6到1楼的AGV任务
                    Tasks = newTasks.Where(x => (x.TaskType == (int)TaskTypeEnum.Q3CK) || x.TaskType == (int)TaskTypeEnum.Q3RK || x.TaskType == (int)TaskTypeEnum.F01).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendAGVTask(Tasks);
                    #endregion
                }
            }
@@ -94,14 +105,22 @@
                    #endregion
                    #region ä¸‹å‘外设允许进入的海康AGV任务
                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.AGV_WaitToExecute).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    //Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.AGV_WaitToExecute).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    #endregion
                    #region ä¸‹å‘托盘确认完成的海康AGV任务
                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    //Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    #endregion
                    #region å¤„理agv待空车搬运任务
                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.HkTransportCompleted).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendHKWaitTask(Tasks);
                    #endregion
                }
            }
            catch (Exception ex)
@@ -110,5 +129,35 @@
            }
        }
        #endregion
        /// <summary>
        /// å¤„理写入设备信号异常任务
        /// </summary>
        public void HandleTasks()
        {
            #region
            var tasks = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.Finish.ObjToInt() && !string.IsNullOrEmpty(x.Remark));
            if (tasks.Count > 0)
            {
                List<Dt_Task> list = new List<Dt_Task>();
                foreach (var item in tasks)
                {
                    var infos = item.Remark.Split("_");
                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == infos[0]) as OtherDevice;
                    if (device != null && device.IsConnected)
                    {
                        DeviceProDTO? devicePro = device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == infos[1] && x.DeviceChildCode == infos[3]);
                        if (devicePro != null)
                        {
                            var W = device.Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, infos[2]);
                            if (W) list.Add(item);
                        }
                    }
                }
                _taskService.Repository.DeleteAndMoveIntoHty(list, OperateTypeEnum.自动删除);
            }
            #endregion
        }
    }
}