218 lines
9.5 KiB
C#
218 lines
9.5 KiB
C#
using System;
|
|
using System.Data;
|
|
using SteamWare;
|
|
using Microsoft.Reporting.WinForms;
|
|
|
|
/// <summary>
|
|
/// Classe che restituisce uno stream ed i dati accessori per reinviare un report in pdf
|
|
/// </summary>
|
|
public class reportExporter
|
|
{
|
|
/// <summary>
|
|
/// mimeType del report
|
|
/// </summary>
|
|
public string mimeType;
|
|
/// <summary>
|
|
/// encoding dei dati
|
|
/// </summary>
|
|
public string encoding;
|
|
/// <summary>
|
|
/// nome estensione
|
|
/// </summary>
|
|
public string fileNameExtension;
|
|
/// <summary>
|
|
/// steam di bytes del report
|
|
/// </summary>
|
|
public byte[] renderedBytes;
|
|
/// <summary>
|
|
/// metodo protected
|
|
/// </summary>
|
|
public reportExporter()
|
|
{
|
|
}
|
|
/// <summary>
|
|
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: RichiestaIntervento</param>
|
|
/// <param name="idxObj">num int mtz</param>
|
|
/// <returns>tabella dati</returns>
|
|
private DataTable caricaDati(reportRichiesto tipoReport, string idxObj)
|
|
{
|
|
DataTable tab = new DataTable();
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.ElencoMacchine:
|
|
tab = (DataTable)TA_app.obj.taElencoImpMacch.GetData();
|
|
break;
|
|
case reportRichiesto.RichiestaIntervento:
|
|
tab = (DataTable)TA_app.obj.taInterventiMtz.getByIdx(Convert.ToInt32(idxObj));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return tab;
|
|
}
|
|
/// <summary>
|
|
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: ElencoMacchine</param>
|
|
/// <returns>tabella dati</returns>
|
|
private DataTable caricaDati(reportRichiesto tipoReport)
|
|
{
|
|
DataTable tab = new DataTable();
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.ElencoMacchine:
|
|
tab = (DataTable)TA_app.obj.taElencoImpMacch.GetData();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return tab;
|
|
}
|
|
/// <summary>
|
|
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: ElencoInterventi / MTBF_MTTR</param>
|
|
/// <param name="periodoAnalizzato">oggetto che contiene data inizio e data fine dell'analisi richiesta per il report</param>
|
|
/// <param name="username">username (per caricare i suoi filtraggi...</param>
|
|
/// <param name="soloMacchinaFerma">se si devono includere SOLO i dati di macchina ferma</param>
|
|
/// <param name="includiMtzPrev">se si deve includere anche nel report le fermate di mtz preventiva</param>
|
|
/// <returns>tabella dati</returns>
|
|
private DataTable caricaDati(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username, bool soloMacchinaFerma, bool includiMtzPrev)
|
|
{
|
|
DataTable tab = new DataTable();
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.ElencoInterventi:
|
|
// controllo: se include mtz prev e non solo ferma
|
|
if (!soloMacchinaFerma && includiMtzPrev)
|
|
{
|
|
// ...uso metodo std
|
|
tab = (DataTable)TA_app.obj.taElencoIntFilt.getByIntervDateUsernameFilt(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
|
|
}
|
|
else
|
|
{
|
|
// altrimenti stored compelta (e + lenta)
|
|
tab = (DataTable)TA_app.obj.taElencoIntFilt.getByIntervDateUsernameFilt_fermaPrev(periodoAnalizzato.inizio, periodoAnalizzato.fine, username, soloMacchinaFerma, includiMtzPrev);
|
|
}
|
|
break;
|
|
case reportRichiesto.MTBF_MTTR:
|
|
// controllo: se include mtz prev e non solo ferma
|
|
if (!soloMacchinaFerma && includiMtzPrev)
|
|
{
|
|
// ...uso metodo std
|
|
tab = (DataTable)TA_app.obj.taElenco_MTBF_MTTR.GetData(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
|
|
}
|
|
else
|
|
{
|
|
// altrimenti stored compelta (e + lenta)
|
|
tab = (DataTable)TA_app.obj.taElenco_MTBF_MTTR.getByFermaPrev(periodoAnalizzato.inizio, periodoAnalizzato.fine, username, soloMacchinaFerma, includiMtzPrev);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return tab;
|
|
}
|
|
/// <summary>
|
|
/// renderizza il report in pdf
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: ElencoMacchine</param>
|
|
/// <returns></returns>
|
|
public void popolaPdfStream(reportRichiesto tipoReport)
|
|
{
|
|
LocalReport report = new LocalReport();
|
|
report.EnableExternalImages = true;
|
|
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.ElencoMacchine:
|
|
report.ReportPath = string.Format(@".\{0}\{1}\MacchineReparti.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
|
|
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport)));
|
|
deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
createPdfStream(report, deviceInfo.xmlParam);
|
|
}
|
|
/// <summary>
|
|
/// renderizza il report in pdf
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: RichiestaIntervento</param>
|
|
/// <param name="parametro">idx della richiesta (numIntMtz)</param>
|
|
/// <returns></returns>
|
|
public void popolaPdfStream(reportRichiesto tipoReport, string parametro)
|
|
{
|
|
LocalReport report = new LocalReport();
|
|
report.EnableExternalImages = true;
|
|
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.RichiestaIntervento:
|
|
report.ReportPath = string.Format(@".\{0}\{1}\RichiestaIntervento.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
|
|
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, parametro))); // OCCHIO!!! va messa sorgente dati CORRETTA
|
|
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
createPdfStream(report, deviceInfo.xmlParam);
|
|
}
|
|
/// <summary>
|
|
/// renderizza il report in pdf
|
|
/// </summary>
|
|
/// <param name="tipoReport">report ammessi: ElencoInterventi / MTBF_MTTR</param>
|
|
/// <param name="periodoAnalizzato">oggetto che contiene data inizio e data fine dell'analisi richiesta per il report</param>
|
|
/// <param name="username">username (per caricare i suoi filtraggi...</param>
|
|
/// <param name="soloMacchinaFerma">se si devono includere SOLO i dati di macchina ferma</param>
|
|
/// <param name="includiMtzPrev">se si deve includere anche nel report le fermate di mtz preventiva</param>
|
|
public void popolaPdfStream(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username, bool soloMacchinaFerma, bool includiMtzPrev)
|
|
{
|
|
LocalReport report = new LocalReport();
|
|
report.EnableExternalImages = true;
|
|
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
switch (tipoReport)
|
|
{
|
|
case reportRichiesto.ElencoInterventi:
|
|
report.ReportPath = string.Format(@".\{0}\{1}\ReportInterventi.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
|
|
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username, soloMacchinaFerma, includiMtzPrev)));
|
|
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
break;
|
|
case reportRichiesto.MTBF_MTTR:
|
|
report.ReportPath = string.Format(@".\{0}\{1}\Report_MTBF_MTTR.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
|
|
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username, soloMacchinaFerma, includiMtzPrev)));
|
|
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
|
|
// calcolo le ore totali equivalenti...
|
|
ReportParameter[] OreTotali = { new ReportParameter("OreTotali", WebGimUtils.obj.oreEquivalenti(periodoAnalizzato).ToString()) };
|
|
report.SetParameters(OreTotali);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
createPdfStream(report, deviceInfo.xmlParam);
|
|
}
|
|
/// <summary>
|
|
/// crea il vero e proprio stream pdf
|
|
/// </summary>
|
|
/// <param name="report"></param>
|
|
/// <param name="deviceInfo"></param>
|
|
private void createPdfStream(LocalReport report, string deviceInfo)
|
|
{
|
|
// export in PDF
|
|
string reportType = "PDF";
|
|
Warning[] warnings;
|
|
string[] streams;
|
|
renderedBytes = report.Render(
|
|
reportType,
|
|
deviceInfo,
|
|
out mimeType,
|
|
out encoding,
|
|
out fileNameExtension,
|
|
out streams,
|
|
out warnings);
|
|
}
|
|
|
|
}
|