| | |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.WMSInfo; |
| | | using WIDESEAWCS_Tasks.ShuttleCarJob; |
| | | using System.Reflection.Metadata; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | partial class CommonShuttleCarJob |
| | | { |
| | | private object _CarTaskObject = new object(); |
| | | private readonly object _lockObject = new object(); |
| | | #region å åæºç§»è½¦å®æ |
| | | /// <summary> |
| | | /// è·åå åæºç§»è½¦/ç§»åºå®æä»»å¡ |
| | | /// è·åå åæºå®æç©¿æ¢è½¦å¾
æ§è¡ä»»å¡ |
| | | /// </summary> |
| | | public void GetSC_CarFinish() |
| | | { |
| | | Dt_Task dt_Task = GetTask(TaskCarStatusEnum.SC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCar.ObjToInt());//ç§»è½¦ä»»å¡ |
| | | #region ç§»è½¦ä»»å¡ |
| | | Dt_Task dt_Task = GetTask(TaskCarStatusEnum.SC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCar.ObjToInt()); |
| | | if (dt_Task != null) |
| | | { |
| | | UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress); |
| | | dt_Task.TaskState = TaskCarStatusEnum.RelocationCarFinish.ObjToInt(); |
| | | _taskService.AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete); |
| | | } |
| | | dt_Task = GetTask(CarChargingTaskEnum.SC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCarCharging.ObjToInt());//移车å
çµä»»å¡ |
| | | #endregion |
| | | |
| | | #region 移车å
çµä»»å¡ |
| | | dt_Task = GetTask(CarChargingTaskEnum.CarChargingSC_CarFinish.ObjToInt(), TaskOtherTypeEnum.RelocationCarCharging.ObjToInt()); |
| | | if (dt_Task != null) |
| | | { |
| | | UpdateShuttleCar(dt_Task.ShuttleCarCode, dt_Task.CurrentAddress); |
| | | SendTask(dt_Task);//ä¸åå
çµä»»å¡ |
| | | } |
| | | dt_Task = GetTask(TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt(), TaskRelocationTypeEnum.Relocation.ObjToInt());//ç§»åºä»»å¡ |
| | | if (dt_Task != null) |
| | | SendTask(dt_Task); |
| | | #endregion |
| | | |
| | | #region ç§»åºä»»å¡ |
| | | dt_Task = GetTask(TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt(), TaskRelocationTypeEnum.Relocation.ObjToInt()); |
| | | if (dt_Task != null) SendTask(dt_Task); |
| | | #endregion |
| | | |
| | | #region å
¥åºä»»å¡ |
| | | dt_Task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.SC_InFinish); |
| | | if (dt_Task != null) SendTask(dt_Task); |
| | | #endregion |
| | | } |
| | | #endregion |
| | | /// <summary> |
| | |
| | | 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]; |
| | | } |
| | | ShuttleCar.ShuttleCarPosition = Address; |
| | | ShuttleCar.ShuttleCarPosition1 = Address; |
| | | _shuttleCarService.UpdateData(ShuttleCar); |
| | | } |
| | | |
| | | public void GetShuttleCarTask(ShuttleCar shuttleCar, ShuttleCarTaskCommandR command) |
| | | { |
| | | #region æ°å»ºç§»è½¦å
çµä»»å¡ |
| | | Dt_Task CarCharging_Task = GetTask((int)CarChargingTaskEnum.CarChargingNew, (int)TaskOtherTypeEnum.RelocationCarCharging); |
| | | if (CarCharging_Task != null) |
| | | { |
| | | Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == CarCharging_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCarCharging.ObjToInt()); |
| | | if (_Task == null) SendTask(CarCharging_Task); |
| | | else if (_taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | SendTask(CarCharging_Task); |
| | | } |
| | | #endregion |
| | | |
| | | #region æ°å»ºç§»è½¦ä»»å¡èµ·ç¹ä¸ºç©º |
| | | Dt_Task? RelocationCar_Task = null; |
| | | lock (_lockObject) |
| | | { |
| | | RelocationCar_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar); |
| | | if (RelocationCar_Task != null) |
| | | { |
| | | if (string.IsNullOrEmpty(RelocationCar_Task.SourceAddress)) |
| | | { |
| | | (bool, Dt_ShuttleCar) result = GetSourceTask(shuttleCar, command); |
| | | if (result.Item1) |
| | | UpdateSource(ref RelocationCar_Task, result.Item2); |
| | | else |
| | | GetShuttleCar(ref RelocationCar_Task, shuttleCar);//è·åå¦å¤ä¸ä¸ªç©¿æ¢è½¦ä¿¡æ¯ |
| | | } |
| | | } |
| | | Thread.Sleep(1000); |
| | | } |
| | | #endregion |
| | | |
| | | #region å åæºç§»åºå®æåä»»å¡/å åæºåºåºå®æåä»»å¡ |
| | | //夿æ¯å¦å卿»¡è¶³å åæºå
¥åºçä»»å¡ |
| | | if (_taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && !string.IsNullOrEmpty(x.NextAddress), _taskService.TaskOrderBy) == null) |
| | | { |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => _taskService.TaskRelocationTypes.Contains(x.TaskType) && x.TaskState < (int)TaskRelocationStatusEnum.SC_RelocationFinish, _taskService.TaskOrderBy) ?? |
| | | _taskRepository.QueryFirst(x => _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState < (int)TaskOutStatusEnum.SC_OutFinish, _taskService.TaskOrderBy); |
| | | if (dt_Task != null) |
| | | { |
| | | if (dt_Task.TaskState == (int)TaskRelocationStatusEnum.RelocationNew || dt_Task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | { |
| | | var ShuttleCar = _shuttleCarService.QueryShuttleCar(dt_Task.SourceAddress);//å¤æèµ·ç¹æ¯å¦æç©¿æ¢è½¦ |
| | | if (ShuttleCar == null) |
| | | { |
| | | if (RelocationCar_Task != null && string.IsNullOrEmpty(RelocationCar_Task.TargetAddress)) |
| | | { |
| | | RelocationCar_Task.TargetAddress = dt_Task.SourceAddress; |
| | | RelocationCar_Task.NextAddress = dt_Task.SourceAddress; |
| | | _taskService.UpdateData(RelocationCar_Task); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(RelocationCar_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡ç®æ å°å"); |
| | | } |
| | | else |
| | | _taskService.AddRelocationCarTask("", dt_Task.SourceAddress); |
| | | } |
| | | else |
| | | { |
| | | dt_Task.ShuttleCarCode = ShuttleCar.ShuttleCarCode; |
| | | SendTask(dt_Task); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region æ°å»ºç§»è½¦ä»»å¡ç»ç¹ä¸ºç©º |
| | | if (RelocationCar_Task != null) |
| | | { |
| | | if (string.IsNullOrEmpty(RelocationCar_Task.TargetAddress)) |
| | | { |
| | | #region åWMSç³è¯· |
| | | var ShuttleCar = _shuttleCarService.QueryNoCode(RelocationCar_Task.ShuttleCarCode); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var ResultData = HttpHelper.PostAsync(WMSInterfaceAddress.GetPosition + $"?position={RelocationCar_Task.SourceAddress}&&position1={ShuttleCar.ShuttleCarPosition}", "", headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result != null) |
| | | { |
| | | content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); |
| | | if (content != null && content.Status) |
| | | { |
| | | RelocationCar_Task.TargetAddress = content.Message; |
| | | RelocationCar_Task.NextAddress = RelocationCar_Task.TargetAddress; |
| | | _taskService.UpdateData(RelocationCar_Task); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(RelocationCar_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡ç®æ å°å"); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | if (!string.IsNullOrEmpty(RelocationCar_Task.SourceAddress) && !string.IsNullOrEmpty(RelocationCar_Task.TargetAddress) && !string.IsNullOrEmpty(RelocationCar_Task.ShuttleCarCode)) |
| | | { |
| | | Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == RelocationCar_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCar.ObjToInt()); |
| | | if (_Task == null) SendTask(RelocationCar_Task); |
| | | else if (_taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | SendTask(RelocationCar_Task); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | private static readonly SemaphoreSlim _CarTaskObject = new SemaphoreSlim(1, 1); |
| | | #region è·åç§»è½¦ä»»å¡ |
| | | /// <summary> |
| | | /// è·å移车任å¡/åºå
¥åºä»»å¡ |
| | | /// </summary> |
| | | public void Get_CarTask(ShuttleCar shuttleCar, ShuttleCarTaskCommandR command) |
| | | public async Task Get_CarTask(ShuttleCar shuttleCar, ShuttleCarTaskCommandR command) |
| | | { |
| | | lock (_CarTaskObject) |
| | | await _CarTaskObject.WaitAsync(); |
| | | try |
| | | { |
| | | |
| | | #region è·åæ°å»ºç§»è½¦å
çµä»»å¡ |
| | | Dt_Task dt_Task = GetTask((int)CarChargingTaskEnum.CarChargingNew, (int)TaskOtherTypeEnum.RelocationCarCharging); |
| | | if (dt_Task != null && dt_Task.ShuttleCarCode == shuttleCar.DeviceCode) |
| | | { |
| | | if (!string.IsNullOrEmpty(dt_Task.SourceAddress) && !string.IsNullOrEmpty(dt_Task.TargetAddress) && !string.IsNullOrEmpty(dt_Task.ShuttleCarCode)) |
| | | { |
| | | Dt_Task? _Task = _taskRepository.QueryData(x => x.ShuttleCarCode == dt_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCarCharging.ObjToInt()).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | if (_Task != null && _taskService.TaskOutboundTypes.Contains(_Task.TaskType)) |
| | | { |
| | | if (_Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | SendTask(dt_Task); |
| | | } |
| | | else |
| | | SendTask(dt_Task); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region è·åæ°å»ºç§»è½¦ä»»å¡ |
| | | Dt_Task dt_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar); |
| | | dt_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar); |
| | | if (dt_Task != null) |
| | | { |
| | | if (string.IsNullOrEmpty(dt_Task.SourceAddress)) |
| | |
| | | else if (string.IsNullOrEmpty(dt_Task.TargetAddress)) |
| | | { |
| | | #region åWMSç³è¯· |
| | | var ShuttleCar = _shuttleCarService.QueryNoCode(dt_Task.ShuttleCarCode); |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var ResultData = HttpHelper.PostAsync(WMSInterfaceAddress.GetPosition + $"?position={dt_Task.SourceAddress}", "", headers: new Dictionary<string, string>()); |
| | | var ResultData = HttpHelper.PostAsync(WMSInterfaceAddress.GetPosition + $"?position={dt_Task.SourceAddress}&&position1={ShuttleCar.ShuttleCarPosition}", "", headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result != null) |
| | | { |
| | | content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); |
| | |
| | | #endregion |
| | | } |
| | | //ç©¿æ¢è½¦ç§»è½¦ä»»å¡ä¸å |
| | | if (!string.IsNullOrEmpty(dt_Task.SourceAddress) && !string.IsNullOrEmpty(dt_Task.TargetAddress) && !string.IsNullOrEmpty(dt_Task.ShuttleCarCode)) |
| | | if (!string.IsNullOrEmpty(dt_Task.SourceAddress) && !string.IsNullOrEmpty(dt_Task.TargetAddress) && !string.IsNullOrEmpty(dt_Task.ShuttleCarCode) && dt_Task.ShuttleCarCode == shuttleCar.DeviceCode) |
| | | { |
| | | SendTask(dt_Task); |
| | | Dt_Task? _Task = _taskRepository.QueryData(x => x.ShuttleCarCode == dt_Task.ShuttleCarCode && x.TaskType != TaskOtherTypeEnum.RelocationCar.ObjToInt()).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | if (_Task != null && _taskService.TaskOutboundTypes.Contains(_Task.TaskType)) |
| | | { |
| | | if (_Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | SendTask(dt_Task); |
| | | } |
| | | else |
| | | SendTask(dt_Task); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region ç©¿æ¢è½¦ä»»å¡ |
| | | else |
| | | |
| | | var task = _taskService.ShuttleCarRelocationTask(shuttleCar.DeviceCode);//è·åç©¿æ¢è½¦ç§»åºä»»å¡ |
| | | if (task != null) |
| | | { |
| | | var task = _taskService.ShuttleCarRelocationTask(shuttleCar.DeviceCode);//è·åç©¿æ¢è½¦ç§»åºä»»å¡ |
| | | if (task != null) |
| | | if (!task.SourceIsPickPlace && task.ShuttleCarCode == shuttleCar.DeviceCode) |
| | | { |
| | | if (!task.SourceIsPickPlace) |
| | | SendTask(task); |
| | | } |
| | | else |
| | | { |
| | | task = _taskService.QueryShuttleCarTask(shuttleCar.DeviceCode); |
| | | if (task != null) |
| | | { |
| | | 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); |
| | | } |
| | | SendTask(task); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | task = _taskService.QueryShuttleCarTask(shuttleCar.DeviceCode); |
| | | if (task != null) |
| | | { |
| | | if (_taskService.TaskOutboundTypes.Contains(task.TaskType)) |
| | | { |
| | | if (!task.SourceIsPickPlace && task.TaskState == (int)TaskOutStatusEnum.OutNew) |
| | | { |
| | | var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);//åºåºä»»å¡å¤æèµ·ç¹æ¯å¦æç©¿æ¢è½¦ |
| | | if (ShuttleCar == null) _taskService.AddRelocationCarTask("", task.SourceAddress); |
| | | else |
| | | { |
| | | task.ShuttleCarCode = ShuttleCar.ShuttleCarCode; |
| | | SendTask(task); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | SendTask(task); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | catch (Exception) |
| | | { |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | _CarTaskObject.Release(); |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(dt_Task.TaskNum, "æ´æ°ç§»è½¦ä»»å¡èµ·å§å°å"); |
| | | } |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 夿å½åç©¿æ¢è½¦æ¯å¦å¯ä»¥æ§è¡ç§»åº |
| | | /// </summary> |
| | |
| | | bool ok = false; |
| | | if (command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal) |
| | | { |
| | | #region 夿å½åç©¿æ¢è½¦æ¯å¦åå¨ä»»å¡ |
| | | Dt_Task? _Task = _taskRepository.QueryFirst(x => |
| | | x.SourceAddress == _ShuttleCar.ShuttleCarPosition || |
| | | x.TargetAddress == _ShuttleCar.ShuttleCarPosition || |
| | | x.SourceAddress == _ShuttleCar.ShuttleCarPosition1 || |
| | | x.TargetAddress == _ShuttleCar.ShuttleCarPosition1); |
| | | #endregion |
| | | if (_taskRepository.QueryFirst(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition && _taskService.TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == TaskRelocationStatusEnum.SC_RelocationExecuting.ObjToInt()) != null) |
| | | return (ok, _ShuttleCar); |
| | | Dt_Task? _Task = _taskRepository.QueryFirst(x => x.ShuttleCarCode == _ShuttleCar.ShuttleCarCode); |
| | | if (_Task != null) |
| | | ok = _taskService.TaskOutboundTypes.Contains(_Task.TaskType) && _Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt(); |
| | | ok = _Task == null; |
| | | #region 夿å½åç©¿æ¢è½¦æ¯å¦åå¨ä»»å¡ |
| | | //Dt_Task? _Task = _taskRepository.QueryFirst(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition); |
| | | //if (_Task != null) |
| | | //{ |
| | | // if (_Task.TaskState <= TaskOutStatusEnum.Car_OutFinish.ObjToInt() || |
| | | // _Task.TaskState <= TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() || |
| | | // _Task.TaskState <= TaskCarStatusEnum.ShuttleCar_Finish.ObjToInt() || |
| | | // _Task.TaskState <= CarChargingTaskEnum.CarCharging_Finish.ObjToInt()) |
| | | // { |
| | | // //_Task.ShuttleCarCode = shuttleCar.DeviceCode; |
| | | // //SendTask(_Task); |
| | | // return (ok, _ShuttleCar); |
| | | // } |
| | | //} |
| | | //_Task = _taskRepository.QueryFirst(x => x.TargetAddress == _ShuttleCar.ShuttleCarPosition); |
| | | //if (_Task != null) |
| | | //{ |
| | | // if (_Task.TaskState >= TaskInStatusEnum.Line_InFinish.ObjToInt() || |
| | | // _Task.TaskState >= TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() || |
| | | // _Task.TaskState >= CarChargingTaskEnum.CarCharging_Finish.ObjToInt()) |
| | | // { |
| | | // //_Task.ShuttleCarCode = shuttleCar.DeviceCode; |
| | | // //SendTask(_Task); |
| | | // return (ok, _ShuttleCar); |
| | | // } |
| | | //} |
| | | //_Task = _taskRepository.QueryData(x => x.SourceAddress == _ShuttleCar.ShuttleCarPosition && |
| | | //x.TaskState < TaskRelocationStatusEnum.CarSource_Finish.ObjToInt() && |
| | | //x.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt()).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | //if (_Task != null) return (ok, _ShuttleCar); |
| | | //_Task = _taskRepository.QueryData(x => x.ShuttleCarCode == _ShuttleCar.ShuttleCarCode && _taskService.TaskOutboundTypes.Contains(x.TaskType)).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | //if (_Task != null) |
| | | //{ |
| | | // if (_Task.TaskState >= TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | // _Task = null; |
| | | //} |
| | | //ok = _Task == null; |
| | | #endregion |
| | | } |
| | | if (!ok) |
| | | { |
| | |
| | | if (shuttleCar != null) |
| | | { |
| | | ShuttleCarTaskCommandR command = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar, shuttleCar.DeviceCode);//读åç©¿æ¢è½¦ä¿¡æ¯ |
| | | if (command != null && command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal) |
| | | if (command != null && command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && (command.Err_Status == (short)ShuttleCarErr.Normal || command.Err_Status == (short)ShuttleCarErr.LowBattery)) |
| | | { |
| | | #region 夿å°è½¦ä½ç½®æ ABé¢ä¸ä¸åä»»å¡ |
| | | 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) |
| | | { |
| | | var Message = $"{shuttleCar.DeviceName}æ ABé¢"; |
| | | if (task.ExceptionMessage != Message) |
| | | _taskService.UpdateData(task); |
| | | return; |
| | | } |
| | | Dt_ShuttleCar _ShuttleCar = QueryCode(task.ShuttleCarCode); |
| | | var Row = Convert.ToInt32(_ShuttleCar.ShuttleCarPosition.Split("-")[0]); |
| | | short Position = Convert.ToInt16(Row); |
| | | #endregion |
| | | //ä»»å¡è½¬æ¢ |
| | | shuttleCar.SetValue(ShuttleCarDBName.Direction, Position);//åå
¥è½¦ä½æ¹å |
| | |
| | | { |
| | | if (task.TaskState == (int)TaskCarStatusEnum.CarNew) |
| | | { |
| | | //if (task.Remark == ShuttleCarTaskType.ExitCharge.ToString()) shuttleCarTaskCommand.TaskType = (short)GetCarTaskType(task.Remark); |
| | | //else |
| | | shuttleCarTaskCommand.TaskType = (short)GetCarTaskType(task.TaskType, shuttleCarTaskCommand.Direction); |
| | | } |
| | | else if (task.TaskState == (int)TaskCarStatusEnum.SC_CarFinish) |
| | | { |
| | | if (task.Remark == ShuttleCarTaskType.Charging.ToString()) shuttleCarTaskCommand.TaskType = (short)GetCarTaskType(task.Remark); |
| | | //else |
| | | // shuttleCarTaskCommand.TaskType = (short)GetCarTaskType(task.TaskType, shuttleCarTaskCommand.Direction); |
| | | } |
| | | } |
| | | else if (task.TaskType == (int)TaskOtherTypeEnum.RelocationCarCharging) |
| | | { |
| | | shuttleCarTaskCommand.TaskType = task.TaskState == CarChargingTaskEnum.CarChargingNew.ObjToInt() ? |
| | | (short)GetCarTaskType(task.TaskType, shuttleCarTaskCommand.Direction) : |
| | | (short)GetCarTaskType(ShuttleCarTaskType.Charging.ToString()); |
| | | } |
| | | else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation) |
| | | { |
| | | shuttleCarTaskCommand.TaskType = task.TaskState == TaskRelocationStatusEnum.RelocationNew.ObjToInt() ? |
| | | (short)ShuttleCarTaskType.Out : |
| | | (short)ShuttleCarTaskType.In; |
| | | } |
| | | else |
| | | shuttleCarTaskCommand.TaskType = (short)GetCarTaskType(task.TaskType, shuttleCarTaskCommand.Direction); |
| | | //shuttleCarTaskCommand.TaskType = string.IsNullOrEmpty(task.Remark) ? (short)GetCarTaskType(task.TaskType, shuttleCarTaskCommand.Direction) : (short)GetCarTaskType(task.Remark); |
| | | //ä»»å¡ä¸å |
| | | if (shuttleCarTaskCommand.TaskType != null)//0 |
| | | { |
| | | if (shuttleCar.SendCommand(shuttleCarTaskCommand, shuttleCar.DeviceCode)) |
| | | { |
| | | if (!string.IsNullOrEmpty(task.Remark)) task.Remark = task.Remark + "å·²ä¸å"; |
| | | task.TaskState = GetTaskState(task.TaskType); |
| | | if (!string.IsNullOrEmpty(task.Remark) && task.TaskState == CarChargingTaskEnum.CarChargingNew.ObjToInt()) |
| | | task.Remark = task.Remark + "å·²ä¸å"; |
| | | task.TaskState = GetTaskState(task.TaskType, task.TaskState); |
| | | _taskService.UpdateData(task); |
| | | } |
| | | } |
| | |
| | | switch (TaskType) |
| | | { |
| | | case (int)TaskInboundTypeEnum.Inbound: |
| | | case (int)TaskInboundTypeEnum.PalletInbound: |
| | | taskType = ShuttleCarTaskType.In; |
| | | break; |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.PalletOutbound: |
| | | taskType = ShuttleCarTaskType.Out; |
| | | break; |
| | | case (int)TaskOtherTypeEnum.RelocationCar: |
| | |
| | | /// </summary> |
| | | /// <param name="TaskType"></param> |
| | | /// <returns></returns> |
| | | int GetTaskState(int TaskType) |
| | | int GetTaskState(int TaskType, int state) |
| | | { |
| | | int state = 0; |
| | | switch (TaskType) |
| | | { |
| | | case (int)TaskInboundTypeEnum.Inbound: |
| | | case (int)TaskInboundTypeEnum.PalletInbound: |
| | | state = (int)TaskInStatusEnum.Car_InExecuting; |
| | | break; |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.PalletOutbound: |
| | | state = (int)TaskOutStatusEnum.Car_OutExecuting; |
| | | break; |
| | | case (int)TaskRelocationTypeEnum.Relocation: |
| | | state = state < (int)TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt() ? |
| | | (int)TaskRelocationStatusEnum.CarSource_Executing : |
| | | (int)TaskRelocationStatusEnum.CarTarget_Executing; |
| | | break; |
| | | case (int)TaskOtherTypeEnum.RelocationCar: |
| | | state = (int)TaskCarStatusEnum.ShuttleCar_Executing; |
| | | break; |
| | | case (int)TaskOtherTypeEnum.RelocationCarCharging: |
| | | state = state < (int)CarChargingTaskEnum.CarChargingSC_CarFinish ? |
| | | (int)CarChargingTaskEnum.CarCharging_Executing : |
| | | (int)CarChargingTaskEnum.CarCharging_Charging; |
| | | break; |
| | | default: |
| | | break; |
| | | } |