Exemplo n.º 1
0
        private DocumentMakerBase GetDocumentMaker(DocPatternType documentType)
        {
            DocumentMakerBase maker = null;

            switch (documentType)
            {
            case DocPatternType.IncomeDistributionReport:
                maker = new IncomeDistributionReportMaker(m_userName);
                break;

            case DocPatternType.SpecialPlanTransferInstruction:
                maker = new SpecialPlanTransferInstructionMaker(m_userName);
                break;

            case DocPatternType.CashInterestRateConfirmForm:
                maker = new CashInterestRateConfirmFormMaker(m_userName);
                break;

            case DocPatternType.InterestPaymentPlanApplication:
                maker = new InterestPaymentPlanApplicationMaker(m_userName);
                break;

            case DocPatternType.DemoJianYuanReport:
                maker = new DemoJianYuanReportMaker(m_userName);
                break;
            }

            return(maker);
        }
Exemplo n.º 2
0
        protected override object MakeObjectInstance()
        {
            var book = LoadExcelBook(m_excelFileName, m_excelStream);

            List <CellKeyword> keywordList = new List <CellKeyword>();

            var collateralInterestCollectionKey = new CellKeyword("收款信息", "收入回收款", "");

            keywordList.Add(collateralInterestCollectionKey);
            var collateralPrincipalCollectionKey = new CellKeyword("收款信息", "本金回收款", "");

            keywordList.Add(collateralPrincipalCollectionKey);

            var collateralLossAmountKey = new CellKeyword("违约及严重拖欠信息", "新增违约抵押贷款", "金额");

            keywordList.Add(collateralLossAmountKey);

            #region Word文档中表格里的字段抓取

            var 正常贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "正常", "贷款余额");
            keywordList.Add(正常贷款金额);

            var 正常贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "正常", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(正常贷款金额占比);

            var 拖欠31至60天以上贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠31至60天", "贷款余额");
            keywordList.Add(拖欠31至60天以上贷款金额);

            var 拖欠31至60天以上贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠31至60天", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(拖欠31至60天以上贷款金额占比);

            var 拖欠61至90天以上贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠61至90天", "贷款余额");
            keywordList.Add(拖欠61至90天以上贷款金额);

            var 拖欠61至90天以上贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠61至90天", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(拖欠61至90天以上贷款金额占比);

            var 拖欠91至120天以上贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠91至120天", "贷款余额");
            keywordList.Add(拖欠91至120天以上贷款金额);

            var 拖欠91至120天以上贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠91至120天", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(拖欠91至120天以上贷款金额占比);

            var 拖欠121至150天以上贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠121至150天", "贷款余额");
            keywordList.Add(拖欠121至150天以上贷款金额);

            var 拖欠121至150天以上贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠121至150天", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(拖欠121至150天以上贷款金额占比);

            var 拖欠151至180天以上贷款金额 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠151至180天", "贷款余额");
            keywordList.Add(拖欠151至180天以上贷款金额);

            var 拖欠151至180天以上贷款金额占比 = new CellKeyword("本收款期间资产池贷款状态特征", "拖欠151至180天", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(拖欠151至180天以上贷款金额占比);

            var 违约抵押贷款_未被注销金额 = new CellKeyword("本收款期间资产池贷款状态特征", "违约抵押贷款(未被注销)", "贷款余额");
            keywordList.Add(违约抵押贷款_未被注销金额);

            var 违约抵押贷款_未被注销占比 = new CellKeyword("本收款期间资产池贷款状态特征", "违约抵押贷款(未被注销)", "占期末资产池抵押贷款余额百分比");
            keywordList.Add(违约抵押贷款_未被注销占比);

            var 贷款余额_汇总 = new CellKeyword("本收款期间资产池贷款状态特征", "汇总", "贷款余额");
            keywordList.Add(贷款余额_汇总);


            var 期初本金总余额 = new CellKeyword("资产池存续期总体信息", "入池总金额", "上次报告期");
            keywordList.Add(期初本金总余额);

            var 期末本金总余额 = new CellKeyword("资产池存续期总体信息", "入池总金额", "本次报告期");
            keywordList.Add(期末本金总余额);

            var 本期应收本金 = new CellKeyword("资产池存续期总体信息", "", "应收本金");
            keywordList.Add(本期应收本金);

            var 本期应收利息 = new CellKeyword("资产池存续期总体信息", "", "应收利息");
            keywordList.Add(本期应收利息);

            var 收入账_利息_正常回收_上次报告期 = new CellKeyword("收款信息", "计划内还款", new[] { "上一收款期", "利息" });
            keywordList.Add(收入账_利息_正常回收_上次报告期);

            var 收入账_利息_正常回收_本次报告期 = new CellKeyword("收款信息", "计划内还款", new[] { "本收款期", "利息" });
            keywordList.Add(收入账_利息_正常回收_本次报告期);

            var 收入账_利息_提前偿还_上次报告期 = new CellKeyword("收款信息", "提前还款", new[] { "上一收款期", "利息" });
            keywordList.Add(收入账_利息_提前偿还_上次报告期);

            var 收入账_利息_提前偿还_本次报告期 = new CellKeyword("收款信息", "提前还款", new[] { "本收款期", "利息" });
            keywordList.Add(收入账_利息_提前偿还_本次报告期);

            var 收入账_利息_拖欠回收_上次报告期 = new CellKeyword("收款信息", "拖欠回收", new[] { "上一收款期", "利息" });
            keywordList.Add(收入账_利息_拖欠回收_上次报告期);

            var 收入账_利息_拖欠回收_本次报告期 = new CellKeyword("收款信息", "拖欠回收", new[] { "本收款期", "利息" });
            keywordList.Add(收入账_利息_拖欠回收_本次报告期);

            var 收入账_利息_违约回收_上次报告期 = new CellKeyword("收款信息", "违约回收", new[] { "上一收款期", "利息" });
            keywordList.Add(收入账_利息_违约回收_上次报告期);

            var 收入账_利息_违约回收_本次报告期 = new CellKeyword("收款信息", "违约回收", new[] { "本收款期", "利息" });
            keywordList.Add(收入账_利息_违约回收_本次报告期);

            var 收入账_利息_合计_上次报告期 = new CellKeyword("收款信息", "合计", new[] { "上一收款期", "利息" });
            keywordList.Add(收入账_利息_合计_上次报告期);

            var 收入账_利息_合计_本次报告期 = new CellKeyword("收款信息", "合计", "利息");
            keywordList.Add(收入账_利息_合计_本次报告期);

            //var 收入账_其他收入_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_其他收入_上次报告期);

            //var 收入账_其他收入_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_其他收入_本次报告期);

            //var 收入账_上期转存_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_上期转存_上次报告期);

            //var 收入账_上期转存_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_上期转存_本次报告期);

            //var 收入账_合格投资_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_合格投资_上次报告期);

            //var 收入账_合格投资_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入账_合格投资_本次报告期);

            var 收入账_合计_上次报告期 = new CellKeyword("收款信息", "收入回收款", "上一收款期");
            keywordList.Add(收入账_合计_上次报告期);

            var 收入账_合计_本次报告期 = new CellKeyword("收款信息", "收入回收款", "");
            keywordList.Add(收入账_合计_本次报告期);

            var 本金账_本金_正常回收_上次报告期 = new CellKeyword("收款信息", "计划内还款", new[] { "上一收款期", "本金" });
            keywordList.Add(本金账_本金_正常回收_上次报告期);

            var 本金账_本金_正常回收_本次报告期 = new CellKeyword("收款信息", "计划内还款", new[] { "本收款期", "本金" });
            keywordList.Add(本金账_本金_正常回收_本次报告期);

            var 本金账_本金_提前偿还_上次报告期 = new CellKeyword("收款信息", "提前还款", new[] { "上一收款期", "本金" });
            keywordList.Add(本金账_本金_提前偿还_上次报告期);

            var 本金账_本金_提前偿还_本次报告期 = new CellKeyword("收款信息", "提前还款", new[] { "本收款期", "本金" });
            keywordList.Add(本金账_本金_提前偿还_本次报告期);

            var 本金账_本金_拖欠回收_上次报告期 = new CellKeyword("收款信息", "拖欠回收", new[] { "上一收款期", "本金" });
            keywordList.Add(本金账_本金_拖欠回收_上次报告期);

            var 本金账_本金_拖欠回收_本次报告期 = new CellKeyword("收款信息", "拖欠回收", new[] { "本收款期", "本金" });
            keywordList.Add(本金账_本金_拖欠回收_本次报告期);

            var 本金账_本金_违约回收_上次报告期 = new CellKeyword("收款信息", "违约回收", new[] { "上一收款期", "本金" });
            keywordList.Add(本金账_本金_违约回收_上次报告期);

            var 本金账_本金_违约回收_本次报告期 = new CellKeyword("收款信息", "违约回收", new[] { "本收款期", "本金" });
            keywordList.Add(本金账_本金_违约回收_本次报告期);

            var 本金账_本金_合计_上次报告期 = new CellKeyword("收款信息", "合计", new[] { "上一收款期", "本金" });
            keywordList.Add(本金账_本金_合计_上次报告期);

            var 本金账_本金_合计_本次报告期 = new CellKeyword("收款信息", "合计", new[] { "本收款期", "本金" });
            keywordList.Add(本金账_本金_合计_本次报告期);

            //var 本金账_其他收入_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(本金账_其他收入_上次报告期);

            //var 本金账_其他收入_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(本金账_其他收入_本次报告期);

            //var 本金账_上期转存_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(本金账_上期转存_上次报告期);

            //var 本金账_上期转存_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(本金账_上期转存_本次报告期);

            var 本金账_合计_上次报告期 = new CellKeyword("收款信息", "本金回收款", "上一收款期");
            keywordList.Add(本金账_合计_上次报告期);

            var 本金账_合计_本次报告期 = new CellKeyword("收款信息", "本金回收款", "本收款期");
            keywordList.Add(本金账_合计_本次报告期);

            //var 收入及本金合计_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入及本金合计_上次报告期);

            //var 收入及本金合计_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(收入及本金合计_本次报告期);

            //var 税收_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(税收_上次报告期);

            //var 税收_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(税收_本次报告期);

            //var 费用支出_服务总费用支出_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(费用支出_服务总费用支出_上次报告期);

            //var 费用支出_服务总费用支出_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(费用支出_服务总费用支出_本次报告期);

            //var 费用支出_其他费用支出_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(费用支出_其他费用支出_上次报告期);

            //var 费用支出_其他费用支出_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(费用支出_其他费用支出_本次报告期);

            //var 证券账户支出_证券利息总支出_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(证券账户支出_证券利息总支出_上次报告期);

            //var 证券账户支出_证券利息总支出_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(证券账户支出_证券利息总支出_本次报告期);

            //var 证券账户支出_证券本金总支出_上次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(证券账户支出_证券本金总支出_上次报告期);

            //var 证券账户支出_证券本金总支出_本次报告期 = new CellKeyword("收款信息", "计划内还款", "利息");
            //keywordList.Add(证券账户支出_证券本金总支出_本次报告期);

            //var 信托核算日 = new CellKeyword("资产池存续期总体信息", "", "时间111");
            //keywordList.Add(信托核算日);
            #endregion

            var cumlossKey = new CellKeyword("违约及严重拖欠信息", "累计违约时点违约抵押贷款金额", "上一收款期间期末");
            keywordList.Add(cumlossKey);



            var dictValues = GetCellValues(book, keywordList);

            var idrObj = new DemoJianYuanReport();

            idrObj.违约抵押贷款在本收款期间期末所处的处置状态 = new PatternTable();
            GetPatternTable(book, idrObj.违约抵押贷款在本收款期间期末所处的处置状态,
                            "违约抵押贷款在本收款期间期末所处的处置状态及抵销权风险监控",
                            "占初始起算日资产池余额百分比", "汇总");

            idrObj.入池资产笔数与金额特征 = new PatternTable();
            GetPatternTable(book, idrObj.入池资产笔数与金额特征,
                            "资产池存续期总体信息",
                            "单笔贷款平均本金余额", new [] { "1、入池资产笔数与金额特征", "本次报告期" });

            idrObj.入池资产的期限特征 = new PatternTable();
            GetPatternTable(book, idrObj.入池资产的期限特征,
                            "资产池存续期总体信息",
                            "贷款最短到期期限", new [] { "2、入池资产的期限特征", "本次报告期" });

            idrObj.入池资产利率特征 = new PatternTable();
            GetPatternTable(book, idrObj.入池资产利率特征,
                            "资产池存续期总体信息",
                            "最低贷款利率(%)", new [] { "3、入池资产利率特征", "本次报告期" });


            var logicModel = new ProjectLogicModel(m_userName, m_project.ProjectId);
            var schedule   = logicModel.DealSchedule.Instanse;

            List <DateTime> paymentDates = schedule.PaymentDates.ToList();

            var taskPeriod  = m_dbAdapter.TaskPeriod.GetByShortCode(this.m_task.ShortCode);
            var paymentDate = m_task.EndTime.Value;
            if (taskPeriod != null)
            {
                paymentDate = taskPeriod.PaymentDate;
            }

            var datasets = m_dbAdapter.Dataset.GetDatasetByProjectId(m_project.ProjectId);
            paymentDate = paymentDates.First(x => x >= paymentDate);

            datasets = datasets.Where(x => x.PaymentDate.HasValue && x.PaymentDate.Value <= paymentDate).ToList();
            var findDatasets = datasets.Where(x => x.PaymentDate.HasValue && x.PaymentDate.Value == paymentDate).ToList();
            findDatasets.Sort((l, r) => l.AsOfDate.CompareTo(r.AsOfDate));
            CommUtils.Assert(findDatasets.Count >= 1, "找不到偿付期为 [{0}] 的数据模型", DateUtils.DateToString(paymentDate));

            var dataset = findDatasets[0];


            var scheduledPaymentDates = paymentDates.Select(x => x).ToList();
            var rootFolder            = WebConfigUtils.RootFolder;
            var project     = m_dbAdapter.Project.GetProjectById(logicModel.Instance.ProjectId);
            var modelFolder = Path.Combine(rootFolder, project.Model.ModelFolder);
            var ymlFilePath = modelFolder + @"\Script.yml";
            if (File.Exists(ymlFilePath))
            {
                using (StreamReader sr = new StreamReader(ymlFilePath))
                {
                    var nancyDealData = NancyUtils.GetNancyDealDataByFile(sr.BaseStream);
                    if (nancyDealData != null)
                    {
                        scheduledPaymentDates = nancyDealData.ScheduleData.PaymentSchedule.GetScheduledPaymentDates().ToList();
                    }
                }
            }


            var dealScheduleLogicModel = logicModel.DealSchedule.GetByPaymentDay(findDatasets[0].PaymentDate.Value);

            var dbAdapter     = new DBAdapter();
            var datasetFolder = dbAdapter.Dataset.GetDatasetFolder(logicModel.Instance, dataset.AsOfDate);

            Func <CellKeyword, double> parseDouble = (x) =>
            {
                double temp = 0;
                CommUtils.Assert(double.TryParse(dictValues[x], out temp), "无法转换{0}-{1}-{2}为数值",
                                 x.TitleName, x.RowName, x.ColumnName);
                return(temp);
            };

            Func <CellKeyword, double> percentParseDouble = (x) =>
            {
                double temp = 0;
                CommUtils.Assert(dictValues[x].Substring(dictValues[x].Length - 1) == "%", "无法转换{0}-{1}-{2}为数值",
                                 x.TitleName, x.RowName, x.ColumnName);

                var value = dictValues[x].Substring(0, dictValues[x].Length - 1);
                CommUtils.Assert(double.TryParse(value, out temp), "无法转换{0}-{1}-{2}为数值",
                                 x.TitleName, x.RowName, x.ColumnName);
                return(temp / 100);
            };

            //FutureVariables.csv
            //Cumloss
            //违约及严重拖欠信息
            //    累计违约时点违约抵押贷款金额(行) + 上一收款期间期末(列)    16154029.17
            //var futureVariablesPath = Path.Combine(datasetFolder, "FutureVariables.csv");
            //var futureVariablesCsv = new VariablesCsv();
            //futureVariablesCsv.Load(futureVariablesPath);
            //double cumloss = parseDouble(cumlossKey);
            //futureVariablesCsv.UpdateCellValue("Cumloss", paymentDate, cumloss.ToString());
            //futureVariablesCsv.Save();

            //CurrentVariables.csv
            //Collateral.InterestCollection
            //Collateral.PrincipalCollection
            //收款信息
            //    本金回收款(行) + 下一列    123009207.33
            //    收入回收款(行) + 下一列     26277809.43
            //Collateral.Loss.Amount
            //违约及严重拖欠信息
            //    新增违约抵押贷款 (行) + 金额(列)    1834059.79
            //var currentVariablesPath = Path.Combine(datasetFolder, "CurrentVariables.csv");
            //var currentVariablesCsv = new VariablesCsv();
            //currentVariablesCsv.Load(currentVariablesPath);
            //double collateralInterestCollection = parseDouble(collateralInterestCollectionKey);
            //currentVariablesCsv.UpdateCellValue("Collateral.InterestCollection", paymentDate, collateralInterestCollection.ToString());

            //double collateralPrincipalCollection = parseDouble(collateralPrincipalCollectionKey);
            //currentVariablesCsv.UpdateCellValue("Collateral.PrincipalCollection", paymentDate, collateralPrincipalCollection.ToString());

            //double collateralLossAmount = parseDouble(collateralLossAmountKey);
            //currentVariablesCsv.UpdateCellValue("Collateral.Loss.Amount", paymentDate, collateralLossAmount.ToString());
            //currentVariablesCsv.Save();

            var dict = SaveNoteData(m_project.ProjectId);
            idrObj.ExpenseReceived = dict["Expense.Received"];
            idrObj.TaxReceived     = dict["Tax.Received"];

            var maker = new IncomeDistributionReportMaker(m_userName);
            idrObj.DistInfo = (IncomeDistributionReport)maker.GetObjInstance(m_task.ProjectId, paymentDate, m_task.EndTime.Value);


            //从第N期开始模型数据时,getDealSchedule中不包含前几期的PaymentDate
            if (m_project.CnabsDealId.HasValue)
            {
                paymentDates = m_dbAdapter.Model.GetPaymentDates(m_project.CnabsDealId.Value);
            }

            idrObj.CurrentYear    = idrObj.DistInfo.T.Year;
            idrObj.Sequence       = idrObj.DistInfo.Sequence;
            idrObj.SequenceInYear = paymentDates.Where(x => x.Year == idrObj.CurrentYear)
                                    .Count(x => x <= idrObj.DistInfo.T);


            Func <DateTime, DateTime> findScheduledPaymentDate = (date) =>
            {
                //倒序scheduledPaymentDates 然后再查找
                scheduledPaymentDates = scheduledPaymentDates.OrderByDescending(x => x).ToList();
                var lastIndex = paymentDates.Count - paymentDates.IndexOf(date) - 1;
                CommUtils.Assert(scheduledPaymentDates.Count > lastIndex, "找不到scheduledPaymentDate,scheduledPaymentDates.Count <= lastIndex");
                return(scheduledPaymentDates[lastIndex]);
            };

            idrObj.ScheduledPreviousT = findScheduledPaymentDate(idrObj.DistInfo.PreviousT);
            idrObj.ScheduledT         = findScheduledPaymentDate(idrObj.DistInfo.T);

            idrObj.正常贷款金额      = (decimal)parseDouble(正常贷款金额);
            idrObj.正常贷款金额占比    = (decimal)percentParseDouble(正常贷款金额占比);
            idrObj.期初本金总余额     = (decimal)parseDouble(期初本金总余额);
            idrObj.期末本金总余额     = (decimal)parseDouble(期末本金总余额);
            idrObj.本期应收本金      = (decimal)parseDouble(本期应收本金);
            idrObj.本期应收利息      = (decimal)parseDouble(本期应收利息);
            idrObj.拖欠90天以上贷款金额 = (decimal)parseDouble(拖欠91至120天以上贷款金额)
                                 + (decimal)parseDouble(拖欠121至150天以上贷款金额)
                                 + (decimal)parseDouble(拖欠151至180天以上贷款金额)
                                 + (decimal)parseDouble(违约抵押贷款_未被注销金额);
            idrObj.拖欠90天以上贷款金额占比 = idrObj.拖欠90天以上贷款金额 / (decimal)parseDouble(贷款余额_汇总);

            idrObj.拖欠60天以上贷款金额   = idrObj.拖欠90天以上贷款金额 + (decimal)parseDouble(拖欠61至90天以上贷款金额);
            idrObj.拖欠60天以上贷款金额占比 = idrObj.拖欠60天以上贷款金额 / (decimal)parseDouble(贷款余额_汇总);
            //idrObj.拖欠90天以上贷款金额占比 + (decimal)percentParseDouble(拖欠61至90天以上贷款金额占比);

            idrObj.拖欠30天以上贷款金额   = idrObj.拖欠60天以上贷款金额 + (decimal)parseDouble(拖欠31至60天以上贷款金额);
            idrObj.拖欠30天以上贷款金额占比 = idrObj.拖欠30天以上贷款金额 / (decimal)parseDouble(贷款余额_汇总);
            //idrObj.拖欠60天以上贷款金额占比 + (decimal)percentParseDouble(拖欠31至60天以上贷款金额占比);

            idrObj.收入账_利息_正常回收_上次报告期 = (decimal)parseDouble(收入账_利息_正常回收_上次报告期);
            idrObj.收入账_利息_提前偿还_上次报告期 = (decimal)parseDouble(收入账_利息_提前偿还_上次报告期);
            idrObj.收入账_利息_拖欠回收_上次报告期 = (decimal)parseDouble(收入账_利息_拖欠回收_上次报告期);
            idrObj.收入账_利息_违约回收_上次报告期 = (decimal)parseDouble(收入账_利息_违约回收_上次报告期);
            idrObj.收入账_利息_合计_上次报告期   = (decimal)parseDouble(收入账_利息_合计_上次报告期);

            idrObj.收入账_利息_正常回收_本次报告期 = (decimal)parseDouble(收入账_利息_正常回收_本次报告期);
            idrObj.收入账_利息_提前偿还_本次报告期 = (decimal)parseDouble(收入账_利息_提前偿还_本次报告期);
            idrObj.收入账_利息_拖欠回收_本次报告期 = (decimal)parseDouble(收入账_利息_拖欠回收_本次报告期);
            idrObj.收入账_利息_违约回收_本次报告期 = (decimal)parseDouble(收入账_利息_违约回收_本次报告期);
            idrObj.收入账_利息_合计_本次报告期   = (decimal)parseDouble(收入账_利息_合计_本次报告期);
            //idrObj.收入账_其他收入_上次报告期 = (decimal)parseDouble(收入账_其他收入_上次报告期);
            //idrObj.收入账_其他收入_本次报告期 = (decimal)parseDouble(收入账_其他收入_本次报告期);
            //idrObj.收入账_上期转存_上次报告期 = (decimal)parseDouble(收入账_上期转存_上次报告期);
            //idrObj.收入账_上期转存_本次报告期 = (decimal)parseDouble(收入账_上期转存_本次报告期);
            //idrObj.收入账_合格投资_上次报告期 = (decimal)parseDouble(收入账_合格投资_上次报告期);
            //idrObj.收入账_合格投资_本次报告期 = (decimal)parseDouble(收入账_合格投资_本次报告期);
            idrObj.收入账_合计_上次报告期      = (decimal)parseDouble(收入账_合计_上次报告期);
            idrObj.收入账_合计_本次报告期      = (decimal)parseDouble(收入账_合计_本次报告期);
            idrObj.本金账_本金_正常回收_上次报告期 = (decimal)parseDouble(本金账_本金_正常回收_上次报告期);
            idrObj.本金账_本金_正常回收_本次报告期 = (decimal)parseDouble(本金账_本金_正常回收_本次报告期);
            idrObj.本金账_本金_提前偿还_上次报告期 = (decimal)parseDouble(本金账_本金_提前偿还_上次报告期);
            idrObj.本金账_本金_提前偿还_本次报告期 = (decimal)parseDouble(本金账_本金_提前偿还_本次报告期);
            idrObj.本金账_本金_拖欠回收_上次报告期 = (decimal)parseDouble(本金账_本金_拖欠回收_上次报告期);
            idrObj.本金账_本金_拖欠回收_本次报告期 = (decimal)parseDouble(本金账_本金_拖欠回收_本次报告期);
            idrObj.本金账_本金_违约回收_上次报告期 = (decimal)parseDouble(本金账_本金_违约回收_上次报告期);
            idrObj.本金账_本金_违约回收_本次报告期 = (decimal)parseDouble(本金账_本金_违约回收_本次报告期);
            idrObj.本金账_本金_合计_上次报告期   = (decimal)parseDouble(本金账_本金_合计_上次报告期);
            idrObj.本金账_本金_合计_本次报告期   = (decimal)parseDouble(本金账_本金_合计_本次报告期);
            //idrObj.本金账_其他收入_上次报告期 = (decimal)parseDouble(本金账_其他收入_上次报告期);
            //idrObj.本金账_其他收入_本次报告期 = (decimal)parseDouble(本金账_其他收入_本次报告期);
            //idrObj.本金账_上期转存_上次报告期 = (decimal)parseDouble(本金账_上期转存_上次报告期);
            //idrObj.本金账_上期转存_本次报告期 = (decimal)parseDouble(本金账_上期转存_本次报告期);
            idrObj.本金账_合计_上次报告期 = (decimal)parseDouble(本金账_合计_上次报告期);
            idrObj.本金账_合计_本次报告期 = (decimal)parseDouble(本金账_合计_本次报告期);

            idrObj.收入及本金合计_上次报告期 = idrObj.本金账_合计_上次报告期 + idrObj.收入账_合计_上次报告期;
            idrObj.收入及本金合计_本次报告期 = idrObj.本金账_合计_本次报告期 + idrObj.收入账_合计_本次报告期;

            //idrObj.税收_上次报告期 = (decimal)parseDouble(税收_上次报告期);
            //idrObj.税收_本次报告期 = (decimal)parseDouble(税收_本次报告期);
            //idrObj.费用支出_服务总费用支出_上次报告期 = (decimal)parseDouble(费用支出_服务总费用支出_上次报告期);
            //idrObj.费用支出_服务总费用支出_本次报告期 = (decimal)parseDouble(费用支出_服务总费用支出_本次报告期);
            //idrObj.费用支出_其他费用支出_上次报告期 = (decimal)parseDouble(费用支出_其他费用支出_上次报告期);
            //idrObj.费用支出_其他费用支出_本次报告期 = (decimal)parseDouble(费用支出_其他费用支出_本次报告期);
            //idrObj.证券账户支出_证券利息总支出_上次报告期 = (decimal)parseDouble(证券账户支出_证券利息总支出_上次报告期);
            //idrObj.证券账户支出_证券利息总支出_本次报告期 = (decimal)parseDouble(证券账户支出_证券利息总支出_本次报告期);
            //idrObj.证券账户支出_证券本金总支出_上次报告期 = (decimal)parseDouble(证券账户支出_证券本金总支出_上次报告期);
            //idrObj.证券账户支出_证券本金总支出_本次报告期 = (decimal)parseDouble(证券账户支出_证券本金总支出_本次报告期);
            //idrObj.信托核算日 = dictValues[信托核算日];

            //查找收款期间截止日
            {
                var sheet      = FindSheetByTitle(book, 2, 0, "资产池存续期总体信息");
                var val        = GetCellValue(sheet, 0, 0);
                var index      = val.LastIndexOf(idrObj.DistInfo.T.Year.ToString());
                var strEndDate = val.Substring(index);


                var indexBeginDate    = val.IndexOf(idrObj.DistInfo.T.Year.ToString());
                var indexBeginDateDay = val.IndexOf("日");
                var strBeginDate      = val.Substring(indexBeginDate, indexBeginDateDay - indexBeginDate + 1);

                DateTime receiveMoneyBeginDate;
                CommUtils.Assert(DateTime.TryParse(strBeginDate, out receiveMoneyBeginDate),
                                 "解析收款期间开始日失败:" + val);

                idrObj.ReceiveMoneyBeginDate = receiveMoneyBeginDate;


                DateTime receiveMoneyEndDate;
                CommUtils.Assert(DateTime.TryParse(strEndDate, out receiveMoneyEndDate),
                                 "解析收款期间截止日失败:" + val);

                idrObj.ReceiveMoneyEndDate = receiveMoneyEndDate;
            }

            return(idrObj);
        }