隐患整改导出
This commit is contained in:
@@ -5,7 +5,11 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Aspose.Words;
|
||||
using Aspose.Words.Drawing;
|
||||
using Aspose.Words.Tables;
|
||||
|
||||
namespace FineUIPro.Web.HSSE.Check
|
||||
{
|
||||
@@ -417,5 +421,188 @@ namespace FineUIPro.Web.HSSE.Check
|
||||
//}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 导出
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
protected void btnPrinter_Click(object sender, EventArgs e)
|
||||
{
|
||||
//获取所有列表导出
|
||||
if (!string.IsNullOrEmpty(this.RectifyNoticesId))
|
||||
{
|
||||
var rectifyNotices = RectifyNoticesService.GetRectifyNoticesById(RectifyNoticesId);
|
||||
string CheckManIds = rectifyNotices.CheckManIds;
|
||||
string CheckManNames = string.Empty;
|
||||
if (CheckManIds != null)
|
||||
{
|
||||
string[] Ids = CheckManIds.ToString().Split(',');
|
||||
foreach (string t in Ids)
|
||||
{
|
||||
var Name = BLL.UserService.GetUserNameByUserId(t);
|
||||
if (Name != null)
|
||||
{
|
||||
CheckManNames += Name + ",";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
string DutyPersonId = rectifyNotices.DutyPersonId;
|
||||
string DutyPersonName = UserService.GetUserNameByUserId(DutyPersonId);
|
||||
|
||||
var dataList = (from item in Funs.DB.Check_RectifyNoticesItem
|
||||
join rectify in Funs.DB.Technique_Rectify
|
||||
on item.RectifyId equals rectify.RectifyId into rectifyGroup
|
||||
from rectify in rectifyGroup.DefaultIfEmpty()
|
||||
where item.RectifyNoticesId == RectifyNoticesId
|
||||
select new
|
||||
{
|
||||
RectifyNoticesItemId = item.RectifyNoticesItemId,
|
||||
RectifyId = rectify.RectifyName,
|
||||
RectifyNoticesId = item.RectifyNoticesId,
|
||||
WrongContent = item.WrongContent,
|
||||
Requirement = item.Requirement,
|
||||
LimitTime = item.LimitTime,
|
||||
RectifyResults = item.RectifyResults,
|
||||
IsRectify = item.IsRectify
|
||||
}).ToList();
|
||||
|
||||
string rootPath = Server.MapPath("~/");
|
||||
string initTemplatePath = string.Empty;
|
||||
string uploadfilepath = string.Empty;
|
||||
string newUrl = string.Empty;
|
||||
|
||||
initTemplatePath = "File\\Word\\HSSE\\安全质量环保检查记录(模板)建投隐患整改通知单.doc";
|
||||
uploadfilepath = rootPath + initTemplatePath;
|
||||
newUrl = uploadfilepath.Replace(".doc", RectifyNoticesId + ".doc");
|
||||
if (File.Exists(newUrl))
|
||||
{
|
||||
File.Delete(newUrl);
|
||||
}
|
||||
|
||||
File.Copy(uploadfilepath, newUrl);
|
||||
AsposeWordHelper helper = new AsposeWordHelper();
|
||||
helper.OpenTempelte(newUrl); //打开模板文件
|
||||
|
||||
|
||||
var project =
|
||||
(from x in Funs.DB.Base_Project where x.ProjectId == this.CurrUser.LoginProjectId select x)
|
||||
.FirstOrDefault();
|
||||
string projectName = project.ProjectName;
|
||||
string remark = project.Remark;
|
||||
|
||||
string[] fieldNames =
|
||||
{
|
||||
"projectName", "remark"
|
||||
};
|
||||
|
||||
object[] fieldValues =
|
||||
{
|
||||
projectName, remark
|
||||
};
|
||||
helper.Executefield(fieldNames, fieldValues); //域赋值
|
||||
|
||||
if (dataList.Count > 0)
|
||||
{
|
||||
Document doc = helper.Document;
|
||||
DocumentBuilder builder = new DocumentBuilder(doc);
|
||||
Table table = (Table)doc.GetChild(NodeType.Table, 1, true); // 定位第一个表格
|
||||
|
||||
int number = 1;
|
||||
foreach (var item in dataList)
|
||||
{
|
||||
string WrongContent = item.WrongContent;
|
||||
string Requirement = item.Requirement;
|
||||
string LimitTime = item.LimitTime.HasValue
|
||||
? $" {item.LimitTime.Value.Year} 年 {item.LimitTime.Value.Month:D2} 月 {item.LimitTime.Value.Day:D2} 日"
|
||||
: "";
|
||||
List<string> Paths = new List<string>();
|
||||
|
||||
var res = AttachFileService.getFileUrl(item.RectifyNoticesItemId + "#1");
|
||||
if (!string.IsNullOrEmpty(res))
|
||||
{
|
||||
string[] arr = res.Split(',');
|
||||
for (int i = 0; i < arr.Length; i++)
|
||||
{
|
||||
Paths.Add(rootPath + arr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// 克隆模板占位行
|
||||
Row newRow = (Row)table.LastRow.Clone(true);
|
||||
table.AppendChild(newRow);
|
||||
|
||||
// 定位到单元格
|
||||
Cell cell = newRow.FirstCell;
|
||||
|
||||
// 清空单元格所有段落
|
||||
cell.RemoveAllChildren();
|
||||
Paragraph para = new Paragraph(doc); // 显式创建段落
|
||||
cell.AppendChild(para);
|
||||
builder.MoveTo(para); // 定位到段落
|
||||
|
||||
// 插入文本
|
||||
builder.Write(" 存在问题" + number.ToString() + ":" + WrongContent);
|
||||
builder.Writeln(); // 换行
|
||||
builder.Write(" 整改要求:" + Requirement);
|
||||
builder.Writeln(); // 换行
|
||||
builder.Write(" 整改时间:" + LimitTime + " 整改责任人:" + DutyPersonName + " 监督人:" +
|
||||
CheckManNames);
|
||||
builder.Writeln(); // 换行
|
||||
|
||||
// 插入多张图片(横向排列)
|
||||
if (Paths.Count > 0)
|
||||
{
|
||||
foreach (string imgPath in Paths)
|
||||
{
|
||||
// 计算每张图片宽度(总宽度按单元格宽度平分)
|
||||
double cellWidth = cell.CellFormat.Width;
|
||||
double imgWidth = (cellWidth - 10 * (Paths.Count - 1)) / Paths.Count - 10;
|
||||
|
||||
// 插入图片并调整尺寸
|
||||
Shape image = builder.InsertImage(imgPath);
|
||||
image.Width = Paths.Count == 1 ? imgWidth / 2 : imgWidth;
|
||||
// image.Height = image.ImageData.ImageSize.HeightPixels * (imgWidth / image.ImageData.ImageSize.WidthPixels);
|
||||
image.Height = 120;
|
||||
|
||||
// 图片间留间距(横向排列)
|
||||
if (imgPath != Paths.Last())
|
||||
{
|
||||
builder.MoveTo(cell.LastParagraph.AppendChild(new Run(doc)));
|
||||
builder.Write(" "); // 插入空格分隔
|
||||
}
|
||||
}
|
||||
}
|
||||
number++;
|
||||
}
|
||||
|
||||
// 删除模板中的原始占位行
|
||||
table.Rows.RemoveAt(0);
|
||||
}
|
||||
|
||||
|
||||
helper.SaveDoc(newUrl); //文件保存,保存为doc
|
||||
|
||||
// 验证文件是否存在
|
||||
if (!File.Exists(newUrl))
|
||||
{
|
||||
throw new Exception("文件不存在: " + newUrl);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user