Beispiel #1
0
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <SERVISTEKNISYEN_REPORT_DATA> servisTeknisyenler = R.Query <SERVISTEKNISYEN_REPORT_DATA>(refMr).Where(t => t.SERVISID == ServisId).ToList();
            //Tarih Aralığında Personelin Hareketlerini Bul
            List <TEKNISYENHAREKET> hareketler = R.Query <TEKNISYENHAREKET>(refMr).Where(t => t.GIRISTARIHI.Between(StartDate.startOfDay(), FinishDate.endOfDay()) && t.SERVISTEKNISYENID.In(servisTeknisyenler.select(tks => tks.ID)) && t.DURUM == YeniTeknisyenHareketDurum.Cikis).ToList();
            //Bu Hareketlerde Kullanılan İşEmirİşlemleri Çek
            List <Teknisyen_ViewServisIsEmirIslemIscilikler> iscilikler = Teknisyen_ViewServisIsEmirIslemIscilikler.SelectOverloadFromISLEMID(hareketler.select(t => t.ISEMIRISLEMID).Distinct().toList());

            PuantajGunlugu       pg = new PuantajGunlugu();
            List <ServisGunMola> servisGunMolalari = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);
            List <HareketNeden>  hareketNedenler   = HareketNeden.Select_Nedenler();

            foreach (SERVISTEKNISYEN_REPORT_DATA servisTeknisyen in servisTeknisyenler)
            {
                var            teknisyenHareketler = hareketler.where (t => t.SERVISTEKNISYENID == servisTeknisyen.ID).orderBy(t => t.GIRISTARIHI).toList();
                List <decimal> teknisyenIslemIds   = teknisyenHareketler.select(t => t.ISEMIRISLEMID).Distinct().toList();
                var            teknisyenIscilikler = iscilikler.where (t => teknisyenIslemIds.contains(t.SERVISISEMIRISLEMID)).toList();

                servisTeknisyen.Faturalanan_Dakika = (int)teknisyenIscilikler.Sum(t => t.Iscilik_Dakika_Suresi);

                List <DateTime> tarihler = teknisyenHareketler.select(t => t.GIRISTARIHI.Date).Distinct().toList();
                foreach (var tarih in tarihler)
                {
                    var firstIn = teknisyenHareketler.where (t => t.GIRISTARIHI.Date == tarih).first().GIRISTARIHI;
                    var lastOut = teknisyenHareketler.where (t => t.GIRISTARIHI.Date == tarih).last().CIKISTARIHI;
                    servisTeknisyen.NetMevcudiyet_Dakika += (int)(lastOut - firstIn).TotalMinutes;
                }

                TEKNISYENHAREKET.DAGILIM_SONUCLARI hamPntjData = Puantaj.GetPuantajSonuclari(teknisyenHareketler, pg, servisGunMolalari, hareketNedenler);
                servisTeknisyen.FiiliCalisma_Dakika = hamPntjData.GetSonucSure(NedenFormati.NormalCalisma);
            }

            return(servisTeknisyenler);
        }
Beispiel #2
0
        public static TEKNISYENHAREKET.DAGILIM_SONUCLARI GetPuantajSonuclari(List <TEKNISYENHAREKET> teknisyenHareketleri, PuantajGunlugu pg, List <ServisGunMola> servisGunMolalari, List <HareketNeden> nedenler)
        {
            TEKNISYENHAREKET.DAGILIM_SONUCLARI sonuclar = new TEKNISYENHAREKET.DAGILIM_SONUCLARI();
            foreach (TEKNISYENHAREKET hareket in teknisyenHareketleri)
            {
                List <DateTimeBetween> tarihler = Antibiotic.Helpers.DateTimeHelper.DatePartials(hareket.GIRISTARIHI, hareket.AktifCikisTarih, Antibiotic.Helpers.eTimeTypes.Gun);

                foreach (DateTimeBetween tarihArasi in tarihler)
                {
                    pg.MolalardanDagilimOlustur(servisGunMolalari.first(t => t.HaftaninGunu == tarihArasi.Start.DayOfWeek));
                    pg.InitNedenler(nedenler);

                    int girisSaati = tarihArasi.Start.toDbIntTimeRoundSecond();
                    int cikisSaati = tarihArasi.Finish.toDbIntTimeRoundSecond();

                    pg.Dagilim.forEach(dag =>
                    {
                        int intersectValue = 0;
                        int intersectStart = 0;
                        int intersectEnd   = 0;
                        if (Antibiotic.Helpers.IntegerHelpers.IsIntersect(dag.BaslangicSaati, dag.BitisSaati, girisSaati, cikisSaati, out intersectValue, out intersectStart, out intersectEnd))
                        {
                            //Console.WriteLine($"Hrk:[{tarihArasi.Start.ToString("dd.MM.yyyy HH:mm")}, {tarihArasi.Finish.ToString("dd.MM.yyyy HH:mm")}] => Sonuç:{tarihArasi.Start.Date.ToString("dd.MM.yyyy")} [{dag.NedenKodu}] ({intersectStart.toTimeString()}-{intersectEnd.toTimeString()})={intersectValue.toTimeString()}");
                            TEKNISYENHAREKET.DAGILIM_SONUCU sonuc = new TEKNISYENHAREKET.DAGILIM_SONUCU()
                            {
                                TeknisyenId    = hareket.SERVISTEKNISYENID,
                                Hareket        = hareket,
                                Tarih          = tarihArasi.Start.Date,
                                Neden          = dag.Neden,
                                BaslangicSaati = intersectStart,
                                BitisSaati     = intersectEnd,
                                Sure           = intersectValue,
                            };
                            sonuclar.Add(sonuc);
                        }
                    });
                }
            }
            return(sonuclar);
        }