CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/CQMS/Comprehensive/DataReceivingDoc.aspx.cs

541 lines
21 KiB
C#

using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
namespace FineUIPro.Web.CQMS.Comprehensive
{
public partial class DataReceivingDoc : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
BindGrid();
}
}
/// <summary>
/// 数据绑定
/// </summary>
public void BindGrid()
{
string strSql = @"SELECT doc.DataReceivingDocId,
doc.ProjectId,
doc.FileCode,
doc.FileName,
doc.ReceiveDate,
doc.FileType,
doc.CNProfessionalId,
doc.SendUnit,
doc.SendMan,
doc.Copies,
doc.DocumentHandler,
doc.SendDate,
doc.ReceiveUnit,
doc.ReceiveMan,
(CASE WHEN doc.IsReply='True' THEN '是' ELSE '否' END) AS IsReply,
doc.ReturnWuhuangDate,
doc.RetrunWuhuangCopies,
doc.IssueToUnit,
doc.IssueCopies,
doc.IssueUnitReceiver,
(CASE doc.IsOnFile WHEN 'True' THEN '是' WHEN 'False' THEN '否' ELSE '' END) AS IsOnFile,
doc.CompileMan,
doc.CompileDate,
doc.Status,
cnp.ProfessionalName,
doc.RemarkCode "
+ @" FROM Comprehensive_DataReceivingDoc AS doc"
+ @" LEFT JOIN Base_CNProfessional AS cnp ON cnp.CNProfessionalId = doc.CNProfessionalId"
+ @" WHERE doc.ProjectId = @ProjectId";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
if (!string.IsNullOrEmpty(this.stxtFileCode.Text.Trim()))
{
strSql += " AND doc.FileCode LIKE @stxtFileCode";
listStr.Add(new SqlParameter("@stxtFileCode", "%" + stxtFileCode.Text.Trim() + "%"));
}
if (!string.IsNullOrEmpty(this.stxtFileName.Text.Trim()))
{
strSql += " AND doc.FileName LIKE @stxtFileName";
listStr.Add(new SqlParameter("@stxtFileName", "%" + stxtFileName.Text.Trim() + "%"));
}
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
/// <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();
}
#endregion
#region
/// <summary>
/// 新增按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNew_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("DataReceivingDocEdit.aspx", "编辑 - ")));
}
#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;
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("DataReceivingDocEdit.aspx?DataReceivingDocId={0}", Grid1.SelectedRowID, "编辑 - ")));
}
/// <summary>
/// Grid双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
this.btnMenuModify_Click(sender, e);
}
#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();
var dataReceivingDoc = BLL.DataReceivingDocService.GetDataReceivingDocById(rowID);
if (dataReceivingDoc != null)
{
BLL.DataReceivingDocApproveService.DeleteApproveByDocId(rowID);
BLL.DataReceivingDocService.DeleteDataReceivingDocById(rowID);
}
}
BindGrid();
ShowNotify("删除数据成功!", MessageBoxIcon.Success);
}
}
#endregion
#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("DataReceivingDocDataInNew.aspx", "导入 - ")));
}
#endregion
#region
/// <summary>
/// 获取单位名称
/// </summary>
/// <param name="CarryUnitIds"></param>
/// <returns></returns>
protected string ConvertCarryUnit(object CarryUnitIds)
{
string CarryUnitName = string.Empty;
if (CarryUnitIds != null)
{
string[] Ids = CarryUnitIds.ToString().Split(',');
foreach (string t in Ids)
{
var type = BLL.UnitService.GetUnitByUnitId(t);
if (type != null)
{
CarryUnitName += type.UnitName + ",";
}
}
}
if (CarryUnitName != string.Empty)
{
return CarryUnitName.Substring(0, CarryUnitName.Length - 1);
}
else
{
return "";
}
}
/// <summary>
/// 状态
/// </summary>
/// <param name="Status"></param>
/// <returns></returns>
public static string ConvertState(object Status)
{
if (Status != null)
{
if (Status.ToString().Trim() == BLL.Const.Comprehensive_ReCompile)
{
return "重报";
}
else if (Status.ToString().Trim() == BLL.Const.Comprehensive_ReJect)
{
return "驳回";
}
else if (Status.ToString().Trim() == BLL.Const.Comprehensive_Compile)
{
return "编制";
}
else if (Status.ToString().Trim() == BLL.Const.Comprehensive_Audit)
{
return "待审批";
}
else if (Status.ToString().Trim() == BLL.Const.Comprehensive_Complete)
{
return "审批完成";
}
}
return "编制";
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == BLL.Const._Null)
{
return;
}
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.DataReceivingDocMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnMenuModify.Hidden = false;
this.Grid1.EnableRowDoubleClickEvent = true;
}
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>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/");
string initTemplatePath = Const.CQMS_DataReceivingDocTempUrl;
string uploadfilepath = string.Empty;
string newUrl = string.Empty;
uploadfilepath = rootPath + initTemplatePath;
var lists = (from x in Funs.DB.Comprehensive_DataReceivingDoc
where x.ProjectId == this.CurrUser.LoginProjectId
select x);
if (!string.IsNullOrEmpty(this.stxtFileCode.Text.Trim()))
{
lists = lists.Where(x => x.FileCode.Contains(stxtFileCode.Text.Trim()));
}
if (!string.IsNullOrEmpty(this.stxtFileName.Text.Trim()))
{
lists = lists.Where(x => x.FileName.Contains(this.stxtFileName.Text.Trim()));
}
lists = lists.OrderBy(x => x.RemarkCode);
if (lists != null)
{
string projectName = BLL.ProjectService.GetShortNameByProjectId(this.CurrUser.LoginProjectId);
newUrl = uploadfilepath.Replace("资料收发文登记记录导入模板", "资料收发文登记记录(" + projectName + "" + DateTime.Now.ToString("yyyyMMdd") + ")");
if (File.Exists(newUrl))
{
File.Delete(newUrl);
}
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);
workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream);
}
// 创建单元格样式
NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
cellStyle.WrapText = true;//自动换行
var font = workbook.CreateFont();
font.FontHeightInPoints = 11;
cellStyle.SetFont(font);
// 第二步:创建新数据行
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0);
NPOI.SS.UserModel.IRow row = sheet.GetRow(0);
NPOI.SS.UserModel.ICell cell;
int i = 3;
foreach (var item in lists)
{
// 第二步:创建新数据行
row = sheet.CreateRow(i);
// 添加数据
cell = row.CreateCell(0);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.ReceiveDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.ReceiveDate) : "");//日期
cell = row.CreateCell(1);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.FileCode);//文件号
cell = row.CreateCell(2);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.FileName);//文件名称
cell = row.CreateCell(3);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.FileType);//文件类别
cell = row.CreateCell(4);
cell.CellStyle = cellStyle;
string proName = string.Empty;
var cnp = BLL.CNProfessionalService.GetCNProfessional(item.CNProfessionalId);
if (cnp != null)
{
proName = cnp.ProfessionalName;
}
cell.SetCellValue(proName);//专业
cell = row.CreateCell(5);
cell.CellStyle = cellStyle;
string unitName = string.Empty;
if (!string.IsNullOrEmpty(item.SendUnit))
{
unitName = BLL.UnitService.GetUnitNameByUnitId(item.SendUnit);
}
cell.SetCellValue(unitName);//发件单位
cell = row.CreateCell(6);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.SendMan);//发件人
cell = row.CreateCell(7);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.Copies.HasValue ? item.Copies.ToString() : "");//份数
cell = row.CreateCell(8);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.DocumentHandler);//文件处理人
cell = row.CreateCell(9);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.SendDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.SendDate) : "");//发出日期
cell = row.CreateCell(10);
cell.CellStyle = cellStyle;
string receiveUnitName = string.Empty;
if (!string.IsNullOrEmpty(item.ReceiveUnit))
{
receiveUnitName = ConvertCarryUnit(item.ReceiveUnit);
}
cell.SetCellValue(receiveUnitName);//接收单位
cell = row.CreateCell(11);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.ReceiveMan);//接收人
cell = row.CreateCell(12);
cell.CellStyle = cellStyle;
string isR = string.Empty;
if (item.IsReply.HasValue)
{
if (item.IsReply == true)
{
isR = "是";
}
else if (item.IsReply == false)
{
isR = "否";
}
}
cell.SetCellValue(isR);//是否需回复
cell = row.CreateCell(13);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.ReturnWuhuangDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.ReturnWuhuangDate) : "");//返回五环日期
cell = row.CreateCell(14);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.RetrunWuhuangCopies.HasValue ? item.RetrunWuhuangCopies.ToString() : "");//返回五环份数
cell = row.CreateCell(15);
cell.CellStyle = cellStyle;
string issueToUnitName = string.Empty;
if (!string.IsNullOrEmpty(item.IssueToUnit))
{
issueToUnitName = ConvertCarryUnit(item.IssueToUnit);
}
cell.SetCellValue(issueToUnitName);//下发至单位
cell = row.CreateCell(16);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.IssueCopies.HasValue ? item.IssueCopies.ToString() : "");//下发份数
cell = row.CreateCell(17);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.IssueUnitReceiver);//下发单位接收人
cell = row.CreateCell(18);
cell.CellStyle = cellStyle;
string isO = string.Empty;
if (item.IsOnFile.HasValue)
{
if (item.IsOnFile == true)
{
isO = "是";
}
else if (item.IsOnFile == false)
{
isO = "否";
}
}
cell.SetCellValue(isO);//是否存档
cell = row.CreateCell(19);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.RemarkCode.HasValue ? item.RemarkCode.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);
}
else
{
Alert.ShowInTop("当前无记录,无法导出!", MessageBoxIcon.Warning);
}
}
#endregion
}
}