using BLL; using Microsoft.Reporting.WebForms; using System; using System.Collections.Generic; using System.Linq; namespace FineUIPro.Web.Report { public partial class ReportPrint :PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string report = Request.QueryString["report"]; string eProjectId = Request.QueryString["eProjectId"]; if (report == "2") { var eProject = BLL.EProjectService.GeteProjectById(eProjectId); List paras = new List(); if (eProject != null) { //第1行 paras.Add(new ReportParameter("ReportDate", DateTime.Now.ToString("yyyy-MM-dd"))); //第2行 paras.Add(new ReportParameter("ReportCompany", " BASF - YPC Company Limited")); paras.Add(new ReportParameter("ReportCurrUser", this.CurrUser.UserName)); //第3行 paras.Add(new ReportParameter("ProjectControl_JobNo", eProject.ProjectControl_JobNo)); //第4行 paras.Add(new ReportParameter("ProjectControl_JobTitle", eProject.ProjectControl_JobTitle)); paras.Add(new ReportParameter("ProjectControl_BUCode", eProject.ProjectControl_BUCode)); //第5行 //paras.Add(new ReportParameter("ProjectControl_OrginalBudget", decimal.Round(decimal.Parse(eProject.ProjectControl_OrginalBudget.ToString()), 0).ToString())); paras.Add(new ReportParameter("ProjectControl_OrginalBudget", String.Format("{0:N2}", eProject.ProjectControl_OrginalBudget.HasValue ? eProject.ProjectControl_OrginalBudget.Value : 0))); //第6行 //第7行 string scope = ""; decimal? m = eProject.PM_SC_ApprovedQty;//批准的变更数 decimal? n = eProject.PM_SC_PendingQty;//待定的变更数 if (n > 0) { scope = "C"; } else if (n == 0 && m > 0) { scope = "B"; } else if (m == 0 && n == 0) { scope = "A"; } else { scope = "-"; } paras.Add(new ReportParameter("scope", scope.ToString())); string cost = ""; //获取项目的最新成本 //var costManage = BLL.CostReportService.GetMaxMonthCostReportByEprojectId(eProjectId); //if (costManage != null) //{ decimal? orginalBudget = eProject.ProjectControl_OrginalBudget.HasValue ? eProject.ProjectControl_OrginalBudget : 0;//原始的预算 decimal? changedBudget = eProject.ProjectControl_ChangedBudget.HasValue ? eProject.ProjectControl_ChangedBudget : 0;//变更的预算 decimal? actualCost = eProject.ProjectControl_Actual.HasValue ? eProject.ProjectControl_Actual : 0;//实际的成本 decimal? committedPRPO = eProject.ProjectControl_CommittedPRPO.HasValue ? eProject.ProjectControl_CommittedPRPO : 0;//承诺的PR或PO成本 decimal? committedSSRs = eProject.ProjectControl_CommittedSSRs.HasValue ? eProject.ProjectControl_CommittedSSRs : 0; //承诺的SSR成本 decimal? costToComplete = eProject.PM_General_CostToComplete.HasValue ? eProject.PM_General_CostToComplete : 0; //预估的完工任需成本 //预估的最终成本=实际的成本+承诺的PR或PO成本+承诺的SSR成本+预估的完工任需成本 decimal? rmb = actualCost + committedPRPO + committedSSRs + costToComplete; //成本差异=(预估的最终成本-原始的预算-变更的预算)/(原始的预算+变更的预算)*100% if (orginalBudget + changedBudget > 0) { double result = 0; result = Convert.ToDouble((rmb - orginalBudget - changedBudget) / (orginalBudget + changedBudget)) /** 0.1*/; if (result > 0.1) { cost = "C"; } else if (result <= 0.1 && result > 0.05) { cost = "B"; } else if (result <= 0.05) { cost = "A"; } else { cost = "-"; } } //} paras.Add(new ReportParameter("cost", cost.ToString())); DateTime? ms = eProject.PM_MA_ProjectApproval.HasValue ? eProject.PM_MA_ProjectApproval : null; //项目批准的实际时间 DateTime? x = eProject.ProjectControl_CM_SchEnd.HasValue ? eProject.ProjectControl_CM_SchEnd : null;//计划的机械电仪施工结束时间 DateTime? y = eProject.CM_CM_RevisedEnd.HasValue ? eProject.CM_CM_RevisedEnd : null;//修正的机械电仪施工结束时间 int a = 0; int b = 0; int c = 0; string schedule = ""; if (y.HasValue && x.HasValue) { a = (y - x).Value.Days; } if (x.HasValue && ms.HasValue) { b = (x - ms).Value.Days; } if (b != 0) { c = a / b; if (c > 0.1) { schedule = "C"; } else if (0.1 >= c && c > 0.05) { schedule = "B"; } else if (c <= 0.05) { schedule = "A"; } else { schedule = "-"; } } paras.Add(new ReportParameter("schedule", schedule.ToString())); paras.Add(new ReportParameter("PM_SC_ApprovedQty", eProject.PM_SC_ApprovedQty.HasValue ? eProject.PM_SC_ApprovedQty.Value.ToString("N0") : "0")); paras.Add(new ReportParameter("PM_SC_ApprovedCost", String.Format("{0:N2}", eProject.PM_SC_ApprovedCost.HasValue ? eProject.PM_SC_ApprovedCost.Value : 0))); paras.Add(new ReportParameter("PM_SC_PendingQty", eProject.PM_SC_PendingQty.HasValue ? eProject.PM_SC_PendingQty.Value.ToString("N0") : "0")); paras.Add(new ReportParameter("PM_SC_PendingCost", String.Format("{0:N2}", eProject.PM_SC_PendingCost.HasValue ? eProject.PM_SC_PendingCost.Value : 0))); //新增加的逻辑数据 if (!eProject.Detail_Eng_Civil_SchStart.HasValue && !eProject.Detail_Eng_Civil_SchEnd.HasValue && !eProject.Detail_Eng_MechEI_SchStart.HasValue && !eProject.Detail_Eng_MechEI_SchEnd.HasValue) { var plan = BLL.ResourcePlanService.GetResourcePlanByEProjectId(eProjectId).FirstOrDefault(); if (plan != null) { paras.Add(new ReportParameter("ProjectControl_CC_SchStart", plan.Detail_Eng_Civil_Sch_Start.HasValue ? string.Format("{0:yyyy-MM-dd}", plan.Detail_Eng_Civil_Sch_Start) : "")); paras.Add(new ReportParameter("ProjectControl_CC_SchEnd", plan.Detail_Eng_Civil_Sch_End.HasValue ? string.Format("{0:yyyy-MM-dd}", plan.Detail_Eng_Civil_Sch_End) : "")); paras.Add(new ReportParameter("ProjectControl_CC_SchEnd", plan.Detail_Eng_Civil_Sch_End.HasValue ? string.Format("{0:yyyy-MM-dd}", plan.Detail_Eng_Civil_Sch_End) : "")); decimal schProgress = 0; decimal civilSchStart = 0; decimal civilSchEnd = 0; if (plan.Detail_Eng_Civil_Sch_Start.HasValue) { civilSchStart = (DateTime.Now - plan.Detail_Eng_Civil_Sch_Start).Value.Days; } if (plan.Detail_Eng_Civil_Sch_Start.HasValue && plan.Detail_Eng_Civil_Sch_End.HasValue) { civilSchEnd = (plan.Detail_Eng_Civil_Sch_End - plan.Detail_Eng_Civil_Sch_Start).Value.Days; } if (civilSchEnd > 0) { schProgress = civilSchStart / civilSchEnd * 100; if (schProgress > 100) { paras.Add(new ReportParameter("ProjectControl_CC_Progress", "100.00")); } else if (schProgress < 0) { paras.Add(new ReportParameter("ProjectControl_CC_Progress", "0.00")); } else { paras.Add(new ReportParameter("ProjectControl_CC_Progress", schProgress.ToString("0.00"))); } } paras.Add(new ReportParameter("ProjectControl_CM_SchStart", plan.Detail_Eng_Mech_EI_Sch_Start.HasValue ? string.Format("{0:yyyy-MM-dd}", plan.Detail_Eng_Mech_EI_Sch_Start) : "")); paras.Add(new ReportParameter("ProjectControl_CM_SchEnd", plan.Detail_Eng_Mech_EI_Sch_End.HasValue ? string.Format("{0:yyyy-MM-dd}", plan.Detail_Eng_Mech_EI_Sch_End) : "")); decimal schMechEIProgress = 0; decimal mechEISchStart = 0; decimal mechEISchEnd = 0; if (plan.Detail_Eng_Mech_EI_Sch_Start.HasValue) { mechEISchStart = (DateTime.Now - plan.Detail_Eng_Mech_EI_Sch_Start).Value.Days; } if (plan.Detail_Eng_Mech_EI_Sch_Start.HasValue && plan.Detail_Eng_Mech_EI_Sch_End.HasValue) { mechEISchEnd = (plan.Detail_Eng_Mech_EI_Sch_End - plan.Detail_Eng_Mech_EI_Sch_Start).Value.Days; } if (mechEISchEnd > 0) { schMechEIProgress = mechEISchStart / mechEISchEnd * 100; } if (schMechEIProgress > 100) { paras.Add(new ReportParameter("ProjectControl_CM_Progress", "100.00")); } else if (schMechEIProgress < 0) { paras.Add(new ReportParameter("ProjectControl_CM_Progress", "0.00")); } else { paras.Add(new ReportParameter("ProjectControl_CM_Progress", schMechEIProgress.ToString("#0.00"))); } } } else { //老数据有值显示老数据中的值 if (eProject.Detail_Eng_Civil_SchStart.HasValue) { paras.Add(new ReportParameter("ProjectControl_CC_SchStart", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_Civil_SchStart))); } if (eProject.Detail_Eng_Civil_SchEnd.HasValue) { paras.Add(new ReportParameter("ProjectControl_CC_SchEnd", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_Civil_SchEnd))); } if (eProject.Detail_Eng_Civil_SchProgress.HasValue) { paras.Add(new ReportParameter("ProjectControl_CC_Progress", eProject.Detail_Eng_Civil_SchProgress.Value.ToString("#0.00"))); } else { decimal schEngCivilProgress = 0; decimal schEngCivilStart = 0; decimal schEngCivilEnd = 0; if (eProject.Detail_Eng_Civil_SchStart.HasValue) { schEngCivilStart = (DateTime.Now - eProject.Detail_Eng_Civil_SchStart).Value.Days; } if (eProject.Detail_Eng_Civil_SchStart.HasValue && eProject.Detail_Eng_Civil_SchEnd.HasValue) { schEngCivilEnd = (eProject.Detail_Eng_Civil_SchEnd - eProject.Detail_Eng_Civil_SchStart).Value.Days; } if (schEngCivilEnd > 0) { schEngCivilProgress = schEngCivilStart / schEngCivilEnd * 100; } if (schEngCivilProgress > 100) { paras.Add(new ReportParameter("ProjectControl_CC_Progress", "100.00")); } else if (schEngCivilProgress < 0) { paras.Add(new ReportParameter("ProjectControl_CC_Progress", "0.00")); } else { paras.Add(new ReportParameter("ProjectControl_CC_Progress", schEngCivilProgress.ToString("#0.00"))); } } if (eProject.Detail_Eng_MechEI_SchStart.HasValue) { paras.Add(new ReportParameter("ProjectControl_CM_SchStart", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_MechEI_SchStart))); } if (eProject.Detail_Eng_MechEI_SchEnd.HasValue) { paras.Add(new ReportParameter("ProjectControl_CM_SchEnd", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_MechEI_SchEnd))); } if (eProject.Detail_Eng_MechEI_ReviseProgress.HasValue) { paras.Add(new ReportParameter("ProjectControl_CM_Progress", eProject.Detail_Eng_MechEI_ReviseProgress.Value.ToString("#0.00"))); } else { decimal schEngMechEIProgress = 0; decimal schEngMechEIStart = 0; decimal schEngMechEIEnd = 0; if (eProject.Detail_Eng_MechEI_SchStart.HasValue) { schEngMechEIStart = (DateTime.Now - eProject.Detail_Eng_MechEI_SchStart).Value.Days; } if (eProject.Detail_Eng_MechEI_SchStart.HasValue && eProject.Detail_Eng_MechEI_SchEnd.HasValue) { schEngMechEIEnd = (eProject.Detail_Eng_MechEI_SchEnd - eProject.Detail_Eng_MechEI_SchStart).Value.Days; } if (schEngMechEIEnd > 0) { schEngMechEIProgress = schEngMechEIStart / schEngMechEIEnd * 100; } if (schEngMechEIProgress > 100) { paras.Add(new ReportParameter("ProjectControl_CM_Progress", "100.00")); } else if (schEngMechEIProgress < 0) { paras.Add(new ReportParameter("ProjectControl_CM_Progress", "0.00")); } else { paras.Add(new ReportParameter("ProjectControl_CM_Progress", schEngMechEIProgress.ToString("#0.00"))); } } } #region CivilRevised //针对新数据 if (!eProject.Detail_Eng_Civil_ReviseStart.HasValue && !eProject.Detail_Eng_Civil_ReviseEnd.HasValue && !eProject.Detail_Eng_MechEI_ReviseStart.HasValue && !eProject.Detail_Eng_MechEI_ReviseEnd.HasValue) { decimal civilRevisedStart = 0; decimal civilRevisedEnd = 0; decimal civilRevisedProgress = 0; List startlists = new List(); List endlists = new List(); var pmList = BLL.PMService.GetPMByEprojectId(eProjectId); foreach (var item in pmList) { if (item.DisciplinesWBSName == "Civil") { if (item.RevisedStart.HasValue) { startlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { endlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Masterplanning") { if (item.RevisedStart.HasValue) { startlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { endlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Architectral") { if (item.RevisedStart.HasValue) { startlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { endlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "HVAC") { if (item.RevisedStart.HasValue) { startlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { endlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } startlists.Sort(); endlists.Sort(); } if (startlists.Count > 0) { paras.Add(new ReportParameter("civilRevisedStart", string.Format("{0:yyyy-MM-dd}", startlists.FirstOrDefault()))); } if (endlists.Count > 0) { paras.Add(new ReportParameter("civilRevisedEnd", string.Format("{0:yyyy-MM-dd}", endlists.LastOrDefault()))); } if (startlists.FirstOrDefault() != null) { civilRevisedStart = (DateTime.Now - Convert.ToDateTime(startlists.FirstOrDefault())).Days; } if (startlists.FirstOrDefault() != null && endlists.LastOrDefault() != null) { civilRevisedEnd = (endlists.LastOrDefault() - startlists.FirstOrDefault()).Days; } if (civilRevisedEnd > 0) { civilRevisedProgress = civilRevisedStart / civilRevisedEnd * 100; } if (civilRevisedProgress > 100) { paras.Add(new ReportParameter("civilRevisedProgress", "100.00")); } else if (civilRevisedProgress < 0) { paras.Add(new ReportParameter("civilRevisedProgress", "0.00")); } else { paras.Add(new ReportParameter("civilRevisedProgress", civilRevisedProgress.ToString("#0.00"))); } } else//针对老数据 { if (eProject.Detail_Eng_Civil_ReviseStart.HasValue) { paras.Add(new ReportParameter("civilRevisedStart", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_Civil_ReviseStart))); } if (eProject.Detail_Eng_Civil_ReviseEnd.HasValue) { paras.Add(new ReportParameter("civilRevisedEnd", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_Civil_ReviseEnd))); } if (eProject.Detail_Eng_Civil_ReviseProgress.HasValue) { paras.Add(new ReportParameter("civilRevisedProgress", eProject.Detail_Eng_Civil_ReviseProgress.Value.ToString("#0.00"))); } else { decimal revisedEngCivilProgress = 0; decimal revisedEngCivilStart = 0; decimal revisedEngCivilEnd = 0; if (eProject.Detail_Eng_Civil_ReviseStart.HasValue) { revisedEngCivilStart = (DateTime.Now - eProject.Detail_Eng_Civil_ReviseStart).Value.Days; } if (eProject.Detail_Eng_Civil_ReviseStart.HasValue && eProject.Detail_Eng_Civil_ReviseEnd.HasValue) { revisedEngCivilEnd = (eProject.Detail_Eng_Civil_ReviseEnd - eProject.Detail_Eng_Civil_ReviseStart).Value.Days; } if (revisedEngCivilEnd > 0) { revisedEngCivilProgress = revisedEngCivilStart / revisedEngCivilEnd * 100; } if (revisedEngCivilProgress > 100) { paras.Add(new ReportParameter("civilRevisedProgress", "100.00")); } else if (revisedEngCivilProgress < 0) { paras.Add(new ReportParameter("civilRevisedProgress", "0.00")); } else { paras.Add(new ReportParameter("civilRevisedProgress", revisedEngCivilProgress.ToString("#0.00"))); } } } #endregion #region MechEIRevised //针对新数据 if (!eProject.Detail_Eng_MechEI_SchStart.HasValue && !eProject.Detail_Eng_MechEI_SchEnd.HasValue && !eProject.Detail_Eng_MechEI_ReviseStart.HasValue && !eProject.Detail_Eng_MechEI_ReviseEnd.HasValue) { decimal mechEIRevisedStart = 0; decimal mechEIRevisedEnd = 0; decimal mechEIRevisedProgress = 0; List mechEIstartlists = new List(); List mechEIendlists = new List(); var pmLists = BLL.PMService.GetPMByEprojectId(eProjectId); foreach (var item in pmLists) { if (item.DisciplinesWBSName == "Electrical") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Telecommunication") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Instrument") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "PID") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Process") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Plumbing/F.F") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Mech./Equi.") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } else if (item.DisciplinesWBSName == "Piping") { if (item.RevisedStart.HasValue) { mechEIstartlists.Add(Convert.ToDateTime(item.RevisedStart)); } if (item.RevisedEnd.HasValue) { mechEIendlists.Add(Convert.ToDateTime(item.RevisedEnd)); } } mechEIstartlists.Sort(); mechEIendlists.Sort(); } if (mechEIstartlists.Count > 0) { paras.Add(new ReportParameter("mechEIRevisedStart", string.Format("{0:yyyy-MM-dd}", mechEIstartlists.FirstOrDefault()))); } if (mechEIendlists.Count > 0) { paras.Add(new ReportParameter("mechEIRevisedEnd", string.Format("{0:yyyy-MM-dd}", mechEIendlists.LastOrDefault()))); } if (mechEIstartlists.FirstOrDefault() != null) { mechEIRevisedStart = (DateTime.Now - Convert.ToDateTime(mechEIstartlists.FirstOrDefault())).Days; } if (mechEIstartlists.FirstOrDefault() != null && mechEIendlists.LastOrDefault() != null) { mechEIRevisedEnd = (mechEIendlists.LastOrDefault() - mechEIstartlists.FirstOrDefault()).Days; } if (mechEIRevisedEnd > 0) { mechEIRevisedProgress = mechEIRevisedStart / mechEIRevisedEnd * 100; } if (mechEIRevisedProgress > 100) { paras.Add(new ReportParameter("mechEIRevisedProgress", "100.00")); } else if (mechEIRevisedProgress < 0) { paras.Add(new ReportParameter("mechEIRevisedProgress", "0.00")); } else { paras.Add(new ReportParameter("mechEIRevisedProgress", mechEIRevisedProgress.ToString("#0.00"))); } } else //针对老数据 { if (eProject.Detail_Eng_MechEI_ReviseStart.HasValue) { paras.Add(new ReportParameter("mechEIRevisedStart", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_MechEI_ReviseStart))); } if (eProject.Detail_Eng_MechEI_ReviseEnd.HasValue) { paras.Add(new ReportParameter("mechEIRevisedEnd", string.Format("{0:yyyy-MM-dd}", eProject.Detail_Eng_MechEI_ReviseEnd))); } if (eProject.Detail_Eng_MechEI_ReviseProgress.HasValue) { paras.Add(new ReportParameter("mechEIRevisedProgress", eProject.Detail_Eng_MechEI_ReviseProgress.Value.ToString("#0.00"))); } else { decimal DE_mechEIRevisedStart = 0; decimal DE_mechEIRevisedEnd = 0; decimal DE_mechEIRevisedProgress = 0; if (eProject.Detail_Eng_MechEI_ReviseStart.HasValue) { DE_mechEIRevisedStart = (DateTime.Now - eProject.Detail_Eng_MechEI_ReviseStart).Value.Days; } if (eProject.Detail_Eng_MechEI_ReviseStart.HasValue && eProject.Detail_Eng_MechEI_ReviseEnd.HasValue) { DE_mechEIRevisedEnd = (eProject.Detail_Eng_MechEI_ReviseEnd - eProject.Detail_Eng_MechEI_ReviseStart).Value.Days; } DE_mechEIRevisedProgress = DE_mechEIRevisedStart / DE_mechEIRevisedEnd * 100; if (DE_mechEIRevisedProgress > 100) { paras.Add(new ReportParameter("mechEIRevisedProgress", "100.00")); } else if (DE_mechEIRevisedProgress < 0) { paras.Add(new ReportParameter("mechEIRevisedProgress", "0.00")); } else { paras.Add(new ReportParameter("mechEIRevisedProgress", DE_mechEIRevisedProgress.ToString("#0.00"))); } } } #endregion string ProjectControl_LP_SchStart = eProject.ProjectControl_LP_SchStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_LP_SchStart) : ""; paras.Add(new ReportParameter("ProjectControl_LP_SchStart", ProjectControl_LP_SchStart)); string ProjectControl_LP_SchEnd = eProject.ProjectControl_LP_SchEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_LP_SchEnd) : ""; paras.Add(new ReportParameter("ProjectControl_LP_SchEnd", ProjectControl_LP_SchEnd)); if (eProject.ProjectControl_LP_Progress > 100) { paras.Add(new ReportParameter("ProjectControl_LP_Progress", "100.00")); } else if (eProject.ProjectControl_LP_Progress < 0) { paras.Add(new ReportParameter("ProjectControl_LP_Progress", "0.00")); } else { paras.Add(new ReportParameter("ProjectControl_LP_Progress", eProject.ProjectControl_LP_Progress.ToString())); } paras.Add(new ReportParameter("PM_LLEP_RevisedStart", eProject.PM_LLEP_RevisedStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.PM_LLEP_RevisedStart) : "")); paras.Add(new ReportParameter("PM_LLEP_RevisedEnd", eProject.PM_LLEP_RevisedEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.PM_LLEP_RevisedEnd) : "")); if (eProject.PM_LLEP_ActualProgress > 100) { paras.Add(new ReportParameter("PM_LLEP_ActualProgress", "100.00")); } else if (eProject.PM_LLEP_ActualProgress < 0) { paras.Add(new ReportParameter("PM_LLEP_ActualProgress", "0.00")); } else { paras.Add(new ReportParameter("PM_LLEP_ActualProgress", eProject.PM_LLEP_ActualProgress.ToString())); } paras.Add(new ReportParameter("ConstCivilSchStart", eProject.ProjectControl_CC_SchStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_CC_SchStart) : "")); paras.Add(new ReportParameter("ConstCivilSchEnd", eProject.ProjectControl_CC_SchEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_CC_SchEnd) : "")); if (eProject.ProjectControl_CC_Progress > 100) { paras.Add(new ReportParameter("ConstCivilSchProgress", "100.00")); } else if (eProject.ProjectControl_CC_Progress < 0) { paras.Add(new ReportParameter("ConstCivilSchProgress", "0.00")); } else { paras.Add(new ReportParameter("ConstCivilSchProgress", eProject.ProjectControl_CC_Progress.ToString())); } paras.Add(new ReportParameter("ConstMechEISchStart", eProject.ProjectControl_CM_SchStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_CM_SchStart) : "")); paras.Add(new ReportParameter("ConstMechEISchEnd", eProject.ProjectControl_CM_SchEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_CM_SchEnd) : "")); if (eProject.ProjectControl_CM_Progress > 100) { paras.Add(new ReportParameter("ConstMechEISchProgress", "100.00")); } else if (eProject.ProjectControl_CM_Progress < 0) { paras.Add(new ReportParameter("ConstMechEISchProgress", "0.00")); } else { paras.Add(new ReportParameter("ConstMechEISchProgress", eProject.ProjectControl_CM_Progress.ToString())); } paras.Add(new ReportParameter("CM_CC_RevisedStart", eProject.CM_CC_RevisedStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.CM_CC_RevisedStart) : "")); paras.Add(new ReportParameter("CM_CC_RevisedEnd", eProject.CM_CC_RevisedEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.CM_CC_RevisedEnd) : "")); if (eProject.CM_CC_AcutalProgress > 100) { paras.Add(new ReportParameter("CM_CC_AcutalProgress", "100.00")); } else if (eProject.CM_CC_AcutalProgress < 0) { paras.Add(new ReportParameter("CM_CC_AcutalProgress", "0.00")); } else { paras.Add(new ReportParameter("CM_CC_AcutalProgress", eProject.CM_CC_AcutalProgress.ToString())); } paras.Add(new ReportParameter("CM_CM_RevisedStart", eProject.CM_CM_RevisedStart.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.CM_CM_RevisedStart) : "")); paras.Add(new ReportParameter("CM_CM_RevisedEnd", eProject.CM_CM_RevisedEnd.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.CM_CM_RevisedEnd) : "")); if (eProject.CM_CM_AcutalProgress > 100) { paras.Add(new ReportParameter("CM_CM_AcutalProgress", "100.00")); } else if (eProject.CM_CM_AcutalProgress < 0) { paras.Add(new ReportParameter("CM_CM_AcutalProgress", "0.00")); } else { paras.Add(new ReportParameter("CM_CM_AcutalProgress", eProject.CM_CM_AcutalProgress.ToString())); } string ProjectControl_MS_MC = eProject.ProjectControl_MS_MC.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.ProjectControl_MS_MC) : ""; paras.Add(new ReportParameter("ProjectControl_MS_MC", ProjectControl_MS_MC)); paras.Add(new ReportParameter("CM_MA_MC", eProject.CM_MA_MC.HasValue ? string.Format("{0:yyyy-MM-dd}", eProject.CM_MA_MC) : "")); string variance = ""; paras.Add(new ReportParameter("OrginalBudget", String.Format("{0:N2}", orginalBudget))); paras.Add(new ReportParameter("ActualCost", String.Format("{0:N2}", actualCost))); decimal? committed = committedPRPO + committedSSRs; paras.Add(new ReportParameter("committed", String.Format("{0:N2}", committed))); paras.Add(new ReportParameter("CostToComplete", String.Format("{0:N2}", costToComplete))); decimal? estimatedFinalCost = actualCost + committed + costToComplete; paras.Add(new ReportParameter("estimatedFinalCost", String.Format("{0:N2}", estimatedFinalCost))); if (orginalBudget + changedBudget > 0) { decimal? cbchj = (estimatedFinalCost - orginalBudget - changedBudget) / (orginalBudget + changedBudget) * 100; variance = decimal.Round(decimal.Parse(cbchj.ToString()), 2).ToString() + "%"; } paras.Add(new ReportParameter("variance", variance)); paras.Add(new ReportParameter("PM_Remarks_Engineering", eProject.PM_Remarks_Engineering)); paras.Add(new ReportParameter("PM_Remarks_Procurement", eProject.PM_Remarks_Procurement)); paras.Add(new ReportParameter("CM_Remarks_Procurement", eProject.CM_Remarks_Procurement)); paras.Add(new ReportParameter("CM_Remarks_Construction", eProject.CM_Remarks_Construction)); paras.Add(new ReportParameter("CM_Remarks_QualityHSE", eProject.CM_Remarks_QualityHSE)); paras.Add(new ReportParameter("ProjectControl_ProjectManager", eProject.ProjectControl_ProjectManager)); paras.Add(new ReportParameter("ProjectControl_ConstManager", eProject.ProjectControl_ConstManager)); string areasofConcern = ""; var areaConcern = BLL.AreaConcernService.GetAreaConcernListByEprojectId(eProjectId); if (areaConcern.Count > 0) { for (int i = 0; i < areaConcern.Count; i++) { if (i < 3)//获取最新的3条数据 { areasofConcern += areaConcern[i].Remark + "|"; } } areasofConcern = areasofConcern.Substring(0, areasofConcern.LastIndexOf('|')); } paras.Add(new ReportParameter("AreasofConcern", areasofConcern)); } List list = new List(); ReportDataSource rds = new ReportDataSource("DataSet1", list); ReportViewer1.LocalReport.ReportPath = "Report/Report1.rdlc"; ReportViewer1.LocalReport.DataSources.Add(rds); ReportViewer1.LocalReport.SetParameters(paras); } } } } }