示例#1
0
        public override void EndFixPoint_OnSnapped(Core.Parts.FixPoint stranger, Core.Parts.FixPoint.SnapEventArgs e)
        {
            RouteStatus rs = ((IRouteStatus)stranger.Parent).GetRouteStatus(stranger);

            rs.OnRouteStatusChanged += rs_OnRouteStatusChanged;
            base.EndFixPoint_OnSnapped(stranger, e);
        }
示例#2
0
 private void SuspiciousRoute()
 {
     if (Status != RouteStatus.Invalid)
     {
         Status = RouteStatus.Suspicious;
     }
 }
示例#3
0
 public override void EndFixPoint_OnUnSnapped(Core.Parts.FixPoint stranger)
 {
     ThisRouteStatus = new RouteStatus();
     NextRouteStatus.OnRouteStatusChanged -= NextRouteStatus_OnAvailableChanged;
     NextConveyor    = null;
     NextRouteStatus = null;
 }
示例#4
0
 public Neighbor()
 {
     ports           = new SynchronizedCollection <Port>();
     canRoutePackets = RouteStatus.Unknow;
     osPlatform      = Platform.Unknow;
     ips             = new SynchronizedCollection <IPAddress>();
 }
示例#5
0
 private void AdditionalDocument()
 {
     if (Status == RouteStatus.Pass)
     {
         Status = RouteStatus.AdditionalDocument;
     }
 }
示例#6
0
        public CasePhotocell(CasePhotocellInfo info, BaseTrack conv) : base(info, conv)
        {
            photocellInfo = info;
            AssemblyInfo ai = new AssemblyInfo();

            conveyor = conv;

            photocellDisplay = new CasePhotocellDisplay(new PhotocellDisplayInfo {
                width = info.width
            });
            photocellDisplay.ListSolutionExplorer       = false;
            photocellDisplay.OnPhotocellDisplayDeleted += photocellDisplay_OnPhotocellDisplayDeleted;

            Add(photocellDisplay, new Vector3(info.length / 2, 0, 0));
            sensor.OnEnter += sensor_OnEnter;
            sensor.OnLeave += sensor_OnLeave;
            sensor.Color    = Color.Green;
            sensor.Visible  = false;

            conv.TransportSection.Route.InsertActionPoint(sensor);

            //If the photocell is connected to a belt conveyor then we want to pause the timers if the conveyor is not available
            if (conveyor is IBeltControl)
            {
                beltControl = conveyor as IRouteStatus;
                routeStatus = beltControl.GetRouteStatus(conveyor.StartFixPoint);
                routeStatus.OnRouteStatusChanged += routeStatus_OnRouteStatusChanged;
            }

            OnNameChanged += CasePhotocell_OnNameChanged;
        }
示例#7
0
        private void DestinationConveyorRouteStatus_OnRouteStatusChanged(object sender, RouteStatusChangedEventArgs e)
        {
            RouteStatus routeStatus = (RouteStatus)sender;

            if (routeStatus != null)
            {
                DestinationStatusChanged(routeStatus);

                var currentTask = Tasks.Count > 0 ? Tasks[0] : null;
                if (currentTask != null && currentTask.Destination != null)
                {
                    if (currentTask.Destination.FixPointRouteStatus == routeStatus)
                    {
                        if (e._available == RouteStatuses.Blocked)
                        {
                            Tasks.RemoveAt(0);
                        }
                        // Make sure the destination conveyor who's status has changed matches the current task
                        // Allow within acceptable tolerance for the positioning of the conveyor and fixpoint
                        var isCurrentTask = currentTask.Destination.LocalPosition.X.WithinRange(conveyor.LocalPosition.X, 0.01f);
                        if (e._available == RouteStatuses.Available && isCurrentTask)
                        {
                            conveyor.ThisRouteStatus.Available = RouteStatuses.Request;
                        }
                    }
                }
            }
        }
示例#8
0
        private void SetState(RouteStatus status)
        {
            switch (status)
            {
            case RouteStatus.Pass:
                label10.BackColor = Color.LawnGreen;
                label10.ForeColor = Color.Black;
                label10.Text      = "可以成行";
                break;

            case RouteStatus.AdditionalDocument:
                label10.BackColor = Color.SkyBlue;
                label10.ForeColor = Color.Black;
                label10.Text      = "需要额外旅行文件";
                break;

            case RouteStatus.Suspicious:
                label10.BackColor = Color.Yellow;
                label10.ForeColor = Color.Black;
                label10.Text      = "可疑";
                break;

            case RouteStatus.Invalid:
                label10.BackColor = Color.Red;
                label10.ForeColor = Color.White;
                label10.Text      = "无法成行";
                break;
            }
        }
示例#9
0
        public override void EndFixPoint_OnUnSnapped(Core.Parts.FixPoint stranger)
        {
            RouteStatus rs = ((IRouteStatus)stranger.Parent).GetRouteStatus(stranger);

            rs.OnRouteStatusChanged -= rs_OnRouteStatusChanged;
            base.EndFixPoint_OnUnSnapped(stranger);
        }
示例#10
0
 public Neighbor()
 {
     ports = new SynchronizedCollection<Port>();
     canRoutePackets = RouteStatus.Unknow;
     osPlatform = Platform.Unknow;
     ips = new SynchronizedCollection<IPAddress>();
 }
示例#11
0
 public SRoute(Route route, IEnumerable <SCheckPoint> checkPoints, Culture culture)
 {
     Id          = route.Id;
     Name        = route.GetName(culture);
     Rating      = route.RelativeRating;
     AuthorId    = route.Author;
     Status      = RouteStatus.GetStatus(route.Status).GetName(culture);
     CheckPoints = checkPoints;
 }
示例#12
0
 private static bool IsExpectedResponse(BypassSheetInfoResponse response, RouteStatus expectedStatus,
                                        params HashSet <int>[] expectedSheets)
 {
     return(response.RouteStatus == expectedStatus &&
            response.UniqueBypassSheets.Count == expectedSheets.Length &&
            !response.UniqueBypassSheets
            .Where((t, i) => !AreEqualsSets(t.Stamps, expectedSheets[i]))
            .Any());
 }
示例#13
0
        public void DivertSection_EndFixPoint_OnUnSnapped(Core.Parts.FixPoint stranger)
        {
            divertSection.TransportSection.Route.NextRoute = null;
            ThisRouteStatus = new RouteStatus();
            NextRouteStatus.OnRouteStatusChanged -= NextRouteStatus_OnAvailableChanged;
            NextConveyor    = null;
            NextRouteStatus = null;

            Reset();
        }
            public void Plan(DateTime date)
            {
                if (date < DateTime.Today.AddDays(1))
                {
                    throw new InvalidOperationException("Route can only plan from tomorrow.");
                }

                Status = RouteStatus.Planned;
                Date   = date;
            }
示例#15
0
        /// <summary>
        /// 批量修改线路上下架状态
        /// </summary>
        /// <param name="status">线路上下架状态</param>
        /// <param name="routes">线路编号</param>
        /// <returns></returns>
        public bool UpdateRouteStatus(RouteStatus status, params string[] routes)
        {
            bool result = false;

            if (routes.Length > 0)
            {
                if (dal.UpdateRouteStatus(status, ArrayToStr(routes)) > 0)
                {
                    result = true;
                }
            }
            return(result);
        }
示例#16
0
        public DisposalEntry(RouteStatus rs, int curDay, int curRoute)
        {
            InitializeComponent();

            // Disable the navigation bar
            NavigationPage.SetHasBackButton(this, false);

            // Create a message to listen for Jump Requests
            MessagingCenter.Subscribe <JumpToCustomer, int>(this, "JumpTo", (sender, arg) =>
            {
                _currentCustomerIndex = arg;
                UpdateRoutine(MoveDirection.Jump);
            });

            // Get the customer list for the day and route
            _currentDay         = curDay + 1;
            _currentRoute       = curRoute + 1;
            _routeDesc          = string.Format("Truck - {0}", _currentRoute);
            CurrentCustomerList = CCustomerList.GetCustomerListing(_currentDay, _currentRoute);

            // If the list comes back blank ... tell the user and go back
            if (CurrentCustomerList == null)
            {
                DisplayAlert("Customer List", "The customer list cannot be loaded.  The most likely cause is due to a missing file.  Please press the Update Customer List button and then try again.", "OK");
                Navigation.PopAsync();
            }

            // If this is a new route, clear every thing out
            if (rs == RouteStatus.StartNew)
            {
                CollectionRecord.DeleteDayAndRoute(_currentDay, _currentRoute);
            }

            // Fill in the other items that are collected
            ReadItemsToCollect();

            // Go to the first record
            UpdateRoutine(MoveDirection.Forward);

            // Set an event when those items are selected
            CurrentItemList.ItemSelected += (sender, e) =>
            {
                ItemsCollected colItem = (ItemsCollected)e.SelectedItem;
                if (colItem != null)
                {
                    CollectedItems.Add(new CollectionRecord(_currentCustomerId, _currentDay, _currentRoute, colItem.ID.ToString(), 1, colItem.ItemDescription, DateTime.Now, _routeDesc, colItem.MinimumPrice));
                }
                AddToList();
            };
        }
示例#17
0
        public ActionResult AddStatus(FormCollection formValues)
        {
            var status = new RouteStatus();

            if (TryUpdateModel(status))
            {
                if (unitOfWork.routeRepository.GetRouteStatuses().FirstOrDefault(os => os.Name == status.Name) != null)
                {
                    ModelState.AddModelError(string.Empty, "Status with the same name is in database yet. Change name.");
                    return(View(status));
                }
                unitOfWork.routeRepository.AddRouteStatus(status);
                unitOfWork.Save();
                return(RedirectToAction("Statuses"));
            }
            return(View(status));
        }
示例#18
0
        public static string DisplayName(this RouteStatus status)
        {
            switch (status)
            {
            case RouteStatus.New:
                return("New");

            case RouteStatus.InProgress:
                return("In progress");

            case RouteStatus.Completed:
                return("Completed");

            case RouteStatus.Pending:
                return("Pending");

            default:
                return("New");
            }
        }
        private void Populate(PublishedRtzMessage entity, bool ignoreStatusInMessage = false)
        {
            var msg = Serialization.ByteArrayToString(entity.Message);

            var parser            = RtzParserFactory.Create(msg);
            var routeStatusString = parser.RouteStatus;

            RouteStatus routeStatus = RouteStatus.Unknown;
            int         statusId;

            if (int.TryParse(routeStatusString, out statusId))
            {
                routeStatus = (RouteStatus)statusId;
            }

            if (!ignoreStatusInMessage)
            {
                entity.MessageStatus = (RouteStatus)statusId;
            }

            DateTime?validityPeriodStart = parser.ValidityPeriodStart;

            if (validityPeriodStart == DateTime.MinValue)
            {
                entity.MessageValidFrom = null;
            }
            else
            {
                entity.MessageValidFrom = validityPeriodStart;
            }
            DateTime?validityPeriodStop = parser.ValidityPeriodStop;

            if (validityPeriodStop == DateTime.MinValue)
            {
                entity.MessageValidTo = null;
            }
            else
            {
                entity.MessageValidTo = validityPeriodStop;
            }
        }
示例#20
0
        private void SetNextDivertRouteStatus(bool value)
        {
            if (value)
            {
                IRouteStatus afterNextConv = divertSection.NextConveyor;

                if (afterNextConv is StraightConveyor)
                {
                    StraightConveyor straight = afterNextConv as StraightConveyor;
                    NextDivertRouteStatus = straight.NextConveyor.GetRouteStatus(divertSection.EndFixPoint.Attached);
                }
                else if (afterNextConv is CurveConveyor)
                {
                    CurveConveyor curve = afterNextConv as CurveConveyor;
                    NextDivertRouteStatus = curve.NextConveyor.GetRouteStatus(divertSection.EndFixPoint.Attached);
                }
            }
            else
            {
                NextDivertRouteStatus = divertSection.NextConveyor.GetRouteStatus(divertSection.EndFixPoint.Attached);
            }
        }
示例#21
0
        /// <summary>
        ///     协议错误
        /// </summary>
        /// <param name="exception"></param>
        /// <returns></returns>
        private string ProtocolError(WebException exception)
        {
            try
            {
                var codes = exception.Message.Split(new[] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
                if (codes.Length == 3)
                {
                    if (int.TryParse(codes[1], out var s))
                    {
                        switch (s)
                        {
                        case 404:
                            Status = RouteStatus.NotFind;
                            return(ToErrorString(ErrorCode.NetworkError, "页面不存在", "页面不存在"));

                        case 503:
                            Status = RouteStatus.Unavailable;
                            return(ToErrorString(ErrorCode.NetworkError, "拒绝访问", "页面不存在"));
                        }
                    }
                }

                Status = RouteStatus.RemoteError;
                var msg = ReadResponse(exception.Response);
                LogRecorder.Error($"Call {Host}/{ApiName} Error:{msg}");
                return(msg); //ToErrorString(ErrorCode.NetworkError, "未知错误", );
            }
            catch (Exception e)
            {
                Status = RouteStatus.LocalException;
                LogRecorder.Exception(e);
                return(ToErrorString(ErrorCode.NetworkError, "未知错误", e.Message));
            }
            finally
            {
                exception.Response?.Close();
            }
        }
示例#22
0
        /// <summary>
        /// As the accumilation conveyor length is not set conventually it is set via positions, outfeedsection
        /// infeedsection and AccPitch. We have to wait until all these are set. So we need this method to place
        /// transition points.
        /// </summary>
        public void ConvLocationConfiguration(string level)
        {
            Leaving.OnEnter += Leaving_OnEnter;
            RouteStatus nextRouteStatus = new RouteStatus()
            {
                Available = RouteStatuses.Available
            };

            NextRouteStatus  = nextRouteStatus;
            Leaving.Distance = Length;

            foreach (AccumulationSensor sensor in sensors)
            {
                //The accumilation conveyor PEC last (wrt the load travel direction) position is called "0", this is position 2 for the multishuttle.
                //The accumilation conveyor PEC second from last position (wrt the load travel direction) is called "1", this is position 1 for the multishuttle.

                int convPosName;
                if (int.TryParse(sensor.sensor.Name, out convPosName) && convPosName == 0)
                {
                    LocationB         = sensor.sensor;
                    LocationB.LocName = string.Format("{0}{1}{2}{3}{4}", AisleNumber.ToString().PadLeft(2, '0'), (char)Side, level, (char)ConveyorTypes.Pick, "B");
                    ParentMultiShuttle.ConveyorLocations.Add(LocationB);
                    sensor.sensor.OnEnter += sensor_OnEnterB;
                    //sensor.sensor.OnLeave         += sensor_OnLeave2;
                    //sensor.sensor.leaving.Edge     = ActionPoint.Edges.Leading;
                    //sensor.sensor.leaving.Distance = sensor.sensor.leaving.Distance + 0.02f;//ParentMultiShuttle.workarround; //Workaround for a load switiching to another conveyor whilst blocking a sensor, hopfully Xcelgo will fix this
                }
                else if (int.TryParse(sensor.sensor.Name, out convPosName) && convPosName == 1)
                {
                    LocationA         = sensor.sensor;
                    LocationA.LocName = string.Format("{0}{1}{2}{3}{4}", AisleNumber.ToString().PadLeft(2, '0'), (char)Side, level, (char)ConveyorTypes.Pick, "A");
                    ParentMultiShuttle.ConveyorLocations.Add(sensor.sensor);
                    sensor.sensor.OnEnter += sensor_OnEnterA;
                }
            }
            LocationB.Visible = false;
        }
示例#23
0
        /// <summary>
        ///     取返回值
        /// </summary>
        /// <returns></returns>
        public async Task <string> Call()
        {
            string jsonResult;

            Status = RouteStatus.None;
            try
            {
                var resp = await _webRequest.GetResponseAsync();

                jsonResult = ReadResponse(resp);
            }
            catch (WebException e)
            {
                LogRecorder.Exception(e);
                jsonResult = e.Status == WebExceptionStatus.ProtocolError ? ProtocolError(e) : ResponseError(e);
            }
            catch (Exception e)
            {
                Status = RouteStatus.LocalException;
                LogRecorder.Exception(e);
                jsonResult = ToErrorString(ErrorCode.LocalException, "未知错误", e.Message);
            }
            return(string.IsNullOrWhiteSpace(jsonResult) ? ApiResult.RemoteEmptyErrorJson : jsonResult);
        }
示例#24
0
 private void InvalidRoute()
 {
     Status = RouteStatus.Invalid;
 }
示例#25
0
 public BypassSheetInfoResponse(RouteStatus routeStatus, IReadOnlyList <BypassSheet> uniqueBypassSheets)
 {
     RouteStatus        = routeStatus;
     UniqueBypassSheets = uniqueBypassSheets;
 }
示例#26
0
 private void DestinationStatusChanged(RouteStatus routeStatus)
 {
     OnDestinationStatusChanged?.Invoke(this, routeStatus);
 }
示例#27
0
        private string ResponseError(WebException e)
        {
            e.Response?.Close();
            switch (e.Status)
            {
            case WebExceptionStatus.CacheEntryNotFound:
                Status = RouteStatus.NotFind;
                return(ToErrorString(ErrorCode.NetworkError, "找不到指定的缓存项"));

            case WebExceptionStatus.ConnectFailure:
                Status = RouteStatus.LocalError;
                return(ToErrorString(ErrorCode.NetworkError, "在传输级别无法联系远程服务点"));

            case WebExceptionStatus.ConnectionClosed:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "过早关闭连接"));

            case WebExceptionStatus.KeepAliveFailure:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "指定保持活动状态的标头的请求的连接意外关闭"));

            case WebExceptionStatus.MessageLengthLimitExceeded:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "已收到一条消息的发送请求时超出指定的限制或从服务器接收响应"));

            case WebExceptionStatus.NameResolutionFailure:
                Status = RouteStatus.NotFind;
                return(ToErrorString(ErrorCode.NetworkError, "名称解析程序服务或无法解析主机名"));

            case WebExceptionStatus.Pending:
                Status = RouteStatus.LocalError;
                return(ToErrorString(ErrorCode.NetworkError, "内部异步请求处于挂起状态"));

            case WebExceptionStatus.PipelineFailure:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "该请求是管线请求和连接被关闭之前收到响应"));

            case WebExceptionStatus.ProxyNameResolutionFailure:
                Status = RouteStatus.NotFind;
                return(ToErrorString(ErrorCode.NetworkError, "名称解析程序服务无法解析代理服务器主机名"));

            case WebExceptionStatus.ReceiveFailure:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "从远程服务器未收到完整的响应"));

            case WebExceptionStatus.RequestCanceled:
                Status = RouteStatus.Unavailable;
                return(ToErrorString(ErrorCode.NetworkError, "请求已取消"));

            case WebExceptionStatus.RequestProhibitedByCachePolicy:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "缓存策略不允许该请求"));

            case WebExceptionStatus.RequestProhibitedByProxy:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "由该代理不允许此请求"));

            case WebExceptionStatus.SecureChannelFailure:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "使用 SSL 建立连接时出错"));

            case WebExceptionStatus.SendFailure:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "无法与远程服务器发送一个完整的请求"));

            case WebExceptionStatus.ServerProtocolViolation:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "服务器响应不是有效的 HTTP 响应"));

            case WebExceptionStatus.Timeout:
                Status = RouteStatus.RemoteError;
                return(ToErrorString(ErrorCode.NetworkError, "请求的超时期限内未不收到任何响应"));

            case WebExceptionStatus.TrustFailure:
                Status = RouteStatus.DenyAccess;
                return(ToErrorString(ErrorCode.NetworkError, "无法验证服务器证书"));

            default:
                Status = RouteStatus.LocalException;
                return(ToErrorString(ErrorCode.NetworkError, "内部服务器异常(未知错误)"));
            }
        }
示例#28
0
        public ActionResult AddStatus()
        {
            var status = new RouteStatus();

            return(View(status));
        }
示例#29
0
 public void SetStatus(RouteStatus status)
 {
     this.status = status;
 }
示例#30
0
 public void AddRouteStatus(RouteStatus status)
 {
     context.RouteStauses.Add(status);
 }
示例#31
0
 public void DeleteRouteStatus(RouteStatus routeStatus)
 {
     context.RouteStauses.Remove(routeStatus);
 }