public ReconciliationItem(DimensionSet dimensionSet, MeasureSet leftMeasureSet, MeasureSet rightMeasureSet) { this.D1 = dimensionSet.D1; this.D2 = dimensionSet.D2; this.D3 = dimensionSet.D3; this.D4 = dimensionSet.D4; this.D5 = dimensionSet.D5; this.D6 = dimensionSet.D6; this.D7 = dimensionSet.D7; this.D8 = dimensionSet.D8; this.D9 = dimensionSet.D9; this.D10 = dimensionSet.D10; this.D11 = dimensionSet.D11; this.D12 = dimensionSet.D12; this.D13 = dimensionSet.D13; this.D14 = dimensionSet.D14; this.D15 = dimensionSet.D15; this.D16 = dimensionSet.D16; this.D17 = dimensionSet.D17; this.D18 = dimensionSet.D18; this.D19 = dimensionSet.D19; this.D20 = dimensionSet.D20; this.D21 = dimensionSet.D21; this.D22 = dimensionSet.D22; this.D23 = dimensionSet.D23; this.D24 = dimensionSet.D24; this.D25 = dimensionSet.D25; this.D26 = dimensionSet.D26; this.D27 = dimensionSet.D27; this.D28 = dimensionSet.D28; this.D29 = dimensionSet.D29; this.D30 = dimensionSet.D30; if (leftMeasureSet != null) { this.L1 = leftMeasureSet.M1; this.L2 = leftMeasureSet.M2; this.L3 = leftMeasureSet.M3; this.L4 = leftMeasureSet.M4; } if (rightMeasureSet != null) { this.R1 = rightMeasureSet.M1; this.R2 = rightMeasureSet.M2; this.R3 = rightMeasureSet.M3; this.R4 = rightMeasureSet.M4; } }
public override bool Equals(Object obj) { if (obj is MeasureSet && obj != null) { MeasureSet temp = (MeasureSet)obj; if ( Math.Abs(temp.M1 - this.M1) < delta && Math.Abs(temp.M2 - this.M2) < delta && Math.Abs(temp.M3 - this.M3) < delta && Math.Abs(temp.M4 - this.M4) < delta ) { return(true); } else { return(false); } } return(false); }
static private ICollection <ReconciliationItem> Calc(int year, int month) { //Console.WriteLine("Calc is starting at {0}", DateTime.Now.ToString("HH:mm:ss tt")); ScriptExecutor rus = new ScriptExecutor("Provider=MSOLAP.6;Data Source=nav-sql-bck;Initial Catalog=CONS_RUS_UAT", "System.Data.OleDb"); ScriptExecutor off = new ScriptExecutor("Provider=MSOLAP.6;Data Source=nav-sql-bck;Initial Catalog=Offshores_UAT", "System.Data.OleDb"); // ISet<Account> NavRusAccounts = new HashSet<Account>(); // ISet<Account> NavOffshAccounts = new HashSet<Account>(); ISet <Account> NavRusAccounts = new SortedSet <Account>(); ISet <Account> NavOffshAccounts = new SortedSet <Account>(); rus.Run <Account>( MDXScriptBuilder.getNavRusAccountList(), NavRusAccounts, MDXScriptMapper.getAccountByDbDataReader); off.Run <Account>( MDXScriptBuilder.getNavOffshOriginalAccountList(), NavOffshAccounts, MDXScriptMapper.getAccountByDbDataReader); // Test >>>>>>>> ISet <Account> TestAccounts = new SortedSet <Account>(); TestAccounts.Add(new Account("01-0000100")); TestAccounts.Add(new Account("01-0000200")); TestAccounts.Add(new Account("01-0000300")); TestAccounts.Add(new Account("01-0000400")); /* * TestAccounts.Add(new Account("02-0000100")); * TestAccounts.Add(new Account("02-0000200")); * TestAccounts.Add(new Account("02-0000300")); * TestAccounts.Add(new Account("02-0000400")); * * TestAccounts.Add(new Account("04-0000100")); * TestAccounts.Add(new Account("04-0000200")); * TestAccounts.Add(new Account("04-0000800")); * TestAccounts.Add(new Account("04-0000900")); * * TestAccounts.Add(new Account("05-0000000")); * TestAccounts.Add(new Account("05-0000100")); * TestAccounts.Add(new Account("05-0000200")); * TestAccounts.Add(new Account("05-0000800")); */ TestAccounts.Add(new Account("08-0000000")); TestAccounts.Add(new Account("08-0000100")); TestAccounts.Add(new Account("08-0000101")); TestAccounts.Add(new Account("08-0000102")); TestAccounts.Add(new Account("08-0000200")); TestAccounts.Add(new Account("08-0000201")); TestAccounts.Add(new Account("08-0000202")); /* * TestAccounts.Add(new Account("50-0000000")); * TestAccounts.Add(new Account("50-0100000")); * TestAccounts.Add(new Account("50-0200000")); * * TestAccounts.Add(new Account("51-0000000")); * TestAccounts.Add(new Account("51-0100000")); * TestAccounts.Add(new Account("51-0101000")); * TestAccounts.Add(new Account("51-0102000")); * * * TestAccounts.Add(new Account("57-0101000")); * TestAccounts.Add(new Account("57-0102000")); * TestAccounts.Add(new Account("57-0103000")); * TestAccounts.Add(new Account("57-0104000")); * TestAccounts.Add(new Account("57-0200000")); * TestAccounts.Add(new Account("57-0201000")); * TestAccounts.Add(new Account("57-0202000")); * TestAccounts.Add(new Account("57-0203000")); * TestAccounts.Add(new Account("58-0000000")); * TestAccounts.Add(new Account("58-0100000")); * TestAccounts.Add(new Account("58-0101000")); * TestAccounts.Add(new Account("58-0101100")); * TestAccounts.Add(new Account("58-0101200")); * TestAccounts.Add(new Account("58-0101300")); * TestAccounts.Add(new Account("58-0102000")); * TestAccounts.Add(new Account("58-0102100")); * TestAccounts.Add(new Account("58-0102200")); * TestAccounts.Add(new Account("58-0103000")); * TestAccounts.Add(new Account("58-0105000")); * TestAccounts.Add(new Account("58-0105100")); * TestAccounts.Add(new Account("58-0105110")); * TestAccounts.Add(new Account("58-0105120")); * TestAccounts.Add(new Account("58-0200000")); * TestAccounts.Add(new Account("58-0201000")); * TestAccounts.Add(new Account("58-0201100")); * TestAccounts.Add(new Account("58-0201200")); * TestAccounts.Add(new Account("58-0201300")); * TestAccounts.Add(new Account("58-0202000")); * TestAccounts.Add(new Account("58-0202100")); * TestAccounts.Add(new Account("58-0202200")); * TestAccounts.Add(new Account("58-0203000")); * TestAccounts.Add(new Account("58-0204000")); * TestAccounts.Add(new Account("58-0204100")); * TestAccounts.Add(new Account("58-0204200")); * TestAccounts.Add(new Account("58-0205000")); */ NavRusAccounts.IntersectWith(TestAccounts); NavOffshAccounts.IntersectWith(TestAccounts); // Test <<<<<<<< NavOffshAccounts.IntersectWith(NavRusAccounts); IDictionary <DimensionSet, MeasureSet> NavRusGLInfo = new SortedList <DimensionSet, MeasureSet>(); foreach (var account in NavRusAccounts) { String[] args = { account.name, DateTime.Now.ToString("HH:mm:ss tt") }; Console.WriteLine(args[0]); rus.Run <DimensionSet, MeasureSet>( MDXScriptBuilder.getNavRusGLInfo(year, month, account.name), NavRusGLInfo, MDXScriptMapper.getDimensionSetByDbDataReader, MDXScriptMapper.getMeasureSetByDbDataReader, args); } //Console.WriteLine("Rus is ready at {0}. {1} records", DateTime.Now.ToString("HH:mm:ss tt"), NavRusGLInfo.Count); IDictionary <DimensionSet, MeasureSet> NavOffshGLInfo = new SortedList <DimensionSet, MeasureSet>(); foreach (var account in NavOffshAccounts) //foreach (var account in NavRusAccounts) { String[] args = { account.name, DateTime.Now.ToString("HH:mm:ss tt") }; Console.WriteLine(args[0]); off.Run <DimensionSet, MeasureSet>( MDXScriptBuilder.getNavOffshGLInfo(year, month, account.name), NavOffshGLInfo, MDXScriptMapper.getDimensionSetByDbDataReader, MDXScriptMapper.getMeasureSetByDbDataReader, args); // Test !!! // rus.Run<DimensionSet, MeasureSet>( // MDXScriptBuilder.getNavRusGLInfo(year, month, account.name), // NavOffshGLInfo, // MDXScriptMapper.getDimensionSetByAdomdDataReader, MDXScriptMapper.getMeasureSetByAdomdDataReader, // args); } //Console.WriteLine("Off is ready at {0}. {1} records", DateTime.Now.ToString("HH:mm:ss tt"), NavOffshGLInfo.Count); Console.WriteLine("Merger's been started"); ICollection <DimensionSet> allKeys = NavRusGLInfo.Keys; allKeys.Union(NavOffshGLInfo.Keys); ISet <ReconciliationItem> reconciliation = new SortedSet <ReconciliationItem>(); int i = 0; foreach (var key in allKeys) { MeasureSet leftMS = NavRusGLInfo.ContainsKey(key) ? (NavRusGLInfo[key].IsNull() ? null : NavRusGLInfo[key]) : null; MeasureSet rightMS = NavOffshGLInfo.ContainsKey(key) ? (NavOffshGLInfo[key].IsNull() ? null : NavOffshGLInfo[key]) : null; if ((leftMS == null) && (rightMS == null)) { continue; } if ((leftMS != null) && (rightMS != null)) { if (leftMS.Equals(rightMS)) { continue; } } if (i < 1000000) { reconciliation.Add(new ReconciliationItem(key, leftMS, rightMS)); } i += 1; } Console.WriteLine("Merger's finished"); return(reconciliation); }