Bewertung weitergeschrieben
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using dcnsanplanung.bewertung.M149_3;
|
||||
using dcnsanplanung.shared.Model;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace dcnsanplanung.bewertung
|
||||
@@ -6,7 +7,69 @@ namespace dcnsanplanung.bewertung
|
||||
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)
|
||||
{
|
||||
AbstractCode? abstractCode = null;
|
||||
|
||||
@@ -6,4 +6,8 @@
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\dcnsanplanung.shared\dcnsanplanung.shared.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -17,5 +17,14 @@ namespace dcnsanplanung.bewertung.Tests
|
||||
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
|
||||
{
|
||||
@@ -13,8 +15,18 @@
|
||||
public int KD { get; set; }
|
||||
public int KS { 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 List<Sanierungsvorgabe> Sanierungsvorgaben { get; set; }
|
||||
public bool IsStreckenSchaden
|
||||
{
|
||||
get
|
||||
{
|
||||
return StreckenschadenCode != string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Sanierungsvorgabe
|
||||
@@ -22,4 +34,3 @@
|
||||
public string Vorgabe { get; set; } = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using dcnsanplanung.bewertung;
|
||||
using dcnsanplanung.DAL.Services.PostgresqlData;
|
||||
using dcnsanplanung.shared.Model;
|
||||
using System;
|
||||
@@ -23,16 +24,25 @@ namespace dcnsanplanung.wpf.ViewModel
|
||||
public List<Schaden> Schaeden { get => model.Kodierungen; }
|
||||
|
||||
public ICommand Speichern { get; set; }
|
||||
public ICommand BerechneObjektklasse { get; set; }
|
||||
|
||||
|
||||
|
||||
public HaltungObjektViewModel(Haltung selectedHaltung)
|
||||
{
|
||||
model = selectedHaltung;
|
||||
Speichern = new RelayCommand(() => doSpeichern());
|
||||
BerechneObjektklasse = new RelayCommand(() => doBerechneObjektklasse());
|
||||
LadeSchaeden();
|
||||
|
||||
}
|
||||
|
||||
private void doBerechneObjektklasse()
|
||||
{
|
||||
BewM149.CalculateHaltung(model);
|
||||
//BewM149.ObjektKlasse(model.Kodierungen);
|
||||
}
|
||||
|
||||
private void doSpeichern()
|
||||
{
|
||||
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}" />
|
||||
|
||||
<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.Columns>
|
||||
<DataGridTextColumn Header="Entfernung" Binding="{Binding Entfernung}" />
|
||||
<DataGridTextColumn Header="Streckenschaden" Binding="{Binding StreckenschadenCode}" />
|
||||
<DataGridTextColumn Header="Hauptcode" Binding="{Binding Hauptcode}" />
|
||||
<DataGridTextColumn Header="Ch1" Binding="{Binding CH1}" />
|
||||
<DataGridTextColumn Header="Ch2" Binding="{Binding CH2}" />
|
||||
|
||||
Reference in New Issue
Block a user