public static TargetPlanDetail ToVModel(this A_TargetPlanDetail value) { TargetPlanDetail result = new TargetPlanDetail { ID = value.ID, SystemID = value.SystemID, IsDeleted = value.IsDeleted, FinMonth = value.FinMonth, FinYear = value.FinYear, CreateTime = value.CreateTime, CreatorName = value.CreatorName, ModifierName = value.ModifierName, ModifyTime = value.ModifyTime, TargetID = value.TargetID, CompanyID = value.CompanyID, TargetPlanID = value.TargetPlanID, Target = value.Target, Versionend = value.Versionend, VersionStart = value.VersionStart, CompanyName = StaticResource.Instance.GetCompanyModel(value.CompanyID).CompanyName, OpeningTime = StaticResource.Instance.GetCompanyModel(value.CompanyID).OpeningTime, }; return(result); }
/// <summary> /// 添加计划指标明细 /// </summary> /// <param name="_BTargetPlan">计划指标</param> public void AddTargetPlanDetail(B_TargetPlan _BTargetPlan) { IList <B_TargetPlanDetail> listTargetPlanDetail = B_TargetplandetailOperator.Instance.GetTargetplandetailList(_BTargetPlan.ID); List <B_TargetPlanDetail> B_TargetPlanDetail = new List <B_TargetPlanDetail>(); if (listTargetPlanDetail.Count == 0) { A_TargetPlan ATargetPlan = A_TargetplanOperator.Instance.GetTargetplanList(Guid.Parse(ddlSystem.SelectedValue), FinYear).FirstOrDefault(); //如果A表有数据从A表取数据,否则取B表上一版本的数据。 if (ATargetPlan != null) { //从A表获取数据插入B表 _BTargetPlan.Description = ATargetPlan.Description; //月报说明 B_TargetplanOperator.Instance.UpdateTargetplan(_BTargetPlan); //更新月报说明 IList <A_TargetPlanDetail> listATargetPlanDetail = A_TargetplandetailOperator.Instance.GetTargetplandetailList(ATargetPlan.ID); // .Instance.GetAMonthlyreportdetailList(ATargetPlan.ID); if (listATargetPlanDetail.Count > 0) { foreach (A_TargetPlanDetail A_TargetPlanDetail in listATargetPlanDetail) { A_TargetPlanDetail.TargetPlanID = _BTargetPlan.ID; A_TargetPlanDetail.ID = Guid.NewGuid(); B_TargetPlanDetail.Add(A_TargetPlanDetail.ToBModel()); } } } else { B_TargetPlan BTargetPlan = B_TargetplanOperator.Instance.GetTargetPlanByProgressOrApproved(Guid.Parse(ddlSystem.SelectedValue), FinYear); if (BTargetPlan != null) { //从B表获取上一版本数据插入B表 IList <B_TargetPlanDetail> LastListBTargetPlanDetail = B_TargetplandetailOperator.Instance.GetTargetplandetailList(BTargetPlan.ID); // B_MonthlyreportdetailOperator.Instance.GetMonthlyreportdetailList(_BTargetPlan.ID); if (LastListBTargetPlanDetail.Count > 0) { foreach (B_TargetPlanDetail TargetPlanDetail in LastListBTargetPlanDetail) { TargetPlanDetail.TargetPlanID = _BTargetPlan.ID; TargetPlanDetail.ID = Guid.NewGuid(); B_TargetPlanDetail.Add(TargetPlanDetail); } } } } //判断当前B_TargetPlaID在明细表中是否有数据。 if (B_TargetPlanDetail.Count > 0) { _BTargetPlan.Status = 5; B_TargetplanOperator.Instance.UpdateTargetplan(_BTargetPlan); //更新计划指标表 B_TargetplandetailOperator.Instance.AddOrUpdateTargetPlanDetail(B_TargetPlanDetail, "Insert"); //更新计划指标明细表 } } }
public static B_TargetPlanDetail ToBModel(this A_TargetPlanDetail value) { B_TargetPlanDetail result = new B_TargetPlanDetail { ID = value.ID, SystemID = value.SystemID, IsDeleted = value.IsDeleted, FinMonth = value.FinMonth, FinYear = value.FinYear, CreateTime = value.CreateTime, CreatorName = value.CreatorName, ModifierName = value.ModifierName, ModifyTime = value.ModifyTime, TargetID = value.TargetID, CompanyID = value.CompanyID, TargetPlanID = value.TargetPlanID, Target = value.Target, Versionend = value.Versionend, VersionStart = value.VersionStart, }; return(result); }
/// <summary> /// 项目公司的总数(第一步:1) /// </summary> /// <param name="_TargetList">指标基础表</param> /// <param name="_ReportDetail">明细数据</param> /// <param name="_TargetPlanList">计划指标表</param> /// <param name="companyModel">公司实体</param> /// <param name="IsQuery">上报:false ,查询:true (因有历史版本,所以需要区分)</param> /// <returns></returns> private List <V_ProjectTarget> SingleProTargetLists(List <C_Target> _TargetList, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList, C_Company companyModel, bool IsQuery) { /* 此段代码的解释: * 这里计算项目系统的合计数据,因计划数都是从指标计划表中获取,而实际数都是从人员上报得到的,导致不同的数据源 * 这里考虑到以后计算方便,只在基础表C_Company表中添加了每个系统的“南区合计”的公司,但是在B_MonthlyReportDetail表中不存储数据 * 同时在指标计划表中,也做了“南区合计”的指标按月分解数据,这样便于取数和计算。 * 本方法主要就是将这些数据拼装成一条新的List,追加到现有的明细表上,好用于前台的展示 */ List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>(); List <A_TargetPlanDetail> TargetPlanListByYear = new List <A_TargetPlanDetail>(); //如果从查询页面进入 if (IsQuery) { //查询的时候按照版本查询,从B表中查出后转换成A表的数据 List <B_TargetPlanDetail> _bTargetPlanList = new List <B_TargetPlanDetail>(); _bTargetPlanList = B_TargetplandetailOperator.Instance.GetTargetplandetailList(_ReportDetail[0].TargetPlanID).ToList(); _bTargetPlanList.ForEach(tp => TargetPlanListByYear.Add(tp.ToAModel())); } else { //获取当前的系统指标 TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(companyModel.SystemID, FinYear); } foreach (C_Target itemTarget in _TargetList.OrderBy(g => g.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); //从明细表中获取数据 MonthlyReportDetail tempModel = null; if (_ReportDetail.Count > 0) { tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID); } if (tempModel == null) { tempModel = new MonthlyReportDetail(); VModel.ProMonthlyReportDetailID = Guid.Empty; } VModel.ProMonthlyReportDetailID = tempModel.ID; VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = itemTarget.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = false; VModel.IsMissTargetCurrent = false; VModel.Counter = 0; //VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate; //去指标分解表中找到 区域合计的指标 A_TargetPlanDetail targetModel = null; if (_TargetPlanList.Count > 0) { targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID && f.FinMonth == FinMonth && f.FinYear == FinYear && f.CompanyID == companyModel.ID); if (targetModel != null) { //区域:当月计划数 ,这个从指标计划中获取 VModel.NPlanAmmount = targetModel.Target; //区域:当月计划数 ,这个从指标计划中获取 //区域:当月累计计划数 VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); } else { VModel.NPlanAmmount = 0; //区域:当月计划数 ,这个从指标计划中获取 //区域:当月累计计划数 VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); } } else { //没有给计划指标 VModel.NPlanAmmount = 0; VModel.NAccumulativePlanAmmount = 0; VModel.NPlanAmmountByYear = 0; // continue; } if (_ReportDetail.Count > 0) { VModel.NActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NActualAmmount); //区域:从B表明细数据中汇总当月的实际数 } else { VModel.NActualAmmount = 0; } if (VModel.NPlanAmmount == 0) { VModel.NActualRate = ""; VModel.NDisplayRate = "/"; } else { VModel.NActualRate = ""; VModel.NDisplayRate = Math.Round((VModel.NActualAmmount / VModel.NPlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");; } //区域:当月累计计划数 // VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? if (_ReportDetail.Count > 0) { VModel.NAccumulativeActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NAccumulativeActualAmmount); } else { VModel.NAccumulativeActualAmmount = 0; } if (VModel.NAccumulativePlanAmmount == 0) { VModel.NAccumulativeActualRate = ""; VModel.NAccumulativeDisplayRate = "/"; } else { VModel.NAccumulativeActualRate = ""; VModel.NAccumulativeDisplayRate = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NAccumulativePlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");; } VModel.NActualAmmountByYear = 0; ////年度计划值 //VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); //年度指标完成比例 if (VModel.NPlanAmmountByYear != 0) { VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1"); } else { VModel.NPlanAmmountByYear = 0; VModel.NDisplayRateByYear = "/"; } VModel.NActualRateByYear = ""; _ProTargetLists.Add(VModel); } return(_ProTargetLists); }
/// <summary> /// 项目公司的指标 /// </summary> /// <param name="companyModel"></param> /// <param name="_isPlan">是获取计划指标分解表</param> /// <param name="_ReportDetail">明细数据</param> /// <param name="_TargetPlanList">指标分解表</param> /// <returns></returns> private List <V_ProjectTarget> ProTargetLists(C_Company companyModel, string _isPlan, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList) { List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>(); List <C_Target> targetList = StaticResource.Instance.TargetList[_SystemID].ToList(); //获取当前的系统指标 List <A_TargetPlanDetail> TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear); //循环指标 if (_isPlan == "ProPlan") //计划指标分解表 { foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); A_TargetPlanDetail targetModel = null; if (_TargetPlanList.Count > 0) { targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID); } else { continue; } if (targetModel != null && targetModel.ID != Guid.Empty) { VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = itemTarget.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = false; VModel.IsMissTargetCurrent = false; VModel.Counter = 0; VModel.NPlanAmmount = targetModel.Target; VModel.NActualAmmount = 0; VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? VModel.NAccumulativeActualAmmount = 0; _ProTargetLists.Add(VModel); } } } else //上报过,在明细表中了 { foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); MonthlyReportDetail tempModel = null; if (_ReportDetail.Count > 0) { tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID); } else { continue; } if (tempModel != null && tempModel.ID != Guid.Empty) { VModel.ProMonthlyReportDetailID = tempModel.ID; VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = tempModel.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = tempModel.IsMissTarget; VModel.IsMissTargetCurrent = tempModel.IsMissTargetCurrent; VModel.Counter = tempModel.Counter; VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate; VModel.NPlanAmmount = tempModel.NPlanAmmount; VModel.NActualAmmount = tempModel.NActualAmmount; VModel.NActualRate = tempModel.NActualRate; VModel.NDisplayRate = tempModel.NDisplayRate; VModel.NAccumulativePlanAmmount = tempModel.NAccumulativePlanAmmount; VModel.NAccumulativeActualAmmount = tempModel.NAccumulativeActualAmmount; VModel.NAccumulativeActualRate = tempModel.NAccumulativeActualRate; VModel.NAccumulativeDisplayRate = tempModel.NAccumulativeDisplayRate; VModel.NActualAmmountByYear = 0; //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); if (VModel.NPlanAmmountByYear != 0) { VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1"); } else { VModel.NPlanAmmountByYear = 0; VModel.NDisplayRateByYear = "/"; } VModel.NActualRateByYear = ""; _ProTargetLists.Add(VModel); } } } return(_ProTargetLists); }
public B_MonthlyReportDetail Calculation(B_MonthlyReportDetail RptDetail, bool WithCounter = true) { B_MonthlyReportDetail rpt = RptDetail; rpt.ReturnType = 0; rpt.Counter = 0; rpt.IsMissTarget = false; rpt.IsMissTargetCurrent = false; C_Target T = StaticResource.Instance.TargetList[RptDetail.SystemID].Find(t => t.ID == RptDetail.TargetID); bool IsBaseline = false; if (T != null && T.BaseLine.Year == rpt.FinYear && T.BaseLine.Month == rpt.FinMonth) { IsBaseline = true; } //是否能够改动计划,如果能改,取Excel数据,不能改取系统计划数(在Taget Configuration配置) List <A_TargetPlanDetail> listCurrentMonthData = StaticResource.Instance.GetTargetPlanList(rpt.SystemID, rpt.FinYear).ToList().Where(p => p.FinMonth == rpt.FinMonth && p.CompanyID == rpt.CompanyID).ToList(); if (listCurrentMonthData.Count > 0) { A_TargetPlanDetail currentMonthData = listCurrentMonthData[0]; bool IsModifiy = false; if (currentMonthData.Target != RptDetail.OPlanAmmount) { //获取当前指标 List <C_Target> listTarget = StaticResource.Instance.GetTargetList(RptDetail.SystemID, RptDetail.CreateTime).ToList().Where(p => p.ID == RptDetail.TargetID).ToList(); if (listTarget.Count > 0) { //获取当前指标的Configuration IList <System.Xml.Linq.XElement> xmlConfiguration = listTarget[0].Configuration.Elements("IsModifyTargetPlanDetail").ToList(); if (xmlConfiguration.Count > 0) { //判断当前指标是否可以修改 if (xmlConfiguration.ToList()[0].GetAttributeValue("IsModifiy", "") == "True") { IsModifiy = true; } } } } //如果IsModifiy为True,则计划数可以修改,否则反之。 if (IsModifiy == false) { RptDetail.OPlanAmmount = currentMonthData.Target; } } A_MonthlyReportDetail lastMonthData = A_MonthlyreportdetailOperator.Instance.GetAMonthlyreportdetail(rpt.SystemID, rpt.CompanyID, rpt.TargetID, rpt.FinYear, rpt.FinMonth - 1); if (lastMonthData != null) { rpt.NAccumulativeActualAmmount = lastMonthData.NAccumulativeActualAmmount + rpt.NActualAmmount; rpt.OAccumulativeActualAmmount = lastMonthData.OAccumulativeActualAmmount + rpt.OActualAmmount; //重新考核需要特殊处理,直接获取累计指标,无承诺补回时间 if (!IsBaseline) { rpt.NAccumulativePlanAmmount = lastMonthData.NAccumulativePlanAmmount + rpt.NPlanAmmount; rpt.OAccumulativePlanAmmount = lastMonthData.OAccumulativePlanAmmount + rpt.OPlanAmmount; rpt.CommitDate = lastMonthData.CurrentMonthCommitDate; rpt.CommitReason = lastMonthData.CurrentMonthCommitReason; } else { IList <A_TargetPlanDetail> ATPD = StaticResource.Instance.GetTargetPlanList(rpt.SystemID, rpt.FinYear).FindAll(P => P.CompanyID == rpt.CompanyID && P.TargetID == rpt.TargetID && P.FinMonth <= rpt.FinMonth); rpt.NAccumulativePlanAmmount = ATPD.Sum(p => p.Target); rpt.OAccumulativePlanAmmount = ATPD.Sum(p => p.Target); } } else { if (WithCounter) { rpt.NAccumulativeActualAmmount = rpt.NActualAmmount; rpt.NAccumulativePlanAmmount = rpt.NPlanAmmount; rpt.OAccumulativeActualAmmount = rpt.OActualAmmount; rpt.OAccumulativePlanAmmount = rpt.OPlanAmmount; } } //特殊处理差额,针对指标 XElement element = null; if (T != null) { element = T.Configuration; } XElement subElement = null; bool IsDifferenceException = false; if (element != null && element.Element("IsDifferenceExceptionTarget") != null) { subElement = element.Elements("IsDifferenceExceptionTarget").ToList()[0]; IsDifferenceException = subElement.GetAttributeValue("value", false); } if (!IsDifferenceException) { rpt.NAccumulativeDifference = rpt.NAccumulativeActualAmmount - rpt.NAccumulativePlanAmmount; rpt.OAccumulativeDifference = rpt.OAccumulativeActualAmmount - rpt.OAccumulativePlanAmmount; rpt.NDifference = rpt.NActualAmmount - rpt.NPlanAmmount; rpt.ODifference = rpt.OActualAmmount - rpt.OPlanAmmount; } rpt = (B_MonthlyReportDetail)this[T.TargetType.ToString()].Calculation(RptDetail); if (T != null && T.NeedEvaluation) { DateTime ReportDate = DateTime.MinValue; DateTime.TryParse(rpt.FinYear + "-" + rpt.FinMonth + "-1 00:00:00", out ReportDate); ReportDate = ReportDate.AddMonths(1).AddMinutes(-5); //累计未完成情况 //上月累计未完成 if (!IsBaseline) //从1月开始重新计算 { if (lastMonthData != null && (lastMonthData.IsMissTarget || lastMonthData.NAccumulativeDifference < 0)) { if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0) { if (lastMonthData.CurrentMonthCommitDate >= ReportDate) { rpt.ReturnType = (int)EnumReturnType.Returning; if (lastMonthData.ReturnType_Sub == EnumHelper.GetEnumDescription(typeof(EnumReturnType_Sub), (int)EnumReturnType_Sub.Sub_UnableReturnByYear)) { rpt.ReturnDescription = lastMonthData.ReturnDescription; } } else { rpt.ReturnType = (int)EnumReturnType.NotReturn; } if (rpt.IsMissTarget && WithCounter) { rpt.Counter = lastMonthData.Counter + 1; } } else { if (lastMonthData.CurrentMonthCommitDate >= ReportDate) { rpt.ReturnType = (int)EnumReturnType.AccomplishInadvance; } else { rpt.ReturnType = (int)EnumReturnType.Accomplish; } if (WithCounter) { rpt.Counter = 0; rpt.FirstMissTargetDate = null; } } //要求期限,是本月 if (lastMonthData.CurrentMonthCommitDate < ReportDate && lastMonthData.CurrentMonthCommitDate >= ReportDate.AddMonths(-1)) { rpt.IsCommitDate = 1; } else { rpt.IsCommitDate = 0; } } //无上月数据(1月)或上月累计完成 else { if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0) { rpt.ReturnType = (int)EnumReturnType.New; if (rpt.IsMissTarget && WithCounter) { rpt.Counter = 1; rpt.FirstMissTargetDate = ReportDate; } } } } //无上月数据(1月)或上月累计完成 //重新计算 else { if (rpt.IsMissTarget || rpt.NAccumulativeDifference < 0) { rpt.ReturnType = (int)EnumReturnType.New; if (rpt.IsMissTarget && WithCounter) { rpt.Counter = 1; rpt.FirstMissTargetDate = ReportDate; } } } } else { rpt.IsMissTarget = false; rpt.IsMissTargetCurrent = false; } return(rpt); }
public List <DictionaryVmodel> GetTagetPlanViewModel(Guid SystemID) { //获取当前月计划数据 List <A_TargetPlanDetail> listTargetPlan = A_TargetplandetailOperator.Instance.GetTargetplandetailListBySYNC(FinYear, FinMonth); //StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear, FinMonth); //获取当前月与之前月的计划数据 List <A_TargetPlanDetail> listTargetPlanToYear = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear); //得到当前系统的所有公司 List <C_Company> listComPany = StaticResource.Instance.CompanyList[_System.ID]; List <DictionaryVmodel> listDV = new List <DictionaryVmodel>(); List <TargetPlanViewModel> listTargetPlanViewModel = null; TargetPlanViewModel tpvm = null; List <C_Target> PlanTarget = new List <C_Target>(); PlanTarget = _Target; if (listTargetPlanToYear != null && listTargetPlanToYear.Count() > 0) { B_TargetPlan Bt = B_TargetplanOperator.Instance.GetTargetPlanByID(listTargetPlanToYear[0].TargetPlanID); PlanTarget = StaticResource.Instance.GetTargetList(_System.ID, Bt.CreateTime).ToList(); } else { PlanTarget = StaticResource.Instance.GetTargetList(_System.ID, DateTime.Now).ToList(); } foreach (C_Target Ctarget in PlanTarget.Where(p => p.NeedReport == true).OrderBy(p => p.Sequence)) { listTargetPlanViewModel = new List <TargetPlanViewModel>(); //根据指标得到此指标下的计划数 List <A_TargetPlanDetail> listTP = listTargetPlan.Where(p => p.TargetID == Ctarget.ID).ToList(); foreach (C_Company company in listComPany) { //判断计划指标分解表中是否存在当前公司 if (listTP.Where(p => p.CompanyID == company.ID).Count() > 0) { A_TargetPlanDetail btp = listTP.Where(p => p.CompanyID == company.ID).ToList().FirstOrDefault(); tpvm = new TargetPlanViewModel(); tpvm.ID = company.ID; tpvm.CompanyName = company.CompanyName; tpvm.NPlanAmmount = btp.Target; List <A_TargetPlanDetail> lst = listTargetPlanToYear.Where(p => p.CompanyID == company.ID && p.TargetID == Ctarget.ID && p.FinMonth <= FinMonth).ToList(); tpvm.NAccumulativePlanAmmount = lst.Sum(p => p.Target); tpvm.NActualAmmount = btp.JQNDifference; listTargetPlanViewModel.Add(tpvm); } } string strHtmlTemplate = GetComplateMonthReportDetailHtmlTemplate(_System.Configuration); listDV.Add(new DictionaryVmodel(Ctarget.TargetName, listTargetPlanViewModel, "Target", strHtmlTemplate)); } return(listDV); }