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