From a039bc13c78e6a9c2ff9f95813e5c6d3a71402a5 Mon Sep 17 00:00:00 2001 From: gaofei1985 <181547018@qq.com> Date: Fri, 4 Aug 2023 10:21:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=9B=E5=BA=A6=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=BC=96=E5=88=B6=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-4进度管理(Menu_JDGL).sql | 2 +- SGGL/BLL/CQMS/WBS/WorkPackageService.cs | 39 +++- SGGL/BLL/Common/Const.cs | 5 + .../File/Excel/DataOut/进度计划编制.xls | Bin 0 -> 27648 bytes SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx | 14 +- SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.cs | 194 +++++++++++++++++- .../JDGL/Check/PlanSet.aspx.designer.cs | 13 +- 7 files changed, 251 insertions(+), 16 deletions(-) create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataOut/进度计划编制.xls diff --git a/DataBase/菜单初始化脚本/1-4进度管理(Menu_JDGL).sql b/DataBase/菜单初始化脚本/1-4进度管理(Menu_JDGL).sql index 02b777c5..e682de42 100644 --- a/DataBase/菜单初始化脚本/1-4进度管理(Menu_JDGL).sql +++ b/DataBase/菜单初始化脚本/1-4进度管理(Menu_JDGL).sql @@ -55,7 +55,7 @@ go --GO INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) -VALUES('E23F0879-3E9F-4E7B-9A2D-EFF34798D629','进度计划设置','JDGL/Check/PlanSet.aspx',10,'0','Menu_JDGL',0,1,1) +VALUES('E23F0879-3E9F-4E7B-9A2D-EFF34798D629','进度计划编制','JDGL/Check/PlanSet.aspx',10,'0','Menu_JDGL',0,1,1) GO INSERT INTO dbo.Sys_ButtonToMenu(ButtonToMenuId,MenuId,ButtonName,SortIndex) VALUES('F5055103-6182-43E0-93EC-7DD7BEF2B71C','E23F0879-3E9F-4E7B-9A2D-EFF34798D629','保存',4) diff --git a/SGGL/BLL/CQMS/WBS/WorkPackageService.cs b/SGGL/BLL/CQMS/WBS/WorkPackageService.cs index 6a9a7529..cacebc16 100644 --- a/SGGL/BLL/CQMS/WBS/WorkPackageService.cs +++ b/SGGL/BLL/CQMS/WBS/WorkPackageService.cs @@ -245,7 +245,7 @@ namespace BLL /// 获取模拟树表格 /// /// - public static DataTable GetAllTreeDataTable(string projectId) + public static DataTable GetAllTreeDataTable(string projectId, string IsOut) { using (var db = new Model.SGGLDB(Funs.ConnString)) { @@ -260,7 +260,7 @@ namespace BLL table.Columns.Add(new DataColumn("WBSType", typeof(String))); table.Columns.Add(new DataColumn("ProjectId", typeof(String))); table.Columns.Add(new DataColumn("ShowId", typeof(String))); - table.Columns.Add(new DataColumn("Weights", typeof(String))); + table.Columns.Add(new DataColumn("JDWeights", typeof(String))); table.Columns.Add(new DataColumn("Unit", typeof(String))); table.Columns.Add(new DataColumn("PlanProjectQuantity", typeof(String))); table.Columns.Add(new DataColumn("RealProjectQuantity", typeof(String))); @@ -271,14 +271,25 @@ namespace BLL table.Columns.Add(new DataColumn("IsMileStone", typeof(bool))); table.Columns.Add(new DataColumn("PlanCost", typeof(String))); table.Columns.Add(new DataColumn("PreWorkCode", typeof(String))); + table.Columns.Add(new DataColumn("Code", typeof(String))); if (getWBSs.Count() > 0) { List newList = new List(); var projectTypes = getWBSs.Where(x => x.WBSType == "ProjectType" && x.SupId == "0"); + int a = 1; foreach (var item in projectTypes) { + item.Code = a.ToString(); newList.Add(item); - AddDetail(newList, getWBSs.ToList(), item.Id); + if (string.IsNullOrEmpty(IsOut)) + { + AddDetail(newList, getWBSs.ToList(), item.Id, a.ToString()); + } + else + { + AddDetail(newList, getWBSs.ToList(), item.Id, a.ToString(), string.Empty); + } + a++; } DataRow row; foreach (Model.View_WBS item in newList) @@ -370,6 +381,7 @@ namespace BLL } } } + row[17] = item.Code; table.Rows.Add(row); } } @@ -377,13 +389,30 @@ namespace BLL } } - private static void AddDetail(List newList, List oldList, string id) + private static void AddDetail(List newList, List oldList, string id, string preCode) { var items = oldList.Where(x => x.SupId == id).OrderBy(x => x.Code); + int b = 1; foreach (var item in items) { + item.Code = preCode + "." + b.ToString(); newList.Add(item); - AddDetail(newList, oldList, item.Id); + AddDetail(newList, oldList, item.Id, item.Code); + b++; + } + } + + private static void AddDetail(List newList, List oldList, string id, string preCode, string prefix) + { + var items = oldList.Where(x => x.SupId == id).OrderBy(x => x.Code); + int b = 1; + foreach (var item in items) + { + item.Code = preCode + "." + b.ToString(); + item.Name = prefix + "...." + item.Name; + newList.Add(item); + AddDetail(newList, oldList, item.Id, item.Code, prefix + "...."); + b++; } } diff --git a/SGGL/BLL/Common/Const.cs b/SGGL/BLL/Common/Const.cs index 2d1365e0..e85553c6 100644 --- a/SGGL/BLL/Common/Const.cs +++ b/SGGL/BLL/Common/Const.cs @@ -3342,6 +3342,11 @@ /// public const string OpinionTemplateUrl = "File\\Excel\\DataOut\\策划评审意见收集汇总表.xlsx"; + /// + /// 进度计划编制模板文件原始虚拟路径 + /// + public const string JDPlanTemplateUrl = "File\\Excel\\DataOut\\进度计划编制.xls"; + #endregion #region 初始化上传路径 diff --git a/SGGL/FineUIPro.Web/File/Excel/DataOut/进度计划编制.xls b/SGGL/FineUIPro.Web/File/Excel/DataOut/进度计划编制.xls new file mode 100644 index 0000000000000000000000000000000000000000..90af43b5904b160f7b8034dc6fbddaf8e674cd83 GIT binary patch literal 27648 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 V0C!5A?t$cGmp$WI9RJzm{{Y+3d + + <%----%> + + - + - - - diff --git a/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.cs b/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.cs index fba96f7f..cbde1d5b 100644 --- a/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.cs @@ -3,6 +3,7 @@ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; +using System.IO; using System.Linq; using System.Web.UI.WebControls; @@ -27,7 +28,7 @@ namespace FineUIPro.Web.JDGL.Check private void BindGrid() { - DataTable table = BLL.WorkPackageService.GetAllTreeDataTable(this.CurrUser.LoginProjectId); + DataTable table = BLL.WorkPackageService.GetAllTreeDataTable(this.CurrUser.LoginProjectId, string.Empty); Grid1.DataSource = table; Grid1.DataBind(); for (int i = 0; i < this.Grid1.Rows.Count; i++) @@ -38,7 +39,7 @@ namespace FineUIPro.Web.JDGL.Check cbIsMileStone.Visible = false; foreach (GridColumn column in Grid1.Columns) { - if (column.ColumnIndex != 0) + if (column.ColumnIndex != 0 && column.ColumnIndex != 1) { this.Grid1.Rows[i].CellCssClasses[column.ColumnIndex] = "f-grid-cell-uneditable"; } @@ -98,7 +99,7 @@ namespace FineUIPro.Web.JDGL.Check Model.WBS_WorkPackage workPackage = workPackages.FirstOrDefault(x => x.WorkPackageId == this.Grid1.Rows[i].DataKeys[2].ToString()); if (workPackage != null) { - string weights = values.Value("Weights"); + string weights = values.Value("JDWeights"); string unit = values.Value("Unit"); string planProjectQuantity = values.Value("PlanProjectQuantity"); string realProjectQuantity = values.Value("RealProjectQuantity"); @@ -107,7 +108,7 @@ namespace FineUIPro.Web.JDGL.Check string realStartDate = values.Value("RealStartDate"); string preWorkCode = values.Value("PreWorkCode"); System.Web.UI.WebControls.CheckBox cbIsMileStone = (System.Web.UI.WebControls.CheckBox)(this.Grid1.Rows[i].FindControl("cbIsMileStone")); - workPackage.Weights = Funs.GetNewDecimal(weights); + workPackage.JDWeights = Funs.GetNewDecimal(weights); workPackage.Unit = unit; workPackage.PlanProjectQuantity = Funs.GetNewDecimal(planProjectQuantity); workPackage.RealProjectQuantity = Funs.GetNewDecimal(realProjectQuantity); @@ -171,5 +172,190 @@ namespace FineUIPro.Web.JDGL.Check } } #endregion + + #region 导出(excel按钮) + protected void btnOutExcel_Click(object sender, EventArgs e) + { + if (this.Grid1.Rows.Count > 0) + { + try + { + DataTable table = BLL.WorkPackageService.GetAllTreeDataTable(this.CurrUser.LoginProjectId, "Out"); + string projectNmae = BLL.ProjectService.GetProjectNameByProjectId(this.CurrUser.LoginProjectId); + if (!string.IsNullOrEmpty(projectNmae)) + { + projectNmae = "(" + projectNmae + ")"; + } + string rootPath = Server.MapPath("~/"); + string initTemplatePath = string.Empty; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + string filePath = string.Empty; + initTemplatePath = Const.JDPlanTemplateUrl; + uploadfilepath = rootPath + initTemplatePath; + newUrl = uploadfilepath.Replace(".xls", projectNmae + ".xls"); + File.Copy(uploadfilepath, newUrl); + // 第一步:读取文件流 + NPOI.SS.UserModel.IWorkbook workbook; + using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) + { + workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream); + } + + // 创建单元格样式 + NPOI.SS.UserModel.ICellStyle cellStyle0 = workbook.CreateCellStyle(); + cellStyle0.BorderTop = NPOI.SS.UserModel.BorderStyle.None; + cellStyle0.BorderRight = NPOI.SS.UserModel.BorderStyle.None; + cellStyle0.BorderBottom = NPOI.SS.UserModel.BorderStyle.None; + cellStyle0.BorderLeft = NPOI.SS.UserModel.BorderStyle.None; + cellStyle0.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + cellStyle0.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + var font = workbook.CreateFont(); + font.FontHeightInPoints = 12; + font.IsBold = true; + //font.FontHeightInPoints = (short)8.5;字号为小数时要转为short + cellStyle0.SetFont(font); + + // 第二步:创建新数据行 + NPOI.SS.UserModel.ISheet sheet = workbook.GetSheet("Sheet1"); + NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(1); + NPOI.SS.UserModel.ICell cell2; + // 添加测试数据 + cell2 = row1.CreateCell(14); + cell2.CellStyle = cellStyle0; + cell2.SetCellValue("123"); + var font2 = workbook.CreateFont(); + font2.FontHeightInPoints = 10; + + + + // 创建单元格样式 + NPOI.SS.UserModel.ICellStyle cellStyle1 = workbook.CreateCellStyle(); + cellStyle1.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle1.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle1.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle1.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + cellStyle1.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + var font3 = workbook.CreateFont(); + font3.FontHeightInPoints = 14; + cellStyle1.SetFont(font3); + + NPOI.SS.UserModel.ICellStyle cellStyle2 = workbook.CreateCellStyle(); + cellStyle2.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle2.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle2.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; + cellStyle2.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + cellStyle2.SetFont(font3); + + int rowCount = 1; + NPOI.SS.UserModel.IRow row; + NPOI.SS.UserModel.ICell cell; + + #region 填充内容 + foreach (DataRow tr in table.Rows) + { + row = sheet.CreateRow(rowCount); + cell = row.CreateCell(0); + cell.CellStyle = cellStyle2; + cell.SetCellValue(tr["Code"].ToString()); + cell = row.CreateCell(1); + cell.CellStyle = cellStyle2; + cell.SetCellValue(tr["Name"].ToString()); + cell = row.CreateCell(2); + cell.CellStyle = cellStyle1; + cell.SetCellValue(tr["PreWorkCode"].ToString()); + cell = row.CreateCell(3); + cell.CellStyle = cellStyle1; + if (!string.IsNullOrEmpty(tr["IsMileStone"].ToString()) && Convert.ToBoolean(tr["IsMileStone"].ToString()) == true) + { + cell.SetCellValue("是"); + } + cell = row.CreateCell(4); + cell.CellStyle = cellStyle1; + if (!string.IsNullOrEmpty(tr["JDWeights"].ToString())) + { + cell.SetCellValue(decimal.Round(Convert.ToDecimal(tr["JDWeights"]), 2).ToString("0.##")); + } + cell = row.CreateCell(5); + cell.CellStyle = cellStyle1; + cell.SetCellValue(tr["Unit"].ToString()); + cell = row.CreateCell(6); + cell.CellStyle = cellStyle1; + if (!string.IsNullOrEmpty(tr["PlanProjectQuantity"].ToString())) + { + cell.SetCellValue(decimal.Round(Convert.ToDecimal(tr["PlanProjectQuantity"]), 2).ToString("0.##")); + } + cell = row.CreateCell(7); + cell.CellStyle = cellStyle1; + if (!string.IsNullOrEmpty(tr["PlanCost"].ToString())) + { + cell.SetCellValue(decimal.Round(Convert.ToDecimal(tr["PlanCost"]), 2).ToString("0.##")); + } + cell = row.CreateCell(8); + cell.CellStyle = cellStyle1; + if (!string.IsNullOrEmpty(tr["RealProjectQuantity"].ToString())) + { + cell.SetCellValue(decimal.Round(Convert.ToDecimal(tr["RealProjectQuantity"]), 2).ToString("0.##")); + } + cell = row.CreateCell(9); + cell.CellStyle = cellStyle1; + if (tr["PlanStartDate"] != null) + { + cell.SetCellValue(string.Format("{0:yyyy-MM-dd}", tr["PlanStartDate"])); + } + cell = row.CreateCell(10); + cell.CellStyle = cellStyle1; + if (tr["PlanEndDate"] != null) + { + cell.SetCellValue(string.Format("{0:yyyy-MM-dd}", tr["PlanEndDate"])); + } + cell = row.CreateCell(11); + cell.CellStyle = cellStyle1; + if (tr["RealStartDate"] != null) + { + cell.SetCellValue(string.Format("{0:yyyy-MM-dd}", tr["RealStartDate"])); + } + cell = row.CreateCell(12); + cell.CellStyle = cellStyle1; + if (tr["RealEndDate"] != null) + { + cell.SetCellValue(string.Format("{0:yyyy-MM-dd}", tr["RealEndDate"])); + } + rowCount++; + } + #endregion + // 第三步:写入文件流 + using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) + { + workbook.Write(stream); + workbook.Close(); + } + string fileName = Path.GetFileName(newUrl); + FileInfo info = new FileInfo(newUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(newUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); + } + catch (Exception ex) + { + + throw ex; + } + } + else + { + ShowNotify("没有数据,无法导出!", MessageBoxIcon.Warning); + } + } + #endregion } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.designer.cs index 656badf1..0da2811c 100644 --- a/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/JDGL/Check/PlanSet.aspx.designer.cs @@ -75,6 +75,15 @@ namespace FineUIPro.Web.JDGL.Check { /// protected global::FineUIPro.Button btnSave; + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + /// /// txtPreWorkCode 控件。 /// @@ -103,13 +112,13 @@ namespace FineUIPro.Web.JDGL.Check { protected global::System.Web.UI.WebControls.CheckBox cbIsMileStone; /// - /// nbWeights 控件。 + /// nbJDWeights 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::FineUIPro.NumberBox nbWeights; + protected global::FineUIPro.NumberBox nbJDWeights; /// /// txtUnit 控件。