Basf_FCL/FCL/FineUIPro.Web/SES/StandardTemplate.aspx.cs

413 lines
17 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 NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Net;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
namespace FineUIPro.Web.SES
{
public partial class StandardTemplate : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();//按钮权限
InitTreeMenu();
}
}
#region
private void InitTreeMenu()
{
this.tvStandardTemp.Nodes.Clear();
TreeNode rootRole = new TreeNode();
rootRole.Text = "Template Type";
rootRole.NodeID = "0";
rootRole.Expanded = true;
this.tvStandardTemp.Nodes.Add(rootRole);
BoundTree(rootRole.Nodes);
}
/// <summary>
/// 遍历节点
/// </summary>
/// <param name="nodes"></param>
/// <param name="parentId"></param>
/// <param name="type"></param>
private void BoundTree(TreeNodeCollection nodes)
{
var types = BLL.TemplateTypeService.GetTemplateTypeList();
if (types.Count() > 0)
{
TreeNode tn = null;
foreach (var q in types)
{
tn = new TreeNode();
tn.Text = q.TemplateType;
tn.NodeID = q.TemplateTypeId;
tn.EnableClickEvent = true;
nodes.Add(tn);
}
}
}
#endregion
#region Tree点击事件
/// <summary>
/// 选择角色事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvStandardTemp_NodeCommand(object sender, TreeCommandEventArgs e)
{
this.BindGrid(this.tvStandardTemp.SelectedNodeID);
}
#endregion
private void BindGrid(string temp)
{
string strSql = @"SELECT t.TemplateId,
t.UploadMan,
t.UploadDate,
t.AttachUrl,
U.UserName AS UploadManName,
typ.TemplateType
FROM dbo.StandardTemplate AS t
LEFT JOIN Sys_User AS U ON U.UserId = t.UploadMan
LEFT JOIN dbo.Base_TemplateType typ ON typ.TemplateTypeId = t.TemplateTypeId
WHERE 1=1 ";
List<SqlParameter> listStr = new List<SqlParameter>();
if (tvStandardTemp.SelectedNodeID != "0" && tvStandardTemp.SelectedNodeID!=null)
{
strSql += " AND t.TemplateTypeId = @TemplateTypeId";
listStr.Add(new SqlParameter("@TemplateTypeId", tvStandardTemp.SelectedNodeID));
}
//listStr.Add(new SqlParameter("@TemplateName", temp));
//if (!string.IsNullOrEmpty(txtRemark.Text))
//{
// strSql += " AND t.Remark like @Remark";
// listStr.Add(new SqlParameter("@Remark", "%" + this.txtRemark.Text.Trim() + "%"));
//}
strSql += " ORDER BY t.UploadDate DESC";
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
for (int i = 0; i < Grid1.Rows.Count; i++)
{
System.Web.UI.WebControls.LinkButton lbtnUrl = ((System.Web.UI.WebControls.LinkButton)(this.Grid1.Rows[i].FindControl("lbtnUrl1")));
string url = lbtnUrl.CommandArgument.ToString();
if (!string.IsNullOrEmpty(url))
{
url = url.Replace('\\', '/');
lbtnUrl.Text = BLL.UploadAttachmentService.ShowAttachment("../", url);
}
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.tvStandardTemp.SelectedNodeID))
{
BindGrid(this.tvStandardTemp.SelectedNodeID);
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
if (tvStandardTemp.SelectedNodeID != "0" && tvStandardTemp.SelectedNodeID != null && tvStandardTemp.SelectedNodeID != string.Empty)
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=add&toKeyId={0}&path=FileUpload/SES/StandardTemplate&menuId={1}", tvStandardTemp.SelectedNodeID, BLL.Const.StandardTemplateMenuId)));
}
else
{
Alert.ShowInTop("Please Select Template Type", MessageBoxIcon.Warning);
return;
}
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StandardTemplateEdit.aspx", "增加 - ")));
}
protected void btnEdit_Click(object sender, EventArgs e)
{
string rowId = Grid1.SelectedRowID;
if (!string.IsNullOrEmpty(rowId))
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=edit&toKeyId={0}&path=FileUpload/SES/StandardTemplate&menuId={1}", rowId, BLL.Const.StandardTemplateMenuId)));
}
else
{
Alert.ShowInTop("Please select the record to modify", MessageBoxIcon.Warning);
return;
}
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StandardTemplateEdit.aspx?templateId={0}", rowId, "编辑 - ")));
}
protected void btnDelete_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
var t = BLL.StandardTemplateService.GetStandardTemplateById(rowID);
if (t != null)
{
BLL.StandardTemplateService.DeleteStandardTemplateById(rowID);
}
}
BindGrid(this.tvStandardTemp.SelectedNodeID);
BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Delete Standard Template");
ShowNotify("Deleted successfully!");
}
else
{
Alert.ShowInTop("Please select the record to Delete", MessageBoxIcon.Warning);
return;
}
}
protected void Grid1_RowDoubleClick(object sender, EventArgs e)
{
string rowId = Grid1.SelectedRowID;
if (!string.IsNullOrEmpty(rowId))
{
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../AttachFile/webuploader3.aspx?type=edit&toKeyId={0}&path=FileUpload/SES/StandardTemplate&menuId={1}", rowId, BLL.Const.StandardTemplateMenuId)));
}
else
{
Alert.ShowInTop("Please select the record to modify", MessageBoxIcon.Warning);
return;
}
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("StandardTemplateEdit.aspx?templateId={0}", rowId, "编辑 - ")));
}
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid(this.tvStandardTemp.SelectedNodeID);
}
/// <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(this.tvStandardTemp.SelectedNodeID);
}
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid(this.tvStandardTemp.SelectedNodeID);
}
#region
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.StandardTemplateMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnBatchDownload))
{
this.btnBatchDownload.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnDelete.Hidden = false;
}
}
}
#endregion
protected void btnBatchDownload_Click(object sender, EventArgs e)
{
string rootPath = Server.MapPath("~/").Replace('\\', '/');
if (Grid1.SelectedRowIDArray.Count() == 0)
{
Alert.ShowInParent("Please select Download Row!");
return;
}
else
{
string[] rowList = Grid1.SelectedRowIDArray;
List<string> durl = new List<string>();
List<string> urlList = (from x in Funs.DB.StandardTemplate where rowList.Contains(x.TemplateId) && x.AttachUrl != null && x.AttachUrl != "" select x.AttachUrl).ToList();
string date = DateTime.Now.ToString("yyyyMMddHHmmss");
string destFile = rootPath + "FileUpload\\Temp\\StandardTemplate_" + date;
string zipFileName = "StandardTemplate_" + date;
if (!Directory.Exists(destFile))
{
Directory.CreateDirectory(destFile);
}
foreach (string url in urlList)
{
string sourceFileName = rootPath + url.Replace('\\', '/');
string[] subUrl = sourceFileName.Split('/');
string fileName = subUrl[subUrl.Count() - 1];
string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
if (newFileName.Contains("_"))
{
if (newFileName.Substring(0, 1) == "_")
{
newFileName = newFileName.Substring(1, newFileName.Length - 1);
}
else
{
newFileName = newFileName.Replace(newFileName.Split('_')[0], "");
newFileName = newFileName.Substring(1);
}
}
string destFileName = destFile +"/"+ newFileName;
if (File.Exists(sourceFileName))
{
File.Copy(sourceFileName,destFileName,true);
}
}
FileZipDownload(destFile.Replace('\\', '/'), zipFileName);
//foreach (string url in urlList)
//{
// string fullUrl = rootPath + url.Replace('\\', '/');
// if (File.Exists(fullUrl))
// {
// durl.Add(url);
// }
//}
//string strcon = DownloadFileByHttpUrl(durl);
//ShowNotify(strcon);
}
}
public string DownloadFileByHttpUrl(List<string> HttpUrlList)
{
if (HttpUrlList == null || HttpUrlList.Count == 0)
{
return "没有附件";
}
try
{
var random = new Random();
var zipMs = new MemoryStream();
ZipOutputStream zipStream = new ZipOutputStream(zipMs);
zipStream.SetLevel(6);//压缩率0~9
foreach (var url in HttpUrlList)
{
if (!string.IsNullOrWhiteSpace(url))
{
string rootPath = System.Configuration.ConfigurationManager.AppSettings["RootUrl"];
string surl = rootPath + url.Replace('\\', '/');
var urlStr = HttpUtility.UrlDecode(surl);
Console.WriteLine(urlStr);
string fileExt = Path.GetExtension(urlStr).ToLower();
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(urlStr);
var strName = fileNameWithoutExtension.Substring(fileNameWithoutExtension.LastIndexOf("/") + 1) + random.Next(1000, 9999) + fileExt;
zipStream.PutNextEntry(new ZipEntry(strName));
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlStr);
request.AllowAutoRedirect = true;
WebProxy proxy = new WebProxy();
proxy.BypassProxyOnLocal = true;
proxy.UseDefaultCredentials = true;
request.Proxy = proxy;
WebResponse response = request.GetResponse();
using (Stream streams = response.GetResponseStream())
{
Byte[] buffer = new Byte[1024];
int current = 0;
while ((current = streams.Read(buffer, 0, buffer.Length)) != 0)
{
zipStream.Write(buffer, 0, current);
}
zipStream.Flush();
}
}
}
zipStream.Finish();
zipMs.Position = 0;
//下边为打包压缩
MemoryStream stream = zipMs;
byte[] srcBuf = new Byte[stream.Length];
stream.Read(srcBuf, 0, srcBuf.Length);
stream.Seek(0, SeekOrigin.Begin);
string filePath = "C:/DownLoad";//Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string date = DateTime.Now.ToString("yyyyMMddHHmmss");
string con = "StandardTemplate";
var file_name = con + "_" + date + ".zip";
using (FileStream fs = new FileStream(filePath + "\\" + file_name, FileMode.Create, FileAccess.Write))
{
fs.Write(srcBuf, 0, srcBuf.Length);
fs.Close();
return "已下载到C盘Download文件下";
}
}
catch (Exception ex)
{
return "下载失败:" + ex.ToString();
}
}
private void FileZipDownload(string destFilePath, string zipFileName)
{
//string rootPath = Funs.RootPath;
//if (!Directory.Exists(destFilePath))
//{
// Directory.CreateDirectory(destFilePath);
//}
string zipFilePath = destFilePath+".zip";
System.IO.Compression.ZipFile.CreateFromDirectory(destFilePath, zipFilePath);
FileInfo info = new FileInfo(zipFilePath);
long fileSize = info.Length;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(zipFileName + ".zip", System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
System.Web.HttpContext.Current.Response.TransmitFile(zipFilePath, 0, fileSize);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
Funs.DeleteDir(destFilePath);
File.Delete(zipFilePath);
}
}
}