/// <summary> /// Eğer başka nöbet gruplarından kalan data varsa siler. /// --artık kayıtlar-- /// </summary> public void AktiftekiArtiklariSil(int nobetUstGrupId) { var mevcutSonuclar = _eczaneNobetSonucAktifService.GetDetaylar2(nobetUstGrupId) .Select(s => s.Id).ToArray(); _eczaneNobetSonucAktifService.CokluSil(mevcutSonuclar); }
/// <summary> /// Her çözüm sonrasında aktif sonuçlardaki mevcut kayıtlar silinip yerine yeni sonuçlar eklenir. /// </summary> /// <param name="data"></param> //[TransactionScopeAspect] public EczaneNobetSonucModel EczaneNobetCozAktifiGuncelle(KirikhanDataModel data) { var mevcutSonuclar = _eczaneNobetSonucAktifService.GetDetaylar2(data.NobetUstGrupId); var guncellenecekSonuclar = mevcutSonuclar .Where(x => data.NobetGruplar.Select(s => s.Id).Contains(x.NobetGrupId)) .Select(s => s.Id).ToArray(); var yeniSonuclar = _eczaneNobetKirikhanOptimization.Solve(data); //gelen datadaki nöbet grup id aktif sonuçlarda varsa o nöbet gruba ait önceki sonuçları sil _eczaneNobetSonucAktifService.CokluSil(guncellenecekSonuclar); AktiftekiArtiklariSil(data.NobetUstGrupId); //yeni sonuçları ekle _eczaneNobetSonucAktifService.CokluEkle(yeniSonuclar.ResultModel); return(yeniSonuclar); }
/// <summary> /// Her çözüm sonrasında aktif sonuçlardaki mevcut kayıtlar silinip yerine yeni sonuçlar eklenir. /// </summary> /// <param name="data"></param> public EczaneNobetSonucModel EczaneNobetCozAktifiGuncelle(MersinMerkezDataModelV2 data) { var mevcutSonuclar = _eczaneNobetSonucAktifService.GetDetaylar2(data.NobetUstGrupId); var guncellenecekSonuclar = mevcutSonuclar .Where(x => data.NobetGruplar.Select(s => s.Id).Contains(x.NobetGrupId)) .Select(s => s.Id).ToArray(); var yeniSonuclar = _eczaneNobetMersinMerkezOptimizationV2.Solve(data); _eczaneNobetSonucAktifService.CokluSil(guncellenecekSonuclar); AktiftekiArtiklariSil(data.NobetUstGrupId); //yeni sonuçları ekle _eczaneNobetSonucAktifService.CokluEkle(yeniSonuclar.ResultModel); return(yeniSonuclar); }
/// <summary> /// eğer başka nöbet gruplarından kalan data varsa siler. /// --artık kayıtlar-- /// </summary> public void AktiftekiArtiklariSil(int nobetUstGrupId) { var mevcutSonuclar = _eczaneNobetSonucAktifService.GetSonuclar2(nobetUstGrupId) .Select(s => s.Id).ToArray(); //foreach (var mevcutSonuc in mevcutSonuclar) //{ // _eczaneNobetSonucAktifService.Delete(mevcutSonuc.Id); //} _eczaneNobetSonucAktifService.CokluSil(mevcutSonuclar); }
/// <summary> /// Her çözüm sonrasında aktif sonuçlardaki mevcut kayıtlar silinip yerine yeni sonuçlar eklenir. /// </summary> /// <param name="data"></param> //[TransactionScopeAspect] public void EczaneNobetCozAktifiGuncelle(MersinMerkezDataModel data) { var mevcutSonuclar = _eczaneNobetSonucAktifService.GetSonuclar2(data.Yil, data.Ay, data.NobetUstGrupId); var guncellenecekSonuclar = mevcutSonuclar .Where(x => data.NobetGruplar.Select(s => s.Id).Contains(x.NobetGrupId)) .Select(s => s.Id).ToArray(); var yeniSonuclar = _eczaneNobetMersinMerkezOptimization.Solve(data); if (yeniSonuclar.ResultModel.Count > 0) { var cozumSuresi = yeniSonuclar.CozumSuresi; var amacFonksiyonu = yeniSonuclar.ObjectiveValue; } //gelen datadaki nöbet grup id aktif sonuçlarda varsa o nöbet gruba ait önceki sonuçları sil //foreach (var yeniSonuc in guncellenecekSonuclar) //{ // _eczaneNobetSonucAktifService.Delete(yeniSonuc.Id); //} _eczaneNobetSonucAktifService.CokluSil(guncellenecekSonuclar); AktiftekiArtiklariSil(data.NobetUstGrupId); //yeni sonuçları ekle //foreach (var yeniSonuc in yeniSonuclar.ResultModel) //{ // //_eczaneNobetSonucAktifService.Insert(yeniSonuc); //} _eczaneNobetSonucAktifService.CokluEkle(yeniSonuclar.ResultModel); #region aynı gün nöbet tutan eczaneler için /* * var ayniGunNobetTutmasiTakipEdilecekGruplar = new List<int> { 20, 21, 22 }; * var nobetGruplar = data.NobetGruplar.Where(w => ayniGunNobetTutmasiTakipEdilecekGruplar.Contains(w.Id)).Select(s => s.Id).ToList(); * if (nobetGruplar.Count() > 0) * { * //çözülen grubun sonuçları * mevcutSonuclar = _eczaneNobetSonucAktifService.GetSonuclar2(data.Yil, data.Ay, data.NobetUstGrupId); * * //aynı aydaki diğer grupların sonuçları * var ayniAydakiDigerGruplarinSonuclari = _eczaneNobetSonucService.GetSonuclar2(data.Yil, data.Ay, data.NobetUstGrupId) * .Where(w => ayniGunNobetTutmasiTakipEdilecekGruplar.Contains(w.NobetGrupId)).ToList(); * var ayIcindekiTumSonuclar = mevcutSonuclar.Union(ayniAydakiDigerGruplarinSonuclari).ToList(); * var ayIcindeCozulenNobetGruplar = ayIcindekiTumSonuclar.Select(s => s.NobetGrupId).Distinct(); * var ayIcindeAyniGunNobet = _nobetUstGrupKisitService.GetKisitPasifMi("ayIcindeAyniGunNobet", data.NobetUstGrupId); * * if (ayIcindeAyniGunNobet && ayIcindeCozulenNobetGruplar.Count() > 1) * { * var ayIcindeAyniGunNobetTutanEczaneler = new List<EczaneCiftGrup>(); * var ayIcindekiTumSonuclar2 = new List<EczaneNobetSonucListe>(); * * foreach (var x in ayIcindekiTumSonuclar) * { * ayIcindekiTumSonuclar2.Add( * new EczaneNobetSonucListe * { * Ay = x.Ay, * Yil = x.Yil, * EczaneAdi = x.EczaneAdi, * EczaneId = x.EczaneId, * EczaneNobetGrupId = x.EczaneNobetGrupId, * Gun = x.Gun, * Tarih = x.Tarih, * HaftaninGunu = (int)x.Tarih.DayOfWeek + 1, * NobetGrupId = x.NobetGrupId, * NobetGrupAdi = x.NobetGrupAdi, * NobetUstGrupId = x.NobetUstGrupId, * NobetGorevTipAdi = x.NobetGorevTipAdi, * NobetGorevTipId = x.NobetGorevTipId, * TakvimId = x.TakvimId, * NobetGunKuralId = x.NobetGunKuralId * }); * } * * ayIcindeAyniGunNobetTutanEczaneler = _eczaneNobetOrtakService.GetCiftGrupluEczaneler(ayIcindekiTumSonuclar2, 2); * var indisId = data.AyIcindeAyniGunNobetTutanEczaneler.Select(s => s.Id).LastOrDefault(); * * foreach (var item in ayIcindeAyniGunNobetTutanEczaneler) * { * data.AyIcindeAyniGunNobetTutanEczaneler * .Add(new EczaneCiftGrup * { * Id = indisId + item.Id, * EczaneId = item.EczaneId, * BirlikteNobetTutmaSayisi = item.BirlikteNobetTutmaSayisi * }); * } * * //ay içinde grup olan eczane varsa bu sayı bitene iterasyon yapılıyor * if (ayIcindeAyniGunNobetTutanEczaneler.Count > 0) * { * data.CozumItereasyon.IterasyonSayisi++; * EczaneNobetCozAktifiGuncelle(data); * } * } * } */ #endregion }