public long InsertSimulationRecord(SimulationRecord sr) { long identity; using (var conn = new SqlConnection(conStr)) { conn.Open(); identity = conn.Insert(sr); conn.Close(); } return(identity); }
private static void MakeSimulation() { SimulationRecordsData simulationRecordsData = new SimulationRecordsData(); SimulationRecord sr; DateTime start = new DateTime(); DateTime end = new DateTime(); int accelerationSeconds = lstTimeParameters.First(x => x.MachineType == "ASRS" && x.MovementType == "ACCELERATION").TimeInSeconds; int decelerationSeconds = lstTimeParameters.First(x => x.MachineType == "ASRS" && x.MovementType == "DECELERATION").TimeInSeconds; foreach (var task in lstMachineTask) { //task batche göre düzenlenecek current batchno değişkeniyle düzenleme yapılabilir bi düşün //task assing time starttan küçük olamaz start = lstMachineTask.IndexOf(task) == 0 || task.AssignTime > end ? task.AssignTime : end;//son tasktan gelsin. if (task.TargetAddress == "ASRS_WH_IN") { end = start.AddSeconds(15); } else { end = start .AddSeconds(accelerationSeconds) //hızlanma .Add(CalculateTime(task)) //hareket metreyle orantılı çarpılıp hesaplanacak .AddSeconds(decelerationSeconds); //yavaşlama } if (task.Sequence == 3) { bool firstRowIsEmpty; AddressData addressData = new AddressData(); firstRowIsEmpty = addressData.GetFirstRowIsEmpty(task.TargetAddress).LastLoadTime <= start.AddMinutes(-7); if (!firstRowIsEmpty) { var bfr = SelectBufferAddress(); task.TargetType = "BUFFER"; task.TargetAddress = bfr.Code; //isnullllll bufferda yoksa yeni tüp seç end = start .AddSeconds(accelerationSeconds) //hızlanma .AddSeconds(20) //hesaplanacak .AddSeconds(decelerationSeconds); //yavaşlama Console.WriteLine("Buffera taşındı..."); } } //adresi güncelle //doluysa buffera task.StartTime = start; task.EndTime = end; task.IsCompleted = true; UpdateTaskData(task); UpdateAddressData(task); sr = new SimulationRecord { ProductNotificationId = task.TaskBatch, DependedTaskBatchNo = task.TaskBatch, MachineCode = task.MachineCode, WaitingPaletteBufferCount = 0, //çekilecek WaitingPaletteConveyorQuee = SelectWaitingPaletteCount(start), //task başladığı anda üretim bildiriminde bekleyen (conveyor yada buffer) çekilecek ExecutionDurationInSeconds = Convert.ToInt32((end - start).TotalSeconds), ExecutionCompleteDateTime = end }; long id = simulationRecordsData.InsertSimulationRecord(sr); Console.WriteLine("Simulasyon Oluştu... " + id.ToString()); } }