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(); } }
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(); } }
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); } }
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 { } }
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(); } }
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; } }
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); } }
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")); } }
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); }
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); } }
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); } }
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}")); }