dengjunjie
2025-02-24 733e63cb362f17aea4a1020654fa348a0d0c1f06
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarExtend/PartialTaskService.cs
@@ -26,22 +26,43 @@
        /// </summary>
        public void GetSC_CarFinish()
        {
            Dt_Task dt_Task = GetTask((int)TaskCarStatusEnum.SC_CarFinish, (int)TaskOtherTypeEnum.RelocationCar);
            Dt_Task dt_Task = GetTask((int)TaskCarStatusEnum.SC_CarFinish, (int)TaskOtherTypeEnum.RelocationCar);//移车任务
            if (dt_Task != null)
            {
                var ShuttleCar = QueryCode(dt_Task.ShuttleCarCode);
                ShuttleCar.ShuttleCarPosition = dt_Task.CurrentAddress;
                string[] targetCodes = ShuttleCar.ShuttleCarPosition.Split("-");
                _shuttleCarService.UpdateData(ShuttleCar);
                if (string.IsNullOrEmpty(dt_Task.Remark))//完成移库任务
                    _taskService.AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete);
                else//下发充电任务
                    SendTask(dt_Task);
                UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress);
                _taskService.AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete);
            }
            dt_Task = GetTask((int)CarChargingTask.SC_CarFinish, (int)TaskOtherTypeEnum.RelocationCarCharging);//移车充电任务
            if (dt_Task != null)
            {
                UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress);
                SendTask(dt_Task);//下发充电任务
            }
        }
        #endregion
        /// <summary>
        /// ä¿®æ”¹ç©¿æ¢­è½¦ä½ç½®ä¿¡å·
        /// </summary>
        /// <param name="ShuttleCarCode">穿梭车号</param>
        /// <param name="Address">位置</param>
        public void UpdateShuttleCar(string ShuttleCarCode, string Address)
        {
            var ShuttleCar = QueryCode(ShuttleCarCode);
            string[] targetCodes = Address.Split("-");
            var Row = Convert.ToInt16(targetCodes[0]);
            if (Row == 3)
            {
                ShuttleCar.ShuttleCarPosition = Address;
                ShuttleCar.ShuttleCarPosition1 = Address;
            }
            else
            {
                var a = Row == 1 ? 2.ToString("000") : 1.ToString("000");
                ShuttleCar.ShuttleCarPosition = Address;
                ShuttleCar.ShuttleCarPosition1 = a + "-" + targetCodes[1] + "-" + targetCodes[2];
            }
            _shuttleCarService.UpdateData(ShuttleCar);
        }
        #region èŽ·å–ç§»è½¦ä»»åŠ¡
        /// <summary>
        /// èŽ·å–ç§»è½¦ä»»åŠ¡/出入库任务
@@ -60,7 +81,7 @@
                            UpdateSource(ref dt_Task, shuttleCar);
                        }
                        else
                        {
                        {//需优化
                            #region åˆ¤æ–­æ˜¯å¦å­˜åœ¨ç©ºé—²ç©¿æ¢­è½¦,如都在充电(选择电量高的并超过50%电量的穿梭车退出充电)
                            QuitCharging(dt_Task, shuttleCar, command);
                            #endregion
@@ -84,7 +105,7 @@
                        }
                        #endregion
                    }
                    //穿梭车移库任务下发
                    //穿梭车移车任务下发
                    if (!string.IsNullOrEmpty(dt_Task.SourceAddress) && !string.IsNullOrEmpty(dt_Task.TargetAddress) && !string.IsNullOrEmpty(dt_Task.ShuttleCarCode))
                    {
                        SendTask(dt_Task);
@@ -93,15 +114,24 @@
                #region ç©¿æ¢­è½¦å‡ºå…¥åº“任务
                else
                {
                    var task1 = _taskService.ShuttleCarRelocationTask(shuttleCar.DeviceCode);//获取穿梭车移库任务
                    var task = _taskService.QueryShuttleCarTask(shuttleCar.DeviceCode);
                    if (task != null)
                    {
                        if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && !task.IsPickPlace)
                        if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation && task.TaskState == (int)TaskRelocationStatusEnum.RelocationNew && !task.SourceIsPickPlace)//移库任务判断起点是否有穿梭车
                        {
                            var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);//出库任务判断是否存在穿梭车
                            var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);
                            if (ShuttleCar != null) SendTask(task);
                            else _taskService.AddRelocationCarTask("", task.SourceAddress);
                        }
                        else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && !task.SourceIsPickPlace)
                        {
                            var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);//出库任务判断起点是否有穿梭车
                            if (ShuttleCar != null) SendTask(task);
                            else _taskService.AddRelocationCarTask("", task.SourceAddress);
                        }
                        else
                            SendTask(task);
                    }
                }
                #endregion
@@ -178,16 +208,21 @@
                if (command != null && command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal)
                {
                    #region åˆ¤æ–­å°è½¦ä½ç½®æ— AB面不下发任务
                    if (command.Position != 1 && command.Position != 2)
                    short Position = 0;
                    if (shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.DirectionA)) Position = 1;
                    if (shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.DirectionB)) Position = 2;
                    if (Position != 1 && Position != 2)
                    {
                        task.ExceptionMessage = $"{shuttleCar.DeviceName}小车位置异常";
                        _taskService.UpdateData(task);
                        var Message = $"{shuttleCar.DeviceName}无AB面";
                        if (task.ExceptionMessage != Message)
                            _taskService.UpdateData(task);
                        return;
                    }
                    #endregion
                    //任务转换
                    shuttleCar.SetValue(ShuttleCarDBName.Direction, Position);//写入车体方向
                    ShuttleCarTaskCommandW shuttleCarTaskCommand = new ShuttleCarTaskCommandW();
                    shuttleCarTaskCommand.Direction = command.Position;
                    shuttleCarTaskCommand.Direction = Position;
                    shuttleCarTaskCommand.TaskNum = task.TaskNum;
                    if (task.TaskType == (int)TaskOtherTypeEnum.RelocationCar)//移车
                    {
@@ -261,6 +296,7 @@
                    taskType = ShuttleCarTaskType.Out;
                    break;
                case (int)TaskOtherTypeEnum.RelocationCar:
                case (int)TaskOtherTypeEnum.RelocationCarCharging:
                    taskType = Direction == 1 ? ShuttleCarTaskType.ZeroA : ShuttleCarTaskType.ZeroB;
                    break;
                default: