Klassifizierungssystem hinzugefügt

This commit is contained in:
2023-09-13 12:56:39 +02:00
parent 49ab3598d7
commit bfa77de720
42 changed files with 886 additions and 112 deletions

View File

@@ -22,7 +22,7 @@ namespace dcnsanplanung.DAL.Services.PostgresqlData
public async Task<IEnumerable<Schaden>> GetAllByHaltung(string haltungs_guid)
{
List<Schaden> result = new List<Schaden>();
string command = "SELECT * FROM " + tableName + " WHERE ref_haltung_guid = @1;";
string command = "SELECT * FROM " + tableName + " WHERE ref_haltung_guid = @1 ORDER BY id ASC;";
using (var cmd = new NpgsqlCommand(command, conn))
{
cmd.Parameters.AddWithValue("1", haltungs_guid);
@@ -52,16 +52,17 @@ namespace dcnsanplanung.DAL.Services.PostgresqlData
CH2 = reader.GetString(6),
Q1 = reader.GetString(7),
Q2 = reader.GetString(8),
KD = reader.GetDataTypeOID(9),
KB = reader.GetDataTypeOID(10),
KS = reader.GetDataTypeOID(11),
KD = reader.IsDBNull(9) ? 5 : reader.GetInt32(9),
KB = reader.IsDBNull(10) ? 5 : reader.GetInt32(10),
KS = reader.IsDBNull(11) ? 5 : reader.GetInt32(11),
StreckenschadenCode = reader.GetString(12)
};
}
public async Task<Schaden> Create(Schaden entity)
{
string command = "INSERT INTO " + tableName + " (guid, ref_haltung_guid, entfernung, hauptcode, ch1,ch2,q1,q2) VALUES " +
"(@1,@2,@3,@4,@5,@6,@7,@8) RETURNING id";
string command = "INSERT INTO " + tableName + " (guid, ref_haltung_guid, entfernung, hauptcode, ch1,ch2,q1,q2,streckenschaden) VALUES " +
"(@1,@2,@3,@4,@5,@6,@7,@8,@9) RETURNING id";
using(var cmd = new NpgsqlCommand(command,conn))
{
cmd.Parameters.AddWithValue("1", entity.Guid.ToString());
@@ -72,6 +73,7 @@ namespace dcnsanplanung.DAL.Services.PostgresqlData
cmd.Parameters.AddWithValue("6", entity.CH2);
cmd.Parameters.AddWithValue("7", entity.Q1);
cmd.Parameters.AddWithValue("8", entity.Q2);
cmd.Parameters.AddWithValue("9", entity.StreckenschadenCode);
//cmd.Parameters.AddWithValue("5", NpgsqlTypes.NpgsqlDbType.Oid, entity.Schadensklasse);
using var reader = await cmd.ExecuteReaderAsync();
reader.Read();
@@ -80,6 +82,21 @@ namespace dcnsanplanung.DAL.Services.PostgresqlData
return entity;
}
public async Task<Schaden> Update(Schaden entity)
{
string command = @"UPDATE " + tableName + " SET kd=@1, kb=@2, ks=@3 WHERE id=@4";
using (var cmd = new NpgsqlCommand(command, conn))
{
cmd.Parameters.AddWithValue("1", entity.KD);
cmd.Parameters.AddWithValue("2", entity.KB);
cmd.Parameters.AddWithValue("3", entity.KS);
cmd.Parameters.AddWithValue("4", entity.ID);
await cmd.ExecuteNonQueryAsync();
}
return entity;
}
public async Task<bool> InsertSchadenBulk(List<Schaden> schaden)
{
foreach(var item in schaden)
@@ -88,5 +105,14 @@ namespace dcnsanplanung.DAL.Services.PostgresqlData
}
return true;
}
public async Task<bool> UpdateSchadenBuld(List<Schaden> schaden)
{
foreach(var item in schaden)
{
await Update(item);
}
return true;
}
}
}

View File

@@ -0,0 +1,62 @@
using dcnsanplanung.bewertung.M149_3;
using System.Diagnostics;
namespace dcnsanplanung.bewertung
{
public static class BewM149
{
// input Kürzel
public static Dictionary<string, int> Klassifiziere(string hauptcode, string ch1, string ch2, string q1, string q2, int dn)
{
AbstractCode? abstractCode = null;
Dictionary<string,int> result = new Dictionary<string,int>();
switch(hauptcode)
{
case "BAA": abstractCode = new BAA(EGeltungsbereich.biegesteif); break;
case "BAB": abstractCode = new BAB(); break;
case "BAC": abstractCode = new BAC(); break;
case "BAD": abstractCode = new BAD(); break;
case "BAE": abstractCode = new BAE(); break;
case "BAF": abstractCode = new BAF(); break;
case "BAG": abstractCode = new BAG(dn); break;
case "BAH": abstractCode = new BAH(); break;
case "BAI": abstractCode = new BAI(); break;
case "BAJ": abstractCode = new BAJ(); break;
case "BAK": abstractCode = new BAK(); break;
case "BAL": abstractCode = new BAL(); break;
case "BAM": abstractCode = new BAM(); break;
case "BAN": abstractCode = new BAN(); break;
case "BAO": abstractCode = new BAO(); break;
case "BAP": abstractCode = new BAP(); break;
case "BBA": abstractCode = new BBA(); break;
case "BBB": abstractCode = new BBB(); break;
case "BBC": abstractCode = new BBC(); break;
case "BBD": abstractCode = new BBD(); break;
case "BBE": abstractCode = new BBE(); break;
case "BBF": abstractCode = new BBF(); break;
case "BBG": abstractCode = new BBG(); break;
case "BBH": abstractCode = new BBH(); break;
case "BDB": abstractCode = new BDB(); break;
case "BDE": abstractCode = new BDE(); break;
}
if (abstractCode == null) return result;
abstractCode.WriteCH1(ch1);
abstractCode.WriteCH2(ch2);
float _q1 = float.Parse(q1);
//float _q2 = float.Parse(q2);
abstractCode.WriteQ1(_q1);
//abstractCode.WriteQ2(_q2);
result.Add("D", abstractCode.CalculateDK());
result.Add("B", abstractCode.CalculateBK());
result.Add("S", abstractCode.CalculateSK());
return result;
}
}
}

View File

@@ -1,7 +0,0 @@
namespace dcnsanplanung.bewertung
{
public class Class1
{
}
}

View File

@@ -0,0 +1,49 @@
namespace dcnsanplanung.bewertung.M149_3
{
public abstract class AbstractCode
{
string beschreibung;
protected string Ch1 = "";
protected string Ch2 = "";
protected float Q1;
protected float Q2;
protected int DN;
public AbstractCode(string beschreibung, int DN = -1)
{
this.beschreibung = beschreibung;
}
public virtual int CalculateSK()
{
return 5;
}
public virtual int CalculateDK()
{
return 5;
}
public virtual int CalculateBK()
{
return 5;
}
public virtual void WriteCH1(string Ch1)
{
this.Ch1 = Ch1;
}
public virtual void WriteCH2(string Ch2)
{
this.Ch2 = Ch2;
}
public virtual void WriteQ1(float Q1)
{
this.Q1 = Q1;
}
public virtual void WriteQ2(float Q2)
{
this.Q2 = Q2;
}
}
}

View File

@@ -5,79 +5,19 @@ using System.Text;
namespace dcnsanplanung.bewertung.M149_3
{
public enum CalculateMethods
{
Dichtheit = 1,
Standsicherheit = 2,
Betriebsicherheit = 4
}
public enum Geltungsbereich
{
biegesteif,
biegeweich
}
public abstract class AbstractCode
{
private CalculateMethods VerfügbareMethoden;
string beschreibung;
protected string Ch1 = "";
protected string Ch2 = "";
protected float Q1;
protected float Q2;
protected int DN;
public AbstractCode(string beschreibung, CalculateMethods calculateMethods, int DN = -1)
{
this.beschreibung = beschreibung;
this.VerfügbareMethoden = calculateMethods;
}
protected virtual int CalculateSK()
{
return 6;
}
protected virtual int CalculateDK()
{
return 6;
}
protected virtual int CalculateBK()
{
return 6;
}
public virtual void WriteCH1(string Ch1)
{
this.Ch1 = Ch1;
}
public virtual void WriteCH2(string Ch2)
{
this.Ch2 = Ch2;
}
public virtual void WriteQ1(float Q1)
{
this.Q1 = Q1;
}
public virtual void WriteQ2(float Q2)
{
this.Q2 = Q2;
}
}
public class BAA : AbstractCode
{
Geltungsbereich geltungsbereich;
public BAA(Geltungsbereich geltungsbereich) : base("Verformung", CalculateMethods.Standsicherheit | CalculateMethods.Betriebsicherheit)
EGeltungsbereich geltungsbereich;
public BAA(EGeltungsbereich geltungsbereich) : base("Verformung")
{
this.geltungsbereich = geltungsbereich;
}
protected override int CalculateSK()
public override int CalculateSK()
{
switch(geltungsbereich)
{
case Geltungsbereich.biegesteif:
case EGeltungsbereich.biegesteif:
{
switch (Q1)
{
@@ -88,7 +28,7 @@ namespace dcnsanplanung.bewertung.M149_3
default: return 4;
}
}
case Geltungsbereich.biegeweich:
case EGeltungsbereich.biegeweich:
{
switch (Q1)
{
@@ -103,7 +43,7 @@ namespace dcnsanplanung.bewertung.M149_3
default: return 6;
}
}
protected override int CalculateBK()
public override int CalculateBK()
{
switch(Q1)
{

View File

@@ -2,11 +2,11 @@
{
public class BAB : AbstractCode
{
public BAB() : base("Rissbildung", CalculateMethods.Standsicherheit | CalculateMethods.Dichtheit)
public BAB() : base("Rissbildung")
{
}
protected override int CalculateDK()
public override int CalculateDK()
{
switch(Ch1)
{
@@ -33,10 +33,10 @@
break;
}
return 10;
return 5;
}
protected override int CalculateSK()
public override int CalculateSK()
{
switch(Ch1)
{

View File

@@ -2,20 +2,20 @@
{
public class BAC : AbstractCode
{
public BAC() : base("Rohrbruch", CalculateMethods.Dichtheit | CalculateMethods.Standsicherheit | CalculateMethods.Betriebsicherheit)
public BAC() : base("Rohrbruch")
{
}
protected override int CalculateBK()
public override int CalculateBK()
{
switch (Ch1)
{
case "A": return 7;
case "C": return 0;
}
return 10;
return 5;
}
protected override int CalculateSK()
public override int CalculateSK()
{
switch(Ch1)
{
@@ -24,7 +24,7 @@
default: return 0;
}
}
protected override int CalculateDK()
public override int CalculateDK()
{
switch (Ch1)
{

View File

@@ -2,7 +2,7 @@
{
public class BAD : AbstractCode
{
public BAD() : base("Defektes Mauerwerk", CalculateMethods.Dichtheit | CalculateMethods.Standsicherheit | CalculateMethods.Betriebsicherheit)
public BAD() : base("Defektes Mauerwerk")
{
throw new NotImplementedException();
}

View File

@@ -2,7 +2,7 @@
{
public class BAE : AbstractCode
{
public BAE() : base("Fehlender Mörtel", CalculateMethods.Dichtheit | CalculateMethods.Standsicherheit)
public BAE() : base("Fehlender Mörtel")
{
throw new NotImplementedException();
}

View File

@@ -2,9 +2,43 @@
{
public class BAF : AbstractCode
{
public BAF() : base("Oberflächenschaden", CalculateMethods.Dichtheit | CalculateMethods.Standsicherheit | CalculateMethods.Betriebsicherheit)
public BAF() : base("Oberflächenschaden")
{
throw new NotImplementedException();
}
public override int CalculateBK()
{
if (Ch1.Equals("K")) return 3;
return 4;
}
public override int CalculateDK()
{
switch(Ch1)
{
case "I": return 1;
case "Z": return 7;
default: return 5;
}
}
public override int CalculateSK()
{
switch(Ch1)
{
case "A": return 4;
case "B":
case "C": return 3;
case "D": return 2;
case "E": return 1;
case "F": return 3;
case "G": return 2;
case "H": return 1;
case "I":
case "J":
case "Z": return 7;
default: return 5;
}
}
}
}

View File

@@ -2,9 +2,55 @@
{
public class BAG : AbstractCode
{
public BAG() : base("Einragender Anschluss", CalculateMethods.Betriebsicherheit)
public BAG(int DN) : base("Einragender Anschluss", DN)
{
throw new NotImplementedException ();
this.DN = DN;
}
public override int CalculateBK()
{
switch(DN)
{
case <= 250:
{
switch(Q1)
{
case >= 50: return 0;
case >= 30: return 1;
case >= 20: return 2;
case >= 10: return 3;
default: return 4;
}
}
case <= 500:
{
switch(Q1)
{
case >= 80: return 0;
case >= 60: return 1;
case >= 40: return 2;
case >= 10: return 3;
default: return 4;
}
}
case <= 800:
{
switch(Q1)
{
case >= 70: return 2;
case <= 10: return 3;
default: return 4;
}
}
default:
{
switch(Q1)
{
case >= 30: return 3;
default: return 4;
}
}
}
}
}
}

View File

@@ -2,9 +2,27 @@
{
public class BAH : AbstractCode
{
public BAH() : base("Schadhafter Anschluss", CalculateMethods.Dichtheit | CalculateMethods.Standsicherheit | CalculateMethods.Betriebsicherheit)
public BAH() : base("Schadhafter Anschluss")
{
throw new NotImplementedException () ;
}
public override int CalculateDK()
{
switch(Ch1)
{
case "B":
case "C":
case "D": return 2;
case "Z": return 7;
default: return 5;
}
}
public override int CalculateSK()
{
if (Ch1.Equals("Z")) return 7;
return 5;
}
}
}

View File

@@ -2,9 +2,32 @@
{
public class BAI : AbstractCode
{
public BAI() : base("Einragendes Dichtungsmaterial", CalculateMethods.Dichtheit | CalculateMethods.Betriebsicherheit)
public BAI() : base("Einragendes Dichtungsmaterial")
{
throw new NotImplementedException () ;
}
public override int CalculateDK()
{
return 2;
}
public override int CalculateBK()
{
if(Ch1.Equals("A"))
{
if (Ch2.Equals("A")) return 4;
return 3;
}
switch(Q1)
{
case >= 50: return 0;
case >= 35: return 1;
case >= 20: return 2;
case >= 5: return 3;
default: return 4;
}
}
}
}

View File

@@ -0,0 +1,117 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAJ : AbstractCode
{
public BAJ(int DN = -1) : base("Verschobene Verbindung", DN)
{
}
public override int CalculateDK()
{
switch (Ch1)
{
case "A":
{
switch (DN)
{
case <= 400:
{
switch (Q1)
{
case >= 70: return 0;
case >= 50: return 1;
case >= 30: return 2;
case >= 20: return 3;
default: return 4;
}
}
case <= 800:
{
switch (Q1)
{
case >= 80: return 0;
case >= 60: return 1;
case >= 40: return 2;
case >= 20: return 3;
default: return 4;
}
}
default:
{
switch (Q1)
{
case >= 90: return 0;
case >= 65: return 1;
case >= 40: return 2;
case >= 20: return 3;
default: return 4;
}
}
}
}
case "B":
{
switch (Q1)
{
case >= 30: return 0;
case >= 20: return 1;
case >= 15: return 2;
case >= 10: return 3;
default: return 4;
}
}
default:
{
switch (DN)
{
case <= 200:
{
switch (Q1)
{
case >= 12: return 0;
case >= 9: return 1;
case >= 7: return 2;
case >= 5: return 3;
default: return 4;
}
}
case <= 500:
{
switch (Q1)
{
case >= 6: return 0;
case >= 4: return 1;
case >= 3: return 2;
case >= 2: return 3;
default: return 4;
}
}
default:
{
switch (Q1)
{
case >= 6: return 0;
case >= 4: return 1;
case >= 3: return 2;
case >= 1: return 3;
default: return 4;
}
}
}
}
}
}
public override int CalculateSK()
{
return 4;
}
public override int CalculateBK()
{
if (Ch1.Equals("B")) return 7;
return 5;
}
}
}

View File

@@ -0,0 +1,12 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAK : AbstractCode
{
public BAK() : base("Feststellung der Innenauskleidung")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,12 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAL : AbstractCode
{
public BAL() : base("Schadhafte Reparatur")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,12 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAM : AbstractCode
{
public BAM() : base("Schadhafte Schweißnaht")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,12 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAN : AbstractCode
{
public BAN() : base("Poröses Rohr")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,22 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAO : AbstractCode
{
public BAO() : base("Boden sichtbar")
{
}
public override int CalculateDK()
{
return 1;
}
public override int CalculateSK()
{
return 1;
}
}
}

View File

@@ -0,0 +1,21 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BAP : AbstractCode
{
public BAP() : base("Hohlraum sichtbar")
{
}
public override int CalculateDK()
{
return 1;
}
public override int CalculateSK()
{
return 0;
}
}
}

View File

@@ -0,0 +1,24 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBA : AbstractCode
{
public BBA() : base("Wurzeln")
{
}
public override int CalculateDK()
{
return 2;
}
public override int CalculateBK()
{
switch(Q1)
{
case >= 30: return 0;
case >= 20: return 1;
case >= 10: return 2;
default: return 3;
}
}
}
}

View File

@@ -0,0 +1,29 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBB : AbstractCode
{
public BBB() : base("Anhaftende Stoffe")
{
}
public override int CalculateDK()
{
if (Ch1.Equals("A")) return 3;
return 5;
}
public override int CalculateBK()
{
switch(Q1)
{
case >= 30: return 0;
case >= 20: return 1;
case >= 10: return 2;
case >= 5: return 3;
default: return 4;
}
}
}
}

View File

@@ -0,0 +1,31 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBC : AbstractCode
{
public BBC() : base("Ablagerungen")
{
}
public override int CalculateBK()
{
switch(Ch1)
{
case "C":
case "Z":
{
switch(Q1)
{
case >= 50: return 0;
case >= 40: return 1;
case >= 25: return 2;
case >= 10: return 3;
default: return 4;
}
}
default: return 4;
}
}
}
}

View File

@@ -0,0 +1,32 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBD : AbstractCode
{
public BBD() : base("Eindringen von Bodenmaterial")
{
}
public override int CalculateDK()
{
return 1;
}
public override int CalculateSK()
{
return 0;
}
public override int CalculateBK()
{
switch(Q1)
{
case >= 30: return 0;
case >= 20: return 1;
case >= 10: return 2;
default: return 3;
}
}
}
}

View File

@@ -0,0 +1,11 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBE : AbstractCode
{
public BBE() : base("Andere Hindernisse")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,37 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBF : AbstractCode
{
public BBF() : base("Infiltration")
{
}
public override int CalculateDK()
{
switch(Ch1)
{
case "A": return 2;
default: return 1;
}
}
public override int CalculateSK()
{
switch(Ch1)
{
case "A": return 3;
case "B":
case "C": return 2;
default: return 1;
}
}
public override int CalculateBK()
{
if (Ch1.Equals("A")) return 4;
return 3;
}
}
}

View File

@@ -0,0 +1,11 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBG : AbstractCode
{
public BBG() : base("Exfiltration")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,11 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BBH : AbstractCode
{
public BBH() : base("Ungeziefer")
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,20 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BDB : AbstractCode
{
public BDB() : base("Sonderfälle")
{
}
public override int CalculateBK()
{
return 7;
}
public override int CalculateDK()
{
return 7;
}
}
}

View File

@@ -0,0 +1,20 @@
namespace dcnsanplanung.bewertung.M149_3
{
public class BDE : AbstractCode
{
public BDE() : base("Zufluss aus einem Anschluss")
{
}
public override int CalculateBK()
{
switch(Ch2)
{
case "A": return 1;
default: return 2;
}
}
}
}

View File

@@ -0,0 +1,9 @@
namespace dcnsanplanung.bewertung.M149_3
{
public enum ECalculateMethods
{
Dichtheit = 1,
Standsicherheit = 2,
Betriebsicherheit = 4
}
}

View File

@@ -0,0 +1,8 @@
namespace dcnsanplanung.bewertung.M149_3
{
public enum EGeltungsbereich
{
biegesteif,
biegeweich
}
}

View File

@@ -0,0 +1,21 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using dcnsanplanung.bewertung;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace dcnsanplanung.bewertung.Tests
{
[TestClass()]
public class BewM149Tests
{
[TestMethod()]
public void BewM149Test()
{
var t = BewM149.Klassifiziere("BAB", "B", "A", "10", "10", 0);
}
}
}

View File

@@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
<PackageReference Include="coverlet.collector" Version="3.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\dcnsanplanung.bewertung\dcnsanplanung.bewertung.csproj" />
</ItemGroup>
</Project>

View File

@@ -40,6 +40,7 @@ namespace dcnsanplanung.shared.Helper
kodierung.CH2 = src_kodierung.Charakterisierung2 != null ? src_kodierung.Charakterisierung2 : "";
kodierung.Q1 = src_kodierung.Quantifizierung1.Numerisch.ToString();
kodierung.Q2 = src_kodierung.Quantifizierung2.Numerisch.ToString();
kodierung.StreckenschadenCode = string.Format("{0}{1}", src_kodierung.Streckenschaden, src_kodierung.Streckenschadennr);
//string.Format("{0}#{1}#{2}#{3}", src_kodierung.Inspektionskode ,src_kodierung.Charakterisierung1 , src_kodierung.Charakterisierung2 , src_kodierung.Quantifizierung1);
//kodierung.Schadensklasse = src_kodierung.Klassifizierung == null ? 6 : src_kodierung.Klassifizierung.MaxSKeAuto;

View File

@@ -9,10 +9,11 @@
public string CH2 { get; set; } = string.Empty;
public string Q1 { get; set; } = string.Empty;
public string Q2 { get; set; } = string.Empty;
public uint Schadensklasse { get; set; }
public uint KD { get; set; }
public uint KS { get; set; }
public uint KB { get; set; }
public int Schadensklasse { get; set; }
public int KD { get; set; }
public int KS { get; set; }
public int KB { get; set; }
public string StreckenschadenCode { get; set; } = string.Empty;
public List<Sanierungsvorgabe> Sanierungsvorgaben { get; set; }
}

View File

@@ -15,7 +15,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dcnsanplanung.sharedTests",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dcnsanplanung.DALTests", "dcnsanplanung.DALTests\dcnsanplanung.DALTests.csproj", "{91A48C89-5E1F-4C70-B995-A2AC9459E6C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dcnsanplanung.bewertung", "dcnsanplanung.bewertung\dcnsanplanung.bewertung.csproj", "{9D3FD066-7572-40EC-BCC7-5508CBAFF02C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dcnsanplanung.bewertung", "dcnsanplanung.bewertung\dcnsanplanung.bewertung.csproj", "{9D3FD066-7572-40EC-BCC7-5508CBAFF02C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dcnsanplanung.bewertungTests", "dcnsanplanung.bewertungTests\dcnsanplanung.bewertungTests.csproj", "{04EEBF05-C867-4638-9629-718109F029F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -51,6 +53,10 @@ Global
{9D3FD066-7572-40EC-BCC7-5508CBAFF02C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D3FD066-7572-40EC-BCC7-5508CBAFF02C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D3FD066-7572-40EC-BCC7-5508CBAFF02C}.Release|Any CPU.Build.0 = Release|Any CPU
{04EEBF05-C867-4638-9629-718109F029F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04EEBF05-C867-4638-9629-718109F029F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04EEBF05-C867-4638-9629-718109F029F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04EEBF05-C867-4638-9629-718109F029F1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -22,6 +22,9 @@
</ComboBox>
<Button Name="LoadXML" Command="{Binding LoadXMLFile}" Content="LoadXML" />
<Button Content="Klassifiziere" Command="{Binding Klassifiere}" />
<Label Content="{Binding ZahlEinzelfall}" />
<Button Content="Zeige Einzelfall" Command="{Binding SelectEinzelfall}" />
</StackPanel>
</Grid>

View File

@@ -18,18 +18,27 @@ namespace dcnsanplanung.wpf.ViewModel
public string SK { get => model.Bewertungklasse.ToString(); }
public string DN { get => model.DN.ToString(); }
public string Material { get => model.Material; }
public string Guid { get => model.Guid.ToString(); }
public List<Schaden> Schaeden { get => model.Kodierungen; }
public ICommand Speichern { get; set; }
public HaltungObjektViewModel(Haltung selectedHaltung)
{
model = selectedHaltung;
Speichern = new RelayCommand(() => doSpeichern());
LadeSchaeden();
}
private void doSpeichern()
{
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
schadenDataService.UpdateSchadenBuld(model.Kodierungen);
}
private async void LadeSchaeden()
{
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");

View File

@@ -1,4 +1,5 @@
using CommunityToolkit.Mvvm.Input;
using dcnsanplanung.DAL.Services.PostgresqlData;
using dcnsanplanung.shared.Model;
using System;
@@ -15,7 +16,13 @@ namespace dcnsanplanung.wpf.ViewModel
{
public List<Haltung> VerfügbareHaltungen { get; set; } = new List<Haltung>();
Queue<Haltung> Einzelfallbetrachtung = new Queue<Haltung>();
public ICommand LoadXMLFile { get; set; }
public ICommand Klassifiere { get; set; }
public ICommand SelectEinzelfall { get; set; }
public string ZahlEinzelfall => Einzelfallbetrachtung.Count.ToString();
private Haltung? selectedHaltung;
public Haltung? SelectedHaltung
@@ -35,7 +42,58 @@ namespace dcnsanplanung.wpf.ViewModel
LoadHaltungen();
LoadXMLFile = new RelayCommand(() => dooAsync());
Klassifiere = new RelayCommand(() => dooKlassifiziereAsync());
SelectEinzelfall = new RelayCommand(() => selectEinzelfall());
}
private void selectEinzelfall()
{
Haltung? einzelfall = Einzelfallbetrachtung.Dequeue();
if (einzelfall == null) return;
W_ObjektView w_ObjektView = new W_ObjektView();
w_ObjektView.DataContext = new HaltungObjektViewModel(einzelfall);
w_ObjektView.Show();
}
private async void dooKlassifiziereAsync()
{
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
var s = await haltungDataService.GetAllByProjekt(0);
// Alle Haltungen laden
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
foreach (var item in s)
{
IEnumerable<Schaden> src_kodierung = await schadenDataService.GetAllByHaltung(item);
item.Kodierungen = src_kodierung.ToList();
}
// Alle Schäden Klassifizieren
foreach(var haltung in s)
{
bool einzelfall = false;
foreach(var schaden in haltung.Kodierungen)
{
var k = bewertung.BewM149.Klassifiziere(schaden.Hauptcode, schaden.CH1, schaden.CH2, schaden.Q1, schaden.Q2, (int)haltung.DN);
//SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
if (k.Count == 0) continue;
schaden.KB = k["B"];
schaden.KD = k["D"];
schaden.KS = k["S"];
if(schaden.KB == 7 || schaden.KD == 7 || schaden.KS == 7)
{
einzelfall = true;
}
await schadenDataService.Update(schaden);
}
if(einzelfall)
{
Einzelfallbetrachtung.Enqueue(haltung);
OnPropertyChanged("ZahlEinzelfall");
}
}
}
async Task dooAsync()

View File

@@ -39,13 +39,16 @@
<Label Grid.Row="3" Content="Material" />
<Label Grid.Row="3" Grid.Column="1" Content="{Binding Material}" />
<Button Grid.Row="4" Content="Speichern" Command="{Binding Speichern}" />
</Grid>
<!--<views:DynamicGridView Grid.Row="1" x:Name="DynamicGridView" DataContext="{Binding Schaeden}"></views:DynamicGridView>-->
<ListView Grid.Row="1" ItemsSource="{Binding Schaeden}" AlternationCount="2">
<!--<ListView Grid.Row="1" ItemsSource="{Binding Schaeden}" AlternationCount="2">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
@@ -61,7 +64,7 @@
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Entfernung}" />
<TextBlock Grid.Column="1" Text="{Binding Kodierung}" />
<TextBlock Grid.Column="1" Text="{Binding Hauptcode}" />
<TextBlock Grid.Column="2" Text="{Binding Schadensklasse}" />
@@ -136,15 +139,21 @@
</Style>
</ListView.Style>
</ListView>
<!--<DataGrid Grid.Row="1" ItemsSource="{Binding Schaeden}" AutoGenerateColumns="False">
</ListView>-->
<DataGrid Grid.Row="1" ItemsSource="{Binding Schaeden}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Entfernung" Binding="{Binding Entfernung}" />
<DataGridTextColumn Header="Kodierung" Binding="{Binding Kodierung}" />
<DataGridTextColumn Header="Schadensklasse" Binding="{Binding Schadensklasse}" />
<DataGridTextColumn Header="Hauptcode" Binding="{Binding Hauptcode}" />
<DataGridTextColumn Header="Ch1" Binding="{Binding CH1}" />
<DataGridTextColumn Header="Ch2" Binding="{Binding CH2}" />
<DataGridTextColumn Header="Q1" Binding="{Binding Q1}" />
<DataGridTextColumn Header="Q2" Binding="{Binding Q2}" />
<DataGridTextColumn Header="D" Binding="{Binding KD}" />
<DataGridTextColumn Header="S" Binding="{Binding KS}" />
<DataGridTextColumn Header="B" Binding="{Binding KB}" />
</DataGrid.Columns>
</DataGrid>-->
</DataGrid>
</Grid>
</Window>

View File

@@ -12,6 +12,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\dcnsanplanung.bewertung\dcnsanplanung.bewertung.csproj" />
<ProjectReference Include="..\dcnsanplanung.DAL\dcnsanplanung.DAL.csproj" />
<ProjectReference Include="..\dcnsanplanung.shared\dcnsanplanung.shared.csproj" />
<ProjectReference Include="..\Schnittstelle\Schnittstelle\Schnittstelle.csproj" />