Bewertung weitergeschrieben
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using dcnsanplanung.bewertung.M149_3;
|
using dcnsanplanung.bewertung.M149_3;
|
||||||
|
using dcnsanplanung.shared.Model;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace dcnsanplanung.bewertung
|
namespace dcnsanplanung.bewertung
|
||||||
@@ -6,7 +7,69 @@ namespace dcnsanplanung.bewertung
|
|||||||
public static class BewM149
|
public static class BewM149
|
||||||
{
|
{
|
||||||
|
|
||||||
// input Kürzel
|
public static Dictionary<int, int> StartWert = new Dictionary<int, int>()
|
||||||
|
{
|
||||||
|
{0,400 },
|
||||||
|
{1,300 },
|
||||||
|
{2,200 },
|
||||||
|
{3,100 },
|
||||||
|
{4,0 },
|
||||||
|
{5,0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
public static float SXj(int sk,float length)
|
||||||
|
{
|
||||||
|
return (5 - sk) * length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, int> ObjektKlasse(List<Schaden> schaeden)
|
||||||
|
{
|
||||||
|
Dictionary<string, int> result = new Dictionary<string, int>();
|
||||||
|
|
||||||
|
result.Add("B", schaeden.Select(x => x.KB).Min());
|
||||||
|
result.Add("D", schaeden.Select(x => x.KD).Min());
|
||||||
|
result.Add("S", schaeden.Select(x => x.KS).Min());
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CalculateHaltung(Haltung haltung)
|
||||||
|
{
|
||||||
|
var k = ObjektKlasse(haltung.Kodierungen);
|
||||||
|
|
||||||
|
foreach (var schaden in haltung.Kodierungen)
|
||||||
|
{
|
||||||
|
schaden.KBj = SXj(schaden.KB, 2.5f);
|
||||||
|
schaden.KDj = SXj(schaden.KD, 2.5f);
|
||||||
|
schaden.KSj = SXj(schaden.KS, 2.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Haltungslaenge = (float)haltung.Kodierungen.Select(x => x.Entfernung).Max();
|
||||||
|
|
||||||
|
float KBSumme = haltung.Kodierungen.Select(x => x.KBj).Sum();
|
||||||
|
float KSSumme = haltung.Kodierungen.Select(x => x.KSj).Sum();
|
||||||
|
float KDSumme = haltung.Kodierungen.Select(x => x.KDj).Sum();
|
||||||
|
|
||||||
|
float ObjektDSumme = SXj(k["D"],Haltungslaenge);
|
||||||
|
float ObjektSSumme = SXj(k["S"],Haltungslaenge);
|
||||||
|
float ObjektBSumme = SXj(k["B"],Haltungslaenge);
|
||||||
|
|
||||||
|
float SchadensDichteD = KDSumme / ObjektDSumme;
|
||||||
|
float SchadensDichteS = KSSumme / ObjektSSumme;
|
||||||
|
float SchadensDichteB = KBSumme / ObjektBSumme;
|
||||||
|
|
||||||
|
float zuschlagD = 50 * SchadensDichteD;
|
||||||
|
float zuschlagS = 50 * SchadensDichteS;
|
||||||
|
float zuschlagB = 50 * SchadensDichteB;
|
||||||
|
|
||||||
|
int startWertD = StartWert[k["D"]];
|
||||||
|
int startWertB = StartWert[k["B"]];
|
||||||
|
int startWertS = StartWert[k["S"]];
|
||||||
|
|
||||||
|
int ZustandPunkteD = startWertD + (int)zuschlagD;
|
||||||
|
int ZustandPunkteB = startWertB + (int)zuschlagB;
|
||||||
|
int ZustandPunkteS = startWertS + (int)zuschlagS;
|
||||||
|
}
|
||||||
public static Dictionary<string, int> Klassifiziere(string hauptcode, string ch1, string ch2, string q1, string q2, int dn)
|
public static Dictionary<string, int> Klassifiziere(string hauptcode, string ch1, string ch2, string q1, string q2, int dn)
|
||||||
{
|
{
|
||||||
AbstractCode? abstractCode = null;
|
AbstractCode? abstractCode = null;
|
||||||
|
|||||||
@@ -6,4 +6,8 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\dcnsanplanung.shared\dcnsanplanung.shared.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -17,5 +17,14 @@ namespace dcnsanplanung.bewertung.Tests
|
|||||||
var t = BewM149.Klassifiziere("BAB", "B", "A", "10", "10", 0);
|
var t = BewM149.Klassifiziere("BAB", "B", "A", "10", "10", 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod()]
|
||||||
|
public void SXjTest()
|
||||||
|
{
|
||||||
|
|
||||||
|
Assert.AreEqual(0, BewM149.SXj(5,2.5f));
|
||||||
|
Assert.AreEqual(7.5, BewM149.SXj(2, 2.5f));
|
||||||
|
Assert.AreEqual(5, BewM149.SXj(3, 2.5f));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace dcnsanplanung.shared.Model
|
using System.Reflection.Metadata.Ecma335;
|
||||||
|
|
||||||
|
namespace dcnsanplanung.shared.Model
|
||||||
{
|
{
|
||||||
public class Schaden : DBObjekt
|
public class Schaden : DBObjekt
|
||||||
{
|
{
|
||||||
@@ -13,8 +15,18 @@
|
|||||||
public int KD { get; set; }
|
public int KD { get; set; }
|
||||||
public int KS { get; set; }
|
public int KS { get; set; }
|
||||||
public int KB { get; set; }
|
public int KB { get; set; }
|
||||||
|
public float KDj { get; set; }
|
||||||
|
public float KBj { get; set; }
|
||||||
|
public float KSj { get; set; }
|
||||||
public string StreckenschadenCode { get; set; } = string.Empty;
|
public string StreckenschadenCode { get; set; } = string.Empty;
|
||||||
public List<Sanierungsvorgabe> Sanierungsvorgaben { get; set; }
|
public List<Sanierungsvorgabe> Sanierungsvorgaben { get; set; }
|
||||||
|
public bool IsStreckenSchaden
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return StreckenschadenCode != string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Sanierungsvorgabe
|
public class Sanierungsvorgabe
|
||||||
@@ -22,4 +34,3 @@
|
|||||||
public string Vorgabe { get; set; } = "";
|
public string Vorgabe { get; set; } = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
|
using dcnsanplanung.bewertung;
|
||||||
using dcnsanplanung.DAL.Services.PostgresqlData;
|
using dcnsanplanung.DAL.Services.PostgresqlData;
|
||||||
using dcnsanplanung.shared.Model;
|
using dcnsanplanung.shared.Model;
|
||||||
using System;
|
using System;
|
||||||
@@ -23,16 +24,25 @@ namespace dcnsanplanung.wpf.ViewModel
|
|||||||
public List<Schaden> Schaeden { get => model.Kodierungen; }
|
public List<Schaden> Schaeden { get => model.Kodierungen; }
|
||||||
|
|
||||||
public ICommand Speichern { get; set; }
|
public ICommand Speichern { get; set; }
|
||||||
|
public ICommand BerechneObjektklasse { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public HaltungObjektViewModel(Haltung selectedHaltung)
|
public HaltungObjektViewModel(Haltung selectedHaltung)
|
||||||
{
|
{
|
||||||
model = selectedHaltung;
|
model = selectedHaltung;
|
||||||
Speichern = new RelayCommand(() => doSpeichern());
|
Speichern = new RelayCommand(() => doSpeichern());
|
||||||
|
BerechneObjektklasse = new RelayCommand(() => doBerechneObjektklasse());
|
||||||
LadeSchaeden();
|
LadeSchaeden();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doBerechneObjektklasse()
|
||||||
|
{
|
||||||
|
BewM149.CalculateHaltung(model);
|
||||||
|
//BewM149.ObjektKlasse(model.Kodierungen);
|
||||||
|
}
|
||||||
|
|
||||||
private void doSpeichern()
|
private void doSpeichern()
|
||||||
{
|
{
|
||||||
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
|
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
<Label Grid.Row="3" Grid.Column="1" Content="{Binding Material}" />
|
<Label Grid.Row="3" Grid.Column="1" Content="{Binding Material}" />
|
||||||
|
|
||||||
<Button Grid.Row="4" Content="Speichern" Command="{Binding Speichern}" />
|
<Button Grid.Row="4" Content="Speichern" Command="{Binding Speichern}" />
|
||||||
|
<Button Grid.Row="4" Grid.Column="1" Content="Objektklasse berechnen" Command="{Binding BerechneObjektklasse}" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -143,6 +144,7 @@
|
|||||||
<DataGrid Grid.Row="1" ItemsSource="{Binding Schaeden}" AutoGenerateColumns="False">
|
<DataGrid Grid.Row="1" ItemsSource="{Binding Schaeden}" AutoGenerateColumns="False">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="Entfernung" Binding="{Binding Entfernung}" />
|
<DataGridTextColumn Header="Entfernung" Binding="{Binding Entfernung}" />
|
||||||
|
<DataGridTextColumn Header="Streckenschaden" Binding="{Binding StreckenschadenCode}" />
|
||||||
<DataGridTextColumn Header="Hauptcode" Binding="{Binding Hauptcode}" />
|
<DataGridTextColumn Header="Hauptcode" Binding="{Binding Hauptcode}" />
|
||||||
<DataGridTextColumn Header="Ch1" Binding="{Binding CH1}" />
|
<DataGridTextColumn Header="Ch1" Binding="{Binding CH1}" />
|
||||||
<DataGridTextColumn Header="Ch2" Binding="{Binding CH2}" />
|
<DataGridTextColumn Header="Ch2" Binding="{Binding CH2}" />
|
||||||
|
|||||||
Reference in New Issue
Block a user