Exemplo n.º 1
0
        private void btnTaIn_Click(object sender, EventArgs e)
        {
            //if (MessageBox.Show("database will be changed. random mid-size cylinder generated.\r\n Proceed ?",
            //    "Attention", MessageBoxButtons.YesNo) == DialogResult.No)
            //    return;

            CheckTrolleyCylinders();

            Button   btn = ((Button)sender);
            Cylinder cy  = null;

            int ls_nr = 10 + int.Parse(btn.Tag.ToString());

            if (ls_nr == 13 && btn.Text.ToLowerInvariant().Contains("big"))
            {
                cy = TestFunctions.PutBigNewRandomCylinderOnLoadingStation3a(998);
            }
            else
            {
                cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_nr);

                cy.Diameter = 777;

                if (btn.Text.ToLowerInvariant().Contains("small"))
                {
                    cy.Diameter = 241;
                }

                if (btn.Text.ToLowerInvariant().Contains("big"))
                {
                    cy.Diameter = 999;
                }

                cy.Update();
            }
            if (cy != null)
            {
                TransportOrder ta = new TransportOrder();
                ta.ID              = TransportOrder.GetNextNegativeID();
                ta.Cylinder_ID     = (int)cy.ID;
                ta.Diameter        = cy.Diameter;
                ta.JobNumber       = "restart inside";
                ta.Label           = cy.Number;
                ta.ItemNumber      = cy.ItemNumber;
                ta.TransportSource = TransportOrder.Destinations.Scanned;
                ta.TransportTarget = TransportOrder.Destinations.Storage;
                ta.LoadingStation  = ls_nr;
                ta.Insert();
            }
        }
Exemplo n.º 2
0
        private void btnTaMoveOutside_Click(object sender, EventArgs e)
        {
            CheckTrolleyCylinders();

            int    ls_nr  = 10 + int.Parse(((Button)sender).Tag.ToString());
            string number = "";

            if (ls_nr == 11)
            {
                number = txtCylinderOut1.Text;
            }
            if (ls_nr == 12)
            {
                number = txtCylinderOut2.Text;
            }
            if (ls_nr == 13)
            {
                number = txtCylinderOut3.Text;
            }

            if (number.Contains(","))
            {
                Hook source = new Hook(number);
                number = source.CylinderNumber;
            }

            Cylinder cy = Main.Database.FirstOrDefault <Cylinder>("WHERE Number=@0", number);

            if (cy != null)
            {
                Hook ls_in = Hook.LoadingStation(ls_nr, inside: true);
                ls_in.CylinderID = 0;

                TransportOrder ta = new TransportOrder();
                ta.ID              = TransportOrder.GetNextNegativeID();
                ta.Cylinder_ID     = (int)cy.ID;
                ta.Diameter        = cy.Diameter;
                ta.Label           = cy.Number;
                ta.JobNumber       = cy.JobNumber;
                ta.ItemNumber      = cy.ItemNumber;
                ta.TransportSource = TransportOrder.Destinations.Storage;
                ta.TransportTarget = TransportOrder.Destinations.Laminator;
                ta.LoadingStation  = ls_nr;
                ta.Insert();

                // OrderManagement.ReadTransportOrders();
            }
        }
Exemplo n.º 3
0
        private void CreateMoveManuallyInside(int ls_nr, string barcode = "")
        {
            //if (Program.UserLevel < UserLevels.USER)
            //{
            //    bool ok = false;
            //    Program.RequestUserLevel(UserLevels.OPERATOR, () => ok = true, () => ok = false);
            //    if (!ok) return;
            //}

            try
            {
                var ls = Unit.GetUnit(ls_nr);
                if (ls.Reserved != 0)
                {
                    log.Warn("duplicate move, aborted.");
                    return;
                }

                Cylinder c = null;
                c = Cylinder.GetCylinder(barcode);

                if (c != null && c.InRack)
                {
                    log.Error($"Roll {barcode} is in the storage already at {c.GetHook()}. Please inform maintenance.");
                }

                if (c == null || c.Cylinder_ID == 0)
                {
                    int cyl_id = Cylinder.GetNextId();
                    c = new Cylinder()
                    {
                        Number = barcode
                    };
                    c.Cylinder_ID = cyl_id;
                    c.Created     = DateTime.Now;
                    c.Diameter    = -1;

                    c.Info          = (barcode != "" ? "barcode" : "");
                    c.ItemNumber    = "";
                    c.JobNumber     = "manually inside";
                    c.ProductLength = 0;
                    c.Width         = 2300;

                    c.Insert();
                }

                c.Diameter = -1;
                c.LastLoad = DateTime.Now;
                c.Update();

                Hook ls_in = Hook.LoadingStation(ls_nr, inside: true);
                ls_in.CylinderID = c.Cylinder_ID;

                ls.barcode          = "";
                ls.barcode_bad      = false;
                ls.barcode_ok       = false;
                ls.CylinderDiameter = 0;

                if (ls.BlockForManualOrderUntil < DateTime.UtcNow)
                {
                    ls.BlockForManualOrderUntil = DateTime.UtcNow.AddSeconds(10);
                }

                TransportOrder ta = new TransportOrder();
                ta.ID = TransportOrder.GetNextNegativeID();

                ls.SetOrderData(c.Cylinder_ID, ta.ID, Unit.UnitOrderType.Incoming);

                ta.Cylinder_ID = c.Cylinder_ID;
                ta.Priority    = -1;
                ta.Diameter    = 0;
                ta.JobNumber   = "manually inside";
                ta.ItemNumber  = "";
                if (barcode == "")
                {
                    ta.TransportSource = TransportOrder.Destinations.Forklifter;
                }
                else
                {
                    ta.Label           = barcode;
                    ta.TransportSource = TransportOrder.Destinations.Scanned;
                }
                ta.TransportTarget = TransportOrder.Destinations.Storage;
                ta.LoadingStation  = ls_nr;

                Hook ls_out = Hook.LoadingStation(ls_nr, inside: true);
                ta.SourceHook = ls_out.ToString();

                ta.State = TransportOrder.OrderStates.New;

                log.Info($"manual move inside started {ta} ({barcode})");
                ta.Insert();

                ls.Reserved = ta.ID;
                ls.Update();
            }
            catch (Exception ex)
            {
                log.Error("Exception creating manual move", ex);
            }
        }
Exemplo n.º 4
0
        private void RestartRollInsideOrder(int ls_id)
        {
            try
            {
                Cylinder cyl = null;
                if (ls_id == 11)
                {
                    cyl = Unit.LS01.Cylinder;
                }
                if (ls_id == 12)
                {
                    cyl = Unit.LS02.Cylinder;
                }
                if (ls_id == 13)
                {
                    cyl = Unit.LS03.Cylinder;
                }

                if (cyl == null || cyl.ID == 0 || cyl.Number == "")
                {
                    MessageBox.Show("not possible, cylinder not found");
                    return;
                }
                // reload
                var ta = new TransportOrder();

                ta.ID = TransportOrder.GetNextNegativeID();

                ta.TargetHook          = "";
                ta.LoadingStation      = ls_id;
                ta.SourceHook          = "";
                ta.State               = TransportOrder.OrderStates.New;
                ta.Status              = "new";
                ta.Trolley             = 0;
                ta.WaitForTransport_ID = 0;
                ta.Priority            = -1;

                ta.Cylinder_ID = (int)cyl.ID;
                ta.Label       = cyl.Number;
                ta.Diameter    = cyl.Diameter;

                ta.LSReached    = new DateTime(2000, 1, 1);
                ta.AGV          = 0;
                ta.AGVsource    = 0;
                ta.AGVdest      = 0;
                ta.AGVrequested = new DateTime(2000, 1, 1);
                ta.AGVdone      = new DateTime(2000, 1, 1);

                ta.Inserted = DateTime.UtcNow;

                ta.LastChange  = DateTime.UtcNow;
                ta.exit_reason = "restarted from inside";
                ta.exit_time   = new DateTime(2000, 1, 1);
                ta.JobNumber   = "restart inside";

                ta.TransportSource = TransportOrder.Destinations.Scanned;
                ta.TransportTarget = TransportOrder.Destinations.Storage;

                ta.agv_started = false;
                ta.Insert();
            }
            catch
            {
            }
        }
Exemplo n.º 5
0
        private void CreateAgvOrder(SqlDbAGVLocation agv)
        {
            int priority = Main.Database.ExecuteScalar <int>("SELECT COALESCE(MAX(Priority), 10) + 10 FROM StorageOrders");

            if (priority <= 0)
            {
                priority = 110;
            }

            // orders should come from AS400

            if (agv.direction == "in")
            {
                TransportOrder dbn = new TransportOrder()
                {
                    //ID = TransportOrder.GetNextNegativeID(),
                    ID       = TransportOrder.GetNextID(),
                    Priority = priority,
                    // OrderState = item.OrderState,
                    AGV           = 0,
                    AGVdest       = 0,
                    CylinderState = 1,
                    Diameter      = -1,
                    Direction     = 1,
                    Label         = "##REST##",
                    ItemNumber    = "",
                    JobNumber     = "test",

                    AGV_location_machinename = agv.machine_name,
                    rewind_code = agv.rewind_code,
                    manual_mode = 0,

                    Inserted   = DateTime.UtcNow,
                    LastChange = DateTime.UtcNow,

                    AGVrequested = new DateTime(2000, 1, 1),
                    AGVdone      = new DateTime(2000, 1, 1),
                    AGVsource    = 0,
                    LSReached    = new DateTime(2000, 1, 1),
                };

                dbn.State = TransportOrder.OrderStates.New;

                dbn.TransportSource = TransportOrder.Destinations.Press;
                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                {
                    dbn.TransportSource = TransportOrder.Destinations.Laminator;
                }
                dbn.TransportTarget = TransportOrder.Destinations.Storage;

                // incoming

                // unknown diameter
                var nc = CreateCylinder("##REST##", -1, "", "test");
                dbn.Cylinder_ID = nc.Cylinder_ID;
                dbn.Insert();

                agv.storage_order_id = dbn.ID;
                agv.Update();
            }

            if (agv.direction == "out")
            {
                Cylinder cyl = GetRandomCylinder();

                TransportOrder dbn = new TransportOrder()
                {
                    ID       = TransportOrder.GetNextID(),
                    Priority = priority,
                    // OrderState = item.OrderState,
                    AGV           = 0,
                    AGVdest       = 0,
                    Cylinder_ID   = cyl.Cylinder_ID,
                    CylinderState = cyl.CylinderState_ID,
                    Diameter      = cyl.Diameter,
                    Label         = cyl.Number,
                    ItemNumber    = cyl.ItemNumber,
                    JobNumber     = "test",

                    AGV_location_machinename = agv.machine_name,
                    rewind_code = agv.rewind_code,
                    manual_mode = 0,

                    LoadingStation = 0,

                    Inserted   = DateTime.UtcNow,
                    LastChange = DateTime.UtcNow,

                    AGVrequested = new DateTime(2000, 1, 1),
                    AGVdone      = new DateTime(2000, 1, 1),
                    AGVsource    = 0,
                    LSReached    = new DateTime(2000, 1, 1),
                };

                dbn.State = TransportOrder.OrderStates.New;

                // outgoing
                dbn.TransportSource = TransportOrder.Destinations.Storage;
                dbn.TransportTarget = TransportOrder.Destinations.Press;
                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                {
                    dbn.TransportTarget = TransportOrder.Destinations.Laminator;
                }

                dbn.Insert();

                agv.storage_order_id = dbn.ID;
                agv.start_wanted     = false;
                agv.Update();
            }
        }
Exemplo n.º 6
0
        public void DoAction()
        {
            if (inside_action)
            {
                return;
            }

            try
            {
                inside_action = true;

                log.Debug("Fetch started");
                //if (btnLoginFirst.CenteredText == "Order sent")
                //    btnLoginFirst.CenteredText = "Login first";

                if (btnFetchCylinder.CenteredText == "Order sent")
                {
                    btnFetchCylinder.CenteredText = "Select cylinder";
                    // only reset button text
                    ButtonVisibilityFromUserLevel();
                    return;
                }

                btnFetchCylinder.Visible = false;
                btnFetchCylinder.Refresh();

                StopDisplayUpdate();

                var data = GetSelectedCylinderData();
                if (data == null)
                {
                    return;
                }

                Cylinder cyl       = null;
                int      cyl_count = 0;
                foreach (var test in Main.Database.Fetch <Cylinder>("WHERE Number=@0", GetSelectedCylinderNumber()))
                {
                    cyl_count++;
                    if (test.InRackAnyWhere)
                    {
                        cyl = test;
                    }
                }

                if (cyl != null && cyl_count > 1)
                {
                    foreach (var test in Main.Database.Fetch <Cylinder>("WHERE Number=@0", GetSelectedCylinderNumber()))
                    {
                        if (test.ID != cyl.ID)
                        {
                            log.Fatal($"Same roll found 2 times deleting {test.Number}/{test.ID}, keeping {cyl.ID}");
                            test.Delete();
                        }
                    }
                }

                if (cyl == null)
                {
                    lblCylinderInfo.Text     = "Number not found";
                    btnFetchCylinder.Visible = true;
                    return;
                }

                Unit ls = GetSaveUnit(MySelectedStation);

                if (cyl != null && !cyl.InRackAnyWhere)
                {
                    lblCylinderInfo.Text     = $"{cyl.Number} not found in storage";
                    btnFetchCylinder.Visible = true;
                    cyl = null;
                }
                if (cyl != null && cyl.GetHook() != null && cyl.GetHook().TransportOrderID != 0)
                {
                    lblCylinderInfo.Text     = $"{cyl.Number} already ordered";
                    btnFetchCylinder.Visible = true;
                    cyl = null;
                }

                if (cyl != null)
                {
                    if (!ls.Ready)
                    {
                        lblCylinderInfo.Text     = $"Station {ls.Unit_ID - 10} not ready";
                        btnFetchCylinder.Visible = true;
                        return;
                    }

                    if (ls.Reserved != 0)
                    {
                        lblCylinderInfo.Text     = $"order pending";
                        btnFetchCylinder.Visible = true;
                        return;
                    }
                }

                if (cyl != null)
                {
                    var ready_transports = Main.Database.ExecuteScalar <int>(
                        "SELECT COUNT(*) FROM StorageOrders " +
                        " WHERE Cylinder_ID=@0 " +
                        " AND NOT Status IN ('done', 'error', 'timeout')", cyl.ID);
                    if (ready_transports > 0)
                    {
                        lblCylinderInfo.Text = $"{cyl.Number} already ordered";
                        log.Error($"{cyl.Number} already ordered");
                        btnFetchCylinder.Visible = true;
                        return;
                    }
                }

                if (cyl != null)
                {
                    try
                    {
                        if (remembered_rolls.Contains(cyl.Number))
                        {
                            remembered_rolls.Remove(cyl.Number);
                        }
                    }
                    catch
                    {
                    }

                    TransportOrder ta = new TransportOrder();
                    ta.ID              = TransportOrder.GetNextNegativeID();
                    ta.Cylinder_ID     = (int)cyl.ID;
                    ta.LoadingStation  = ls.Unit_ID;
                    ta.TransportSource = TransportOrder.Destinations.Storage;
                    ta.TransportTarget = TransportOrder.Destinations.Forklifter;
                    ta.State           = TransportOrder.OrderStates.New;
                    ta.Label           = cyl.Number;
                    ta.Priority        = -1;

                    log.Info($"placed order id {ta.ID} fetch {cyl.Number} outside to {ls.FriendlyName}");

                    ls.ClearCylinderID();
                    var h = Hook.LoadingStation(ls.Unit_ID, true);
                    h.ClearID();

                    ls.Reserved = ta.ID;
                    ls.BlockForManualOrderUntil = DateTime.UtcNow;

                    ls.Update();

                    ta.Insert();

                    CancelAction();
                    Program.ResetUserLevel();

                    // reload
                    AllowDisplayUpdate();
                    refresh_timer_Tick(this, null);

                    btnFetchCylinder.CenteredText = "Order sent";
                    btnFetchCylinder.Visible      = true;
                    btnFetchCylinder.Refresh();

                    System.Threading.Thread.Sleep(5000);
                    btnFetchCylinder.CenteredText = "Select cylinder";

                    SearchCylinderPrefixAndText();
                    ButtonVisibilityFromUserLevel();

                    refresh_timer_Tick(this, null);

                    log.Debug("Fetch sent");
                    return;
                }
            }
            catch (Exception fex)
            {
                log.Error("common exception in Fetch/DoAction", fex);
            }
            finally
            {
                inside_action = false;
            }
        }
Exemplo n.º 7
0
    public static bool RearrangeRoll(string source, string target, out string error_text)
    {
        try
        {
            error_text = "";

            if (source == null || target == null)
            {
                error_text = $"missing parameters";
                return(false);
            }

            Cylinder cy = null;
            if (!source.Contains(","))
            {
                var cyls = Cylinder.LoadCylinders(source);
                if (cyls.Count <= 0)
                {
                    error_text = $"Roll {source} not found. Retry another roll or address";
                    return(false);
                }
                //, "http://" + Request.Headers.Host + "/moveroll");
                cy = cyls[0];
                int[] pos = cy.FindInRack();
                if (pos.Length == 0 || pos[0] == 0)
                {
                    error_text = $"Roll {source} not found in rack. Retry another roll or address";
                    return(false);
                }
                source = new Hook(pos).ToString();
            }

            Hook src = new Hook(source);
            if (!src.IsValidPosition(21))
            {
                error_text = $"Invalid address: {source}. Addresses are like 1,2,4,11";
                return(false);
            }

            Hook dst;
            if ((target == "FREE" || target == "") && cy != null)
            {
                dst = null;
            }
            else
            {
                dst = new Hook(target);
            }

            if (dst != null && !dst.IsValidPosition(21))
            {
                error_text = $"Invalid address: {target}. Addresses are like 1,2,4,11";
                return(false);
            }

            //SaveMovements(Check(tr, src, dst), unit_id, "new");

            // Umlagern !!!
            TransportOrder ua = new TransportOrder()
            {
                ID = TransportOrder.GetNextNegativeID(),
                TransportSource = TransportOrder.Destinations.Storage,
                TransportTarget = TransportOrder.Destinations.Storage,
                Cylinder_ID     = cy.Cylinder_ID,
                SourceHook      = src.ToString(),
                TargetHook      = dst == null ? "" : dst.ToString(),
                State           = TransportOrder.OrderStates.New,

                Priority      = 100,
                AGV           = 0,
                AGVdest       = 0,
                CylinderState = 1,
                Diameter      = cy.Diameter,
                Direction     = 0,
                Label         = cy.Number,
                ItemNumber    = "",
                JobNumber     = "rearrange",

                AGV_location_machinename = "",
                rewind_code = 0,
                manual_mode = 0,

                Inserted   = DateTime.UtcNow,
                LastChange = DateTime.UtcNow,

                AGVrequested = new DateTime(2000, 1, 1),
                AGVdone      = new DateTime(2000, 1, 1),
                AGVsource    = 0,
                LSReached    = new DateTime(2000, 1, 1)
            };

            ua.exit_reason = "rearranging";
            ua.Insert();

            return(true);
        }
        catch (Exception ex)
        {
            log.Error("Exception in ManualRollMove", ex);
            error_text = ex.Message;
            return(false);
        }
    }
Exemplo n.º 8
0
        public dynamic StartAgvAction(dynamic p)
        {
            string a     = p.agvname;
            bool   found = false;
            var    agvs  = Main.Database.Fetch <SqlDbAGVLocation>("WHERE name = @0 AND plc_address <> 0", a);

            foreach (var agv in agvs)
            {
                found = true;

                bool test = false;

                if (!test)
                {
                    // only signal the agv's
                    agv.start_wanted = true;
                    agv.Update();
                }
                else
                {
                    // orders should come from AS400

                    if (agv.direction == "in")
                    {
                        TransportOrder dbn = new TransportOrder()
                        {
                            //ID = TransportOrder.GetNextNegativeID(),
                            ID       = TransportOrder.GetNextID(),
                            Priority = 100,
                            // OrderState = item.OrderState,
                            AGV           = 0,
                            AGVdest       = 0,
                            CylinderState = 1,
                            Diameter      = -1,
                            Direction     = 1,
                            Label         = "##REST##",
                            ItemNumber    = "",
                            JobNumber     = "test",

                            AGV_location_machinename = agv.machine_name,
                            rewind_code = agv.rewind_code,
                            manual_mode = 0,

                            Inserted   = DateTime.UtcNow,
                            LastChange = DateTime.UtcNow,

                            AGVrequested = new DateTime(2000, 1, 1),
                            AGVdone      = new DateTime(2000, 1, 1),
                            AGVsource    = 0,
                            LSReached    = new DateTime(2000, 1, 1),
                        };

                        dbn.State = TransportOrder.OrderStates.New;

                        dbn.TransportSource = TransportOrder.Destinations.Press;
                        if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                        {
                            dbn.TransportSource = TransportOrder.Destinations.Laminator;
                        }
                        dbn.TransportTarget = TransportOrder.Destinations.Storage;

                        // incoming

                        // unknown diameter
                        var nc = CreateCylinder("##REST##", -1, "", "test");
                        dbn.Cylinder_ID = nc.Cylinder_ID;
                        dbn.Insert();

                        agv.storage_order_id = dbn.ID;
                        agv.Update();
                    }

                    if (agv.direction == "out")
                    {
                        Cylinder cyl  = null;
                        var      cyls = Main.Database.Fetch <Cylinder>("WHERE Number='2125511'");
                        foreach (var cy_test in cyls)
                        {
                            if (cy_test.InRack)
                            {
                                cyl = cy_test;
                                break;
                            }
                        }

                        if (cyl == null)
                        {
                            return(Response.AsText("NO CYLINDER FOUND"));
                        }

                        TransportOrder dbn = new TransportOrder()
                        {
                            ID       = TransportOrder.GetNextNegativeID(),
                            Priority = 100,
                            // OrderState = item.OrderState,
                            AGV           = 0,
                            AGVdest       = 0,
                            Cylinder_ID   = cyl.Cylinder_ID,
                            CylinderState = cyl.CylinderState_ID,
                            Diameter      = cyl.Diameter,
                            Label         = cyl.Number,
                            ItemNumber    = cyl.ItemNumber,
                            JobNumber     = "test",

                            AGV_location_machinename = agv.machine_name,
                            rewind_code = agv.rewind_code,
                            manual_mode = 0,

                            LoadingStation = 10 + agv.iotable,

                            Inserted   = DateTime.UtcNow,
                            LastChange = DateTime.UtcNow,

                            AGVrequested = new DateTime(2000, 1, 1),
                            AGVdone      = new DateTime(2000, 1, 1),
                            AGVsource    = 0,
                            LSReached    = new DateTime(2000, 1, 1),
                        };

                        dbn.State = TransportOrder.OrderStates.New;

                        // outgoing
                        dbn.TransportSource = TransportOrder.Destinations.Storage;
                        dbn.TransportTarget = TransportOrder.Destinations.Press;
                        if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                        {
                            dbn.TransportTarget = TransportOrder.Destinations.Laminator;
                        }

                        dbn.Insert();

                        agv.storage_order_id = dbn.ID;
                        agv.start_wanted     = false;
                        agv.Update();
                    }
                }
            }

            if (found)
            {
                return(Response.AsRedirect("/agv/table"));
            }
            else
            {
                return(Response.AsText("NAME NOT FOUND"));
            }
        }
Exemplo n.º 9
0
        public dynamic ProcessExternalOrders(dynamic p)
        {
            try
            {
                var orders = this.Bind <DataList <OrderEntry> >();
                if (orders == null)
                {
                    return(HttpStatusCode.NoContent);
                }

                var dborders = Main.Database.Query <TransportOrder>("WHERE ID >= 0");
                foreach (OrderEntry item in orders.data)
                {
                    TransportOrder found = null;
                    foreach (var dbo in dborders)
                    {
                        if (item.id == dbo.ID)
                        {
                            found = dbo;
                        }
                    }

                    log.Debug($"rest got order state {item.OrderState} direction {item.Direction} label {item.Label} job {item.JobNumber} priority {item.Priority} rewind {item.RewindCode}");

                    if (found == null)
                    {
                        // new order from as400
                        if (item.OrderState == 1)
                        {
                            TransportOrder dbn = new TransportOrder()
                            {
                                ID       = item.id,
                                Priority = item.Priority,
                                // OrderState = item.OrderState,
                                AGV           = 0,
                                AGVdest       = 0,
                                CylinderState = item.CylinderState,
                                Diameter      = item.Diameter,
                                Direction     = item.Direction,
                                Label         = item.Label ?? "",
                                ItemNumber    = item.ItemNumber ?? "",
                                JobNumber     = item.JobNumber ?? "",

                                AGV_location_machinename = item.MachineName ?? "",
                                rewind_code = item.RewindCode,
                                manual_mode = item.ManualMode,

                                Inserted   = DateTime.UtcNow,
                                LastChange = DateTime.UtcNow,

                                AGVrequested = new DateTime(2000, 1, 1),
                                AGVdone      = new DateTime(2000, 1, 1),
                                AGVsource    = 0,
                                LSReached    = new DateTime(2000, 1, 1),
                            };

                            dbn.State = TransportOrder.OrderStates.New;

                            if (dbn.manual_mode != 0)
                            {
                                dbn.State = TransportOrder.OrderStates.ManualMode;
                            }

                            if (item.Direction.In(2, 3, 4))  // outgoing
                            {
                                dbn.TransportSource = TransportOrder.Destinations.Storage;
                                dbn.TransportTarget = TransportOrder.Destinations.Press;
                                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                                {
                                    dbn.TransportTarget = TransportOrder.Destinations.Laminator;
                                }
                                // todo more targets

                                var cyl = Cylinder.GetCylinder(item.Label);
                                if (cyl == null || cyl.Cylinder_ID == 0)
                                {
                                    dbn.State = TransportOrder.OrderStates.Error;
                                    log.Error($"cylinder {item.Label} not found");
                                }
                                else
                                {
                                    dbn.Cylinder_ID = cyl.Cylinder_ID;
                                }
                            }
                            else
                            {
                                dbn.TransportSource = TransportOrder.Destinations.Press;
                                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                                {
                                    dbn.TransportSource = TransportOrder.Destinations.Laminator;
                                }
                                dbn.TransportTarget = TransportOrder.Destinations.Storage;

                                // incoming
                                var cyl = Cylinder.GetCylinder(item.Label);
                                if (cyl == null || cyl.Cylinder_ID == 0)
                                {
                                    // unknown diameter
                                    var nc = CreateCylinder(item.Label, -1, item.ItemNumber ?? "", item.JobNumber ?? "");
                                    dbn.Cylinder_ID = nc.Cylinder_ID;
                                }
                                else
                                {
                                    // already created
                                    dbn.Cylinder_ID = cyl.Cylinder_ID;
                                }
                            }
                            dbn.Insert();
                        }
                    }
                    else
                    {
                        if (item.OrderState == 98)   // done -> delete wanted
                        {
                            if (found.Status != "running")
                            {
                                log.Warn($"OrderEntry {found} confirmed (delete).");
                                found.Delete();
                            }
                        }
                        else if (item.OrderState == 3)   // cancel wanted
                        {
                            if (found.State != TransportOrder.OrderStates.RunningOnTrolley)
                            {
                                if ((found.State == TransportOrder.OrderStates.New ||
                                     found.State == TransportOrder.OrderStates.ManualMode) &&
                                    found.AGV == 0)
                                {
                                    log.Warn($"OrderEntry {found} canceled.");
                                    Logic.OrderManagement.TransportOrderDone(found, "canceled by user");

                                    Main.Database.Execute("Update Units SET BlockForManualOrderUntil = @0 " +
                                                          "WHERE Unit_ID >= 11 AND Unit_ID <=13 ",
                                                          DateTime.UtcNow.AddMinutes(BauerLib.Registry.ManuallyBlockMaxMinutes));
                                }
                                else if (found.MovingInside)
                                {
                                    log.Warn($"OrderEntry {found} canceled with error state.");
                                    Logic.OrderManagement.TransportOrderFailed(found, "canceled by user");

                                    Main.Database.Execute("Update Units SET BlockForManualOrderUntil = @0 " +
                                                          "WHERE Unit_ID >= 11 AND Unit_ID <=13 ",
                                                          DateTime.UtcNow.AddMinutes(BauerLib.Registry.ManuallyBlockMaxMinutes));
                                }
                            }
                        }
                        else
                        {
                            if (item.Priority != found.Priority)
                            {
                                log.Info($"Priority changed for {item.id} from {found.Priority} to {item.Priority}");

                                found.Priority = item.Priority;
                                found.Update();
                            }
                        }
                    }
                }
                return(HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                log.Error($"Exception processing OrderList ({ex.Message})", ex);
                log.Error("original POST was:");
                log.Error(GetDocumentContents(Request));
            }
            return(HttpStatusCode.BadRequest);
        }
Exemplo n.º 10
0
        private void testmoves_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex == 5)
                {
                    TestMoveLine tml = testmoves.Rows[e.RowIndex].DataBoundItem as TestMoveLine;

                    string from         = tml.From.ToUpperInvariant();
                    string to           = tml.To.ToUpperInvariant();
                    int    ls_id        = 0;
                    int    unit_id      = 21;
                    bool   going_inside = false;

                    string trolley_nr = tml.Unit.ToUpperInvariant().Trim();
                    if (trolley_nr == "TR1")
                    {
                        unit_id = 21;
                    }
                    if (trolley_nr == "TR2")
                    {
                        unit_id = 22;
                    }
                    if (trolley_nr == "TR3")
                    {
                        unit_id = 23;
                    }
                    if (trolley_nr == "CR1")
                    {
                        unit_id = 31;
                    }
                    if (trolley_nr == "CR2")
                    {
                        unit_id = 32;
                    }

                    if (unit_id >= 21 && unit_id <= 23)
                    {
                        int order_count = Main.Database.ExecuteScalar <int>("SELECT COUNT(*) FROM StorageOrders WHERE ABS(trolley) = @0", unit_id);
                        if (order_count == 0)
                        {
                            CheckTrolleyCylinders(unit_id);
                        }
                    }
                    string left  = from.Trim();
                    string right = to.Trim();

                    string ls1 = Hook.LS01.ToString(",");
                    string ls2 = Hook.LS02.ToString(",");
                    string ls3 = Hook.LS03.ToString(",");

                    if (trolley_nr.StartsWith("CYL"))
                    {
                        var cyl = TestFunctions.PutNewRandomCylinderOnHook(to);
                        if (from == "SMALL")
                        {
                            cyl.Diameter = 230;
                            cyl.Update();
                        }
                        return;
                    }

                    if (left == "MOVE")
                    {
                        string pos = "";
                        if (unit_id == 21)
                        {
                            pos = MovementPlanner.pos.tr1.ToString(",");
                        }
                        if (unit_id == 22)
                        {
                            pos = MovementPlanner.pos.tr2.ToString(",");
                        }
                        if (unit_id == 23)
                        {
                            pos = MovementPlanner.pos.tr3.ToString(",");
                        }
                        if (unit_id == 31)
                        {
                            pos = MovementPlanner.pos.cr1.ToString(",");
                        }
                        if (unit_id == 32)
                        {
                            pos = MovementPlanner.pos.cr2.ToString(",");
                        }

                        if (trolley_nr.StartsWith("CR"))
                        {
                            MoveOrderEntry move = new MoveOrderEntry()
                            {
                                ID          = MoveOrderEntry.GetNextId(),
                                Source      = "",
                                TargetHook  = new Hook(to),
                                Unit_ID     = unit_id,
                                WaitMove_ID = 0,
                                Status      = "new",
                                Trolley     = 0,
                                Carrier     = 0
                            };
                            move.Insert();
                        }
                        else
                        {
                            TestFunctions.SaveMovements(TestFunctions.Check(pos, "", to), unit_id, "new");
                        }

                        LoadGridData();

                        return;
                    }

                    if (left.Contains(","))
                    {
                        going_inside = false; from = left; TestFunctions.PutNewRandomCylinderOnHook(from);
                    }
                    if (right.Contains(","))
                    {
                        going_inside = true; to = right; new Hook(right).ClearID();
                    }

                    Cylinder cy = null;

                    int diameter = 0;

                    if (tml.Button.ToLowerInvariant().Contains("big"))
                    {
                        diameter = 1001;
                    }
                    if (tml.Button.ToLowerInvariant().Contains("small"))
                    {
                        diameter = 230;
                    }

                    if (left == "LS1")
                    {
                        ls_id = 11; from = ls1; cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_id, diameter);
                    }
                    if (left == "LS2")
                    {
                        ls_id = 12; from = ls2; cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_id, diameter);
                    }
                    if (left == "LS3")
                    {
                        ls_id = 13; from = ls3; cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_id, diameter);
                    }
                    if (right == "LS1")
                    {
                        ls_id = 11; to = ls1; Unit.GetUnit(ls_id).ClearOrderData(); Hook.LoadingStation(ls_id).ClearID();
                    }
                    if (right == "LS2")
                    {
                        ls_id = 12; to = ls2; Unit.GetUnit(ls_id).ClearOrderData(); Hook.LoadingStation(ls_id).ClearID();
                    }
                    if (right == "LS3")
                    {
                        ls_id = 13; to = ls3; Unit.GetUnit(ls_id).ClearOrderData(); Hook.LoadingStation(ls_id).ClearID();
                    }

                    if (left != "MOVE" && cy == null)
                    {
                        cy = TestFunctions.PutNewRandomCylinderOnHook(from);

                        if (ls_id == 0)
                        {
                            new Hook(right).ClearID();
                        }
                    }

                    if (going_inside)
                    {
                        TransportOrder ta = new TransportOrder();
                        ta.ID              = TransportOrder.GetNextNegativeID();
                        ta.Cylinder_ID     = (int)cy.ID;
                        ta.Diameter        = cy.Diameter;
                        ta.JobNumber       = "restart inside";
                        ta.ItemNumber      = cy.ItemNumber;
                        ta.TransportSource = ls_id == 0 ? TransportOrder.Destinations.Storage : TransportOrder.Destinations.Scanned;
                        ta.TransportTarget = TransportOrder.Destinations.Storage;

                        ta.TargetHook = right;
                        if (ls_id == 0)
                        {
                            ta.SourceHook = left;
                            ta.JobNumber  = "rearrange";
                        }

                        ta.LoadingStation = ls_id;
                        ta.trolley        = -unit_id;

                        var hook = new Hook(right);
                        var rack = hook.GetRack();
                        if (rack != null)
                        {
                            rack.Order_ID = ta.ID;
                            rack.Update();
                        }
                        ta.Insert();
                    }

                    if (!going_inside)  // outside
                    {
                        cy = new Hook(left).Cylinder;
                        if (cy != null)
                        {
                            if (ls_id > 0)
                            {
                                Hook ls_in = Hook.LoadingStation(ls_id, inside: true);
                                ls_in.CylinderID = 0;
                            }

                            TransportOrder ta = new TransportOrder();
                            ta.ID          = TransportOrder.GetNextNegativeID();
                            ta.Cylinder_ID = (int)cy.ID;
                            ta.Diameter    = cy.Diameter;
                            ta.JobNumber   = cy.JobNumber;
                            ta.ItemNumber  = cy.ItemNumber;

                            if (ls_id != 0)
                            {
                                ta.TransportSource = TransportOrder.Destinations.Storage;
                                ta.TransportTarget = TransportOrder.Destinations.Laminator;
                            }
                            else
                            {
                                ta.TransportSource = TransportOrder.Destinations.Storage;
                                ta.TransportTarget = TransportOrder.Destinations.Storage;
                                ta.SourceHook      = left;
                                ta.TargetHook      = right;
                            }
                            ta.LoadingStation = ls_id;
                            ta.trolley        = -unit_id;

                            ta.Insert();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 11
0
        private void TestMove(object sender, EventArgs e)
        {
            try
            {
                string from         = "";
                string to           = "";
                int    ls_id        = 0;
                int    tr_id        = 21;
                bool   going_inside = false;

                string from_to    = ((Button)sender).Text;
                string trolley_nr = ((Button)sender).Tag.ToString();
                if (trolley_nr == "1")
                {
                    tr_id = 21;
                }
                if (trolley_nr == "2")
                {
                    tr_id = 22;
                }
                if (trolley_nr == "3")
                {
                    tr_id = 23;
                }

                string left  = from_to.Split('-')[0].Trim();
                string right = from_to.Split('>')[1].Trim();

                string ls1 = Hook.LS01.ToString(",");
                string ls2 = Hook.LS02.ToString(",");

                if (left.Contains(","))
                {
                    going_inside = false; from = left; TestFunctions.PutNewRandomCylinderOnHook(from);
                }
                if (right.Contains(","))
                {
                    going_inside = true; to = right; new Hook(right).ClearID();
                }

                Cylinder cy = null;

                if (left == "LS1")
                {
                    ls_id = 11; from = ls1; cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_id);
                }
                if (left == "LS2")
                {
                    ls_id = 12; from = ls2; cy = TestFunctions.PutNewRandomCylinderOnLoadingStation(ls_id);
                }
                if (right == "LS1")
                {
                    ls_id = 11; to = ls1; Unit.GetUnit(ls_id).ClearOrderData(); Hook.LoadingStation(ls_id).ClearID();
                }
                if (right == "LS2")
                {
                    ls_id = 12; to = ls2; Unit.GetUnit(ls_id).ClearOrderData(); Hook.LoadingStation(ls_id).ClearID();
                }

                if (going_inside)
                {
                    TransportOrder ta = new TransportOrder();
                    ta.ID              = TransportOrder.GetNextNegativeID();
                    ta.Cylinder_ID     = (int)cy.ID;
                    ta.Diameter        = cy.Diameter;
                    ta.JobNumber       = "restart inside";
                    ta.ItemNumber      = cy.ItemNumber;
                    ta.TransportSource = TransportOrder.Destinations.Scanned;
                    ta.TransportTarget = TransportOrder.Destinations.Storage;

                    ta.TargetHook = right;

                    ta.LoadingStation = ls_id;
                    ta.trolley        = -tr_id;

                    var hook = new Hook(right);
                    var rack = hook.GetRack();
                    rack.Order_ID = ta.ID;
                    rack.Update();

                    ta.Insert();
                }

                if (!going_inside)  // outside
                {
                    cy = new Hook(left).Cylinder;
                    if (cy != null)
                    {
                        Hook ls_in = Hook.LoadingStation(ls_id, inside: true);
                        ls_in.CylinderID = 0;

                        TransportOrder ta = new TransportOrder();
                        ta.ID              = TransportOrder.GetNextNegativeID();
                        ta.Cylinder_ID     = (int)cy.ID;
                        ta.Diameter        = cy.Diameter;
                        ta.JobNumber       = cy.JobNumber;
                        ta.ItemNumber      = cy.ItemNumber;
                        ta.TransportSource = TransportOrder.Destinations.Storage;
                        ta.TransportTarget = TransportOrder.Destinations.Laminator;

                        ta.LoadingStation = ls_id;
                        ta.trolley        = -tr_id;

                        ta.Insert();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 12
0
        public dynamic SaveLoadingstationData(dynamic parameters)
        {
            try
            {
                var update = this.Bind <DataOnLoadingStation>();
                if (update == null)
                {
                    return(this.Error("Exception saving data, no data given!"));
                }

                List <Cylinder> search = Cylinder.LoadCylinders(update.label);

                Hook ls_out = Hook.LoadingStation(parameters.id, inside: false);
                if (ls_out.CylinderID != 0 && ls_out.CylinderNumber != update.label)
                {
                    return(this.Error("Loadig-Station already occupied"));
                }
                Hook ls_in = Hook.LoadingStation(parameters.id, inside: true);
                if (ls_in.CylinderID != 0)
                {
                    return(this.Error("Loadig-Station already occupied (inside)"));
                }

                int cyl_id = 0;
                if (search != null && search.Count == 1)
                {
                    cyl_id = search[0].Cylinder_ID;
                }

                if (search == null || search.Count == 0)
                {
                    Cylinder c = new Cylinder()
                    {
                        Number = update.label
                    };
                    cyl_id        = Cylinder.GetNextId();
                    c.Cylinder_ID = cyl_id;
                    c.Created     = DateTime.Now;
                    c.Diameter    = update.diameter;

                    c.Info          = "";
                    c.ItemNumber    = update.item;
                    c.JobNumber     = update.jobnumber;
                    c.ProductLength = 0;


                    c.LastLoad     = new DateTime(2000, 1, 1);
                    c.LastModified = new DateTime(2000, 1, 1);
                    c.LastMoved    = new DateTime(2000, 1, 1);
                    c.LastUnload   = new DateTime(2000, 1, 1);
                    c.NextNeeded   = new DateTime(2000, 1, 1);
                    c.ReadyAfter   = new DateTime(2000, 1, 1);
                    c.TargetTime   = new DateTime(2000, 1, 1);

                    c.Width = 2300;

                    c.Insert();
                }

                ls_out.CylinderID = cyl_id;

                TransportOrder ta = new TransportOrder();
                ta.ID = TransportOrder.GetNextID();

                switch (update.id)
                {
                case 1:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS01_outside.ToString(",");
                    break;

                case 2:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS02_outside.ToString(",");
                    break;

                case 3:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS03_outside.ToString(",");
                    break;

                default:
                    return(this.Error("wrong loading station number given!"));
                }
                ta.TransportTarget = TransportOrder.Destinations.Storage;

                ta.Inserted    = DateTime.Now;
                ta.Cylinder_ID = cyl_id;
                ta.State       = TransportOrder.OrderStates.New;
                ta.Insert();
            }
            catch (Exception ex)
            {
                return(this.Error("Exception SaveLoadingstationData", ex));
            }

            return(Response.AsRedirect($"/loadingstation/{parameters.id}"));
        }