Tätigkeiten erfassen angefangen

This commit is contained in:
Husky
2020-06-12 16:22:19 +02:00
parent 06fc472965
commit 9442d94de5
15 changed files with 239 additions and 6 deletions

View File

@@ -16,6 +16,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Win32.Registry" Version="4.7.0" />
<PackageReference Include="Syncfusion.XlsIO.Wpf" Version="18.1.0.55" />
</ItemGroup>
<ItemGroup>

View File

@@ -2,6 +2,7 @@
using KanSan.Base.Interfaces;
using KanSan.Base.Models;
using Microsoft.Win32;
using Syncfusion.XlsIO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -25,6 +26,7 @@ namespace KanSan.ViewModel
private Sewer _selectedObjekt;
public static Baustelle Baustelle;
public static List<LeistungsverzeichnisPosition> LVPositionen = null;
public string ApplicationTitle
@@ -43,6 +45,19 @@ namespace KanSan.ViewModel
}
}
void LoadBaustellenLeistungsverzeichnis()
{
if (LVPositionen == null)
LVPositionen = new List<LeistungsverzeichnisPosition>();
if (LVPositionen.Count > 0)
LVPositionen.Clear();
IEnumerable<BaustelleLeistungsverzeichnisReferenz> baustelleLeistungsverzeichnis = unitOfWork.LeistungsverzeichnisReferenz.Get(x => x.Baustelle.Equals(Baustelle), includeProperties: "LVPosition");
foreach(BaustelleLeistungsverzeichnisReferenz referenz in baustelleLeistungsverzeichnis)
{
LVPositionen.Add(referenz.LVPosition);
}
}
public Kunde SelectedKunde
{
get
@@ -172,6 +187,12 @@ namespace KanSan.ViewModel
public MainWindowViewModel()
{
LadeRegistry();
LoadBaustellenLeistungsverzeichnis();
}
public void GenerateExcelFile()
{
}
}
}

View File

@@ -2,8 +2,11 @@
using KanSan.Base.Interfaces;
using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
using Syncfusion.XlsIO;
using Syncfusion.XlsIO.FormatParser.FormatTokens;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
@@ -22,7 +25,7 @@ namespace KanSan.ViewModel
public SchaedenListViewModel(Sewer actualSelectedSewer)
{
this.actualSelectedSewer = actualSelectedSewer;
schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer)).ToList();
schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer),includeProperties: "Sanierungskonzept,Sanierungskonzept.Taetigkeiten,Sanierungskonzept.Taetigkeiten.LeistungsverzeichnisPosition").ToList();
}
public Schaeden NeueSchaden()
@@ -40,5 +43,81 @@ namespace KanSan.ViewModel
if (res.Count < 1) throw new Exception("Der zuvor eingefügte Schäden konnte nicht gefunden werden");
return res.First();
}
public void GenerateExcelFile()
{
// Dictionary um rauszufinden welche Leistungsverzeichnis Positionen in welche Spalte sind
Dictionary<Guid, int> LVPosSpalte = new Dictionary<Guid, int>();
ExcelEngine excelEngine = new ExcelEngine();
IWorkbook workbook = excelEngine.Excel.Workbooks.Open("aufmass.xls");
IWorksheet sheet = workbook.Worksheets[0];
// Generate LeistungsverzeichnisPositionen
//Spalte G => O => 7 / 15
//Zeile = 8
sheet.Range["B9"].Text = MainWindowViewModel.Baustelle.Projekt.Kunde.Vorname;
sheet.Range["B10"].Text = MainWindowViewModel.Baustelle.BaustelleNummer;
sheet.Range["D10"].Text = MainWindowViewModel.Baustelle.OrtTeil;
sheet.Range["D11"].Text = actualSelectedSewer.Material.ToString();
sheet.Range["A15"].Text = actualSelectedSewer.StrasseName;
sheet.Range["B15"].Text = actualSelectedSewer.DN.ToString();
sheet.Range["C15"].Text = actualSelectedSewer.PunktOben.Objektnummer;
sheet.Range["D15"].Text = actualSelectedSewer.PunktUnten.Objektnummer;
sheet.Range["F15"].Number = Convert.ToDouble(actualSelectedSewer.Haltungslaenge);
#region LeistungsverzeichnisGenerierung
for (int spalte = 7; spalte <= 15; spalte++)
{
int i = spalte - 7;
if (i >= MainWindowViewModel.LVPositionen.Count) break;
sheet.Range[8, spalte].Text = MainWindowViewModel.LVPositionen[i].Beschreibung;
LVPosSpalte.Add(MainWindowViewModel.LVPositionen[i].GuidNr, spalte);
}
#endregion
/* E16 für Station
* G - O8 für LV
* P15 für Datum
* Q15 für Bemerkung
* R15 für v.TV
* S15 für n.TV
*/
// Zeile 15 => 40
int counter = 15;
foreach(Schaeden schaden in Schaeden)
{
sheet.Range[counter, 5].Number = Convert.ToDouble(schaden.Entfernung);
List<Taetigkeiten> taetigkeiten = schaden.Sanierungskonzept.Taetigkeiten;
IEnumerable<DateTime> datums = taetigkeiten.Select(x => x.ZeitStempel.Date).Distinct();
foreach (DateTime datum in datums)
{
List<Taetigkeiten> tätigkeit = taetigkeiten.FindAll(x => x.ZeitStempel.Date.Equals(datum));
foreach (Taetigkeiten tätig in tätigkeit)
{
int column = LVPosSpalte[tätig.LeistungsverzeichnisPosition.GuidNr];
if (tätig.ZeitStempel != DateTime.MinValue)
{
sheet.Range[counter, column].Number = Convert.ToDouble(tätig.Anzahl);
sheet.Range[counter, 16].DateTime = tätig.ZeitStempel;
}
else
{
sheet.Range[counter, column].Text = "x";
}
}
counter++;
}
}
workbook.SaveAs("test.xls");
}
}
}

View File

@@ -107,6 +107,7 @@ namespace KanSan.ViewModel
IEnumerable<BaustelleLeistungsverzeichnisReferenz> baustelleLeistungsverzeichnis = unitOfWork.LeistungsverzeichnisReferenz.Get(x => x.Baustelle.Equals(MainWindowViewModel.Baustelle),includeProperties:"LVPosition");
lvPositionen = new List<LeistungsverzeichnisPosition>();
// TODO auslagern
foreach(BaustelleLeistungsverzeichnisReferenz referenz in baustelleLeistungsverzeichnis)
{
if((model.LeistungsverzeichnisPosition != null) && (model.LeistungsverzeichnisPosition.GuidNr.Equals(referenz.LVPosition.GuidNr)))
@@ -115,6 +116,7 @@ namespace KanSan.ViewModel
}
lvPositionen.Add(referenz.LVPosition);
}
//MainWindowViewModel.LVPositionen = lvPositionen;
var x = LVPositionen.Equals(leistungsverzeichnis);
}