using BLL;
using Model;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
namespace FineUIPro.Web.HJGL.WeldingReport
{
public partial class NDTWeekReport : PageBase
{
#region 定义变量
///
/// 主键
///
public string NDTReportId
{
get
{
return (string)ViewState["NDTReportId"];
}
set
{
ViewState["NDTReportId"] = value;
}
}
#endregion
#region 加载
///
/// 加载页面
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
List list = new List();
List NDTReportLists = BLL.NDTReportService.GetNDTReportByProjectId(this.CurrUser.LoginProjectId, "1");
foreach (var item in NDTReportLists)
{
SpRpNDTWeekReport t = new SpRpNDTWeekReport();
t.NDTReportId = item.NDTReportId;
t.ProjectId = item.ProjectId;
t.ProjectName = BLL.ProjectService.GetProjectNameByProjectId(item.ProjectId);
t.StaDate = string.Format("{0:yyyy-MM-dd}", item.StartDate) + "至" + string.Format("{0:yyyy-MM-dd}", item.EndDate);
list.Add(t);
}
this.Grid1.DataSource = list;
this.Grid1.DataBind();
}
#endregion
#region 查询
///
/// 查询
///
///
///
protected void btnSearch_Click(object sender, EventArgs e)
{
string projectName = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId).ProjectName;
if (!string.IsNullOrEmpty(this.txtStartDate.Text) && !string.IsNullOrEmpty(this.txtEndDate.Text))
{
string staDate = this.txtStartDate.Text + "至" + this.txtEndDate.Text;
SpRpNDTWeekReport t = new SpRpNDTWeekReport();
this.NDTReportId = SQLHelper.GetNewID(typeof(Model.NDTReport));
t.NDTReportId = this.NDTReportId;
t.ProjectId = this.CurrUser.LoginProjectId;
t.ProjectName = projectName;
t.StaDate = staDate;
List list = new List();
list.Add(t);
Grid1.DataSource = list;
Grid1.DataBind();
}
else
{
Alert.ShowInTop("日期不能为空!", MessageBoxIcon.Warning);
return;
}
}
#endregion
#region 保存
///
/// 保存
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.txtStartDate.Text) && !string.IsNullOrEmpty(this.txtEndDate.Text))
{
Model.NDTReport ndtReport = new Model.NDTReport();
ndtReport.NDTReportId = this.NDTReportId;
ndtReport.ProjectId = this.CurrUser.LoginProjectId;
ndtReport.StartDate = Funs.GetNewDateTime(this.txtStartDate.Text.Trim());
ndtReport.EndDate = Funs.GetNewDateTime(this.txtEndDate.Text.Trim());
ndtReport.RType = "1";
BLL.NDTReportService.AddNDTReort(ndtReport);
ShowNotify("保存成功!", MessageBoxIcon.Success);
BindGrid();
this.txtStartDate.Text = string.Empty;
this.txtEndDate.Text = string.Empty;
}
else
{
Alert.ShowInTop("日期不能为空!", MessageBoxIcon.Warning);
return;
}
}
#endregion
#region 右键删除
///
/// 右键删除
///
///
///
protected void btnMenuDelete_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
var rep = BLL.NDTReportService.GetNDTReportById(rowID);
if (rep != null)
{
BLL.NDTReportService.DeleteNDTReportById(rowID);
}
}
ShowNotify("删除成功!", MessageBoxIcon.Success);
BindGrid();
}
}
#endregion
#region 日期选择事件
///
/// 开始日期选择事件
///
///
///
protected void txtStartDate_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.txtStartDate.Text.Trim()))
{
this.txtEndDate.Text = Funs.GetNewDateTime(this.txtStartDate.Text.Trim()).Value.AddDays(6).ToShortDateString();
}
}
///
/// 结束日期选择事件
///
///
///
protected void txtEndDate_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.txtEndDate.Text.Trim()))
{
this.txtStartDate.Text = Funs.GetNewDateTime(this.txtEndDate.Text.Trim()).Value.AddDays(-6).ToShortDateString();
}
}
#endregion
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
{
object[] keys = Grid1.DataKeys[e.RowIndex];
string fileId = string.Empty;
if (keys == null)
{
return;
}
else
{
fileId = keys[0].ToString();
}
if (e.CommandName == "print")
{
string dateStr = Grid1.Rows[e.RowIndex].Values[2].ToString();
var dates = dateStr.Split('至');
DateTime begin = DateTime.Parse(dates[0]);
DateTime end = DateTime.Parse(dates[1]);
var projectName = ProjectService.GetProjectNameByProjectId(CurrUser.LoginProjectId);
string rootPath = Server.MapPath("~/") + Const.ExcelUrl;
//模板文件
string TempletFileName = Server.MapPath("~/") + "File/Excel/HJGL_DataOut/无损检测周报.xlsx";
//导出文件
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);
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
ICellStyle styleCenter = hssfworkbook.CreateCellStyle();
styleCenter.VerticalAlignment = VerticalAlignment.Center;
styleCenter.Alignment = HorizontalAlignment.Center;
styleCenter.BorderLeft = BorderStyle.Thin;
styleCenter.BorderTop = BorderStyle.Thin;
styleCenter.BorderRight = BorderStyle.Thin;
styleCenter.BorderBottom = BorderStyle.Thin;
styleCenter.WrapText = true;
IFont font = styleCenter.GetFont(hssfworkbook);
font.FontHeightInPoints = 10;//字体高度(与excel中的字号一致)
styleCenter.SetFont(font);
XSSFSheet recordSheet = (XSSFSheet)hssfworkbook.GetSheet("无损检测周报");
// recordSheet.AddMergedRegion(new CellRangeAddress(0, 0, 8, 9));
recordSheet.GetRow(2).GetCell(2).SetCellValue(projectName.ToString());
//recordSheet.GetRow(2).GetCell(2).CellStyle = styleCenter;
recordSheet.GetRow(3).GetCell(2).SetCellValue(dateStr);
//recordSheet.GetRow(2).GetCell(16).CellStyle = styleCenter;
List units = UnitService.GetUnitByProjectIdUnitTypeList(this.CurrUser.LoginProjectId, Const.ProjectUnitType_5);
string unitName = "";
foreach (Base_Unit unit in units)
{
unitName += unit.UnitName + ",";
}
recordSheet.GetRow(4).GetCell(2).SetCellValue(unitName.TrimEnd(','));
//recordSheet.GetRow(3).GetCell(2).CellStyle = styleCenter;
string strSql1 = @"select unit.UnitId,unit.UnitName,workArea.WorkAreaName,workArea.WorkAreaCode,curr.curr_pass_film,curr.curr_total_film,recurr.recurr_pass_film,recurr.recurr_total_film
from Base_Unit unit right join
ProjectData_WorkArea workArea on workArea.UnitId=unit.UnitId
left join
( SELECT WorkAreaId,IsoInfo.UnitId,COUNT(*) AS curr_check_count_total
, SUM(cht_totalfilm) AS curr_total_film
, SUM(cht_passfilm) AS curr_pass_film
FROM CH_Check Checks
LEFT JOIN CH_CheckItem ON ch_checkitem.CHT_CheckID = Checks.CHT_CheckID
LEFT JOIN PW_JointInfo as JointInfo ON JointInfo.JOT_ID = ch_checkitem.JOT_ID
LEFT JOIN PW_IsoInfo as IsoInfo ON IsoInfo.ISO_ID = JointInfo.ISO_ID
where JointInfo.ProjectId=@ProjectId and (cht_checkdate >= @date1 OR @date1 IS NULL) and(cht_checkdate <= @date2 OR @date2 IS NULL)
group by WorkAreaId,IsoInfo.UnitId) as curr on unit.UnitId= curr.UnitId and workArea.WorkAreaId=curr.WorkAreaId
left join
( SELECT WorkAreaId,IsoInfo.UnitId,COUNT(*) AS recurr_check_count_total
, SUM(cht_totalfilm) AS recurr_total_film
, SUM(cht_passfilm) AS recurr_pass_film
FROM CH_Check Checks
LEFT JOIN CH_CheckItem ON ch_checkitem.CHT_CheckID = Checks.CHT_CheckID
LEFT JOIN PW_JointInfo as JointInfo ON JointInfo.JOT_ID = ch_checkitem.JOT_ID
LEFT JOIN PW_IsoInfo as IsoInfo ON IsoInfo.ISO_ID = JointInfo.ISO_ID
LEFT JOIN CH_Trust trust on trust.CH_TrustID = Checks.CH_TrustID
where JointInfo.ProjectId=@ProjectId and trust.CH_TrustType='2' and (cht_checkdate >= @date1 OR @date1 IS NULL) and(cht_checkdate <= @date2 OR @date2 IS NULL)
group by WorkAreaId,IsoInfo.UnitId) as recurr on unit.UnitId= recurr.UnitId and workArea.WorkAreaId=recurr.WorkAreaId
where workArea.ProjectId=@ProjectId ";
List listpar = new List
{
new SqlParameter("@projectId", this.CurrUser.LoginProjectId)
};
listpar.Add(new SqlParameter("@date1", begin.ToString("yyyy-MM-dd")));
listpar.Add(new SqlParameter("@date2", end.ToString("yyyy-MM-dd")));
SqlParameter[] parameter5 = listpar.ToArray();
DataTable dt = SQLHelper.GetDataTableRunText(strSql1, parameter5);
if (dt != null)
{
if (dt.Rows.Count > 16)
{
recordSheet.ShiftRows(8, 25, dt.Rows.Count - 16);
for (int j = 0; j < dt.Rows.Count - 16; j++)
{
recordSheet.CopyRow(7 + j, 8 + j);
}
for (int ii = 1; ii <= dt.Rows.Count; ii++)
{
CellRangeAddress region = new CellRangeAddress(6 + ii, 6 + ii, 1, 2);
recordSheet.AddMergedRegion(region);
}
}
else
{
for (int ii = 1; ii <= 16; ii++)
{
CellRangeAddress region = new CellRangeAddress(6 + ii, 6 + ii, 1, 2);
recordSheet.AddMergedRegion(region);
}
}
int i = 1;
int curr_pass_film = 0;
int curr_total_film = 0;
int recurr_pass_film = 0;
int recurr_total_film = 0;
foreach (DataRow row in dt.Rows)
{
recordSheet.GetRow(6 + i).Height = 29 * 20;
recordSheet.GetRow(6 + i).CreateCell(0).SetCellValue(i + "");
recordSheet.GetRow(6 + i).GetCell(0).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(1).SetCellValue(row["UnitName"].ToString());
recordSheet.GetRow(6 + i).GetCell(1).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(3).SetCellValue(row["WorkAreaCode"].ToString());
recordSheet.GetRow(6 + i).GetCell(3).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(4).SetCellValue(row["WorkAreaName"].ToString());
recordSheet.GetRow(6 + i).GetCell(4).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(5).SetCellValue(row["curr_pass_film"].ToString());
recordSheet.GetRow(6 + i).GetCell(5).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(6).SetCellValue(row["curr_total_film"].ToString());
recordSheet.GetRow(6 + i).GetCell(6).CellStyle = styleCenter;
try
{
curr_pass_film += Funs.GetNewIntOrZero(row["curr_pass_film"].ToString());
curr_total_film += Funs.GetNewIntOrZero(row["curr_total_film"].ToString());
var celCellValue1 = recordSheet.GetRow(6 + i).CreateCell(7);
celCellValue1.CellStyle = styleCenter;
celCellValue1.SetCellValue((100.0 * int.Parse(row["curr_pass_film"].ToString()) / int.Parse(row["curr_total_film"].ToString())).ToString("0.00"));
}
catch (Exception e1)
{ }
recordSheet.GetRow(6 + i).CreateCell(14).SetCellValue(row["recurr_pass_film"].ToString());
recordSheet.GetRow(6 + i).GetCell(14).CellStyle = styleCenter;
recordSheet.GetRow(6 + i).CreateCell(15).SetCellValue(row["recurr_total_film"].ToString());
recordSheet.GetRow(6 + i).GetCell(15).CellStyle = styleCenter;
try
{
recurr_pass_film += Funs.GetNewIntOrZero(row["recurr_pass_film"].ToString());
recurr_total_film += Funs.GetNewIntOrZero(row["recurr_total_film"].ToString());
var celCellValue2 = recordSheet.GetRow(6 + i).CreateCell(16);
celCellValue2.CellStyle = styleCenter;
celCellValue2.SetCellValue((100.0 * int.Parse(row["recurr_pass_film"].ToString()) / int.Parse(row["recurr_total_film"].ToString())).ToString("0.00"));
}
catch (Exception e2)
{ }
i++;
if (dt.Rows.Count > 16)
{
recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(5).SetCellValue(curr_pass_film + "");
recordSheet.GetRow(dt.Rows.Count + 7).GetCell(5).CellStyle = styleCenter;
recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(6).SetCellValue(curr_total_film + "");
recordSheet.GetRow(dt.Rows.Count + 7).GetCell(6).CellStyle = styleCenter;
try
{
if (curr_total_film > 0)
{
var celCellValue1 = recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(7);
celCellValue1.CellStyle = styleCenter;
celCellValue1.SetCellValue((100.0 * curr_pass_film / curr_total_film).ToString("0.00"));
}
}
catch (Exception e1) { }
recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(14).SetCellValue(recurr_pass_film + "");
recordSheet.GetRow(dt.Rows.Count + 7).GetCell(14).CellStyle = styleCenter;
recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(15).SetCellValue(recurr_total_film + "");
recordSheet.GetRow(dt.Rows.Count + 7).GetCell(15).CellStyle = styleCenter;
try
{
if (recurr_total_film > 0)
{
var celCellValue2 = recordSheet.GetRow(dt.Rows.Count + 7).CreateCell(16);
celCellValue2.CellStyle = styleCenter;
celCellValue2.SetCellValue((100.0 * recurr_pass_film / recurr_total_film).ToString("0.00"));
}
}
catch (Exception e2) { }
}
else
{
recordSheet.GetRow(23).CreateCell(5).SetCellValue(curr_pass_film + "");
recordSheet.GetRow(23).GetCell(5).CellStyle = styleCenter;
recordSheet.GetRow(23).CreateCell(6).SetCellValue(curr_total_film + "");
recordSheet.GetRow(23).GetCell(6).CellStyle = styleCenter;
try
{
if (curr_total_film > 0)
{
var celCellValue1 = recordSheet.GetRow(23).CreateCell(7);
celCellValue1.CellStyle = styleCenter;
celCellValue1.SetCellValue((100.0 * curr_pass_film / curr_total_film).ToString("0.00"));
}
}
catch (Exception e3) { }
recordSheet.GetRow(23).CreateCell(14).SetCellValue(recurr_pass_film + "");
recordSheet.GetRow(23).GetCell(14).CellStyle = styleCenter;
recordSheet.GetRow(23).CreateCell(15).SetCellValue(recurr_total_film + "");
recordSheet.GetRow(23).GetCell(15).CellStyle = styleCenter;
try
{
if (recurr_total_film > 0)
{
var celCellValue2 = recordSheet.GetRow(23).CreateCell(16);
celCellValue2.CellStyle = styleCenter;
celCellValue2.SetCellValue((100.0 * recurr_pass_film / recurr_total_film).ToString("0.00"));
}
}
catch (Exception e4) { }
}
}
}
using (FileStream filess = File.OpenWrite(ReportFileName))
{
hssfworkbook.Write(filess);
}
//PageContext.RegisterStartupScript(Window5.GetShowReference(String.Format("../../ReportPrint/ExReportPrint.aspx?ispop=1&reportId={0}&replaceParameter={1}&varValue={2}&projectId={3}", BLL.Const.HJGL_JointInfoReportId, isoId, varValue, this.CurrUser.LoginProjectId)));
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") + ".xlsx"));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", filet.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(filet.FullName);
// 停止页面的执行
Response.End();
}
}
}
}