1229-gaofei

This commit is contained in:
gaofei
2021-12-29 15:03:49 +08:00
parent 0bf6d1efd7
commit 3bda153d7c
16 changed files with 1696 additions and 242 deletions
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
@@ -9,6 +10,9 @@ using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
namespace FineUIPro.Web.JDGL.WBS
{
@@ -61,37 +65,37 @@ namespace FineUIPro.Web.JDGL.WBS
}
for (int i = 0; i < months.Count; i++)
{
GroupField gd = new GroupField();
gd.HeaderText = string.Format("{0:yyyy-MM}", months[i]);
gd.HeaderTextAlign = TextAlign.Center;
//GroupField gd = new GroupField();
//gd.HeaderText = string.Format("{0:yyyy-MM}", months[i]);
//gd.HeaderTextAlign = TextAlign.Center;
RenderField rdPlan = new RenderField();
rdPlan.ColumnID = gd.HeaderText + "Plan";
rdPlan.ColumnID = string.Format("{0:yyyy-MM}", months[i]) + "Plan";
rdPlan.Width = Unit.Pixel(100);
rdPlan.DataField = "PlanNum" + (i + 1).ToString();
rdPlan.FieldType = FieldType.Double;
rdPlan.HeaderText = "计划量";
rdPlan.HeaderText = string.Format("{0:yyyy年MM月}", months[i]) + "<br/>计划量";
rdPlan.HeaderTextAlign = TextAlign.Center;
NumberBox numPlan = new NumberBox();
numPlan.NoNegative = true;
numPlan.NoDecimal = false;
rdPlan.Editor.Add(numPlan);
gd.Columns.Add(rdPlan);
Grid1.Columns.Add(rdPlan);
RenderField rdThis = new RenderField();
rdThis.ColumnID = gd.HeaderText + "This";
rdThis.ColumnID = string.Format("{0:yyyy-MM}", months[i]) + "This";
rdThis.Width = Unit.Pixel(100);
rdThis.DataField = "ThisNum" + (i + 1).ToString();
rdThis.FieldType = FieldType.Double;
rdThis.HeaderText = "完成量";
rdThis.HeaderText = string.Format("{0:yyyy年MM月}", months[i]) + "<br/>完成量";
rdThis.HeaderTextAlign = TextAlign.Center;
NumberBox numReal = new NumberBox();
numReal.NoNegative = true;
numReal.NoDecimal = false;
rdThis.Editor.Add(numReal);
gd.Columns.Add(rdThis);
Grid1.Columns.Add(rdThis);
Grid1.Columns.Add(gd);
//Grid1.Columns.Add(gd);
}
}
#endregion
@@ -339,14 +343,8 @@ namespace FineUIPro.Web.JDGL.WBS
oldThisPlanValue = (costControlDetail.PlanNum ?? 0) * (costControl.PlanPrice ?? 0);
oldThisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
oldThisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
if (!string.IsNullOrEmpty(planNum))
{
costControlDetail.PlanNum = Convert.ToDecimal(planNum);
}
if (!string.IsNullOrEmpty(thisNum))
{
costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
}
costControlDetail.PlanNum = Funs.GetNewDecimalOrZero(planNum);
costControlDetail.ThisNum = Funs.GetNewDecimalOrZero(thisNum);
thisPlanValue = (costControlDetail.PlanNum ?? 0) * (costControl.PlanPrice ?? 0);
thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
@@ -358,14 +356,8 @@ namespace FineUIPro.Web.JDGL.WBS
costControlDetail.CostControlDetailId = SQLHelper.GetNewID();
costControlDetail.CostControlId = costControlId;
costControlDetail.Months = months[j];
if (!string.IsNullOrEmpty(planNum))
{
costControlDetail.PlanNum = Convert.ToDecimal(planNum);
}
if (!string.IsNullOrEmpty(thisNum))
{
costControlDetail.ThisNum = Convert.ToDecimal(thisNum);
}
costControlDetail.PlanNum = Funs.GetNewDecimalOrZero(planNum);
costControlDetail.ThisNum = Funs.GetNewDecimalOrZero(thisNum);
thisPlanValue = (costControlDetail.PlanNum ?? 0) * (costControl.PlanPrice ?? 0);
thisRealCost = (costControlDetail.ThisNum ?? 0) * (costControl.RealPrice ?? 0);
thisPlanCost = (costControlDetail.ThisNum ?? 0) * (costControl.PlanPrice ?? 0);
@@ -591,22 +583,190 @@ namespace FineUIPro.Web.JDGL.WBS
#endregion
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//#region 导出按钮
///// 导出按钮
///// </summary>
///// <param name="sender"></param>
///// <param name="e"></param>
//protected void btnOut_Click(object sender, EventArgs e)
//{
// Response.ClearContent();
// string filename = Funs.GetNewFileName();
// Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("工作量录入" + filename, System.Text.Encoding.UTF8) + ".xls");
// Response.ContentType = "application/excel";
// Response.ContentEncoding = Encoding.UTF8;
// this.Grid1.PageSize = Grid1.RecordCount;
// Response.Write(GetGridTableHtml2(Grid1));
// Response.End();
//}
//#endregion
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("工作量录入" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = Encoding.UTF8;
this.Grid1.PageSize = Grid1.RecordCount;
Response.Write(GetGridTableHtml2(Grid1));
string varValue = string.Empty;
Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(Id);
DateTime startDate, endDate, startMonth, endMonth;
List<DateTime> months = new List<DateTime>();
if (wbsSet != null && wbsSet.StartDate != null && wbsSet.EndDate != null)
{
startDate = Convert.ToDateTime(wbsSet.StartDate);
endDate = Convert.ToDateTime(wbsSet.EndDate);
startMonth = Convert.ToDateTime(startDate.Year + "-" + startDate.Month + "-01");
endMonth = Convert.ToDateTime(endDate.Year + "-" + endDate.Month + "-01");
do
{
months.Add(startMonth);
startMonth = startMonth.AddMonths(1);
} while (startMonth <= endMonth);
}
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
//模板文件
string TempletFileName = Server.MapPath("~/") + "File/Excel/JDGL/工作量录入.xls";
//导出文件
string filePath = rootPath + DateTime.Now.ToString("yyyyMMddhhmmss") + "\\";
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string ReportFileName = filePath + "out.xlsx";
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
ICellStyle styleCenter = hssfworkbook.CreateCellStyle();
styleCenter.VerticalAlignment = VerticalAlignment.Center;
styleCenter.Alignment = HorizontalAlignment.Center;
styleCenter.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
styleCenter.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
styleCenter.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
styleCenter.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
styleCenter.WrapText = true;
IFont font = styleCenter.GetFont(hssfworkbook);
font.FontHeightInPoints = 10;//字体高度(与excel中的字号一致)
styleCenter.SetFont(font);
HSSFSheet recordSheet = (HSSFSheet)hssfworkbook.GetSheet("工作量录入");
HSSFRow row0 = (HSSFRow)recordSheet.CreateRow(0);
HSSFCell cell0 = (HSSFCell)row0.CreateCell(0);
cell0.CellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cell0.CellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cell0.CellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cell0.CellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cell0.CellStyle.WrapText = true;
cell0.SetCellValue(new HSSFRichTextString("序号"));
HSSFCell cell1 = (HSSFCell)row0.CreateCell(1);
cell1.SetCellValue(new HSSFRichTextString("分部"));
cell1.CellStyle.WrapText = true;
HSSFCell cell2 = (HSSFCell)row0.CreateCell(2);
cell2.SetCellValue(new HSSFRichTextString("分项"));
cell2.CellStyle.WrapText = true;
HSSFCell cell3 = (HSSFCell)row0.CreateCell(3);
cell3.SetCellValue(new HSSFRichTextString("费控项内容"));
cell3.CellStyle.WrapText = true;
HSSFCell cell4 = (HSSFCell)row0.CreateCell(4);
cell4.SetCellValue(new HSSFRichTextString("合同工作量"));
HSSFCell cell5 = (HSSFCell)row0.CreateCell(5);
cell5.SetCellValue(new HSSFRichTextString("预算单价"));
HSSFCell cell6 = (HSSFCell)row0.CreateCell(6);
cell6.SetCellValue(new HSSFRichTextString("实际单价"));
for (int a = 0; a < months.Count; a++)
{
HSSFCell cellPlan = (HSSFCell)row0.CreateCell(7 + a * 2);
cellPlan.SetCellValue(new HSSFRichTextString(string.Format("{0:yyyy年MM月}", months[a]) + "计划量"));
HSSFCell cellThis = (HSSFCell)row0.CreateCell(8 + a * 2);
cellThis.SetCellValue(new HSSFRichTextString(string.Format("{0:yyyy年MM月}", months[a]) + "完成量"));
}
int i = 1;
HSSFRow row1 = (HSSFRow)recordSheet.CreateRow(1);
HSSFCell r1cell0 = (HSSFCell)row1.CreateCell(0);
r1cell0.SetCellValue(new HSSFRichTextString(i.ToString()));
HSSFCell r1cell1 = (HSSFCell)row1.CreateCell(1);
r1cell1.SetCellValue(new HSSFRichTextString(wbsSet.WbsSetName));
r1cell1.CellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
r1cell1.CellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
r1cell1.CellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
r1cell1.CellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
r1cell1.CellStyle.WrapText = true;
var childWbsSets = BLL.WbsSetService.GetApproveWbsSetsBySuperWbsSetId(Id);
foreach (var childWbsSet in childWbsSets)
{
i++;
HSSFRow rowW = (HSSFRow)recordSheet.CreateRow(i);
HSSFCell rWcell0 = (HSSFCell)rowW.CreateCell(0);
rWcell0.SetCellValue(new HSSFRichTextString(i.ToString()));
HSSFCell rWcell2 = (HSSFCell)rowW.CreateCell(2);
rWcell2.SetCellValue(new HSSFRichTextString(childWbsSet.WbsSetName));
rWcell2.CellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
rWcell2.CellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
rWcell2.CellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
rWcell2.CellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
rWcell2.CellStyle.WrapText = true;
var costControls = BLL.CostControlService.GetSelectedCostControlsByWbsSetId(childWbsSet.WbsSetId);
foreach (var costControl in costControls)
{
i++;
HSSFRow rowC = (HSSFRow)recordSheet.CreateRow(i);
HSSFCell rCcell0 = (HSSFCell)rowC.CreateCell(0);
rCcell0.SetCellValue(new HSSFRichTextString(i.ToString()));
HSSFCell rCcell3 = (HSSFCell)rowC.CreateCell(3);
rCcell3.SetCellValue(new HSSFRichTextString(costControl.CostControlName));
rCcell3.CellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
rCcell3.CellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
rCcell3.CellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
rCcell3.CellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
rCcell3.CellStyle.WrapText = true;
HSSFCell rCcell4 = (HSSFCell)rowC.CreateCell(4);
if (costControl.TotalNum != null)
{
rCcell4.SetCellValue(new HSSFRichTextString(costControl.TotalNum.Value.ToString("0.##")));
}
HSSFCell rCcell5 = (HSSFCell)rowC.CreateCell(5);
if (costControl.PlanPrice != null)
{
rCcell5.SetCellValue(new HSSFRichTextString(costControl.PlanPrice.Value.ToString("0.##")));
}
HSSFCell rCcell6 = (HSSFCell)rowC.CreateCell(6);
if (costControl.RealPrice != null)
{
rCcell6.SetCellValue(new HSSFRichTextString(costControl.RealPrice.Value.ToString("0.##")));
}
for (int j = 0; j < months.Count; j++)
{
Model.WBS_CostControlDetail costControlDetail = BLL.CostControlDetailService.GetCostControlDetailByCostControlIdAndMonths(costControl.CostControlId, months[j]);
if (costControlDetail != null)
{
HSSFCell cellDetailPlan = (HSSFCell)rowC.CreateCell(7 + j * 2);
if (costControlDetail.PlanNum != null)
{
cellDetailPlan.SetCellValue(new HSSFRichTextString(costControlDetail.PlanNum.Value.ToString("0.##")));
}
HSSFCell cellDetailThis = (HSSFCell)rowC.CreateCell(8 + j * 2);
if (costControlDetail.ThisNum != null)
{
cellDetailThis.SetCellValue(new HSSFRichTextString(costControlDetail.ThisNum.Value.ToString("0.##")));
}
}
}
}
}
using (FileStream filess = File.OpenWrite(ReportFileName))
{
hssfworkbook.Write(filess);
}
FileInfo filet = new FileInfo(ReportFileName);
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename="+ Server.UrlEncode("工作量录入_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls"));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", filet.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(filet.FullName);
// 停止页面的执行
Response.End();
}
#endregion
}
}