Bewertung weitergeschrieben

This commit is contained in:
2023-09-13 21:01:59 +02:00
parent bfa77de720
commit 651e59ff5d
6 changed files with 104 additions and 5 deletions

View File

@@ -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;

View File

@@ -6,4 +6,8 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\dcnsanplanung.shared\dcnsanplanung.shared.csproj" />
</ItemGroup>
</Project> </Project>

View File

@@ -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));
}
} }
} }

View File

@@ -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; } = "";
} }
} }

View File

@@ -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");

View File

@@ -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}" />