/// <summary>
        /// 儿童娱乐公司
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="FinMonth"></param>
        /// <param name="DataType"></param>
        /// <returns></returns>
        public List <MonthReportSummaryViewModel> GetChildrenCompany(int Year, int FinMonth, string DataType)
        {
            string       sql = "GetChildrenCompany ";
            SqlParameter p1  = new SqlParameter("@FinYear", Year);
            SqlParameter p2  = new SqlParameter("@FinMonth", FinMonth);
            SqlParameter p3  = new SqlParameter("@DataType", DataType);

            var ds = DbHelper.RunSPReturnDS(sql, ConnectionName, p1, p2, p3);
            List <MonthReportSummaryViewModel> data = new List <MonthReportSummaryViewModel>();

            if (ds.Tables[0].Rows.Count > 3)
            {
                ds.Tables[0].Rows.Cast <System.Data.DataRow>().ForEach(row =>
                {
                    MonthReportSummaryViewModel item = new MonthReportSummaryViewModel();
                    item.TargetName                 = row["TargetName"].ToString();
                    item.SystemName                 = row["SystemName"].ToString();
                    item.ID                         = int.Parse(row["Sequence"].ToString());
                    item.MeasureRate                = row["_Target"].ToString();
                    item.SystemID                   = Guid.Parse(row["SystemID"].ToString());
                    item.TargetID                   = Guid.Parse(row["TargetID"].ToString());
                    item.FinYear                    = int.Parse(row["FinYear"].ToString());
                    item.FinMonth                   = int.Parse(row["FinMonth"].ToString());
                    item.NPlanAmmount               = double.Parse(row["NPlanAmmount"].ToString());
                    item.NActualAmmount             = double.Parse(row["NActualAmmount"].ToString());
                    item.NDifference                = double.Parse(row["NDifference"].ToString());
                    item.NAccumulativePlanAmmount   = double.Parse(row["NAccumulativePlanAmmount"].ToString());
                    item.NAccumulativeActualAmmount = double.Parse(row["NAccumulativeActualAmmount"].ToString());
                    item.NAccumulativeDifference    = double.Parse(row["NAccumulativeDifference"].ToString());

                    data.Add(item);
                });
            }
            return(data);
        }
示例#2
0
        public List <DictionaryVmodel> UpdateDirectlyMonthReportDetail(string rpts, string info, string strMonthReportID)
        {
            List <DictionaryVmodel>     ListObj = new List <DictionaryVmodel>();
            ReportInstance              rpt     = JsonHelper.Deserialize <ReportInstance>(rpts);
            MonthReportSummaryViewModel mrsvm   = JsonHelper.Deserialize <MonthReportSummaryViewModel>(info);
            MonthlyReportDetail         mrd     = rpt.ReportDetails.Find(p => p.ID == mrsvm.MonthlyDetailID);

            if (mrd != null)
            {
                MonthlyReportDetail tempMRD = mrd;
                tempMRD.NActualAmmount = (decimal)mrsvm.NActualAmmount;
                B_MonthlyReportDetail B_detail = CalculationEvaluationEngine.CalculationEvaluationService.Calculation(tempMRD.ToBModel(), "");
                B_MonthlyreportdetailOperator.Instance.UpdateMonthlyreportdetail(B_detail);
                rpt.ReportDetails.Remove(mrd);
                rpt.ReportDetails.Add(B_detail.ToVModel());
            }
            ListObj.Add(new DictionaryVmodel("ReportInstance", rpt));
            ListObj.Add(new DictionaryVmodel("MonthDetail", GetTargetDetailList(rpt, "", false)));
            ListObj.Add(new DictionaryVmodel("Misstarget", GetMissTargetList(rpt, strMonthReportID, true)));
            ListObj.Add(new DictionaryVmodel("MonthReportDescription", GetMonthTRptDescription(rpt)));
            ListObj.Add(new DictionaryVmodel("CurrentMissTargetList", GetCurrentMissTargetList(rpt, strMonthReportID.ToString(), true)));

            SaveJsonData(strMonthReportID.ToGuid(), rpt, ListObj);

            return(ListObj);
        }
        public MonthReportSummaryViewModel SummaryCalculation(MonthReportSummaryViewModel model)
        {
            C_Target T = StaticResource.Instance.TargetList[model.SystemID].Find(t => t.ID == model.TargetID);

            if (StaticResource.Instance.SystemList.Where(p => p.ID == model.SystemID).FirstOrDefault().Category == 3)
            {
                return((MonthReportSummaryViewModel)this["SUM_Group"].Calculation(model));
            }

            return((MonthReportSummaryViewModel)this["SUM_" + T.TargetType.ToString()].Calculation(model));
        }
示例#4
0
        public List <MonthReportSummaryViewModel> GetMonthlyReportDetailSummaryList(bool IsLatestVersion = false)
        {
            List <MonthReportSummaryViewModel> listMonthReportSummaryViewModel = new List <MonthReportSummaryViewModel>();
            MonthReportSummaryViewModel        mrsvm   = null;
            List <MonthlyReportDetail>         MRDList = ReportDetails.Where(p => p.SystemID == _System.ID && (p.Display == true)).ToList();
            List <C_TargetKpi> targetKpiList           = StaticResource.Instance.GetKpiList(_System.ID, FinYear);

            int i = 1;

            foreach (C_Target target in _Target.OrderBy(p => p.Sequence))
            {
                if (target.NeedReport == true)
                {
                    mrsvm                            = new MonthReportSummaryViewModel();
                    mrsvm.ID                         = i;
                    mrsvm.FinYear                    = FinYear;
                    mrsvm.TargetID                   = target.ID;
                    mrsvm.SystemID                   = target.SystemID;
                    mrsvm.TargetName                 = target.TargetName;
                    mrsvm.NPlanAmmount               = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NPlanAmmount));
                    mrsvm.NActualAmmount             = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NActualAmmount));
                    mrsvm.NDifference                = mrsvm.NActualAmmount - mrsvm.NPlanAmmount;
                    mrsvm.NAccumulativePlanAmmount   = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NAccumulativePlanAmmount));
                    mrsvm.NAccumulativeActualAmmount = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NAccumulativeActualAmmount));
                    mrsvm.NAccumulativeDifference    = mrsvm.NAccumulativeActualAmmount - mrsvm.NAccumulativePlanAmmount;
                    if (target.Configuration != null &&
                        target.Configuration.Element("SummaryTargetDisplay") != null &&
                        target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi") != null &&
                        target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi").Value.Trim().ToLower() == "true")
                    {
                        if (targetKpiList.Count > 0 && targetKpiList.Find(p => p.TargetID == target.ID) != null)
                        {
                            mrsvm.MeasureRate = Math.Round(targetKpiList.Find(p => p.TargetID == target.ID).MeasureRate * 100, 0, MidpointRounding.AwayFromZero).ToString() + "%";
                        }
                    }
                    else
                    {
                        mrsvm.MeasureRate1 = (double)Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear).FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero);
                        mrsvm.MeasureRate  = mrsvm.MeasureRate1.ToString();
                    }
                    listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                    i++;
                }
            }
            return(listMonthReportSummaryViewModel);
        }
        public List <ShowDSTargetArea> GetDSTargetCompletedDetail(int Year, int Month, bool IsLatestVersion)
        {
            List <ShowDSTargetArea> Showlist = new List <ShowDSTargetArea>();
            //计算完成率的集合
            List <MonthReportSummaryViewModel> listMonthReportSummaryViewModel = new List <MonthReportSummaryViewModel>();
            C_System SystemModel = C_SystemOperator.Instance.GetSystem(SysDescriptionID);

            if (SystemModel != null)
            {
                List <C_Target>  TargetList  = C_TargetOperator.Instance.GetTargetList(SystemModel.ID, DateTime.Now).Where(t => t.NeedReport == true && t.TargetName != "总部管理费用").ToList();
                List <C_Company> CompanyList = C_CompanyOperator.Instance.GetCompanyList(SystemModel.ID).ToList();
                //上一个月以及当前月的信息
                ReportInstance             LastMonthReport  = null;
                List <MonthlyReportDetail> LastMonthRptList = null;

                if (Month > 1)
                {
                    LastMonthReport = new ReportInstance(SystemModel.ID, Year, Month - 1, IsLatestVersion);
                    //这是上月的数据
                    LastMonthRptList = LastMonthReport.ReportDetails;
                }

                ReportInstance CurrentMonthReport = new ReportInstance(SystemModel.ID, Year, Month, IsLatestVersion);

                //当月的数据
                List <MonthlyReportDetail> CurrentMonthRptList = CurrentMonthReport.ReportDetails;

                int RateIndex = 1;
                for (int i = 1; i < EnumUtil.GetItems(typeof(DSDetailAreaName)).Count + 1; i++)
                {
                    ShowDSTargetArea DSTargetArea = new ShowDSTargetArea();
                    DSTargetArea.ID       = i;
                    DSTargetArea.AreaName = EnumUtil.GetEnumDescription(typeof(DSDetailAreaName), i);
                    if (i < 4)
                    {
                        List <ShowDSTargetCompletedDetail> list = new List <ShowDSTargetCompletedDetail>();
                        foreach (C_Target itemt in TargetList.OrderBy(t => t.Sequence))
                        {
                            //计算完成率实体(上一个月)
                            MonthReportSummaryViewModel Lastmrsvm = new MonthReportSummaryViewModel();
                            //计算完成率实体(当前月及其累计)
                            MonthReportSummaryViewModel mrsvm = new MonthReportSummaryViewModel();
                            decimal LastSumPlan                  = 0;
                            decimal LastSumActual                = 0;
                            decimal CurrentSumPlan               = 0;
                            decimal CurrentSumActual             = 0;
                            decimal CurrentSumAccumulativePlan   = 0;
                            decimal CurrentSumAccumulativeActual = 0;
                            ShowDSTargetCompletedDetail DSModel  = new ShowDSTargetCompletedDetail();
                            DSModel.DetailAreaID     = i;
                            DSModel.DetailTargetName = itemt.TargetName;
                            List <C_Company> NorthCompanyList = CompanyList.Where(t => t.CompanyProperty3 == DSTargetArea.AreaName).ToList();
                            foreach (C_Company c in NorthCompanyList)
                            {
                                if (Month > 1)
                                {
                                    //上一个
                                    MonthlyReportDetail LastReportDetailModel = GetMonthlyReportDetail(c, LastMonthRptList, CurrentMonthRptList, itemt, false);
                                    if (LastReportDetailModel != null && LastReportDetailModel.ID != Guid.Empty)
                                    {
                                        LastSumPlan   += LastReportDetailModel.NPlanAmmount;
                                        LastSumActual += LastReportDetailModel.NActualAmmount;
                                    }
                                }
                                //当前月以及当前月累计
                                MonthlyReportDetail CurrentReportDetailModel = GetMonthlyReportDetail(c, LastMonthRptList, CurrentMonthRptList, itemt, true);
                                if (CurrentReportDetailModel != null && CurrentReportDetailModel.ID != Guid.Empty)
                                {
                                    CurrentSumPlan               += CurrentReportDetailModel.NPlanAmmount;
                                    CurrentSumActual             += CurrentReportDetailModel.NActualAmmount;
                                    CurrentSumAccumulativePlan   += CurrentReportDetailModel.NAccumulativePlanAmmount;
                                    CurrentSumAccumulativeActual += CurrentReportDetailModel.NAccumulativeActualAmmount;
                                }
                            }
                            DSModel.LastPlan            = Convert.ToDecimal(LastSumPlan.ToString("N2"));
                            DSModel.LastActual          = Convert.ToDecimal(LastSumActual.ToString("N2"));
                            DSModel.LastDifference      = Convert.ToDecimal((LastSumActual - LastSumPlan).ToString("N2"));
                            DSModel.CurrentPlan         = Convert.ToDecimal(CurrentSumPlan.ToString("N2"));
                            DSModel.CurrentActual       = Convert.ToDecimal(CurrentSumActual.ToString("N2"));
                            DSModel.CurrentDifference   = Convert.ToDecimal((CurrentSumActual - CurrentSumPlan).ToString("N2"));
                            DSModel.ToCurrentPlan       = Convert.ToDecimal(CurrentSumAccumulativePlan.ToString("N2"));
                            DSModel.ToCurrentActual     = Convert.ToDecimal(CurrentSumAccumulativeActual.ToString("N2"));
                            DSModel.ToCurrentDifference = Convert.ToDecimal((CurrentSumAccumulativeActual - CurrentSumAccumulativePlan).ToString("N2"));
                            //计算完成率(上一个月)
                            Lastmrsvm.ID             = RateIndex;
                            Lastmrsvm.TargetID       = itemt.ID;
                            Lastmrsvm.SystemID       = itemt.SystemID;
                            Lastmrsvm.TargetName     = itemt.TargetName;
                            Lastmrsvm.NPlanAmmount   = (double)(DSModel.LastPlan);
                            Lastmrsvm.NActualAmmount = (double)(DSModel.LastActual);
                            Lastmrsvm.FinYear        = Year;
                            Lastmrsvm.MeasureRate    = "1";

                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(Lastmrsvm));
                            //计算完成率(当前月及其累计)
                            mrsvm.ID                         = RateIndex + 1;
                            mrsvm.TargetID                   = itemt.ID;
                            mrsvm.SystemID                   = itemt.SystemID;
                            mrsvm.TargetName                 = itemt.TargetName;
                            mrsvm.NPlanAmmount               = (double)(DSModel.CurrentPlan);
                            mrsvm.NActualAmmount             = (double)(DSModel.CurrentActual);
                            mrsvm.NAccumulativePlanAmmount   = (double)(DSModel.ToCurrentPlan);
                            mrsvm.NAccumulativeActualAmmount = (double)(DSModel.ToCurrentActual);
                            mrsvm.FinYear                    = Year;
                            mrsvm.MeasureRate                = "1";
                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                            //显示集合
                            list.Add(DSModel);
                        }
                        DSTargetArea.DetailList = list;
                        Showlist.Add(DSTargetArea);
                    }
                    if (i == 4)
                    {
                        List <ShowDSTargetCompletedDetail> Totallist = new List <ShowDSTargetCompletedDetail>();
                        foreach (C_Target itemt in TargetList.OrderBy(t => t.Sequence))
                        {
                            //计算完成率实体(上一个月)
                            MonthReportSummaryViewModel Lastmrsvm = new MonthReportSummaryViewModel();
                            //计算完成率实体(当前月及其累计)
                            MonthReportSummaryViewModel mrsvm = new MonthReportSummaryViewModel();
                            decimal LastSumPlan                  = 0;
                            decimal LastSumActual                = 0;
                            decimal CurrentSumPlan               = 0;
                            decimal CurrentSumActual             = 0;
                            decimal CurrentSumAccumulativePlan   = 0;
                            decimal CurrentSumAccumulativeActual = 0;
                            foreach (ShowDSTargetArea area in Showlist)
                            {
                                foreach (ShowDSTargetCompletedDetail item in area.DetailList)
                                {
                                    if (item.DetailAreaID != i && item.DetailTargetName == itemt.TargetName)
                                    {
                                        LastSumPlan                  += item.LastPlan;
                                        LastSumActual                += item.LastActual;
                                        CurrentSumPlan               += item.CurrentPlan;
                                        CurrentSumActual             += item.CurrentActual;
                                        CurrentSumAccumulativePlan   += item.ToCurrentPlan;
                                        CurrentSumAccumulativeActual += item.ToCurrentActual;
                                    }
                                }
                            }
                            ShowDSTargetCompletedDetail DSModel = new ShowDSTargetCompletedDetail();
                            DSModel.DetailAreaID        = i;
                            DSModel.DetailTargetName    = itemt.TargetName;
                            DSModel.LastPlan            = Convert.ToDecimal(LastSumPlan.ToString("N2"));
                            DSModel.LastActual          = Convert.ToDecimal(LastSumActual.ToString("N2"));
                            DSModel.LastDifference      = Convert.ToDecimal((LastSumActual - LastSumPlan).ToString("N2"));
                            DSModel.CurrentPlan         = Convert.ToDecimal(CurrentSumPlan.ToString("N2"));
                            DSModel.CurrentActual       = Convert.ToDecimal(CurrentSumActual.ToString("N2"));
                            DSModel.CurrentDifference   = Convert.ToDecimal((CurrentSumActual - CurrentSumPlan).ToString("N2"));
                            DSModel.ToCurrentPlan       = Convert.ToDecimal(CurrentSumAccumulativePlan.ToString("N2"));
                            DSModel.ToCurrentActual     = Convert.ToDecimal(CurrentSumAccumulativeActual.ToString("N2"));
                            DSModel.ToCurrentDifference = Convert.ToDecimal((CurrentSumAccumulativeActual - CurrentSumAccumulativePlan).ToString("N2"));
                            //计算完成率(上一个月)
                            Lastmrsvm.ID             = RateIndex;
                            Lastmrsvm.TargetID       = itemt.ID;
                            Lastmrsvm.SystemID       = itemt.SystemID;
                            Lastmrsvm.TargetName     = itemt.TargetName;
                            Lastmrsvm.NPlanAmmount   = (double)(DSModel.LastPlan);
                            Lastmrsvm.NActualAmmount = (double)(DSModel.LastActual);
                            Lastmrsvm.FinYear        = Year;
                            Lastmrsvm.MeasureRate    = "1";
                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(Lastmrsvm));
                            //计算完成率(当前月及其累计)
                            mrsvm.ID                         = RateIndex + 1;
                            mrsvm.TargetID                   = itemt.ID;
                            mrsvm.SystemID                   = itemt.SystemID;
                            mrsvm.TargetName                 = itemt.TargetName;
                            mrsvm.NPlanAmmount               = (double)(DSModel.CurrentPlan);
                            mrsvm.NActualAmmount             = (double)(DSModel.CurrentActual);
                            mrsvm.NAccumulativePlanAmmount   = (double)(DSModel.ToCurrentPlan);
                            mrsvm.NAccumulativeActualAmmount = (double)(DSModel.ToCurrentActual);
                            mrsvm.FinYear                    = Year;
                            mrsvm.MeasureRate                = "1";
                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                            //显示集合
                            Totallist.Add(DSModel);
                        }
                        DSTargetArea.DetailList = Totallist;
                        Showlist.Add(DSTargetArea);
                    }
                }
            }
            //遍历集合修改完成率
            List <ShowDSTargetArea> sShowlist = new List <ShowDSTargetArea>();
            int d = 0;

            for (int b = 0; b < Showlist.Count; b++)
            {
                for (int c = 0; c < Showlist[b].DetailList.Count; c++)
                {
                    Showlist[b].DetailList[c].LastRate = listMonthReportSummaryViewModel[d].NActualRate;
                    d++;
                    Showlist[b].DetailList[c].CurrentRate   = listMonthReportSummaryViewModel[d].NActualRate;
                    Showlist[b].DetailList[c].ToCurrentRate = listMonthReportSummaryViewModel[d].NAccumulativeActualRate;
                    d++;
                }
                sShowlist.Add(Showlist[b]);
            }
            return(sShowlist);
        }
        /// <summary>
        /// 文化集团 B表数据
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="FinMonth"></param>
        /// <returns></returns>
        public List <MonthReportSummaryViewModel> GetWandaCulture_B(int Year, int FinMonth)
        {
            string       sql = "GetWandaCulture_B ";
            SqlParameter p1  = new SqlParameter("@FinYear", Year);
            SqlParameter p2  = new SqlParameter("@FinMonth", FinMonth);


            var ds = DbHelper.RunSPReturnDS(sql, ConnectionName, p1, p2);

            List <MonthReportSummaryViewModel> data = new List <MonthReportSummaryViewModel>();

            if (ds.Tables[0].Rows.Count > 3)
            {
                ds.Tables[0].Rows.Cast <System.Data.DataRow>().ForEach(row =>
                {
                    MonthReportSummaryViewModel item = new MonthReportSummaryViewModel();

                    item.TargetName  = row["TargetName"].ToString();
                    item.SystemName  = row["SystemName"].ToString();
                    item.ID          = int.Parse(row["Sequence"].ToString());
                    item.MeasureRate = row["_Target"].ToString();

                    if (string.IsNullOrEmpty(row["SystemID"].ToString()))
                    {
                        item.SystemID = Guid.Empty;
                        return;
                    }
                    else
                    {
                        item.SystemID = Guid.Parse(row["SystemID"].ToString());
                    }

                    if (string.IsNullOrEmpty(row["TargetID"].ToString()))
                    {
                        item.TargetID = Guid.Empty;
                        return;
                    }
                    else
                    {
                        item.TargetID = Guid.Parse(row["TargetID"].ToString());
                    }

                    if (string.IsNullOrEmpty(row["FinYear"].ToString()))
                    {
                        item.FinYear = 0;
                    }
                    else
                    {
                        item.FinYear = int.Parse(row["FinYear"].ToString());
                    }

                    if (string.IsNullOrEmpty(row["FinMonth"].ToString()))
                    {
                        item.FinMonth = 0;
                    }
                    else
                    {
                        item.FinMonth = int.Parse(row["FinMonth"].ToString());
                    }

                    if (string.IsNullOrEmpty(row["NPlanAmmount"].ToString()))
                    {
                        item.NPlanAmmount = 0;
                    }
                    else
                    {
                        item.NPlanAmmount = double.Parse(row["NPlanAmmount"].ToString());
                    }

                    if (string.IsNullOrEmpty(row["NActualAmmount"].ToString()))
                    {
                        item.NActualAmmount = 0;
                    }
                    else
                    {
                        item.NActualAmmount = double.Parse(row["NActualAmmount"].ToString());
                    }



                    if (string.IsNullOrEmpty(row["NDifference"].ToString()))
                    {
                        item.NDifference = 0;
                    }
                    else
                    {
                        item.NDifference = double.Parse(row["NDifference"].ToString());
                    }


                    if (string.IsNullOrEmpty(row["NAccumulativePlanAmmount"].ToString()))
                    {
                        item.NAccumulativePlanAmmount = 0;
                    }
                    else
                    {
                        item.NAccumulativePlanAmmount = double.Parse(row["NAccumulativePlanAmmount"].ToString());
                    }


                    if (string.IsNullOrEmpty(row["NAccumulativeActualAmmount"].ToString()))
                    {
                        item.NAccumulativeActualAmmount = 0;
                    }
                    else
                    {
                        item.NAccumulativeActualAmmount = double.Parse(row["NAccumulativeActualAmmount"].ToString());
                    }


                    if (string.IsNullOrEmpty(row["NAccumulativeDifference"].ToString()))
                    {
                        item.NAccumulativeDifference = 0;
                    }
                    else
                    {
                        item.NAccumulativeDifference = double.Parse(row["NAccumulativeDifference"].ToString());
                    }

                    data.Add(item);
                });
            }

            return(data);
        }
        /// <summary>
        /// 指标统计(两个方法,一个提供给上报,一个提供给报表查询)
        /// </summary>
        /// <param name="IsReported">true:上报 , false :报表查询 </param>
        /// <returns></returns>
        private List <MonthReportSummaryViewModel> GetMonthlyReportDetailSummaryList(bool IsReported)
        {
            List <MonthReportSummaryViewModel> listMonthReportSummaryViewModel = new List <MonthReportSummaryViewModel>();
            MonthReportSummaryViewModel        mrsvm   = null;
            List <MonthlyReportDetail>         MRDList = ReportDetails.Where(p => p.SystemID == _System.ID && (p.Display == true)).ToList();
            List <C_TargetKpi> targetKpiList           = StaticResource.Instance.GetKpiList(_System.ID, FinYear);


            //这里总是从最新的指标计划获取
            List <A_TargetPlanDetail> ATPDList = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear);


            int i = 1;

            if (MRDList != null)
            {
                if (MRDList.Count > 0)
                {
                    foreach (C_Target target in _Target.OrderBy(p => p.Sequence))
                    {
                        if (target.NeedReport == true)
                        {
                            mrsvm                = new MonthReportSummaryViewModel();
                            mrsvm.ID             = i;
                            mrsvm.FinYear        = FinYear;
                            mrsvm.TargetID       = target.ID;
                            mrsvm.SystemID       = target.SystemID;
                            mrsvm.TargetName     = target.TargetName;
                            mrsvm.NPlanAmmount   = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NPlanAmmount));
                            mrsvm.NActualAmmount = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NActualAmmount));
                            mrsvm.NDifference    = mrsvm.NActualAmmount - mrsvm.NPlanAmmount;

                            if (IsReported)
                            {
                                mrsvm.NAccumulativePlanAmmount = (double)ATPDList.FindAll(p => p.TargetID == target.ID && p.FinMonth <= FinMonth).Sum(s => s.Target);  //(double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NAccumulativePlanAmmount));

                                if (MRDList[0].TargetPlanID != Guid.Empty)
                                {
                                    List <B_TargetPlanDetail> BTPDList = B_TargetplandetailOperator.Instance.GetTargetplandetailList(MRDList[0].TargetPlanID).ToList();
                                    mrsvm.NAccumulativePlanAmmount = (double)BTPDList.FindAll(p => p.TargetID == target.ID && p.FinMonth <= FinMonth).Sum(s => s.Target);
                                }
                                else
                                {
                                    mrsvm.NAccumulativePlanAmmount = (double)ATPDList.FindAll(p => p.TargetID == target.ID && p.FinMonth <= FinMonth).Sum(s => s.Target);
                                }
                                //mrsvm.NAccumulativePlanAmmount = Math.Round(B_TargetplandetailOperator.Instance.GetTargetplandetailList(lstMrd[0].TargetPlanID).ToList().FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7).ToString();
                            }
                            else
                            {
                                mrsvm.NAccumulativePlanAmmount = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NAccumulativePlanAmmount));
                            }

                            mrsvm.NAccumulativeActualAmmount = (double)(MRDList.Where(p => p.TargetID == target.ID).Sum(e => e.NAccumulativeActualAmmount));
                            mrsvm.NAccumulativeDifference    = mrsvm.NAccumulativeActualAmmount - mrsvm.NAccumulativePlanAmmount;

                            if (target.Configuration != null &&
                                target.Configuration.Element("SummaryTargetDisplay") != null &&
                                target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi") != null &&
                                target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi").Value.Trim().ToLower() == "true")
                            {
                                if (targetKpiList.Count > 0 && targetKpiList.Find(p => p.TargetID == target.ID) != null)
                                {
                                    mrsvm.MeasureRate = Math.Round(targetKpiList.Find(p => p.TargetID == target.ID).MeasureRate * 100, 0, MidpointRounding.AwayFromZero).ToString() + "%";
                                }
                            }
                            else
                            {
                                var companyIdList = MRDList.Select(v => v.CompanyID).Distinct().ToList();
                                mrsvm.MeasureRate = Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear, MRDList[0].TargetPlanID).FindAll(P => P.TargetID == target.ID && companyIdList.Contains(P.CompanyID)).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                            }


                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                            if (target.ID == ConfigurationManager.AppSettings["MonthSGRent"].ToGuid())
                            {
                                //租金收缴率-本月
                                mrsvm.NPlanStr = 0.99 * 100 + "%";
                                var actuanub = mrsvm.NActualAmmount / mrsvm.NPlanAmmount;
                                mrsvm.NActualStr = Math.Round(actuanub * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                if (actuanub > 0.99)
                                {
                                    mrsvm.NActualRate = "超计划" + Math.Round((actuanub - 0.99) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NActualRate = mrsvm.NActualRate;
                                }
                                else
                                {
                                    mrsvm.NActualRate = Math.Round((actuanub) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NActualRate = mrsvm.NActualRate;
                                }


                                //租金收缴率-年度累计
                                mrsvm.NAccumulativePlanStr = 0.99 * 100 + "%";
                                var Naccnub = mrsvm.NAccumulativeActualAmmount / mrsvm.NAccumulativePlanAmmount;

                                mrsvm.NAccumulativeActualStr = Math.Round(Naccnub * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";

                                if (Naccnub > 0.99)
                                {
                                    mrsvm.NAccumulativeActualRate = "超计划" + Math.Round((Naccnub - 0.99) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NAccumulativeActualRate = mrsvm.NAccumulativeActualRate;
                                }
                                else
                                {
                                    mrsvm.NAccumulativeActualRate = Math.Round((Naccnub) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NAccumulativeActualRate = mrsvm.NAccumulativeActualRate;
                                }

                                double MeasureRate = (double)StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear).FindAll(P => P.TargetID == target.ID).Sum(P => P.Target);
                                var    merate      = mrsvm.NAccumulativeActualAmmount / MeasureRate;
                                if (merate > 0.99)
                                {
                                    mrsvm.NAnnualCompletionRate = "超计划" + Math.Round((merate - 0.99) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NAnnualCompletionRate = mrsvm.NAnnualCompletionRate;
                                }
                                else
                                {
                                    mrsvm.NAnnualCompletionRate = Math.Round((merate) * 100, 1, MidpointRounding.AwayFromZero).ToString() + "%";
                                    listMonthReportSummaryViewModel[0].NAnnualCompletionRate = mrsvm.NAnnualCompletionRate;
                                }
                            }
                            i++;
                        }
                    }
                }
            }
            return(listMonthReportSummaryViewModel);
        }
        private List <MonthReportSummaryViewModel> GetMonthlyReportDetailSummaryList(bool IsTargetPlan, bool IsReported)
        {
            List <MonthReportSummaryViewModel> listMonthReportSummaryViewModel = new List <MonthReportSummaryViewModel>();
            MonthReportSummaryViewModel        mrsvm = null;

            FormatDownData(IsTargetPlan);
            List <MonthlyReportDetail> MRDList       = ReportDetails;
            List <C_TargetKpi>         targetKpiList = StaticResource.Instance.GetKpiList(_System.ID, FinYear);

            //这里总是从最新的指标计划获取
            //List<A_TargetPlanDetail> ATPDList = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear);

            int i = 1;

            if (MRDList.Count > 0)
            {
                List <A_TargetPlanDetail> ATPDList = StaticResource.Instance.GetTargetPlanList
                                                         (_System.ID, FinYear).Where(v => v.TargetPlanID == ReportDetails.FirstOrDefault().TargetPlanID).ToList();
                foreach (C_Target target in _Target.OrderBy(p => p.Sequence))
                {
                    if (target.NeedReport == true)
                    {
                        List <MonthlyReportDetail> lstMrd = MRDList.Where(p => p.TargetID == target.ID).ToList();
                        if (lstMrd.Count > 0)
                        {
                            mrsvm                 = new MonthReportSummaryViewModel();
                            mrsvm.ID              = i;
                            mrsvm.FinYear         = FinYear;
                            mrsvm.TargetID        = target.ID;
                            mrsvm.SystemID        = target.SystemID;
                            mrsvm.TargetName      = target.TargetName;
                            mrsvm.MonthlyDetailID = lstMrd.FirstOrDefault().ID;
                            mrsvm.NPlanAmmount    = (double)(lstMrd.FirstOrDefault().NPlanAmmount);
                            mrsvm.NActualAmmount  = (double)(lstMrd.FirstOrDefault().NActualAmmount);
                            mrsvm.NDifference     = mrsvm.NActualAmmount - mrsvm.NPlanAmmount;

                            if (IsReported)
                            {
                                //上报的时候
                                mrsvm.NAccumulativePlanAmmount = (double)ATPDList.FindAll(p => p.TargetID == target.ID && p.FinMonth <= FinMonth).Sum(s => s.Target); //(double)(lstMrd.FirstOrDefault().NAccumulativePlanAmmount);
                            }
                            else
                            {
                                //历史查询
                                mrsvm.NAccumulativePlanAmmount = (double)(lstMrd.FirstOrDefault().NAccumulativePlanAmmount);
                            }

                            mrsvm.NAccumulativeActualAmmount = (double)(lstMrd.FirstOrDefault().NAccumulativeActualAmmount);
                            mrsvm.Counter = lstMrd.FirstOrDefault().Counter;
                            mrsvm.NAccumulativeDifference = mrsvm.NAccumulativeActualAmmount - mrsvm.NAccumulativePlanAmmount;
                            if (target.Configuration != null &&
                                target.Configuration.Element("SummaryTargetDisplay") != null &&
                                target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi") != null &&
                                target.Configuration.Element("SummaryTargetDisplay").Attribute("ShowKpi").Value.Trim().ToLower() == "true")
                            {
                                if (targetKpiList.Count > 0 && targetKpiList.Find(p => p.TargetID == target.ID) != null)
                                {
                                    mrsvm.MeasureRate = Math.Round(targetKpiList.Find(p => p.TargetID == target.ID).MeasureRate * 100, 0, MidpointRounding.AwayFromZero).ToString() + "%";
                                }
                            }
                            else
                            {
                                if (IsReported)
                                {
                                    //如果是上报功能,从A表中拿到最新的 全年计划指标
                                    //mrsvm.MeasureRate = Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear).FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                                    mrsvm.MeasureRate = Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear)
                                                                   .Where(v => v.TargetPlanID == ReportDetails.FirstOrDefault().TargetPlanID).ToList()
                                                                   .FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                                }
                                else
                                {
                                    //如果是报表 从B表中获取,历史的计划指标
                                    if (lstMrd[0].TargetPlanID != Guid.Empty)
                                    {
                                        mrsvm.MeasureRate = Math.Round(B_TargetplandetailOperator.Instance.GetTargetplandetailList(lstMrd[0].TargetPlanID).ToList().FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                                    }
                                    else
                                    {
                                        //mrsvm.MeasureRate = Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear).FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                                        mrsvm.MeasureRate = Math.Round(StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear)
                                                                       .Where(v => v.TargetPlanID == ReportDetails.FirstOrDefault().TargetPlanID).ToList()
                                                                       .FindAll(P => P.TargetID == target.ID).Sum(P => P.Target), 7, MidpointRounding.AwayFromZero).ToString();
                                    }
                                }
                            }
                            listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                            i++;
                        }
                    }
                }
            }
            return(listMonthReportSummaryViewModel);
        }
        private List <MonthReportSummaryViewModel> GetMonthlyReportDetailSummaryList()
        {
            List <MonthReportSummaryViewModel> listMonthReportSummaryViewModel = new List <MonthReportSummaryViewModel>();
            MonthReportSummaryViewModel        mrsvm   = null;
            List <MonthlyReportDetail>         MRDList = ReportDetails.Where(p => p.SystemID == _System.ID).ToList();
            List <C_TargetKpi> targetKpiList           = StaticResource.Instance.GetKpiList(_System.ID, FinYear);

            //这里总是从最新的指标计划获取
            List <A_TargetPlanDetail> ATPDList = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear);

            int i = 1;

            if (MRDList.Count > 0)
            {
                foreach (C_Target target in _Target.Where(p => p.HaveDetail == false).OrderBy(p => p.Sequence))
                {
                    List <MonthlyReportDetail>   tempMRDList = null;
                    List <V_GroupTargetXElement> lstVTX      = SplitGroupTargetXml(_System.Configuration);
                    if (lstVTX.Where(p => p.GroupDetail == true && p.TargetValue.ToGuid() == target.ID).Count() > 0)
                    {
                        var jquery = from _target in _Target.Where(p => p.HaveDetail == true)
                                     join mrd in ReportDetails on _target.ID equals mrd.TargetID
                                     select mrd;
                        tempMRDList = jquery.ToList();
                    }
                    else
                    {
                        tempMRDList = MRDList.Where(p => p.TargetID == target.ID).ToList();
                    }

                    mrsvm                = new MonthReportSummaryViewModel();
                    mrsvm.FinYear        = FinYear;
                    mrsvm.TargetID       = target.ID;
                    mrsvm.SystemID       = target.SystemID;
                    mrsvm.TargetName     = target.TargetName;
                    mrsvm.NPlanAmmount   = (double)(tempMRDList.Sum(e => e.NPlanAmmount));
                    mrsvm.NActualAmmount = (double)(tempMRDList.Sum(e => e.NActualAmmount));

                    mrsvm.NAccumulativePlanAmmount   = (double)(tempMRDList.Sum(e => e.NAccumulativePlanAmmount));
                    mrsvm.NAccumulativeActualAmmount = (double)(tempMRDList.Sum(e => e.NAccumulativeActualAmmount));
                    mrsvm.MeasureRate = "0";

                    listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(mrsvm));
                    i++;
                }
            }
            //计算合计(月度报告)
            if (listMonthReportSummaryViewModel.Count > 0)
            {
                MonthReportSummaryViewModel summrsvm = new MonthReportSummaryViewModel();
                summrsvm.FinYear                    = FinYear;
                summrsvm.TargetID                   = listMonthReportSummaryViewModel[0].TargetID;
                summrsvm.SystemID                   = listMonthReportSummaryViewModel[0].SystemID;
                summrsvm.TargetName                 = "合计";
                summrsvm.NPlanAmmount               = listMonthReportSummaryViewModel.Sum(e => e.NPlanAmmount);
                summrsvm.NActualAmmount             = listMonthReportSummaryViewModel.Sum(e => e.NActualAmmount);
                summrsvm.NAccumulativePlanAmmount   = listMonthReportSummaryViewModel.Sum(e => e.NAccumulativePlanAmmount);
                summrsvm.NAccumulativeActualAmmount = listMonthReportSummaryViewModel.Sum(e => e.NAccumulativeActualAmmount);
                summrsvm.MeasureRate                = "0";
                listMonthReportSummaryViewModel.Add(TargetEvaluationEngine.TargetEvaluationService.SummaryCalculation(summrsvm));
            }
            return(listMonthReportSummaryViewModel);
        }