public static Tuple <VazbyFiremNaUradyStat, VazbyFiremNaUradyStat> UradyObchodujiciSFirmami_NespolehlivymiPlatciDPH(bool showProgress = false) { var nespolehliveFirmy = StaticData.NespolehlivyPlatciDPH.Get(); Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > > uradyData = new Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > >(); Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > > nespolehliveFirmyKontrakty = new Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > >(); var lockObj = new object(); Devmasters.Batch.Manager.DoActionForAll <NespolehlivyPlatceDPH>(nespolehliveFirmy.Values, (nf) => { var nespolehlivaFirma = Firmy.Get(nf.Ico); var ico = nf.Ico; var smlouvy = SimpleSmlouvyForIco(ico, nf.FromDate, nf.ToDate); foreach (var s in smlouvy) { var allIco = new List <string>( s.Prijemce.Select(m => m.ico).Where(p => !string.IsNullOrEmpty(p)) ); allIco.Add(s.Platce.ico); var urady = allIco.Select(i => Firmy.Get(i)).Where(f => f.PatrimStatu()); foreach (var urad in urady) { lock (lockObj) { if (!uradyData.ContainsKey(urad.ICO)) { uradyData.Add(urad.ICO, new Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > >() { Item = urad.ICO }); } uradyData[urad.ICO].Add(1, s.CalculatedPriceWithVATinCZK); if (!uradyData[urad.ICO].Detail.Any(m => m.Item == ico)) { uradyData[urad.ICO].Detail.Add(new Analysis.BasicData <string>() { Item = ico, CelkemCena = s.CalculatedPriceWithVATinCZK, Pocet = 1 }); } else { var item = uradyData[urad.ICO].Detail.First(m => m.Item == ico); item.Pocet++; item.CelkemCena += s.CalculatedPriceWithVATinCZK; } //-------------- if (!nespolehliveFirmyKontrakty.ContainsKey(ico)) { nespolehliveFirmyKontrakty.Add(ico, new Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > >()); nespolehliveFirmyKontrakty[ico].Ico = ico; } nespolehliveFirmyKontrakty[ico].Add(1, s.CalculatedPriceWithVATinCZK); if (!nespolehliveFirmyKontrakty[ico].Detail.Any(m => m.Item == urad.ICO)) { nespolehliveFirmyKontrakty[ico].Detail.Add(new Analysis.BasicData <string>() { Item = urad.ICO, CelkemCena = s.CalculatedPriceWithVATinCZK, Pocet = 1 }); } else { var item = nespolehliveFirmyKontrakty[ico].Detail.First(m => m.Item == urad.ICO); item.Add(1, s.CalculatedPriceWithVATinCZK); } } } } return(new ActionOutputData()); }, showProgress ? Devmasters.Batch.Manager.DefaultOutputWriter : (Action <string>)null, showProgress ? new Devmasters.Batch.ActionProgressWriter().Write : (Action <ActionProgressData>)null, !System.Diagnostics.Debugger.IsAttached, maxDegreeOfParallelism: 5); VazbyFiremNaUradyStat ret = new VazbyFiremNaUradyStat(); ret.StatniFirmy = uradyData .Where(m => m.Value.Pocet > 0) .Select(kv => kv.Value) .OrderByDescending(o => o.Pocet) .ToList(); VazbyFiremNaUradyStat retNespolehliveFirmy = new VazbyFiremNaUradyStat(); retNespolehliveFirmy.SoukromeFirmy = nespolehliveFirmyKontrakty .Where(m => m.Value.Pocet > 0) .Select(kv => kv.Value) .OrderByDescending(o => o.Pocet) .ToList(); return(new Tuple <VazbyFiremNaUradyStat, VazbyFiremNaUradyStat>(ret, retNespolehliveFirmy)); }
public static AnalysisCalculation.VazbyFiremNaUradyStat UradyObchodujiciSFirmami_s_vazbouNaPolitiky(Relation.AktualnostType aktualnost, bool showProgress = false) { HlidacStatu.Lib.Data.AnalysisCalculation.VazbyFiremNaPolitiky vazbyNaPolitiky = null; List <Sponzoring> sponzorujiciFirmy = null; QueryContainer qc = null; switch (aktualnost) { case HlidacStatu.Lib.Data.Relation.AktualnostType.Aktualni: vazbyNaPolitiky = StaticData.FirmySVazbamiNaPolitiky_aktualni_Cache.Get(); qc = new QueryContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>().Term(t => t.Field(f => f.SVazbouNaPolitikyAktualni).Value(true)); sponzorujiciFirmy = StaticData.SponzorujiciFirmy_Nedavne.Get(); break; case HlidacStatu.Lib.Data.Relation.AktualnostType.Nedavny: vazbyNaPolitiky = StaticData.FirmySVazbamiNaPolitiky_nedavne_Cache.Get(); qc = new QueryContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>().Term(t => t.Field(f => f.SVazbouNaPolitikyNedavne).Value(true)); sponzorujiciFirmy = StaticData.SponzorujiciFirmy_Nedavne.Get(); break; case HlidacStatu.Lib.Data.Relation.AktualnostType.Neaktualni: case HlidacStatu.Lib.Data.Relation.AktualnostType.Libovolny: vazbyNaPolitiky = StaticData.FirmySVazbamiNaPolitiky_vsechny_Cache.Get(); qc = new QueryContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>().Term(t => t.Field(f => f.SVazbouNaPolitiky).Value(true)); sponzorujiciFirmy = StaticData.SponzorujiciFirmy_Vsechny.Get(); break; } Func <int, int, Nest.ISearchResponse <Lib.Data.Smlouva> > searchFunc = null; searchFunc = (size, page) => { return(Lib.ES.Manager.GetESClient().Search <Lib.Data.Smlouva>(a => a .TrackTotalHits(page * size == 0) .Size(size) .From(page * size) .Source(m => m.Excludes(e => e.Field(o => o.Prilohy))) .Query(q => qc) .Scroll("1m") )); }; //TODO predelat z projeti vsech smluv na hledani pres vsechna ICO v RS, vybrani statnich firem, //a dohlednai jejich statistiky vuci jednotlivym ostatnim firmam v RS Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > > uradyStatni = new Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > >(); Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > > uradySoukr = new Dictionary <string, Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > > >(); object lockObj = new object(); Lib.Searching.Tools.DoActionForQuery <Lib.Data.Smlouva>(Lib.ES.Manager.GetESClient(), searchFunc, (hit, param) => { Lib.Data.Smlouva s = hit.Source; List <string> icos = new List <string>(); try { var objednatelIco = s.Platce.ico; if (!string.IsNullOrEmpty(objednatelIco)) { Firma ff = Firmy.Get(objednatelIco); if (!ff.Valid || !ff.PatrimStatu()) { goto end; } //vsichni prijemci smlouvy statniho subjektu icos.AddRange(s.Prijemce.Select(m => m.ico).Where(m => !string.IsNullOrEmpty(m)).Distinct()); lock (lockObj) { foreach (var ico in icos) { if (vazbyNaPolitiky.SoukromeFirmy.ContainsKey(ico) || sponzorujiciFirmy.Any(m => m.IcoDarce == ico)) { if (!uradySoukr.ContainsKey(objednatelIco)) { uradySoukr.Add(objednatelIco, new Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > >()); uradySoukr[objednatelIco].Ico = objednatelIco; } uradySoukr[objednatelIco].Add(1, s.CalculatedPriceWithVATinCZK); if (!uradySoukr[objednatelIco].Detail.Any(m => m.Item == ico)) { uradySoukr[objednatelIco].Detail.Add(new Analysis.BasicData <string>() { Item = ico, CelkemCena = s.CalculatedPriceWithVATinCZK, Pocet = 1 }); } else { var item = uradySoukr[objednatelIco].Detail.First(m => m.Item == ico); item.Add(1, s.CalculatedPriceWithVATinCZK); } } else if (vazbyNaPolitiky.StatniFirmy.ContainsKey(ico)) { if (!uradyStatni.ContainsKey(objednatelIco)) { uradyStatni.Add(objednatelIco, new Analysis.BasicDataForSubject <List <Analysis.BasicData <string> > >()); uradyStatni[objednatelIco].Ico = objednatelIco; } uradyStatni[objednatelIco].Add(1, s.CalculatedPriceWithVATinCZK); if (!uradyStatni[objednatelIco].Detail.Any(m => m.Item == ico)) { uradyStatni[objednatelIco].Detail.Add(new Analysis.BasicData <string>() { Item = ico, CelkemCena = s.CalculatedPriceWithVATinCZK, Pocet = 1 }); } else { var item = uradyStatni[objednatelIco].Detail.First(m => m.Item == ico); item.Add(1, s.CalculatedPriceWithVATinCZK); } } } } } } catch (Exception e) { HlidacStatu.Util.Consts.Logger.Error("ERROR UradyObchodujiciSFirmami_s_vazbouNaPolitiky", e); } end: return(new Devmasters.Batch.ActionOutputData() { CancelRunning = false, Log = null }); }, null, showProgress ? Devmasters.Batch.Manager.DefaultOutputWriter : (Action <string>)null, showProgress ? new Devmasters.Batch.ActionProgressWriter().Write : (Action <ActionProgressData>)null , true , prefix: "UradyObchodujiciSFirmami_s_vazbouNaPolitiky " + aktualnost.ToNiceDisplayName() ); AnalysisCalculation.VazbyFiremNaUradyStat ret = new VazbyFiremNaUradyStat(); ret.SoukromeFirmy = uradySoukr .Where(m => m.Value.Pocet > 0) .Select(kv => kv.Value) .OrderByDescending(o => o.Pocet); return(ret); }