using BLL; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; namespace FineUIPro.Web.SES { public partial class SSR : PageBase { #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { // 表头过滤 FilterDataRowItem = FilterDataRowItemImplement; if (!IsPostBack) { GetButtonPower();//权限设置 btnNew.OnClientClick = Window1.GetShowReference("SSREdit.aspx") + "return false;"; btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("Please select at least one item!"); btnDelete.ConfirmText = String.Format("Are you sure you want to delete the selected   rows?", Grid1.GetSelectedCountReference()); this.drpContractAdmin.DataTextField = "UserName"; this.drpContractAdmin.DataValueField = "UserId"; this.drpContractAdmin.DataSource = BLL.Sys_UserService.getUserListByRoleId(BLL.Const.Role_ContractAdministratorId, true); this.drpContractAdmin.DataBind(); //Funs.FineUIPleaseSelect(this.drpContractAdmin); drpContractAdmin.Items.Insert(0, new FineUIPro.ListItem("Search by Contract Admin", BLL.Const._Null)); ddlPageSize.SelectedValue = Grid1.PageSize.ToString(); // 绑定表格 BindGrid(); } else if (GetRequestEventArgument() == "FilterChange") { BindGrid(); } } /// /// 绑定数据 /// private void BindGrid() { string strSql = @"select ssr.[SSRId], ssr.[SES_No], (CASE WHEN ssr.WorkOrder IS NOT NULL AND ssr.Op IS NOT NULL THEN ssr.WorkOrder + '-' + ssr.Op ELSE (ISNULL(ssr.WorkOrder,'') + ISNULL(ssr.Op,'')) END) AS WorkOrderOp, (CASE WHEN ssr.Network IS NOT NULL AND ssr.Nop IS NOT NULL THEN ssr.Network + '-' + ssr.Nop ELSE (ISNULL(ssr.Network,'') + ISNULL(ssr.Nop,'')) END) AS NetworkOp, ssr.[RequisitionerId], ssr.[RequisitionerName], ssr.[DepartmentId], ssr.[DepartmentName], CONVERT(varchar(10),ssr.SubmmisionDate,23) AS SubmmisionDate, CONVERT(nvarchar(30),ssr.ReturnDate,20) AS ReturnDate, CONVERT(nvarchar(10),ssr.CompletionDate,23) as CompletionDate, ssr.[ContractNo], ssr.[Address],ssr.[Remark], CONVERT(nvarchar(30), ssr.InputDate,20) as InputDate, ssr.[IsRetruned],ssr.[RetrunDuration], (CASE WHEN ssr.SubmmisionDate IS NOT NULL THEN (CASE WHEN ssr.ReturnDate IS NOT NULL THEN DATEDIFF(DAY,ssr.SubmmisionDate,ssr.ReturnDate) ELSE DATEDIFF(DAY,ssr.SubmmisionDate,GETDATE()) END) ELSE NULL END) AS NotRetrunDuration, u.UserName AS ContractAdmin,ssr.ReturnStatus from SSR ssr LEFT JOIN dbo.Sys_User u ON u.UserId = ssr.ContractAdmin WHERE 1=1 "; List listStr = new List(); //if (!string.IsNullOrEmpty(this.txtFO.Text.Trim())) //{ // strSql += " AND FO LIKE @foNo"; // listStr.Add(new SqlParameter("@foNo", "%" + this.txtFO.Text.Trim() + "%")); //} if (!string.IsNullOrEmpty(this.txtSES_NO.Text.Trim())) { strSql += " AND ssr.SES_No LIKE @SES_No"; listStr.Add(new SqlParameter("@SES_No", "%" + this.txtSES_NO.Text.Trim() + "%")); } if (!string.IsNullOrEmpty(this.reternDate.Text.Trim())) { strSql += " AND CONVERT(nvarchar(10),ssr.ReturnDate,23)=@ReturnDate"; listStr.Add(new SqlParameter("@ReturnDate", this.reternDate.Text.Trim())); } if (!string.IsNullOrEmpty(this.txtInputDate.Text.Trim())) { strSql += " AND CONVERT(nvarchar(10),ssr.InputDate,23)=@InputDate"; listStr.Add(new SqlParameter("@InputDate", this.txtInputDate.Text.Trim())); } if (drpContractAdmin.SelectedValue != Const._Null) { strSql += " AND ssr.ContractAdmin=@ContractAdmin"; listStr.Add(new SqlParameter("@ContractAdmin", drpContractAdmin.SelectedValue)); } if (drpStatus.SelectedValue != "0") { strSql += " AND ssr.ReturnStatus=@ReturnStatus"; listStr.Add(new SqlParameter("@ReturnStatus", drpStatus.SelectedValue)); } SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); Grid1.RecordCount = tb.Rows.Count; tb = GetFilteredTable(Grid1.FilteredData, tb); var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); } #endregion #region 过滤表头 /// /// 过滤表头 /// /// /// protected void Grid1_FilterChange(object sender, EventArgs e) { BindGrid(); } /// /// 根据表头信息过滤列表数据 /// /// /// /// /// /// private bool FilterDataRowItemImplement(object sourceObj, string fillteredOperator, object fillteredObj, string column) { bool valid = false; if (column == "SES_No") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "WorkOrderOp") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "NetworkOp") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "RequisitionerName") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "DepartmentName") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "SubmmisionDate") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "CompletionDate") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "ContractNo") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "Address") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "InputDate") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "NotRetrunDuration") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "ReturnDate") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "ReturnStatus") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } if (column == "Remark") { string sourceValue = sourceObj.ToString(); string fillteredValue = fillteredObj.ToString(); if (fillteredOperator == "equal" && sourceValue == fillteredValue) { valid = true; } else if (fillteredOperator == "contain" && sourceValue.Contains(fillteredValue)) { valid = true; } } return valid; } #endregion #region 删除数据 /// /// 批量删除数据 /// /// /// protected void btnDelete_Click(object sender, EventArgs e) { this.DeleteData(); } /// /// 右键删除事件 /// /// /// protected void btnMenuDelete_Click(object sender, EventArgs e) { this.DeleteData(); } /// /// 删除方法 /// private void DeleteData() { if (Grid1.SelectedRowIndexArray.Length > 0) { foreach (int i in Grid1.SelectedRowIndexArray) { string rowID = Grid1.DataKeys[i][0].ToString(); var ssr = BLL.SSRService.GetSSRById(rowID); if (ssr != null) { if (judgementDelete(rowID, false)) { BLL.SSRService.DeleteSSRById(rowID); } } } BindGrid(); BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Delete SSR"); ShowNotify("Deleted successfully!"); } } #endregion #region 分页、排序 /// /// 分页 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindGrid(); } /// /// 分页显示条数下拉框 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e) { Grid1.SortDirection = e.SortDirection; Grid1.SortField = e.SortField; BindGrid(); } #endregion #region 查询 /// /// 查询 /// /// /// protected void Text_TextChanged(object sender, EventArgs e) { BindGrid(); } #endregion #region 关闭弹出窗口 /// /// 关闭窗口 /// /// /// protected void Window1_Close(object sender, EventArgs e) { BindGrid(); } #endregion #region 编辑 /// /// 编辑 /// /// /// protected void btnEdit_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInParent("Please select at least one record!"); return; } string Id = Grid1.SelectedRowID; PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SSREdit.aspx?SSRId={0}", Id, "编辑 - "))); } /// /// 右键编辑事件 /// /// /// protected void btnMenuEdit_Click(object sender, EventArgs e) { btnEdit_Click(null, null); } /// /// Grid行双击事件 /// /// /// protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) { btnEdit_Click(null, null); } #endregion #region 判断是否可删除 /// /// 判断是否可以删除 /// /// private bool judgementDelete(string id, bool isShow) { string content = string.Empty; //if (Funs.DB.Sys_User.FirstOrDefault(x => x.RoleId == id) != null) //{ // content = "This role is already in use in [user information] and cannot be deleted!"; //} if (string.IsNullOrEmpty(content)) { return true; } else { if (isShow) { Alert.ShowInTop(content); } return false; } } #endregion #region 导出 /// /// 导出按钮 /// /// /// protected void btnExport_Click(object sender, EventArgs e) { string rootPath = Server.MapPath("~/") + Const.ExcelUrl; //模板文件 string TempletFileName = rootPath + "SSR_collection.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); #region FC_List XSSFSheet reportModel = (XSSFSheet)hssfworkbook.GetSheet("SSR_Collection"); IDataFormat dataformat = hssfworkbook.CreateDataFormat(); ICellStyle styleQfw = hssfworkbook.CreateCellStyle(); styleQfw.DataFormat = dataformat.GetFormat("#,##0.00"); ICellStyle styleDate = hssfworkbook.CreateCellStyle(); styleDate.DataFormat = dataformat.GetFormat("yyyy/m/d"); ICellStyle styleTime = hssfworkbook.CreateCellStyle(); styleTime.DataFormat = dataformat.GetFormat("yyyy/m/d HH:mm:ss"); XSSFFont cs_content_Font = (XSSFFont)hssfworkbook.CreateFont(); //创建字体 cs_content_Font.FontName = "sans-serif";//字体 cs_content_Font.FontHeightInPoints = 10; //字体大小 Grid1.PageSize = 1000000; BindGrid(); if (Grid1.Rows.Count() > 0) { for(int i=1;i<= Grid1.Rows.Count();i++) { if (reportModel.GetRow(i) == null) reportModel.CreateRow(i); #region 列赋值 //SES No if (reportModel.GetRow(i).GetCell(0) == null) reportModel.GetRow(i).CreateCell(0); reportModel.GetRow(i).GetCell(0).SetCellValue(Grid1.Rows[i-1].Values[0].ToString()); //reportModel.GetRow(i).GetCell(0).CellStyle.SetFont(cs_content_Font);//将字体绑定到样式 //Work order-op. if (reportModel.GetRow(i).GetCell(1) == null) reportModel.GetRow(i).CreateCell(1); reportModel.GetRow(i).GetCell(1).SetCellValue(Grid1.Rows[i - 1].Values[1].ToString()); // Network-op if (reportModel.GetRow(i).GetCell(2) == null) reportModel.GetRow(i).CreateCell(2); reportModel.GetRow(i).GetCell(2).SetCellValue(Grid1.Rows[i - 1].Values[2].ToString()); //Requisitioner if (reportModel.GetRow(i).GetCell(3) == null) reportModel.GetRow(i).CreateCell(3); reportModel.GetRow(i).GetCell(3).SetCellValue(Grid1.Rows[i - 1].Values[3].ToString()); //Department if (reportModel.GetRow(i).GetCell(4) == null) reportModel.GetRow(i).CreateCell(4); reportModel.GetRow(i).GetCell(4).SetCellValue(Grid1.Rows[i - 1].Values[4].ToString()); //Claim Sheet Receive if (reportModel.GetRow(i).GetCell(5) == null) reportModel.GetRow(i).CreateCell(5); if (Grid1.Rows[i - 1].Values[5] != null && Grid1.Rows[i - 1].Values[5].ToString() != "") { reportModel.GetRow(i).GetCell(5).SetCellValue((DateTime)Convert.ToDateTime(Grid1.Rows[i - 1].Values[5].ToString())); reportModel.GetRow(i).GetCell(5).CellStyle = styleDate; } //Completion Date if (reportModel.GetRow(i).GetCell(6) == null) reportModel.GetRow(i).CreateCell(6); if (Grid1.Rows[i - 1].Values[6] != null && Grid1.Rows[i - 1].Values[6].ToString() != "") { reportModel.GetRow(i).GetCell(6).SetCellValue((DateTime)Convert.ToDateTime(Grid1.Rows[i - 1].Values[6].ToString())); reportModel.GetRow(i).GetCell(6).CellStyle = styleDate; } //Contract No. if (reportModel.GetRow(i).GetCell(7) == null) reportModel.GetRow(i).CreateCell(7); reportModel.GetRow(i).GetCell(7).SetCellValue(Grid1.Rows[i - 1].Values[7].ToString()); //Address if (reportModel.GetRow(i).GetCell(8) == null) reportModel.GetRow(i).CreateCell(8); reportModel.GetRow(i).GetCell(8).SetCellValue(Grid1.Rows[i - 1].Values[8].ToString()); //Entry Date if (reportModel.GetRow(i).GetCell(9) == null) reportModel.GetRow(i).CreateCell(9); if (Grid1.Rows[i - 1].Values[9] != null && Grid1.Rows[i - 1].Values[9].ToString() != "") { reportModel.GetRow(i).GetCell(9).SetCellValue((DateTime)Convert.ToDateTime(Grid1.Rows[i - 1].Values[9].ToString())); reportModel.GetRow(i).GetCell(9).CellStyle = styleTime; } //Contract Admin if (reportModel.GetRow(i).GetCell(10) == null) reportModel.GetRow(i).CreateCell(10); reportModel.GetRow(i).GetCell(10).SetCellValue(Grid1.Rows[i - 1].Values[10].ToString()); //Not return day if (reportModel.GetRow(i).GetCell(11) == null) reportModel.GetRow(i).CreateCell(11); reportModel.GetRow(i).GetCell(11).SetCellValue(Grid1.Rows[i - 1].Values[11].ToString()); //Return Date if (reportModel.GetRow(i).GetCell(12) == null) reportModel.GetRow(i).CreateCell(12); reportModel.GetRow(i).GetCell(12).SetCellValue(Grid1.Rows[i - 1].Values[12].ToString()); //Return Status if (reportModel.GetRow(i).GetCell(13) == null) reportModel.GetRow(i).CreateCell(13); reportModel.GetRow(i).GetCell(13).SetCellValue(Grid1.Rows[i - 1].Values[13].ToString()); //Remark if (reportModel.GetRow(i).GetCell(14) == null) reportModel.GetRow(i).CreateCell(14); reportModel.GetRow(i).GetCell(14).SetCellValue(Grid1.Rows[i - 1].Values[14].ToString()); #endregion } } #endregion reportModel.ForceFormulaRecalculation = true; 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=SSR_collection_" + 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(); } #endregion #region 权限设置 /// /// 菜单按钮权限 /// private void GetButtonPower() { var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.SSRMenuId); if (buttonList.Count() > 0) { if (buttonList.Contains(BLL.Const.BtnAdd)) { this.btnNew.Hidden = false; } if (buttonList.Contains(BLL.Const.BtnModify)) { this.btnEdit.Hidden = false; this.btnMenuEdit.Hidden = false; } if (buttonList.Contains(BLL.Const.BtnDelete)) { this.btnDelete.Hidden = false; this.btnMenuDelete.Hidden = false; } if (buttonList.Contains(BLL.Const.BtnSave)) { this.btnReturn.Hidden = false; this.Grid1.EnableRowDoubleClickEvent = true; } else { this.Grid1.EnableRowDoubleClickEvent = false; } } } #endregion #region 批量填写取回日期 /// /// 取回日期 /// /// /// protected void btnReturn_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIndexArray.Length > 0) { foreach (int i in Grid1.SelectedRowIndexArray) { string rowID = Grid1.DataKeys[i][0].ToString(); Model.SSR ssr = BLL.SSRService.GetSSRById(rowID); if (ssr != null) { //if (ssr.ReturnDate == null) //{ ssr.ReturnDate = DateTime.Now; ssr.IsRetruned = true; BLL.SSRService.UpdateSSRRetrunDate(ssr); //} } } ShowNotify("Save successfully!", MessageBoxIcon.Success); this.BindGrid(); } } #endregion /// /// 查看 /// /// /// protected void btnMenuView_Click(object sender, EventArgs e) { if (Grid1.SelectedRowIndexArray.Length == 0) { Alert.ShowInParent("Please select at least one record!"); return; } string Id = Grid1.SelectedRowID; PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SSREdit.aspx?SSRId={0}&view=1", Id, "编辑 - "))); } } }