Praemienfaktor hinzugefügt. Attribute für Fahrzeuge hinzugefügt.

This commit is contained in:
2025-12-30 12:41:06 +01:00
parent 126d12201b
commit d7d32904da
4 changed files with 56 additions and 10 deletions

View File

@@ -100,7 +100,7 @@ public class RDFHelper {
Integer max = Integer.parseInt(Models.objectLiteral(model.filter(iri, maxIri, null)).map(Literal::getLabel).orElse("-1"));
int start = iri.stringValue().lastIndexOf("ElemInt");
ai.setId(BigInteger.valueOf(Long.valueOf(iri.stringValue().substring(start + "ElemInt".length()))));
ai.setId(BigInteger.valueOf(Long.parseLong(iri.stringValue().substring(start + "ElemInt".length()))));
ai.setBezeichnung(bez);
ai.setDefault(def);
@@ -204,6 +204,8 @@ public class RDFHelper {
"http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null);
String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null);
String praemie = Models.objectLiteral(model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/praemienfaktor"), null)).map(Literal::getLabel).orElse(null);
XMLGregorianCalendar verkaufsoffenVon = Models.objectLiteral(model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).isPresent() ?
DatatypeFactory.newInstance().newXMLGregorianCalendar( Models.objectLiteral(model.filter(
@@ -239,6 +241,7 @@ public class RDFHelper {
verkaufsproduktType.setMaxOccurrences(maxOccurrence);
verkaufsproduktType.setMinOccurrences(minOccurrence);
verkaufsproduktType.setRisikoobjektType(risikoobjektType);
verkaufsproduktType.setPraemienfaktor(praemie);
parentId.ifPresent(p -> parents.put(id, p));
bausteine.put(id, verkaufsproduktType);
@@ -302,6 +305,8 @@ public class RDFHelper {
"http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null);
String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null);
String praemie = Models.objectLiteral(model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/praemienfaktor"), null)).map(Literal::getLabel).orElse(null);
List<ServiceFault> meldungen = model.filter(iri, vf.createIRI(
"http://vvo.pisanoapi.at/Meldung"), null).objects().stream()
.filter(s -> s instanceof IRI).map(s -> {
@@ -348,6 +353,7 @@ public class RDFHelper {
verkaufsproduktType.setMaxVorkommen(maxOccurrence);
verkaufsproduktType.setMinVorkommen(minOccurrence);
verkaufsproduktType.setRisikoobjektErforderlich(risikoobjektType != null);
verkaufsproduktType.setPraemienfaktor(praemie);
for (ServiceFault meldung : meldungen) {
if (meldung != null) {
@@ -403,21 +409,47 @@ public class RDFHelper {
IRI bezIri = iri(baseIri + "bez");
IRI baujahrIri = iri(baseIri + "baujahr");
IRI erstzulassungIri = iri(baseIri + "erstzulassung");
IRI kenIri = iri(baseIri + "kennzeichen");
IRI leistungIri = iri(baseIri + "leistung");
IRI sonderIri = iri(baseIri + "sonderausstattung");
IRI listenpreisIri = iri(baseIri + "listenpreis");
for (Resource iri : Models.subjectIRIs(model)) {
if (iri.stringValue().contains("Fahrzeug")) {
String id = iri.stringValue();
String bez = Models.objectLiteral(model.filter(iri, bezIri, null)).map(Literal::getLabel).orElse(null);
int baujahr = Integer.parseInt(Models.objectLiteral(model.filter(iri, baujahrIri, null)).map(Literal::getLabel).orElse("-1"));
XMLGregorianCalendar erstzulassung = Models.objectLiteral(model.filter(iri, erstzulassungIri, null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar(
Models.objectLiteral(model.filter(iri, erstzulassungIri, null)).map(Literal::getLabel).orElse(null)) : null;
String bez = Models.objectLiteral(
model.filter(iri, bezIri, null)).map(Literal::getLabel).orElse(null);
String ken = Models.objectLiteral(
model.filter(iri, kenIri, null)).map(Literal::getLabel).orElse(null);
BigDecimal listenpreis = BigDecimal.valueOf(
Double.parseDouble(Models.objectLiteral(model.filter(iri, listenpreisIri, null))
.map(Literal::getLabel).orElse("-1")));
BigDecimal sonderausstattung = BigDecimal.valueOf(
Double.parseDouble(Models.objectLiteral(model.filter(iri, sonderIri, null))
.map(Literal::getLabel).orElse("-1")));
int leistung = Integer.parseInt(Models.objectLiteral(
model.filter(iri, leistungIri, null)).map(Literal::getLabel).orElse("-1"));
int baujahr = Integer.parseInt(Models.objectLiteral(
model.filter(iri, baujahrIri, null)).map(Literal::getLabel).orElse("-1"));
XMLGregorianCalendar erstzulassung = Models.objectLiteral(model.filter(
iri, erstzulassungIri, null)).map(Literal::getLabel).isPresent() ?
DatatypeFactory.newInstance().newXMLGregorianCalendar(
Models.objectLiteral(model.filter(iri, erstzulassungIri, null))
.map(Literal::getLabel).orElse(null)) : null;
FahrzeugType fahrzeug = new FahrzeugType();
fahrzeug.setErstzulassdat(erstzulassung);
fahrzeug.setBaujahr(baujahr);
fahrzeug.setHandelsbez(bez);
fahrzeug.setPolKennz(ken);
fahrzeug.setLeistung(leistung);
fahrzeug.setListenpreis(listenpreis);
fahrzeug.setSonderausstattung(sonderausstattung);
erg.add(new Pair<>(id, fahrzeug));
}
@@ -486,6 +518,7 @@ public class RDFHelper {
IRI risikoobjektTypeIri = iri(baseIri + "risikoobjektType");
IRI bausteinIri = iri(baseIri + "Baustein");
IRI parentIri = iri(baseIri + "Parent");
IRI praemieIri = iri(baseIri + "praemienfaktor");
IRI vpIri = iriMap.get(guiProdukt);
@@ -502,7 +535,7 @@ public class RDFHelper {
model.add(vpIri, maxOccurrenceIri, Values.literal(produkt.getMaxVorkommen()));
model.add(vpIri, typeIri, Values.literal(produkt.getTyp()));
if (produkt.isRisikoobjektErforderlich()) model.add(vpIri, risikoobjektTypeIri, Values.literal("FahrzeugType"));
if (produkt.getPraemienfaktor() != null) model.add(vpIri, praemieIri, Values.literal(produkt.getPraemienfaktor()));
if (parentId != null) model.add(vpIri, parentIri, Values.iri(parentId));
}
@@ -578,7 +611,6 @@ public class RDFHelper {
meldungId++;
}
int fahrzeugId = 1;
for (VersichertesInteresseType ro : produkt.getVersicherteObjekte()){
if (ro instanceof FahrzeugType fa){
IRI fahrzeugIri = iri(baseIri + "FahrzeugType");
@@ -586,16 +618,23 @@ public class RDFHelper {
IRI faBaujahrIri = iri(baseIri + "baujahr");
IRI faBezIri = iri(baseIri + "bez");
IRI faErstZuIri = iri(baseIri + "erstzulassung");
IRI faKennIri = iri(baseIri + "kennzeichen");
IRI faLpreisIri = iri(baseIri + "listenpreis");
IRI faSonderIri = iri(baseIri + "sonderausstattung");
IRI faLeistungIri = iri(baseIri + "leistung");
IRI prodRoIri = iri(baseIri + "VersichertesInteresseType");
model.add(faIri, RDF.TYPE, fahrzeugIri);
model.add(faIri, faBaujahrIri, Values.literal(fa.getBaujahr()));
model.add(faIri, faBezIri, Values.literal(fa.getHandelsbez()));
model.add(faIri, faErstZuIri, Values.literal(fa.getErstzulassdat()));
model.add(faIri, faKennIri, Values.literal(fa.getPolKennz()));
model.add(faIri, faLpreisIri, Values.literal(fa.getListenpreis()));
model.add(faIri, faSonderIri, Values.literal(fa.getSonderausstattung()));
model.add(faIri, faLeistungIri, Values.literal(fa.getLeistung()));
model.add(vpIri, prodRoIri, faIri);
fahrzeugId++;
} else if (ro instanceof VersicherteLiegenschaftType) {
//To-Do
} else if (ro instanceof RisikoGebaeudeType) {

View File

@@ -60,6 +60,8 @@ public class TreeHelper {
((ProduktbausteinType) original.getValue().getProdukt()).isRisikoobjektErforderlich());
cloneOriginalValue.getVersicherteObjekte().addAll(
((ProduktbausteinType) original.getValue().getProdukt()).getVersicherteObjekte());
cloneOriginalValue.setPraemienfaktor(
((ProduktbausteinType) original.getValue().getProdukt()).getPraemienfaktor());
TreeItem<GuiProdukt> clonedItem = new TreeItem<>(new GuiProdukt(cloneOriginalValue));
@@ -143,6 +145,8 @@ public class TreeHelper {
((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getType());
erg.setRisikoobjektErforderlich(
((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getRisikoobjektType() != null);
erg.setPraemienfaktor(
((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getPraemienfaktor());
for (int i = 0; i < ((APrioriProduktbausteinType) produkt.getValue().getProdukt()).getBausteine().size(); i++) {
erg.getBausteine().add((ProduktbausteinType) aprioriItemToCalcItem(

View File

@@ -65,6 +65,7 @@ public class BuildCalculateRequestAuskunft {
baustein.setMinVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMinVorkommen());
baustein.setMaxVorkommen(((ProduktbausteinType)treeItem.getValue().getProdukt()).getMaxVorkommen());
baustein.getVersicherteObjekte().addAll(((ProduktbausteinType) treeItem.getValue().getProdukt()).getVersicherteObjekte());
baustein.setPraemienfaktor(((ProduktbausteinType)treeItem.getValue().getProdukt()).getPraemienfaktor());
return baustein;
}

View File

@@ -1729,7 +1729,8 @@
<xsd:attribute name="VerkaufsoffenBis" type="xsd:date" ><xsd:annotation><xsd:documentation>Verkaufsoffen bis</xsd:documentation></xsd:annotation></xsd:attribute>
<xsd:attribute name="Typ" type="xsd:string" />
<xsd:attribute name="RisikoobjektErforderlich" type="xsd:boolean" default="false"/>
</xsd:extension>
<xsd:attribute name="Praemienfaktor" type="xsd:string" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ProduktbausteinGenerisch_Type" abstract="true">
@@ -5065,7 +5066,8 @@
<xsd:attribute name="maxOccurrences" type="xsd:int" />
<xsd:attribute name="type" type="xsd:string" use="required" />
<xsd:attribute name="risikoobjekt_type" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:attribute name="praemienfaktor" type="xsd:string" />
</xsd:complexType>
<xsd:annotation><xsd:documentation>Es gibt zwei Implementierungen für a priori: Verkaufsprodukt und Unterbaustein</xsd:documentation></xsd:annotation>
<xsd:complexType name="APrioriUnterbaustein_Type">
<xsd:complexContent>