示例#1
0
        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;
            }
        }
示例#2
0
 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);
 }
示例#3
0
        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);
        }