1
huangxiaoqiang
10 天以前 dda095e27b535d5748340f127c5f83c0d1324226
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVSignal.cs
@@ -88,98 +88,48 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry)
                {
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry)
                    if (task.Floor == "1F")
                    {
                        Dt_StationManager stationManager = new Dt_StationManager();
                        string TaskTemplate = string.Empty;
                        if (task.Floor == "1F")
                        {
                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "2F");
                            elevator.SetValue(ElevatorDBName.OneLayerPutFinish, 1);
                            TaskTemplate = "BBB";
                            //请求WMS跨楼层2任务
                        }
                        else
                        {
                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "1F");
                            elevator.SetValue(ElevatorDBName.TwoLayerPutFinish, 1);
                            //请求WMS跨楼层2任务
                            TaskTemplate = "CCC";
                        }
                        task.TaskState = (int)TaskAcrossFloorStatusEnum.FirstCarryFinish;
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        _taskRepository.DeleteData(task);
                        _taskhtyRepository.AddData(task_Hty);
                        Random random = new Random();
                        int randomNumber = random.Next(1000, 10000);
                        WMSTaskDTO taskDTO = new WMSTaskDTO()
                        {
                            Id = 1,
                            TaskNum = randomNumber,
                            RoadWay = "AGV",
                            TaskType = (int)TaskAcrossFloorTypeEnum.AcrossFloorCarry,
                            TaskState = (int)TaskAcrossFloorStatusEnum.SecondCarry,
                            PalletCode = task.PalletCode,
                            SourceAddress = stationManager.stationChildCode,
                            TargetAddress = task.TargetAddress,
                            Grade = 1,
                            AGVTaskNum = GenerateUniqueId()
                        };
                        Dt_Task SecondCarry =  _mapper.Map<Dt_Task>(taskDTO);
                        task.Creater = "WMS";
                        SecondCarry.CurrentAddress = stationManager.stationChildCode;
                        SecondCarry.NextAddress = task.TargetAddress;
                        SecondCarry.Floor = stationManager.stationFloor;
                        SecondCarry.AGVSign = "";
                        _taskRepository.AddData(SecondCarry);
                        _taskService.SendAgvTask(TaskTemplate, SecondCarry.TaskNum);
                        content.OK();
                        elevator.SetValue(ElevatorDBName.OneLayerPutFinish, 1);
                    }
                    else if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
                    else
                    {
                        task.TaskState = (int)TaskAcrossFloorStatusEnum.SecondCarryFinish;
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        _taskRepository.DeleteData(task);
                        _taskhtyRepository.AddData(task_Hty);
                        elevator.SetValue(ElevatorDBName.TwoLayerPutFinish, 1);
                    }
                    _taskService.UpdateTaskStatusToNext(task.TaskNum);
                    content.OK();
                }
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
                else if (task.TaskState == (int)TaskAcrossFloorStatusEnum.EndAddressExecuting)
                {
                    _taskService.UpdateTaskStatusToNext(task.TaskNum);
                    content.OK();
                }
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                {
                    _taskService.UpdateTaskStatusToNext(task.TaskNum);
                }
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                {
                    if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutExecuting)
                    {
                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
                    }
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
                {
                    commonConveyorLine.Communicator.WriteNoRead("DB100.0", 9990);
                    commonConveyorLine.SetValue(ConveyorLineDBName.PutFinish, 1, "LK001");
                    Thread.Sleep(1000);
                    commonConveyorLine.Communicator.WriteNoRead("DB100.0", 9990);
                    commonConveyorLine.Communicator.WriteNoRead("DB100.4", Convert.ToInt16(task.TaskNum));
                    task.TaskState = (int)TaskInStatusEnum.Line_InExecuting;
                    task.TaskState = (int)TaskInStatusEnum.AGV_InFinish;
                    _taskRepository.UpdateData(task);
                    _taskService.UpdateTaskStatusToNext(task.TaskNum);
                    content.OK();
                }
            }
@@ -200,28 +150,28 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                {
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
                    {
                        if (task.Floor == "1F")
                        {
                            elevator.SetValue(ElevatorDBName.OneLayerPickUpFinish, 1);
                        }
                        else
                        {
                            elevator.SetValue(ElevatorDBName.TwoLayerPickUpFinish, 1);
                        }
                        task.TaskState = (int)TaskAcrossFloorStatusEnum.EndAddressExecuting;
                        _taskRepository.UpdateData(task);
                    }
                }
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
                {
                    if (task.Floor == "1F")
                    {
                        elevator.SetValue(ElevatorDBName.OneLayerPickUpFinish, 1);
                    }
                    else
                    {
                        elevator.SetValue(ElevatorDBName.TwoLayerPickUpFinish, 1);
                    }
                    task.TaskState = (int)TaskAcrossFloorStatusEnum.EndAddressExecuting;
                    _taskRepository.UpdateData(task);
                }
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                {
                    commonConveyorLine.SetValue(ConveyorLineDBName.PickUpFinish, 1, "LK001");
                    task.TaskState = (int)TaskOutStatusEnum.AGV_OutExecuting;
                    _taskRepository.UpdateData(task);
                    //task.TaskState = (int)TaskOutStatusEnum.AGV_OutExecuting;
                    //_taskRepository.UpdateData(task);
                    _taskService.UpdateTaskStatusToNext(task.TaskNum);
                    content.OK();
                }
            }
@@ -242,48 +192,46 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
                {
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
                    if (task.Floor == "1F")
                    {
                        if (task.Floor == "1F")
                        if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPickUp) == 1)
                        {
                            if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPickUp) == 1)
                            {
                                _taskService.ContinueAgvTask(task.AGVTaskNum);
                                content.OK();
                            }
                            else
                            {
                                task.AGVSign = "RequestPickUp";
                                _taskRepository.UpdateData(task);
                                content.Error("设备不允许取货");
                            }
                            _taskService.ContinueAgvTask(task.AGVTaskNum);
                            content.OK();
                        }
                        else
                        {
                            if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPickUp) == 1)
                            {
                                _taskService.ContinueAgvTask(task.AGVTaskNum);
                                content.OK();
                            }
                            else
                            {
                                task.AGVSign = "RequestPickUp";
                                _taskRepository.UpdateData(task);
                                content.Error("设备不允许取货");
                            }
                            task.AGVSign = "RequestPickUp";
                            _taskRepository.UpdateData(task);
                            content.Error("设备不允许取货");
                        }
                    }
                    else
                    {
                        if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPickUp) == 1)
                        {
                            _taskService.ContinueAgvTask(task.AGVTaskNum);
                            content.OK();
                        }
                        else
                        {
                            task.AGVSign = "RequestPickUp";
                            _taskRepository.UpdateData(task);
                            content.Error("设备不允许取货");
                        }
                    }
                }
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                {
                    if (commonConveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.AllowPickUp, "LK001") == 1)
                    {
                        _taskService.ContinueAgvTask(task.AGVTaskNum);
                        task.TaskState = (int)TaskOutStatusEnum.Line_OutFinish;
                        _taskRepository.UpdateData(task);
                        //task.TaskState = (int)TaskOutStatusEnum.Line_OutFinish;
                        //_taskRepository.UpdateData(task);
                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
                        content.OK();
                    }
                    else
@@ -313,42 +261,39 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry)
                {
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry)
                    if (task.Floor == "1F")
                    {
                        if (task.Floor == "1F")
                        if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPut) == 1)
                        {
                            if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPut) == 1)
                            {
                                _taskService.ContinueAgvTask(task.AGVTaskNum);
                                content.OK();
                            }
                            else
                            {
                                task.AGVSign = "RequestPut";
                                _taskRepository.UpdateData(task);
                                content.Error("设备不允许放货");
                            }
                            _taskService.ContinueAgvTask(task.AGVTaskNum);
                            content.OK();
                        }
                        else
                        {
                            if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPut) == 1)
                            {
                                _taskService.ContinueAgvTask(task.AGVTaskNum);
                                content.OK();
                            }
                            else
                            {
                                task.AGVSign = "RequestPut";
                                _taskRepository.UpdateData(task);
                                content.Error("设备不允许放货");
                            }
                            task.AGVSign = "RequestPut";
                            _taskRepository.UpdateData(task);
                            content.Error("设备不允许放货");
                        }
                    }
                    else
                    {
                        if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPut) == 1)
                        {
                            _taskService.ContinueAgvTask(task.AGVTaskNum);
                            content.OK();
                        }
                        else
                        {
                            task.AGVSign = "RequestPut";
                            _taskRepository.UpdateData(task);
                            content.Error("设备不允许放货");
                        }
                    }
                }
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
                {
                    if (commonConveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.AllowPut, "LK001") == 1)
                    {
@@ -376,22 +321,5 @@
        #endregion
        #region èŽ·å–AGV任务号
        private static readonly Random _random = new Random();
        public static string GenerateUniqueId()
        {
            // èŽ·å–å½“å‰æ¯«ç§’çº§æ—¶é—´æˆ³
            long timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
            // ç”Ÿæˆ4位随机数(0000-9999)
            int randomNumber = _random.Next(0, 10000);
            string randomPart = randomNumber.ToString("D4"); // è¡¥é›¶åˆ°4位
            return $"{timestamp}{randomPart}";
        }
        #endregion
    }
}