197 lines
6.5 KiB
C#
197 lines
6.5 KiB
C#
using Database;
|
|
using KlassenBIB;
|
|
using SanShared;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace SanSystem
|
|
{
|
|
class MassenStatistik : IMakeProtokol
|
|
{
|
|
List<Inspektionsobjekt> inspektionsobjekts = null;
|
|
|
|
DateTime targetDatum;
|
|
public MassenStatistik(List<Inspektionsobjekt> inspektionsobjekts, DateTime datum)
|
|
{
|
|
this.inspektionsobjekts = inspektionsobjekts;
|
|
targetDatum = datum;
|
|
|
|
|
|
BuildBericht(SearchForWaranties());
|
|
}
|
|
static string ConvertToDecimals(double input, uint kommazahl = 2)
|
|
{
|
|
return input.ToString("0.00");
|
|
}
|
|
|
|
void BuildBericht(List<Inspektionsobjekt> list)
|
|
{
|
|
Hashtable grundDaten = MakeProtokoll("",null);
|
|
|
|
DataTable inliner = getMassenTableInliner();
|
|
|
|
double gesamtLiner = 0;
|
|
double gesamtHarz = 0;
|
|
foreach (Inspektionsobjekt objekt in list)
|
|
{
|
|
DataRow dr = inliner.NewRow();
|
|
dr["hausnummer"] = objekt.Hausnummer;
|
|
dr["sanierungsnummer"] = objekt.Sanierungsnummer;
|
|
|
|
dr["vorbereitet"] = "am " + objekt.HaltungGemessen.ToShortDateString();
|
|
|
|
int schachtanbindungen = 0;
|
|
foreach (AbstractSanieren mainsan in objekt.Sanierung)
|
|
{
|
|
if (
|
|
mainsan.Datum.Day == targetDatum.Day &&
|
|
mainsan.Datum.Month == targetDatum.Month &&
|
|
mainsan.Datum.Year == targetDatum.Year)
|
|
{
|
|
|
|
if (mainsan is InlinerSanierung)
|
|
{
|
|
double linerLang = objekt.Haltungslaenge + objekt.Schachtlaenge + 0.5;
|
|
gesamtLiner += linerLang;
|
|
dr["liner_laenge"] = ConvertToDecimals(linerLang);
|
|
dr["kalibrierschlauch"] = ConvertToDecimals(objekt.Haltungslaenge + (objekt.Schachtlaenge * 2) + 0.3);
|
|
dr["preliner"] = (mainsan as InlinerSanierung).Preliner ? ConvertToDecimals(linerLang - 0.5): ConvertToDecimals(0.0);
|
|
dr["harzmenge"] = ConvertToDecimals(objekt.Haltungslaenge * (mainsan as InlinerSanierung).HarzBedarf);
|
|
gesamtHarz += objekt.Haltungslaenge * (mainsan as InlinerSanierung).Harzbedarf;
|
|
}
|
|
if (mainsan is SchachtAnbindung)
|
|
{
|
|
schachtanbindungen++;
|
|
}
|
|
dr["schachtanbindung"] = schachtanbindungen;
|
|
}
|
|
}
|
|
inliner.Rows.Add(dr);
|
|
}
|
|
|
|
grundDaten["gesamtHarz"] = ConvertToDecimals(gesamtHarz);
|
|
grundDaten["gesamtliner"] = ConvertToDecimals(gesamtLiner);
|
|
grundDaten["Ausdruck_datum"] = targetDatum.ToLongDateString();
|
|
grundDaten["Ort"] = inspektionsobjekts.Last().OrtName;
|
|
grundDaten["Strasse"] = inspektionsobjekts.Last().StrasseName;
|
|
grundDaten["Projektnummer"] = Datenbank.Instance.loadedProjekt.Nummer;
|
|
BerichtGen.FrmOptions frmOptions = new BerichtGen.FrmOptions("JUME", "Massenstatistik.docx", ".", "Massenstatistik", grundDaten, null, inliner);
|
|
frmOptions.ShowDialog();
|
|
}
|
|
|
|
public Hashtable MakeProtokoll(string destinationPath, IProjekt projekt)
|
|
{
|
|
Hashtable grundDaten = new Hashtable()
|
|
{
|
|
{"Ausdruck_datum","" },
|
|
{"Strasse","" },
|
|
{"Ort","" },
|
|
{"Projektnummer","" },
|
|
{"gesamtliner","" },
|
|
{"gesamtHarz","" }
|
|
};
|
|
return grundDaten;
|
|
}
|
|
|
|
|
|
|
|
DataTable getMassenTableInliner()
|
|
{
|
|
DataTable dt = new DataTable("Liner");
|
|
DataColumn column = new DataColumn("hausnummer")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("sanierungsnummer")
|
|
{
|
|
MaxLength = 10
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("liner_laenge")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("kalibrierschlauch")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("preliner")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("harzmenge")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
column = new DataColumn("vorbereitet")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
|
|
column = new DataColumn("schachtanbindung")
|
|
{
|
|
MaxLength = 50
|
|
};
|
|
dt.Columns.Add(column);
|
|
|
|
return dt;
|
|
}
|
|
|
|
List<Inspektionsobjekt> SearchForWaranties()
|
|
{
|
|
if (inspektionsobjekts == null) return null ;
|
|
|
|
List<Inspektionsobjekt> result = new List<Inspektionsobjekt>();
|
|
foreach(Inspektionsobjekt objekt in inspektionsobjekts)
|
|
{
|
|
bool add = false;
|
|
if (
|
|
objekt.HaltungGemessen.Year == targetDatum.Year &&
|
|
objekt.HaltungGemessen.Month == targetDatum.Month &&
|
|
objekt.HaltungGemessen.Day == targetDatum.Day
|
|
)
|
|
{
|
|
add = true;
|
|
}
|
|
|
|
foreach(AbstractSanieren san in objekt.Sanierung)
|
|
{
|
|
if (san.Fertig &&
|
|
|
|
san.Datum.Day == targetDatum.Day &&
|
|
san.Datum.Month == targetDatum.Month &&
|
|
san.Datum.Year == targetDatum.Year
|
|
)
|
|
add = true;
|
|
}
|
|
|
|
if (add)
|
|
result.Add(objekt);
|
|
|
|
|
|
}
|
|
return result;
|
|
|
|
}
|
|
}
|
|
}
|