/// <summary> /// 取预算表 /// </summary> /// <param name="m_DataTable"></param> /// <returns></returns> private BLL.CostBudgetDynamic GetDyn(string CostBudgetSetCode, string GroupCode) { try { BLL.CostBudgetDynamic dyn = null; BLL.CostBudgetGroupDynamic dynGroup = GetGroupDyn(GroupCode); if (dynGroup != null) { foreach (BLL.CostBudgetDynamic dynTemp in dynGroup.arrDyn) { if (dynTemp.CostBudgetSetCode == CostBudgetSetCode) //该预算设置表 { dyn = dynTemp; break; } } } return(dyn); } catch (Exception ex) { throw ex; } }
/// <summary> /// 生成动态费用明细 /// </summary> private void LoadDataGrid(bool IsScreenToTable) { try { BLL.CostBudgetDynamic dyn = this.GenerateDynamic(); ViewState["StartY"] = dyn.StartY; ViewState["EndY"] = dyn.EndY; /* * string html_title_target_money1 = ""; * string html_title_target_money2 = ""; * BLL.CostBudgetPageRule.GenerateCostBudgetMoneyTitleHtml(dyn.tb, "BudgetMoney", "已批预算", "当前", ref html_title_target_money1, ref html_title_target_money2, false); * * ViewState["html_title_target_money1"] = html_title_target_money1; * ViewState["html_title_target_money2"] = html_title_target_money2; */ //预算计划按年度展开 string html_title1 = ""; string html_title2 = ""; BLL.CostBudgetPageRule.GenerateCostBudgetPlanTitleHtml(dyn.tb, dyn.iStartY, dyn.iEndY, ref html_title1, ref html_title2); ViewState["html_title1"] = html_title1; ViewState["html_title2"] = html_title2; //暂存明细表 m_dyn = dyn; BindDataGrid(dyn, IsScreenToTable); if (this.txtCostBudgetBackupCode.Value != "") { m_dyn = null; } } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "显示动态费用明细出错:" + ex.Message)); } }
private void LoadData() { try { if (this.txtCostBudgetBackupCode.Value != "") { //取备份表 EntityData entityBackup = DAL.EntityDAO.CostBudgetDAO.GetV_CostBudgetBackupByCode(this.txtCostBudgetBackupCode.Value); if (!entityBackup.HasRecord()) { Response.Write(Rms.Web.JavaScript.Alert(true, "项目费用备份表不存在")); Response.Write(Rms.Web.JavaScript.WinClose(true)); return; } //取备份的预算设置表 EntityData entitySet = DAL.EntityDAO.CostBudgetDAO.GetCostBudgetBackupSetByBackupCode(this.txtCostBudgetBackupCode.Value, this.txtCostBudgetSetCode.Value, true); if (!entitySet.HasRecord()) { Response.Write(Rms.Web.JavaScript.Alert(true, "备份中不含该预算表")); Response.Write(Rms.Web.JavaScript.WinClose(true)); return; } this.txtCostBudgetBackupSetCode.Value = entitySet.GetString("CostBudgetBackupSetCode"); entitySet.Dispose(); entityBackup.Dispose(); } BLL.CostBudgetDynamic dyn = GenerateDynamic(); Session[SessionEntityID] = dyn; BindDataGrid(dyn, false); } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "显示预算表出错:" + ex.Message)); } }
/// <summary> /// 绑定动态费用明细 /// </summary> private void BindDataGrid(BLL.CostBudgetDynamic dyn, bool IsScreenToTable) { try { DataTable tbDtl = dyn.tbHtml; //已批预算的审核日期 this.lblTargetCheckDate.Text = dyn.GetTargetCheckDate(); string VerID = dyn.GetTargetVerID(); this.txtHasTargetHis.Value = (BLL.ConvertRule.ToDecimal(VerID) > 0)?"1":""; if (VerID != "") { VerID = "版本" + VerID; } //版本号链接 this.spanTargetVerID.InnerText = ""; this.hrefTargetVerID.InnerText = ""; if (this.txtHasTargetHis.Value == "1") //有历史版本 { this.hrefTargetVerID.InnerText = VerID; } else { this.spanTargetVerID.InnerText = VerID; } //历史目标费用 string TargetHisHead1 = ""; string TargetHisHead2 = ""; dyn.GenerateTargetHisHead(ref TargetHisHead1, ref TargetHisHead2); ViewState["TargetHisHead1"] = TargetHisHead1; ViewState["TargetHisHead2"] = TargetHisHead2; ViewState["HasTargetChange"] = dyn.HasTargetChange; if (dyn.HasTargetChange) { this.spanListTitleTargetMoneyDesc.InnerText = dyn.TargetChangeDesc; this.spanListTitleTargetMoney.Style["display"] = ""; } else { this.spanListTitleTargetMoneyDesc.InnerText = ""; this.spanListTitleTargetMoney.Style["display"] = "none"; } if (IsScreenToTable) { //屏幕数据保存到临时表 tbDtl = ScreenToTable(false); } else { //折叠全部费用项 BLL.CostBudgetPageRule.CollapseAll(tbDtl); if (dyn.NeedApport) //有分摊时,多了一级总计 { BLL.CostBudgetPageRule.ExpandDeep(tbDtl, 3); } else { BLL.CostBudgetPageRule.ExpandDeep(tbDtl, 2); } } this.dgList.DataSource = tbDtl; this.dgList.DataBind(); /* * string[] arrField = {"ItemMoney", "OldItemMoney", "TotalPayoutMoney", "RemainItemMoney"}; * decimal[] arrSum = BLL.MathRule.SumColumn(tb, arrField); * this.dgList.Columns[2].FooterText = arrSum[0].ToString("N"); * this.dgList.Columns[3].FooterText = arrSum[1].ToString("N"); * this.dgList.Columns[6].FooterText = arrSum[2].ToString("N"); * this.dgList.Columns[7].FooterText = arrSum[3].ToString("N"); * * this.dgList.DataSource = tb; * this.dgList.DataBind(); */ } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "绑定动态费用明细出错:" + ex.Message)); } }
/// <summary> /// 导出Excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Excel(bool CloseWindow) { try { BLL.CostBudgetDynamic dyn = m_dyn; if (dyn == null) { dyn = GenerateDynamic(); } TExcel excel = new TExcel(Response, Request, Server, Session); try { excel.StartRow = 10; excel.ColumnHeadRow = 9; //取1级费用项 DataView dv; if (dyn.NeedApport) //有分摊时,多了一级总计 { dv = new DataView(dyn.tb, "Deep=3", "SortID", DataViewRowState.CurrentRows); } else { dv = new DataView(dyn.tb, "Deep=2", "SortID", DataViewRowState.CurrentRows); } excel.DataSource = dv; //新建工作簿 excel.TemplateFileName = "项目费用表.xls"; // excel.TemplateSheetName = "汇总"; excel.TemplateSheetName = ""; excel.AddWorkbook(); //新建若干“分项”页 for (int k = 2; k <= dv.Count; k++) { ((Excel.Worksheet)excel.Book.Worksheets[2]).Copy(TExcel.m_Opt, excel.Book.Worksheets[2]); } //转到汇总页 excel.Sheet = (Excel.Worksheet)excel.Book.Worksheets[1]; //表头信息 excel.SetCellValue(1, 1, BLL.ProjectRule.GetProjectName(dyn.ProjectCode)); //报表日期 if (this.txtCostBudgetBackupCode.Value != "") //备份 { excel.SetCellValue(1, 3, dyn.entityBackup.GetDateTime("BackupDate", "yyyy-MM-dd HH:mm:ss")); } else { excel.SetCellValue(1, 3, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } excel.SetCellValue(1, 5, dyn.GetTargetCheckDate()); excel.SetCellValue(1, 6, dyn.entitySet.GetDecimal("HouseCount")); excel.SetCellValue(1, 7, dyn.entitySet.GetDecimal("BuildingArea")); excel.SetCellValue(1, 8, dyn.entitySet.GetDecimal("HouseArea")); excel.DataSource = dv; excel.DataToSheet(); //按第2级费用项分组 excel.StartRow = 11; excel.ColumnHeadRow = 9; /* * //2级费用项临时表头 * DataTable tbLevel2 = dyn.entitySet.CurrentTable.Copy(); * BLL.ConvertRule.DataTableAddColumn(dyn.tb, tbLevel2); */ //3级费用项临时表(包括合同明细) DataTable tbDtl = dyn.tb.Clone(); tbDtl.Columns.Add("ReportDtlSno", typeof(int)); DataColumn[] pk = new DataColumn[1]; pk[0] = tbDtl.Columns["ReportDtlSno"]; tbDtl.PrimaryKey = pk; DataRow drNew; int i = 0; foreach (DataRowView drv in dv) { i++; // BLL.ConvertRule.DataRowCopy(drv.Row, tbLevel2.Rows[0], dyn.tb, tbLevel2); string ParentCostCode = BLL.ConvertRule.ToString(drv["CostCode"]); string ParentCostName = BLL.ConvertRule.ToString(drv["CostName"]); //取第2级费用项的子项 DataView dv2 = new DataView(dyn.tb, "ParentCode='" + ParentCostCode + "'", "SortID", DataViewRowState.CurrentRows); //复制到临时表 tbDtl.Rows.Clear(); int ReportDtlSno = 0; foreach (DataRowView drv2 in dv2) { DataRow dr2 = drv2.Row; string CostCode = BLL.ConvertRule.ToString(dr2["CostCode"]); //3级费用项 drNew = tbDtl.NewRow(); BLL.ConvertRule.DataRowCopy(dr2, drNew, dyn.tb, tbDtl); ReportDtlSno++; drNew["ReportDtlSno"] = ReportDtlSno; tbDtl.Rows.Add(drNew); //3级费用项的合同明细 DataRow[] drsContract = dyn.tbContract.Select("CostCode = '" + CostCode + "'", "ContractID, ContractName", DataViewRowState.CurrentRows); AddContract(tbDtl, drNew, drsContract, ref ReportDtlSno); //3级费用项的预留金额 DataRow[] drsNoContract = dyn.tbNoContract.Select("CostCode = '" + CostCode + "'"); AddNoContract(tbDtl, drNew, drsContract, drsNoContract, ref ReportDtlSno); } //合计行 drNew = tbDtl.NewRow(); BLL.ConvertRule.DataRowCopy(drv.Row, drNew, dyn.tb, tbDtl); ReportDtlSno++; drNew["ReportDtlSno"] = ReportDtlSno; drNew["CostName"] = "合计"; tbDtl.Rows.Add(drNew); /* * //第2个2级费用项开始,每次都要新建工作页 * if (i > 1) * { * excel.TemplateSheetName = "分项"; * excel.AddWorksheet(i, true); * } */ //转到分项页 excel.Sheet = (Excel.Worksheet)excel.Book.Worksheets[i + 1]; //一个2级费用项打印一页 excel.Sheet.Name = ParentCostName.Replace("/", ""); excel.DataToSheetSingle(drv.Row); //2级费用项表头信息 // excel.SetCellValue(1, 1, drv["CostName"]); DataView dvDtl = new DataView(tbDtl, "", "ReportDtlSno", DataViewRowState.CurrentRows); excel.DataSource = dvDtl; excel.DataToSheet(); /* * //合同明细只有一条时,隐藏合同明细 * int colIsHide = 15; * for(int k=0;k<dv2.Count;k++) * { * int row = excel.StartRow + k; * string IsHide = TExcel.GetCellValue(excel.Sheet, row, colIsHide); * if (IsHide == "1") * { * ((Excel.Range)excel.Sheet.Cells[row, 1]).EntireRow.Hidden = true; * } * } * * //隐藏列IsHide * ((Excel.Range)excel.Sheet.Cells[1, colIsHide]).EntireColumn.Hidden = true; */ } //缺省选中第1页 ((Excel.Worksheet)excel.Book.Worksheets[1]).Select(TExcel.m_Opt); //保存 excel.SaveWorkbook(); excel.ShowClient(); } finally { excel.Dispose(); } if (CloseWindow) { Response.Write(Rms.Web.JavaScript.WinClose(true)); } } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "导出Excel出错:" + ex.Message)); } }
protected void Page_Load(object sender, System.EventArgs e) { DataTable tbDst = null; try { m_ProjectCode = Request["ProjectCode"] + ""; m_CostBudgetSetCode = Request["CostBudgetSetCode"] + ""; m_CostBudgetBackupSetCode = Request["CostBudgetBackupSetCode"] + ""; m_Layer = BLL.ConvertRule.ToInt(Request["Layer"]); m_strGetType = Request.QueryString["GetType"] + ""; //数据分类 string m_strNodeId = Request.QueryString["NodeId"] + ""; //父节点编号 string[] m_Layers = (Request.QueryString["Layers"] + "").Split('.'); //定点展开的序列 string m_strSelectedLayer = Request.QueryString["SelectedLayer"] + ""; //定层展开的深度 tbDst = new DataTable("CostBudgetInfo"); tbDst.Columns.Add("CostBudgetDtlCode"); tbDst.Columns.Add("ParentCode"); tbDst.Columns.Add("CostCode"); tbDst.Columns.Add("SortID"); tbDst.Columns.Add("CostName"); tbDst.Columns.Add("Deep"); tbDst.Columns.Add("ChildNodesCount"); tbDst.Columns.Add("ClassTd"); tbDst.Columns.Add("ContractCode"); tbDst.Columns.Add("ContractIDHtml"); tbDst.Columns.Add("ContractNameHtml"); tbDst.Columns.Add("SupplierNameHtml"); tbDst.Columns.Add("DescriptionHtml"); tbDst.Columns.Add("Layer"); tbDst.Columns.Add("ShowChildNodes"); tbDst.Columns.Add("ShowSpan"); tbDst.Columns.Add("ShowHref"); //金额字段 foreach (string MoneyField in this.m_arrMoneyField) { tbDst.Columns.Add(MoneyField); //金额提示 tbDst.Columns.Add("Title" + MoneyField); } //金额链接 tbDst.Columns.Add("HtmlContractPay1"); tbDst.Columns.Add("HtmlContractPayReal"); BLL.CostBudgetDynamic dyn = GetDynamic(); DataTable tbSrc = dyn.tbHtml; string filter = ""; if (m_strGetType == "") { #region 取第一层 filter = "Deep=1"; // DateTime t2 = DateTime.Now; // TimeSpan t = t2.Subtract(t1); // ApplicationLog.WriteLog(this.ToString(),"时间:" + t.Duration().ToString()); #endregion } else if (m_strGetType == "ChildNodes") { #region 取某节点子目录 filter = "ParentCode='" + m_strNodeId + "'"; #endregion } DataView dvSrc = new DataView(tbSrc, filter, "", DataViewRowState.CurrentRows); foreach (DataRowView drvSrc in dvSrc) { DataRow drSrc = drvSrc.Row; DataRow drDst = tbDst.NewRow(); FillRow(drSrc, drDst, tbSrc, tbDst); tbDst.Rows.Add(drDst); } // ApplicationLog.SetLogPath("D:\\项目管理20\\ShimaoPM20\\Log\\"); // ApplicationLog.WriteLog(this.ToString(), BLL.XmlTree.GetDataToXmlString(tbDst)); Response.Write(BLL.XmlTree.GetDataToXmlString(tbDst)); // Response.Write(RmsPM.WebControls.TreeView.XmlTree.GetDataToXmlString(tbDst)); } catch (Exception ex) { ApplicationLog.SetLogPath("D:\\项目管理20\\ShimaoPM20\\Log\\"); // ApplicationLog.WriteLog(this.ToString(), BLL.XmlTree.GetDataToXmlString(tbDst)); ApplicationLog.WriteLog(this.ToString(), ex, ""); } Response.End(); }
/// <summary> /// 填预算表行 /// </summary> /// <param name="m_NewRow"></param> /// <param name="m_Row"></param> /// <param name="m_DataTable"></param> private void FillRow(DataRow m_NewRow, DataRow m_Row, DataTable m_DataTable) { FillColumn(m_NewRow, m_Row, m_DataTable); BLL.CostBudgetDynamic dyn = null; dyn = GetDyn(BLL.ConvertRule.ToString(m_Row["CostBudgetSetCode"]), BLL.ConvertRule.ToString(m_Row["GroupCode"])); /* * //计算总金额 * if (Session["CostBudgetTreeGroupDyn"] != null) * { * //直接取Session * BLL.CostBudgetGroupDynamic[] arrGroup = (BLL.CostBudgetGroupDynamic[])Session["CostBudgetTreeGroupDyn"]; * foreach(BLL.CostBudgetGroupDynamic dynGroup in arrGroup) * { * if (dynGroup.GroupCode == BLL.ConvertRule.ToString(m_Row["GroupCode"])) //该预算类别 * { * foreach(BLL.CostBudgetDynamic dynTemp in dynGroup.arrDyn) * { * if (dynTemp.CostBudgetSetCode == BLL.ConvertRule.ToString(m_Row["CostBudgetSetCode"])) //该预算设置表 * { * dyn = dynTemp; * break; * } * } * * break; * } * } * } * else * { * //即时 * dyn = new BLL.CostBudgetDynamic(m_ProjectCode, BLL.ConvertRule.ToString(m_NewRow["CostBudgetCode"]), BLL.ConvertRule.ToString(m_NewRow["CostBudgetSetCode"])); * * dyn.ShowApportion = false; * dyn.ShowContractBudget = false; * dyn.ShowTargetChange = false; * * //只显示第1级费用项 * dyn.MaxCBSDeep = 1; * * dyn.AutoRefreshHtml = false; * * dyn.Generate(); * } */ if (dyn != null) { if (dyn.tb.Rows.Count > 0) { DataRow drFirst = BLL.CostBudgetDynamic.GetR0(dyn.tb); FillMoneyField(m_NewRow, drFirst); } } m_NewRow["Layer"] = m_Layer; m_NewRow["ChildNodesCount"] = "0";//BLL.ConvertRule.ToInt(m_Row["ChildCount"]); m_NewRow["ShowChildNodes"] = "0"; m_NewRow["ShowSpan"] = "none"; m_NewRow["ShowHref"] = ""; m_NewRow["IconDisplay"] = "none"; FillAttributesField(m_NewRow); }
private void LoadGrid() { try { DataTable tbList = new DataTable(); tbList.Columns.Add("ProjectCode"); tbList.Columns.Add("ProjectName"); tbList.Columns.Add("ProjectArea", typeof(decimal)); tbList.Columns.Add("SortID", typeof(int)); //金额字段 foreach (string MoneyField in arrMoneyField) { tbList.Columns.Add(MoneyField); } EntityData entityProject = DAL.EntityDAO.ProjectDAO.GetAllProject(); foreach (DataRow drProject in entityProject.CurrentTable.Rows) { string ProjectCode = drProject["ProjectCode"].ToString(); DataRow drList = tbList.NewRow(); drList["ProjectCode"] = drProject["ProjectCode"]; drList["ProjectName"] = drProject["ProjectName"]; drList["SortID"] = 0; tbList.Rows.Add(drList); //取项目面积 decimal ProjectArea = BLL.CostBudgetRule.GetCostBudgetProjectArea(ProjectCode); drList["ProjectArea"] = ProjectArea; //取预算表 CostBudgetStrategyBuilder sb = new CostBudgetStrategyBuilder(); sb.AddStrategy(new Strategy(CostBudgetStrategyName.ProjectCode, ProjectCode)); //仅预算(不要显示估算) sb.AddStrategy(new Strategy(CostBudgetStrategyName.SetType, BLL.CostBudgetRule.m_BaseSetType)); string sql = sb.BuildQueryViewCostDynamicListString(); QueryAgent qa = new QueryAgent(); try { DataTable tbCostBudget = qa.ExecSqlForDataSet(sql).Tables[0]; foreach (DataRow drCostBudget in tbCostBudget.Rows) { string CostBudgetSetCode = drCostBudget["CostBudgetSetCode"].ToString(); BLL.CostBudgetDynamic dyn = new BLL.CostBudgetDynamic(ProjectCode, CostBudgetSetCode); dyn.ShowApportion = false; dyn.ShowContractBudget = false; dyn.ShowTargetChange = false; //只显示第1级费用项 dyn.MaxCBSDeep = 1; dyn.AutoRefreshHtml = false; try { dyn.Generate(); } catch (Exception ex) { continue; } DataRow drR0 = BLL.CostBudgetDynamic.GetR0(dyn.tb); if (drR0 != null) { foreach (string MoneyField in arrMoneyField) { drList[MoneyField] = BLL.ConvertRule.ToDecimal(drList[MoneyField]) + BLL.ConvertRule.ToDecimal(drR0[MoneyField]); } } } } finally { qa.Dispose(); } CalcPercent(drList); } entityProject.Dispose(); //合计 decimal SumProjectArea = BLL.MathRule.SumColumn(tbList, "ProjectArea"); decimal[] arrSum = BLL.MathRule.SumColumn(tbList, arrMoneyField); DataRow drSum = tbList.NewRow(); drSum["ProjectName"] = " 合计"; drSum["SortID"] = 99; drSum["ProjectArea"] = SumProjectArea; tbList.Rows.Add(drSum); int i = -1; foreach (string MoneyField in arrMoneyField) { i++; drSum[MoneyField] = arrSum[i]; } CalcPercent(drSum); // ViewState["drSum"] = drSum; // ViewState["arrSum"] = arrSum; DataView dvList = new DataView(tbList, "", "SortID, ProjectName", DataViewRowState.CurrentRows); this.dgList.DataSource = dvList; this.dgList.DataBind(); } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "显示报表出错:" + ex.Message)); } }
/// <summary> /// 绑定动态费用明细 /// </summary> private void BindDataGrid(BLL.CostBudgetDynamic dyn, bool IsScreenToTable) { try { DataTable tbDtl = dyn.tbHtml; //已批预算的审核日期 this.lblTargetCheckDate.Text = dyn.GetTargetCheckDate(); string VerID = dyn.GetTargetVerID(); this.txtHasTargetHis.Value = (BLL.ConvertRule.ToDecimal(VerID) > 0) ? "1" : ""; if (VerID != "") { VerID = "版本" + VerID; } //版本号链接 this.spanTargetVerID.InnerText = ""; this.hrefTargetVerID.InnerText = ""; if (this.txtHasTargetHis.Value == "1") //有历史版本 { this.hrefTargetVerID.InnerText = VerID; } else { this.spanTargetVerID.InnerText = VerID; } /* * //历史目标费用 * string TargetHisHead1 = ""; * string TargetHisHead2 = ""; * dyn.GenerateTargetHisHead(ref TargetHisHead1, ref TargetHisHead2); * * ViewState["TargetHisHead1"] = TargetHisHead1; * ViewState["TargetHisHead2"] = TargetHisHead2; * * ViewState["HasTargetChange"] = dyn.HasTargetChange; * if (dyn.HasTargetChange) * { * this.spanListTitleTargetMoneyDesc.InnerText = dyn.TargetChangeDesc; * this.spanListTitleTargetMoney.Style["display"] = ""; * } * else * { * this.spanListTitleTargetMoneyDesc.InnerText = ""; * this.spanListTitleTargetMoney.Style["display"] = "none"; * } * * if (IsScreenToTable) * { * //屏幕数据保存到临时表 * tbDtl = ScreenToTable(false); * } * else * { * //折叠全部费用项 * BLL.CostBudgetPageRule.CollapseAll(tbDtl); * * if (dyn.NeedApport) //有分摊时,多了一级总计 * { * BLL.CostBudgetPageRule.ExpandDeep(tbDtl, 3); * } * else * { * BLL.CostBudgetPageRule.ExpandDeep(tbDtl, 2); * } * } */ } catch (Exception ex) { ApplicationLog.WriteLog(this.ToString(), ex, ""); Response.Write(Rms.Web.JavaScript.Alert(true, "绑定动态费用明细出错:" + ex.Message)); } }