CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/Transfer/PunchlistFrom.aspx.cs

578 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BLL;
using BLL.Common;
using BLL.CQMS.Comprehensive;
using FineUIPro.Web.AttachFile;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using NPOI.XSSF.Streaming.Values;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web.Services.Description;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace FineUIPro.Web.Transfer
{
public partial class PunchlistFrom : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
BindGrid();
this.btnNew.OnClientClick = Window1.GetShowReference("PunchlistFromEdit.aspx") + "return false;";
}
}
public DataTable DataSql()
{
string strSql = @"select *
,(CASE isnull(IsEng,0) WHEN 1 THEN 'Y' ELSE 'N' END) IsEngStr
,IsMatI IsMatIStr
from Transfer_PunchlistFrom
where ProjectId = @ProjectId";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
if (!string.IsNullOrEmpty(this.txtRaised_By.Text.Trim()))
{
strSql += " AND Raised_By = @Raised_By";
listStr.Add(new SqlParameter("@Raised_By", this.txtRaised_By.Text.Trim()));
}
if (!string.IsNullOrEmpty(this.txtSystem_No.Text.Trim()))
{
strSql += " AND System_No like @System_No";
listStr.Add(new SqlParameter("@System_No", "%" + this.txtSystem_No.Text.Trim() + "%"));
}
if (!string.IsNullOrEmpty(this.txtSub_Sys_No.Text.Trim()))
{
strSql += " AND Sub_Sys_No like @Sub_Sys_No";
listStr.Add(new SqlParameter("@Sub_Sys_No", "%" + this.txtSub_Sys_No.Text.Trim() + "%"));
}
//if (!string.IsNullOrEmpty(txtStartDate_Raised.Text.Trim()))
//{
// strSql += " AND Date_Raised >= @StartDate_Raised";
// listStr.Add(new SqlParameter("@StartDate_Raised", Funs.GetNewDateTime(txtStartDate_Raised.Text.Trim())));
//}
//if (!string.IsNullOrEmpty(txtEndDate_Raised.Text.Trim()))
//{
// strSql += " AND Date_Raised <= @EndDate_Raised";
// listStr.Add(new SqlParameter("@EndDate_Raised", Funs.GetNewDateTime(txtEndDate_Raised.Text.Trim())));
//}
//if (!string.IsNullOrEmpty(txtStartRequired_Date.Text.Trim()))
//{
// strSql += " AND Required_Date >= @StartRequired_Date";
// listStr.Add(new SqlParameter("@StartRequired_Date", Funs.GetNewDateTime(txtStartRequired_Date.Text.Trim())));
//}
//if (!string.IsNullOrEmpty(txtEndRequired_Date.Text.Trim()))
//{
// strSql += " AND Required_Date <= @EndRequired_Date";
// listStr.Add(new SqlParameter("@EndRequired_Date", Funs.GetNewDateTime(txtEndRequired_Date.Text.Trim())));
//}
//if (!string.IsNullOrEmpty(txtStartActual_Date.Text.Trim()))
//{
// strSql += " AND Actual_Date >= @StartActual_Date";
// listStr.Add(new SqlParameter("@StartActual_Date", Funs.GetNewDateTime(txtStartActual_Date.Text.Trim())));
//}
//if (!string.IsNullOrEmpty(txtEndActual_Date.Text.Trim()))
//{
// strSql += " AND Actual_Date <= @EndActual_Date";
// listStr.Add(new SqlParameter("@EndActual_Date", Funs.GetNewDateTime(txtEndActual_Date.Text.Trim())));
//}
if (!string.IsNullOrEmpty(txtDisc.Text.Trim()))
{
strSql += " AND Disc = @Disc";
listStr.Add(new SqlParameter("@Disc", txtDisc.Text.Trim()));
}
if (!string.IsNullOrEmpty(ddlEng.SelectedValue.Trim()))
{
strSql += " AND IsEng = @IsEng";
listStr.Add(new SqlParameter("@IsEng", ddlEng.SelectedValue.Trim() == "Y" ? 1 : 0));
}
if (!string.IsNullOrEmpty(ddlMatI.SelectedValue.Trim()))
{
strSql += " AND IsMatI = @IsMatI";
listStr.Add(new SqlParameter("@IsMatI", ddlMatI.SelectedValue.Trim()));
}
if (!string.IsNullOrEmpty(ddlPunchType.SelectedValue.Trim()))
{
strSql += " AND Punch_Type = @Punch_Type";
listStr.Add(new SqlParameter("@Punch_Type", ddlPunchType.SelectedValue.Trim()));
}
if (!string.IsNullOrEmpty(ddlCat.SelectedValue.Trim()))
{
strSql += " AND Cat = @Cat";
listStr.Add(new SqlParameter("@Cat", ddlCat.SelectedValue.Trim()));
}
//if (!string.IsNullOrEmpty(txtAction_By.Text.Trim()))
//{
// strSql += " AND Action_By = @Action_By";
// listStr.Add(new SqlParameter("@Action_By", txtAction_By.Text.Trim()));
//}
if (!string.IsNullOrEmpty(txtPIC.Text.Trim()))
{
strSql += " AND PIC = @PIC";
listStr.Add(new SqlParameter("@PIC", txtPIC.Text.Trim()));
}
if (!string.IsNullOrEmpty(txtPIC_WUH.Text.Trim()))
{
strSql += " AND PIC_WUH = @PIC_WUH";
listStr.Add(new SqlParameter("@PIC_WUH", txtPIC_WUH.Text.Trim()));
}
if (!string.IsNullOrEmpty(ddlStatus.SelectedValue.Trim()))
{
strSql += " AND Status = @Status";
listStr.Add(new SqlParameter("@Status", ddlStatus.SelectedValue.Trim()));
}
strSql += " order by Num_No ";
SqlParameter[] parameter = listStr.ToArray();
return SQLHelper.GetDataTableRunText(strSql, parameter);
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindGrid()
{
DataTable tb = DataSql();
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#endregion
#region
/// <summary>
/// 分页下拉
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
/// 分页索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
#region
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
protected void WindowAtt_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 右键删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuDel_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
Model.Transfer_PunchlistFrom model = Funs.DB.Transfer_PunchlistFrom.FirstOrDefault(x => x.Id == rowID);
if (model != null)
{
Funs.DB.Transfer_PunchlistFrom.DeleteOnSubmit(model);
Funs.DB.SubmitChanges();
}
}
BindGrid();
ShowNotify("删除数据成功!", MessageBoxIcon.Success);
}
}
#endregion
#region Photoes附件
/// <summary>
/// 右键附件上传功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuAttachA_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader.aspx?type=0&toKeyId={0}_A&path=FileUpload/Transfer/PunchlistFrom&menuId={1}", Grid1.SelectedRowID, BLL.Const.PunchlistFromMenuId)));
}
}
#endregion
#region Corrected_Photos附件
/// <summary>
/// 右键附件上传功能
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuAttachB_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader.aspx?type=0&toKeyId={0}_B&path=FileUpload/Transfer/PunchlistFrom&menuId={1}", Grid1.SelectedRowID, BLL.Const.PunchlistFromMenuId)));
}
}
#endregion
/// <summary>
/// 获取附件(放于Img中)
/// </summary>
/// <param name="Id_type"></param>
/// <returns></returns>
protected string ConvertImageUrlByImage(object Id_type)
{
string url = string.Empty;
if (Id_type != null)
{
var registration = BLL.AttachFileService.GetAttachFile(Id_type.ToString(), BLL.Const.PunchlistFromMenuId);
if (registration != null)
{
url = BLL.UploadAttachmentService.ShowImage("../../", registration.AttachUrl);
}
}
return url;
}
#region
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("PunchlistFromDataIn.aspx", "导入 - ")));
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == "0")
{
return;
}
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.PunchlistFromMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
btnMenuAttachA.Hidden = false;
btnMenuAttachB.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnMenuModify.Hidden = false;
this.Grid1.EnableRowDoubleClickEvent = true;
btnMenuAttachA.Hidden = false;
btnMenuAttachB.Hidden = false;
}
else
{
this.Grid1.EnableRowDoubleClickEvent = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnMenuDel.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnSave))
{
this.btnImport.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuModify_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
string id = Grid1.SelectedRowID;
var accidentPersonRecord = Funs.DB.Transfer_PunchlistFrom.FirstOrDefault(p => p.Id == id);
if (accidentPersonRecord == null)
{
Alert.ShowInTop("修改的数据已经不存在,请检查!", MessageBoxIcon.Warning);
return;
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("PunchlistFromEdit.aspx?Id={0}", id, "编辑 - ")));
}
#endregion
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/");
string initTemplatePath = string.Empty;
string uploadfilepath = string.Empty;
string newUrl = string.Empty;
string filePath = string.Empty;
initTemplatePath = "File\\Excel\\DataOut\\PunchlistFrom导出模板.xlsx";
uploadfilepath = rootPath + initTemplatePath;
DataTable tb = DataSql();
if (tb.Rows.Count <= 0)
{
ShowNotify("没有要导出的数据!!!", MessageBoxIcon.Warning);
return;
}
newUrl = uploadfilepath.Replace("导出模板", "导出数据").Replace(".xlsx", DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
File.Copy(uploadfilepath, newUrl);
NPOI.SS.UserModel.IWorkbook workbook;
using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read))
{
workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);
}
NPOI.SS.UserModel.ICellStyle cellStyleC = workbook.CreateCellStyle();
cellStyleC.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyleC.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyleC.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyleC.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyleC.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cellStyleC.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
cellStyleC.WrapText = true;
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
var pcList = Funs.DB.AttachFile.Where(p => p.MenuId == BLL.Const.PunchlistFromMenuId && p.AttachUrl != null && p.AttachUrl != "").ToList();
int i = 2;
foreach (DataRow tbRow in tb.Rows)
{
string Id = tbRow["Id"].ToString();
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i);
NPOI.SS.UserModel.ICell cell;
cell = row.CreateCell(0);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Num_NO"] == null ? "" : tbRow["Num_NO"].ToString());
cell = row.CreateCell(1);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["System_No"] == null ? "" : tbRow["System_No"].ToString());
cell = row.CreateCell(2);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Sub_Sys_No"] == null ? "" : tbRow["Sub_Sys_No"].ToString());
cell = row.CreateCell(3);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["DESCRIPTION"] == null ? "" : tbRow["DESCRIPTION"].ToString());
//Photoes附件
var photoesUrl = pcList.FirstOrDefault(p => p.ToKeyId == $"{Id}_A");
if (photoesUrl != null && !string.IsNullOrWhiteSpace(photoesUrl.AttachUrl))
{
string[] arrUrl = photoesUrl.AttachUrl.Split(',');
sheet.SetColumnWidth(4, 30 * 256);
row.Height = (short)(90 * 20 * arrUrl.Length);
foreach (string url in arrUrl)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 4, i, 5, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
break;
}
}
cell = row.CreateCell(5);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Cat"] == null ? "" : tbRow["Cat"].ToString());
cell = row.CreateCell(6);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Raised_By"] == null ? "" : tbRow["Raised_By"].ToString());
cell = row.CreateCell(7);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Date_Raised"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Date_Raised"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(8);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Disc"] == null ? "" : tbRow["Disc"].ToString());
cell = row.CreateCell(9);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["IsEngStr"] == null ? "" : tbRow["IsEngStr"].ToString());
cell = row.CreateCell(10);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["IsMatIStr"] == null ? "" : tbRow["IsMatIStr"].ToString());
cell = row.CreateCell(11);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Punch_Type"] == null ? "" : tbRow["Punch_Type"].ToString());
cell = row.CreateCell(12);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Required_Date"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Required_Date"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(13);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Action_By"] == null ? "" : tbRow["Action_By"].ToString());
cell = row.CreateCell(14);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["PIC"] == null ? "" : tbRow["PIC"].ToString());
cell = row.CreateCell(15);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["PIC_WUH"] == null ? "" : tbRow["PIC_WUH"].ToString());
cell = row.CreateCell(16);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Correction_Action"] == null ? "" : tbRow["Correction_Action"].ToString());
//CorrectedPhotos附件
var correctedPhotosUrl = pcList.FirstOrDefault(p => p.ToKeyId == $"{Id}_B");
if (correctedPhotosUrl != null && !string.IsNullOrWhiteSpace(correctedPhotosUrl.AttachUrl))
{
string[] arrUrl = correctedPhotosUrl.AttachUrl.Split(',');
sheet.SetColumnWidth(17, 30 * 256);
row.Height = (short)(90 * 20);
foreach (string url in arrUrl)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 17, i, 18, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
break;
}
}
cell = row.CreateCell(18);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Actual_Date"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Actual_Date"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(19);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Cleared_By"] == null ? "" : tbRow["Cleared_By"].ToString());
cell = row.CreateCell(20);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Cleared_Date"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Cleared_Date"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(21);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Confirmed_By"] == null ? "" : tbRow["Confirmed_By"].ToString());
cell = row.CreateCell(22);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Confirmed_Date"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Confirmed_Date"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(23);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Verified_By"] == null ? "" : tbRow["Verified_By"].ToString());
cell = row.CreateCell(24);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Verified_Date"] == DBNull.Value ? "" : Convert.ToDateTime(tbRow["Verified_Date"]).ToString("yyyy-MM-dd"));
cell = row.CreateCell(25);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Status"] == null ? "" : tbRow["Status"].ToString());
cell = row.CreateCell(26);
cell.CellStyle = cellStyleC;
cell.SetCellValue(tbRow["Remark"] == null ? "" : tbRow["Remark"].ToString());
i++;
}
// 第三步:写入文件流
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);
}
}
}