Ejemplo n.º 1
0
    public dynamic GetUnitsTable()
    {
        List <TableItem> lst = new List <TableItem>();

        try
        {
            Unit[] units = new Unit[] { Unit.MainRack, Unit.LS01, Unit.LS02, Unit.LS03, Unit.Trolley1, Unit.Trolley2, Unit.Trolley3, Unit.Carrier1, Unit.Carrier2 };

            var alarms = DB_Error.AllAlarms(BauerLib.Registry.Culture);

            foreach (Unit u in units)
            {
                if (!BauerLib.Registry.UseVehicle(u.Unit_ID))
                {
                    continue;
                }

                TableItem item = new TableItem(u.FriendlyName);

                item.id      = u.Unit_ID;
                item.ready   = u.Ready ? color(KnownColor.LightGreen) : color(KnownColor.LightGray);
                item.active  = u.Active ? color(KnownColor.LightGreen) : color(KnownColor.LightGray);
                item.online  = u.Online ? color(KnownColor.LightGreen) : color(KnownColor.Red);
                item.error   = u.HasError ? color(KnownColor.Red) : color(KnownColor.LightGray);
                item.inorout = "";

                item.reserved = "";

                if (u.IsCarrier() && u.Reserved >= 20 && u.Reserved <= 23)
                {
                    item.reserved = $"TR {u.Reserved - 20}";
                }

                item.step = u.StepNo;

                //lst.Add(new StatusEntry(div_id, "StepNo", ls.StepNo.ToString()));
                //lst.Add(new StatusEntry(div_id, "MoveID", ls.MoveID.ToString()));

                if (u.Cylinder_ID != 0)
                {
                    item.roll = u.Cylinder.Number;
                }

                Hook p = u.PlcPosition();
                item.position = p.ToString().Replace(",100,100", "").Replace("0,0,0,0", "");

                //if (u.IsCarrier() && u.Reserved != 0)
                //    item.AddInfo($"reserved for : {Unit.GetUnit(u.Reserved).FriendlyName}");

                if (u.IsLoadingStation() && u.BlockForManualOrderUntil > DateTime.UtcNow)
                {
                    item.AddInfo($"blocked for automatics");
                }

                var mv = GetLatestPLCMoveForUnit(u.Unit_ID);
                if (mv != null)
                {
                    item.AddInfo("Move " + mv.ToString().Substring(3));
                    if (mv.MoveTarget.Bridge != 0 && mv.MoveTarget.Trolley != 0)
                    {
                        item.target = mv.MoveTarget.ToString().Replace(",100,100", "");
                    }
                }
                string info = GetLatestOrderForUnit(u.Reserved);
                item.AddInfo(info);

                if (info.Contains("incoming"))
                {
                    item.inorout = "in";
                }
                if (info.Contains("outgoing"))
                {
                    item.inorout = "out";
                }

                //lst.Add(new StatusEntry(div_id, "Cylinder (in)", Hook.LoadingStation(ls.Number, true).CylinderNumber));
                //lst.Add(new StatusEntry(div_id, "Cylinder (out)", Hook.LoadingStation(ls.Number, false).CylinderNumber));


                foreach (var a in alarms)
                {
                    if (a.UnitName == item.name)
                    {
                        item.AddInfo($"{a.Level} {a.Number} : {a.Message}");
                    }
                }

                lst.Add(item);
            }
        }
        catch
        {
        }
        return(Response.AsJson(lst));
    }