天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1101 lines
47 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QMFrameWork.WebUI.Attribute;
using QMAPP.FJC.Entity.Produce;
using QMAPP.Common.Web.Controllers;
using QMAPP.ServicesAgent;
using QMAPP.FJC.Entity.ProductPetrospect;
using QMAPP.Entity;
using QMFrameWork.WebUI.DataSource;
using QMFrameWork.Common.Serialization;
using QMAPP.FJC.Web.Models.ProductPetrospect;
using System.Data;
using Common.AssemblyUtil;
using System.IO;
using System.Diagnostics;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using QMAPP.FJC.Entity.Operation;
using QMAPP.FJC.Entity;
using QMAPP.FJC.Entity.Basic;
namespace QMAPP.FJC.Web.Controllers
{
/// <summary>
/// 模块编号:M5-1
/// 作 用:产品档案控制层
/// 作 者:王丹丹
/// 编写日期:2015年06月08日
///</summary>
public class ProductArchivesController : QController
{
#region 初始化页面
public ActionResult Index()
{
return View();
}
[HttpPost]
[HandleException]
public ActionResult Index(bool? callBack)
{
ProductArchivesModel seachModel = new ProductArchivesModel();
ServiceAgent wcfAgent = this.GetServiceAgent();
//ProductArchives condition = new ProductArchives();
DataResult<QMAPP.FJC.Entity.Operation.Product> dataResult = new DataResult<QMAPP.FJC.Entity.Operation.Product>();
//List<ProductArchives> list = new List<ProductArchives>();
try
{
//获取查询对象
seachModel = GetModel<ProductArchivesModel>();
#region 获取缓存值
if (callBack != null)
{
TryGetSelectBuffer<ProductArchivesModel>(out seachModel);
}
else
{
//保存搜索条件
SetSelectBuffer<ProductArchivesModel>(seachModel);
}
#endregion
#region wcf服务统一接口
dataResult = wcfAgent.InvokeServiceFunction<DataResult<QMAPP.FJC.Entity.Operation.Product>>("ProductBLL_GetProductInfoByAnyBarcode", seachModel.ERMISCODE);
if(dataResult.IsSuccess)
{
seachModel.ProductInfo = dataResult.Result;
Session.Add("ProductInfo", seachModel.ProductInfo);
}
else
{
SetMessage(dataResult.Msg);
}
#endregion
//return Json(new { Msg = dataResult.Msg, IsSuccess = dataResult.IsSuccess.ToString(), Result = list });
return View(seachModel);
}
catch (Exception ex)
{
throw ex;
}
}
[HandleException]
public ActionResult LoadPartList(string productCode)
{
if (string.IsNullOrWhiteSpace(productCode))
{
return View("PartList");
}
ServiceAgent wcfAgent = this.GetServiceAgent();
//ProductArchives condition = new ProductArchives();
//List<ProductArchives> list = new List<ProductArchives>();
try
{
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction<List<QMAPP.FJC.Entity.Operation.Product>>("ProductBLL_GetPartList", productCode);
#endregion
//return Json(new { Msg = dataResult.Msg, IsSuccess = dataResult.IsSuccess.ToString(), Result = list });
Session.Add("PartList", dataResult);
return View("PartList", dataResult);
}
catch (Exception ex)
{
throw ex;
}
}
[HandleException]
public ActionResult LoadShipment(string productCode)
{
if (string.IsNullOrWhiteSpace(productCode))
{
return View("Shipment");
}
ServiceAgent wcfAgent = this.GetServiceAgent();
try
{
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction<QMAPP.FJC.Entity.Operation.ShipmentInfo>("ProductBLL_GetShipmentInfo", productCode);
#endregion
Session.Add("Shipment", dataResult);
return View("Shipment", dataResult);
}
catch (Exception ex)
{
throw ex;
}
}
[HandleException]
public ActionResult LoadProcessRecord(string productCode)
{
if (string.IsNullOrWhiteSpace(productCode))
{
return View("ProcessRecord");
}
ServiceAgent wcfAgent = this.GetServiceAgent();
try
{
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction<List<QMAPP.FJC.Entity.Operation.MainOperation>>("MainOperationBLL_GetOperationRecords", productCode);
#endregion
return View("ProcessRecord", dataResult);
}
catch (Exception ex)
{
throw ex;
}
}
[HttpPost]
[HandleException]
public ActionResult LoadParameter(string productcode, string machinecode, string tables, string fileds)
{
ServiceAgent wcfAgent = this.GetServiceAgent();
try
{
var condition = new ProcessParameter
{
PARATABLENAME =tables,
Fileds = fileds,
MACHINECODDE = machinecode,
ProductCode = productcode
};
#region wcf服务统一接口
var dataResult = wcfAgent.InvokeServiceFunction("ProcessParameterBLL_GetParameter", condition);
#endregion
return Content(dataResult);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 获取列表
/// <summary>
/// 获取列表
/// </summary>
/// <param name="callBack">是否回调</param>
/// <returns>列表</returns>
[HandleException]
public ActionResult GetExportParameter(bool? callBack)
{
ProductArchivesModel seachModel = new ProductArchivesModel();
ServiceAgent wcfAgent = this.GetServiceAgent();
ProductArchives condition = new ProductArchives();
DataResult<DataTable> dataResult = new DataResult<DataTable>();
List<ProductArchives> list = new List<ProductArchives>();
try
{
//获取查询对象
seachModel = GetModel<ProductArchivesModel>();
#region 获取缓存值
if (callBack != null)
{
TryGetSelectBuffer<ProductArchivesModel>(out seachModel);
}
else
{
//保存搜索条件
SetSelectBuffer<ProductArchivesModel>(seachModel);
}
#endregion
condition = CopyToModel<ProductArchives, ProductArchivesModel>(seachModel);
#region wcf服务统一接口
//dataResult = wcfAgent.InvokeServiceFunction<DataResult<DataTable>>(QMAPP.ServicesAgent.ProductPetrospect.ProductArchivesBLL_GetProductParameter.ToString(), condition);
var dl = wcfAgent.InvokeServiceFunction("ProductArchivesBLL_GetProductParameterNew1", condition);
//dl = dl.OrderBy(x => x.MEMO).ToList();
//list = EntityFactory.GetEntities<ProductArchives>(dataResult.Result);
#endregion
//return Json(new { Msg = dataResult.Msg, IsSuccess = dataResult.IsSuccess.ToString(), Result = list });
return Content(dl);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 导出pdf
/// <summary>
/// 导出excel
/// </summary>
/// <returns>结果</returns>
[HttpPost]
public ActionResult ExportExcel()
{
ProductArchivesModel seachModel = null;
ProductArchives condition = null;
DataResult<DataSet> exportDs = new DataResult<DataSet>();
ServiceAgent wcfAgent = this.GetServiceAgent();
string savePathName = Request["savePath"];
string ermiscode = Request["ermiscode"];
string maincode = Request["maincode"];
string sourcePath ="";
try
{
//获取查询对象
seachModel = GetModel<ProductArchivesModel>();
TryGetSelectBuffer<ProductArchivesModel>(out seachModel);
condition = CopyToModel<ProductArchives, ProductArchivesModel>(seachModel);
condition.ERMISCODE = ermiscode;
condition.MAINCODE = maincode;
//获取加工参数数据
exportDs = wcfAgent.InvokeServiceFunction<DataResult<DataSet>>(QMAPP.ServicesAgent.ProductPetrospect.ProductArchivesBLL_GetExportData.ToString(), condition);
if (exportDs.IsSuccess == false)
{
SetMessage(exportDs.Msg);
return View("Index");
}
//获取本体信息
Main main = wcfAgent.InvokeServiceFunction<Main>(QMAPP.ServicesAgent.ProductPetrospect.ProductArchivesBLL_GetMainInfo.ToString(), condition);
//获取加工记录信息
//MainOperation mainOperation = wcfAgent.InvokeServiceFunction<MainOperation>(QMAPP.ServicesAgent.ProductPetrospect.ProductArchivesBLL_GetMainOperationInfo.ToString(), condition);
MainOperation mainOperation = new MainOperation();
//生成pdf文件到“App_Data/ProductArchives.pdf”模板中
ExportPDF(exportDs.Result, main, mainOperation);
#region 下载文件到客户端
//将生成的pdf文件“App_Data/ProductArchives.pdf”下载到客户端
//pdf文件模板路径
sourcePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "ProductArchives.pdf";
//保存的文件及路径
savePathName ="c:\\"+ savePathName + ".pdf";
//保存的文件路径
string savePath = savePathName.Substring(0, savePathName.LastIndexOf("\\"));
if (!System.IO.Directory.Exists(savePath))
{
// 目录不存在,建立目录
System.IO.Directory.CreateDirectory(savePath);
}
//判断同名文件是否存在
if (System.IO.File.Exists(savePathName))
{
// 如果存在
exportDs.Msg = "同名文件已存在!";
exportDs.IsSuccess = false;
return View("Index");
}
#endregion
exportDs.IsSuccess = true;
}
catch (Exception ex)
{
exportDs.IsSuccess = false;
exportDs.Msg = ex.Message;
throw exportDs.Ex;
}
return File(sourcePath, "Application/pdf", string.Format("{0}.pdf", string.IsNullOrEmpty(maincode) ? ermiscode : maincode));
}
#endregion
#region 生成PDF文件到“App_Data/ProductArchives.pdf”模板中
/// <summary>
/// 生成PDF文件到“App_Data/ProductArchives.pdf”模板中
/// </summary>
/// <param name="ds">加工参数</param>
/// <param name="main">本体</param>
/// <param name="mainOperation">加工记录</param>
public void ExportPDF( DataSet ds, Main main, MainOperation mainOperation)
{
string txtheader = "产品档案信息";
//创建一个iTextSharp.text.Document 对象的实例:
Document document = new Document(PageSize.A4);//纸张大小设置
//导出模板路径
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
//为该Document 创建一个Writer 实例:
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "ProductArchives.pdf", FileMode.Create));
//设置文档的属性
document.AddAuthor("XXX");//作者
document.AddCreator("XXX,江森B9管理系统!");
document.AddKeywords("PDF,存档," + txtheader);
document.AddSubject(txtheader + "PDF文档导出存档");
document.AddTitle(txtheader);//标题
#region 添加页脚
//设置页脚的字体
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//添加页脚
iTextSharp.text.Font FontFooter = new iTextSharp.text.Font(bfChinese, 10);
HeaderFooter footer = new HeaderFooter(new Phrase(" 第 ", FontFooter), new Phrase(" 页", FontFooter));
footer.IsNumbered();
footer.Border = Rectangle.NO_BORDER;
footer.Alignment = Rectangle.ALIGN_RIGHT;
document.Footer = footer;
#endregion
try
{
//开启Document
document.Open();
#region 设置字体
//第四步,为当前Document 添加内容:做了三项1:段落 2:列表 3:表格
Font fontChinese = new iTextSharp.text.Font(bfChinese, 10);
Font fontHeadInfo = new iTextSharp.text.Font(bfChinese, 13);
Font fontbz = new iTextSharp.text.Font(bfChinese, 13, iTextSharp.text.Font.BOLD);
Font fontfl = new iTextSharp.text.Font(bfChinese, 17, iTextSharp.text.Font.BOLD);
Font font = new iTextSharp.text.Font(bfChinese, 20, iTextSharp.text.Font.BOLD);
#endregion
#region 表头信息
//创建表单
PdfPTable tableTitle = new PdfPTable(8);
PdfPCell cellhead = new PdfPCell(tableTitle);
cellhead.PaddingBottom = 0;
cellhead.PaddingTop = 10;
tableTitle.SplitLate = false;
//图片
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
Image image = Image.GetInstance(new Uri(str + "Content/Img/pdfyemei.bmp"));
PdfPCell cellimg = new PdfPCell(image, true);
cellimg.Colspan = 8;
cellimg.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellimg);
PdfPCell cellTitle1 = new PdfPCell();
cellTitle1.AddElement(new Phrase("Traceability Report", fontbz));
cellTitle1.Colspan = 8;
cellTitle1.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle1.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle1);
PdfPCell cellTitle2 = new PdfPCell();
cellTitle2.AddElement(new Phrase("Plant:", fontHeadInfo));
cellTitle2.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle2.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle2);
PdfPCell cellTitle3 = new PdfPCell();
cellTitle3.AddElement(new Phrase("江森", fontHeadInfo));
cellTitle3.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle3.BorderColor = new Color(255, 255, 255);
cellTitle3.Colspan = 2;
tableTitle.AddCell(cellTitle3);
PdfPCell cellTitle4 = new PdfPCell();
cellTitle4.AddElement(new Phrase("Product Code:", fontHeadInfo));
cellTitle4.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle4.Colspan = 2;
cellTitle4.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle4);
PdfPCell cellTitle5 = new PdfPCell();
cellTitle5.AddElement(new Phrase(main.MAINCODE, fontHeadInfo));
cellTitle5.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle5.Colspan = 3;
cellTitle5.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle5);
PdfPCell cellTitle6 = new PdfPCell();
cellTitle6.AddElement(new Phrase("Line:", fontHeadInfo));
cellTitle6.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle6.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle6);
PdfPCell cellTitle7 = new PdfPCell();
cellTitle7.AddElement(new Phrase("B9", fontHeadInfo));
cellTitle7.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle7.Colspan = 7;
cellTitle7.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle7);
#region 分割线(第5、6行)
//分割线
PdfPCell cellTitle10 = new PdfPCell();
cellTitle10.AddElement(new Phrase("", fontHeadInfo));
cellTitle10.Colspan = 8;
cellTitle10.BorderWidthBottom = 3f;
cellTitle10.Border = Rectangle.BOTTOM_BORDER;
tableTitle.AddCell(cellTitle10);
PdfPCell cellInfoKong = new PdfPCell();
cellInfoKong.AddElement(new Phrase("", fontHeadInfo));
cellInfoKong.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfoKong.Colspan = 8;
cellInfoKong.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfoKong);
#endregion
// 告诉程序这行是表头,这样页数大于1时程序会自动为你加上表头。
tableTitle.HeaderRows = 6;
#endregion
#region 零件信息
//零件信息
#region 产品类别
PdfPCell cellInfo1 = new PdfPCell();
cellInfo1.AddElement(new Phrase("Product Type:", fontHeadInfo));
cellInfo1.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo1.Colspan = 3;
cellInfo1.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo1);
PdfPCell cellInfo2 = new PdfPCell();
cellInfo2.AddElement(new Phrase("Dash Board", fontHeadInfo));
cellInfo2.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo2.Colspan = 5;
cellInfo2.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo2);
#endregion
#region 产品状态(是否合格)
PdfPCell cellInfo3 = new PdfPCell();
cellInfo3.AddElement(new Phrase("Product Status:", fontHeadInfo));
cellInfo3.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo3.Colspan = 3;
cellInfo3.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo3);
PdfPCell cellInfo4 = new PdfPCell();
if (main.STATUS == EnumGeter.PRODUCTSTAUTS.QUALIFIED.GetHashCode().ToString())
{
cellInfo4.AddElement(new Phrase("OK", fontHeadInfo));
}
else
{
cellInfo4.AddElement(new Phrase("NO", fontHeadInfo));
}
cellInfo4.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo4.Colspan = 5;
cellInfo4.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo4);
#endregion
#region 产品加工开始时间
PdfPCell cellInfo5 = new PdfPCell();
cellInfo5.AddElement(new Phrase("Production Start:", fontHeadInfo));
cellInfo5.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo5.Colspan = 3;
cellInfo5.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo5);
PdfPCell cellInfo6 = new PdfPCell();
cellInfo6.AddElement(new Phrase(main.CREATEDATE.ToString("yyyy.MM.dd hh:mm:ss"), fontHeadInfo));
cellInfo6.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo6.Colspan = 5;
cellInfo6.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo6);
#endregion
#region 产品加工完成时间
PdfPCell cellInfo7 = new PdfPCell();
cellInfo7.AddElement(new Phrase("Production End:", fontHeadInfo));
cellInfo7.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo7.Colspan = 3;
cellInfo7.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo7);
PdfPCell cellInfo8 = new PdfPCell();
cellInfo8.AddElement(new Phrase(main.COMPLETETIME.ToString("yyyy.MM.dd hh:mm:ss"), fontHeadInfo));
cellInfo8.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo8.Colspan = 5;
cellInfo8.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo8);
#endregion
#region 产品加工时长
//计算产品加工时长(产品加工完成时间-产品加工开始时间)
TimeSpan TimeCount = main.COMPLETETIME - main.CREATEDATE;
int days = TimeCount.Days;
int hours = TimeCount.Hours;
int minites = TimeCount.Minutes;
int secound = TimeCount.Seconds;
string timeCount = days + "days" + hours + ":" + minites + ":" + secound;
PdfPCell cellInfo9 = new PdfPCell();
cellInfo9.AddElement(new Phrase("Duration:", fontHeadInfo));
cellInfo9.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo9.Colspan = 3;
cellInfo9.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo9);
PdfPCell cellInfo10 = new PdfPCell();
if (main.COMPLETETIME != DateTime.MinValue && main.CREATEDATE != DateTime.MinValue)
{
cellInfo10.AddElement(new Phrase(timeCount, fontHeadInfo));
}
else
{
cellInfo10.AddElement(new Phrase("", fontHeadInfo));
}
cellInfo10.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo10.Colspan = 5;
cellInfo10.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo10);
#endregion
#region 产品加工状态
PdfPCell cellInfo11 = new PdfPCell();
cellInfo11.AddElement(new Phrase("Production Status:", fontHeadInfo));
cellInfo11.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfo11.Colspan = 3;
cellInfo11.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo11);
PdfPCell cellInfo12 = new PdfPCell();
if (main.COMPLETEFLAG == EnumGeter.COMPLETEFLAG.COMPLETED.GetHashCode().ToString())
{
cellInfo12.AddElement(new Phrase("finished", fontHeadInfo));
}
else
{
cellInfo12.AddElement(new Phrase("Processing", fontHeadInfo));
}
cellInfo12.VerticalAlignment = Element.ALIGN_LEFT;
cellInfo12.Colspan = 5;
cellInfo12.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfo12);
#endregion
//插入空行
PdfPCell cellInfoKong3 = new PdfPCell();
cellInfoKong3.AddElement(new Phrase("", fontHeadInfo));
cellInfoKong3.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfoKong3.Colspan = 8;
cellInfoKong3.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfoKong3);
//表名
PdfPCell cellTitle11 = new PdfPCell();
cellTitle11.AddElement(new Phrase(txtheader, fontbz));
cellTitle11.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle11.Colspan = 8;
cellTitle11.Border = Rectangle.TOP_BORDER;
tableTitle.AddCell(cellTitle11);
//插入空行
PdfPCell cellInfoKong2 = new PdfPCell();
cellInfoKong2.AddElement(new Phrase("", fontHeadInfo));
cellInfoKong2.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfoKong2.BorderColor = new Color(255, 255, 255);
cellInfoKong2.Colspan = 8;
tableTitle.AddCell(cellInfoKong2);
#endregion
#region 添加数据
//添加数据标题
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
PdfPCell cellTitle = new PdfPCell();
cellTitle.AddElement(new Phrase(ds.Tables[0].Columns[j].ColumnName, fontbz));
cellTitle.Colspan = 4;
cellTitle.BackgroundColor = new Color(220, 220, 220);
tableTitle.AddCell(cellTitle);
}
#region 添加数据
// 添加数据
string Str = "";
string[] StrSplit;
//遍历原gridview的数据行
foreach (DataTable dt in ds.Tables)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
PdfPCell cell1 = new PdfPCell();
Str = dt.Rows[i][j].ToString();
//處理 &nbsp
Str = Str.Replace("&nbsp;", " ");
cell1.AddElement(new Phrase(Str, fontChinese));
if (i == 0 && j == 0)
{
cell1.Border = Rectangle.LEFT_BORDER | Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER;
cell1.BackgroundColor = new Color(239, 239, 239);
}
if (i == 0 && j == 1)
{
cell1.Border = Rectangle.RIGHT_BORDER | Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER;
cell1.BackgroundColor = new Color(239, 239, 239);
}
cell1.Colspan = 4;
tableTitle.AddCell(cell1);
StrSplit = Str.Split(' ');
for (int k = 0; k < StrSplit.Length; k++)
cell1.AddElement(new Phrase(StrSplit[k], fontChinese));
}
}
}
#endregion
PdfPCell cellfoot = new PdfPCell();
cellfoot.AddElement(new Phrase("", fontHeadInfo));
cellfoot.Colspan = 8;
cellfoot.Border = Rectangle.TOP_BORDER;
tableTitle.AddCell(cellfoot);
document.Add(tableTitle);
#endregion
//关闭Document
document.Close();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Q5导出pdf
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult ExportExcelNew()
{
ProductArchivesModel seachModel = null;
ProductArchives condition = null;
DataResult<List<ProcessParameter>> exportDs = new DataResult<List<ProcessParameter>>();
ServiceAgent wcfAgent = this.GetServiceAgent();
string savePathName = Request["savePath"];
string ermiscode = Request["ermiscode"];
string maincode = Request["maincode"];
string sourcePath = "";
try
{
//获取查询对象
seachModel = GetModel<ProductArchivesModel>();
TryGetSelectBuffer<ProductArchivesModel>(out seachModel);
condition = CopyToModel<ProductArchives, ProductArchivesModel>(seachModel);
condition.ERMISCODE = ermiscode;
condition.MAINCODE = maincode;
//获取加工参数数据
exportDs = wcfAgent.InvokeServiceFunction<DataResult<List<ProcessParameter>>>("ProductArchivesBLL_GetExportDataNew", condition);
if (exportDs.IsSuccess == false)
{
SetMessage(exportDs.Msg);
return View("Index");
}
//生成pdf文件到“App_Data/ProductArchives.pdf”模板中
ExportPDFNew(exportDs.Result);
#region 下载文件到客户端
//将生成的pdf文件“App_Data/ProductArchives.pdf”下载到客户端
//pdf文件模板路径
sourcePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "ProductArchives.pdf";
//保存的文件及路径
savePathName = "c:\\" + savePathName + ".pdf";
//保存的文件路径
string savePath = savePathName.Substring(0, savePathName.LastIndexOf("\\"));
if (!System.IO.Directory.Exists(savePath))
{
// 目录不存在,建立目录
System.IO.Directory.CreateDirectory(savePath);
}
//判断同名文件是否存在
if (System.IO.File.Exists(savePathName))
{
// 如果存在
exportDs.Msg = "同名文件已存在!";
exportDs.IsSuccess = false;
return View("Index");
}
#endregion
exportDs.IsSuccess = true;
}
catch (Exception ex)
{
exportDs.IsSuccess = false;
exportDs.Msg = ex.Message;
throw exportDs.Ex;
}
return File(sourcePath, "Application/pdf", string.Format("{0}.pdf", string.IsNullOrEmpty(maincode) ? ermiscode : maincode));
}
#endregion
#region Q5生成PDF文件到“App_Data/ProductArchives.pdf”模板中
/// <summary>
///
/// </summary>
/// <param name="ds"></param>
public void ExportPDFNew(List<ProcessParameter> ds)
{
string txtheader = "产品档案信息";
//创建一个iTextSharp.text.Document 对象的实例:
Document document = new Document(PageSize.A4);//纸张大小设置
//导出模板路径
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
//为该Document 创建一个Writer 实例:
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "ProductArchives.pdf", FileMode.Create));
//设置文档的属性
document.AddAuthor("XXX");//作者
document.AddCreator("XXX,富维安道拓数字化工厂!");
document.AddKeywords("PDF,存档," + txtheader);
document.AddSubject(txtheader + "PDF文档导出存档");
document.AddTitle(txtheader);//标题
#region 添加页脚
//设置页脚的字体
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//添加页脚
iTextSharp.text.Font FontFooter = new iTextSharp.text.Font(bfChinese, 10);
HeaderFooter footer = new HeaderFooter(new Phrase(" 第 ", FontFooter), new Phrase(" 页", FontFooter));
footer.IsNumbered();
footer.Border = Rectangle.NO_BORDER;
footer.Alignment = Rectangle.ALIGN_RIGHT;
document.Footer = footer;
#endregion
try
{
//开启Document
document.Open();
#region 设置字体
//第四步,为当前Document 添加内容:做了三项1:段落 2:列表 3:表格
Font fontChinese = new iTextSharp.text.Font(bfChinese, 10);
Font fontHeadInfo = new iTextSharp.text.Font(bfChinese, 13);
Font fontbz = new iTextSharp.text.Font(bfChinese, 13, iTextSharp.text.Font.BOLD);
Font fontfl = new iTextSharp.text.Font(bfChinese, 17, iTextSharp.text.Font.BOLD);
Font font = new iTextSharp.text.Font(bfChinese, 20, iTextSharp.text.Font.BOLD);
#endregion
#region 表头信息
//创建表单
PdfPTable tableTitle = new PdfPTable(12);
PdfPCell cellhead = new PdfPCell(tableTitle);
cellhead.PaddingBottom = 0;
cellhead.PaddingTop = 10;
tableTitle.SplitLate = false;
//图片
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
Image image = Image.GetInstance(new Uri(str + "Content/Img/pdfyemei.bmp"));
PdfPCell cellimg = new PdfPCell(image, true);
cellimg.Colspan = 12;
cellimg.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellimg);
PdfPCell cellTitle1 = new PdfPCell();
cellTitle1.AddElement(new Phrase("Traceability Report", fontbz));
cellTitle1.Colspan = 12;
cellTitle1.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle1.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle1);
PdfPCell cellTitle2 = new PdfPCell();
cellTitle2.AddElement(new Phrase("Plant:", fontHeadInfo));
cellTitle2.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle2.BorderColor = new Color(255, 255, 255);
cellTitle2.Colspan = 2;
tableTitle.AddCell(cellTitle2);
PdfPCell cellTitle3 = new PdfPCell();
cellTitle3.AddElement(new Phrase("富维安道拓成都工厂", fontHeadInfo));
cellTitle3.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle3.BorderColor = new Color(255, 255, 255);
cellTitle3.Colspan = 4;
tableTitle.AddCell(cellTitle3);
//PdfPCell cellTitle4 = new PdfPCell();
//cellTitle4.AddElement(new Phrase("Product Code:", fontHeadInfo));
//cellTitle4.VerticalAlignment = Element.ALIGN_LEFT;
//cellTitle4.Colspan = 2;
//cellTitle4.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellTitle4);
//PdfPCell cellTitle5 = new PdfPCell();
//cellTitle5.AddElement(new Phrase("Product Code:", fontHeadInfo));
//cellTitle5.VerticalAlignment = Element.ALIGN_LEFT;
//cellTitle5.Colspan = 3;
//cellTitle5.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellTitle5);
PdfPCell cellTitle6 = new PdfPCell();
cellTitle6.AddElement(new Phrase("Line:", fontHeadInfo));
cellTitle6.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle6.BorderColor = new Color(255, 255, 255);
cellTitle6.Colspan = 2;
tableTitle.AddCell(cellTitle6);
PdfPCell cellTitle7 = new PdfPCell();
cellTitle7.AddElement(new Phrase(" ", fontHeadInfo));
cellTitle7.VerticalAlignment = Element.ALIGN_LEFT;
cellTitle7.Colspan = 4;
cellTitle7.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellTitle7);
#region 分割线(第5、6行)
//分割线
PdfPCell cellTitle10 = new PdfPCell();
cellTitle10.AddElement(new Phrase("", fontHeadInfo));
cellTitle10.Colspan = 12;
cellTitle10.BorderWidthBottom = 3f;
cellTitle10.Border = Rectangle.BOTTOM_BORDER;
tableTitle.AddCell(cellTitle10);
PdfPCell cellInfoKong = new PdfPCell();
cellInfoKong.AddElement(new Phrase("", fontHeadInfo));
cellInfoKong.VerticalAlignment = Element.ALIGN_RIGHT;
cellInfoKong.Colspan = 12;
cellInfoKong.BorderColor = new Color(255, 255, 255);
tableTitle.AddCell(cellInfoKong);
#endregion
// 告诉程序这行是表头,这样页数大于1时程序会自动为你加上表头。
tableTitle.HeaderRows = 6;
#endregion
#region 零件信息
////零件信息
//#region 产品类别
//PdfPCell cellInfo1 = new PdfPCell();
//cellInfo1.AddElement(new Phrase("Product Type:", fontHeadInfo));
//cellInfo1.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo1.Colspan = 3;
//cellInfo1.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo1);
//PdfPCell cellInfo2 = new PdfPCell();
//cellInfo2.AddElement(new Phrase("Dash Board", fontHeadInfo));
//cellInfo2.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo2.Colspan = 5;
//cellInfo2.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo2);
//#endregion
//#region 产品状态(是否合格)
//PdfPCell cellInfo3 = new PdfPCell();
//cellInfo3.AddElement(new Phrase("Product Status:", fontHeadInfo));
//cellInfo3.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo3.Colspan = 3;
//cellInfo3.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo3);
//PdfPCell cellInfo4 = new PdfPCell();
//cellInfo4.AddElement(new Phrase("OK", fontHeadInfo));
//cellInfo4.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo4.Colspan = 5;
//cellInfo4.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo4);
//#endregion
//#region 产品加工开始时间
//PdfPCell cellInfo5 = new PdfPCell();
//cellInfo5.AddElement(new Phrase("Production Start:", fontHeadInfo));
//cellInfo5.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo5.Colspan = 3;
//cellInfo5.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo5);
//PdfPCell cellInfo6 = new PdfPCell();
//cellInfo6.AddElement(new Phrase("Production Start:", fontHeadInfo));
//cellInfo6.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo6.Colspan = 5;
//cellInfo6.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo6);
//#endregion
//#region 产品加工完成时间
//PdfPCell cellInfo7 = new PdfPCell();
//cellInfo7.AddElement(new Phrase("Production End:", fontHeadInfo));
//cellInfo7.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo7.Colspan = 3;
//cellInfo7.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo7);
//PdfPCell cellInfo8 = new PdfPCell();
//cellInfo8.AddElement(new Phrase("Production End:", fontHeadInfo));
//cellInfo8.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo8.Colspan = 5;
//cellInfo8.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo8);
//#endregion
//#region 产品加工时长
////计算产品加工时长(产品加工完成时间-产品加工开始时间)
////TimeSpan TimeCount = main.COMPLETETIME - main.CREATEDATE;
////int days = TimeCount.Days;
////int hours = TimeCount.Hours;
////int minites = TimeCount.Minutes;
////int secound = TimeCount.Seconds;
////string timeCount = days + "days" + hours + ":" + minites + ":" + secound;
//PdfPCell cellInfo9 = new PdfPCell();
//cellInfo9.AddElement(new Phrase("Duration:", fontHeadInfo));
//cellInfo9.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo9.Colspan = 3;
//cellInfo9.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo9);
//PdfPCell cellInfo10 = new PdfPCell();
//cellInfo10.AddElement(new Phrase("", fontHeadInfo));
//cellInfo10.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo10.Colspan = 5;
//cellInfo10.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo10);
//#endregion
//#region 产品加工状态
//PdfPCell cellInfo11 = new PdfPCell();
//cellInfo11.AddElement(new Phrase("Production Status:", fontHeadInfo));
//cellInfo11.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfo11.Colspan = 3;
//cellInfo11.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo11);
//PdfPCell cellInfo12 = new PdfPCell();
//cellInfo12.AddElement(new Phrase("finished", fontHeadInfo));
//cellInfo12.VerticalAlignment = Element.ALIGN_LEFT;
//cellInfo12.Colspan = 5;
//cellInfo12.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfo12);
//#endregion
////插入空行
//PdfPCell cellInfoKong3 = new PdfPCell();
//cellInfoKong3.AddElement(new Phrase("", fontHeadInfo));
//cellInfoKong3.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfoKong3.Colspan = 12;
//cellInfoKong3.BorderColor = new Color(255, 255, 255);
//tableTitle.AddCell(cellInfoKong3);
////表名
//PdfPCell cellTitle11 = new PdfPCell();
//cellTitle11.AddElement(new Phrase(txtheader, fontbz));
//cellTitle11.VerticalAlignment = Element.ALIGN_LEFT;
//cellTitle11.Colspan = 12;
//cellTitle11.Border = Rectangle.TOP_BORDER;
//tableTitle.AddCell(cellTitle11);
////插入空行
//PdfPCell cellInfoKong2 = new PdfPCell();
//cellInfoKong2.AddElement(new Phrase("", fontHeadInfo));
//cellInfoKong2.VerticalAlignment = Element.ALIGN_RIGHT;
//cellInfoKong2.BorderColor = new Color(255, 255, 255);
//cellInfoKong2.Colspan = 12;
//tableTitle.AddCell(cellInfoKong2);
#endregion
#region 添加数据
//添加数据标题
//for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
//{
// PdfPCell cellTitle = new PdfPCell();
// cellTitle.AddElement(new Phrase(ds.Tables[0].Columns[j].ColumnName, fontbz));
// cellTitle.Colspan = 4;
// cellTitle.BackgroundColor = new Color(220, 220, 220);
// tableTitle.AddCell(cellTitle);
//}
PdfPCell cellTitlet1 = new PdfPCell();
cellTitlet1.AddElement(new Phrase("设备编号", fontbz));
cellTitlet1.Colspan = 4;
cellTitlet1.BackgroundColor = new Color(220, 220, 220);
tableTitle.AddCell(cellTitlet1);
PdfPCell cellTitlet2 = new PdfPCell();
cellTitlet2.AddElement(new Phrase("加工参数名称", fontbz));
cellTitlet2.Colspan = 4;
cellTitlet2.BackgroundColor = new Color(220, 220, 220);
tableTitle.AddCell(cellTitlet2);
PdfPCell cellTitlet3 = new PdfPCell();
cellTitlet3.AddElement(new Phrase("加工参数值", fontbz));
cellTitlet3.Colspan = 4;
cellTitlet3.BackgroundColor = new Color(220, 220, 220);
tableTitle.AddCell(cellTitlet3);
#region 添加数据
// 添加数据
string Str = "";
string[] StrSplit;
//遍历原gridview的数据行
foreach (var dt in ds)
{
PdfPCell cellData1 = new PdfPCell();
cellData1.AddElement(new Phrase(dt.MACHINECODDE, fontChinese));
cellData1.Colspan = 4;
cellData1.BackgroundColor = new Color(239, 239, 239);
tableTitle.AddCell(cellData1);
PdfPCell cellData2 = new PdfPCell();
cellData2.AddElement(new Phrase(dt.PARADESCRIBE, fontChinese));
cellData2.Colspan = 4;
cellData2.BackgroundColor = new Color(239, 239, 239);
tableTitle.AddCell(cellData2);
PdfPCell cellData3 = new PdfPCell();
cellData3.AddElement(new Phrase(dt.MEMO, fontChinese));
cellData3.Colspan = 4;
cellData3.BackgroundColor = new Color(239, 239, 239);
tableTitle.AddCell(cellData3);
}
#endregion
PdfPCell cellfoot = new PdfPCell();
cellfoot.AddElement(new Phrase("", fontHeadInfo));
cellfoot.Colspan = 12;
cellfoot.Border = Rectangle.TOP_BORDER;
tableTitle.AddCell(cellfoot);
document.Add(tableTitle);
#endregion
//关闭Document
document.Close();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}