From 1ddbc8ef4400e5f627ff37372d654587097677ef Mon Sep 17 00:00:00 2001 From: Mark Prins Date: Wed, 25 Sep 2019 18:56:44 +0200 Subject: [PATCH] Toon hoogste klantafgiftenummer en maak het mogelijk om hoogste/laagste klantafgiftenummer als criterium op te geven --- .../java/nl/b3p/brmo/loader/StagingProxy.java | 1 + .../brmo/loader/util/StagingRowHandler.java | 26 +++++- .../service/scanner/GDS2OphalenProces.java | 85 +++++++++++++------ .../service/stripes/LaadProcesActionBean.java | 1 + .../WEB-INF/jsp/beheer/editgds2proces.jsp | 11 ++- .../src/main/webapp/scripts/laadprocessen.js | 12 ++- 6 files changed, 101 insertions(+), 35 deletions(-) diff --git a/brmo-loader/src/main/java/nl/b3p/brmo/loader/StagingProxy.java b/brmo-loader/src/main/java/nl/b3p/brmo/loader/StagingProxy.java index 88f6cea0ad..c4aeb4f945 100644 --- a/brmo-loader/src/main/java/nl/b3p/brmo/loader/StagingProxy.java +++ b/brmo-loader/src/main/java/nl/b3p/brmo/loader/StagingProxy.java @@ -697,6 +697,7 @@ public void loadBr(InputStream stream, String type, String fileName, Date d, Pro } } else { if (!brmoXMLReader.hasNext()) { + updateLaadProcesStatus(lp, LaadProces.STATUS.STAGING_OK, "Leeg bestand, geen berichten gevonden in " + fileName); throw new BrmoLeegBestandException("Leeg bestand, geen berichten gevonden in " + fileName); } diff --git a/brmo-loader/src/main/java/nl/b3p/brmo/loader/util/StagingRowHandler.java b/brmo-loader/src/main/java/nl/b3p/brmo/loader/util/StagingRowHandler.java index c15400f47e..4c80b7dd54 100644 --- a/brmo-loader/src/main/java/nl/b3p/brmo/loader/util/StagingRowHandler.java +++ b/brmo-loader/src/main/java/nl/b3p/brmo/loader/util/StagingRowHandler.java @@ -8,8 +8,6 @@ import nl.b3p.brmo.loader.entity.Bericht; import nl.b3p.brmo.loader.entity.LaadProces; import org.apache.commons.dbutils.BasicRowProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; /** * creates laadproces or bericht bean from database row. @@ -71,6 +69,30 @@ public Object toBean(ResultSet rs, Class type) throws SQLException { if (namesList.contains("contact_email")) { lp.setContactEmail(rs.getString("contact_email")); } + if (namesList.contains("klantafgiftenummer") && rs.getBigDecimal("klantafgiftenummer") != null) { + lp.setKlantafgiftenummer((rs.getBigDecimal("klantafgiftenummer").toBigInteger())); + } + if (namesList.contains("contractafgiftenummer") && rs.getBigDecimal("contractafgiftenummer") != null) { + lp.setContractafgiftenummer((rs.getBigDecimal("contractafgiftenummer").toBigInteger())); + } + if (namesList.contains("artikelnummer")) { + lp.setArtikelnummer(rs.getString("artikelnummer")); + } + if (namesList.contains("contractnummer")) { + lp.setContractnummer(rs.getString("contractnummer")); + } + if (namesList.contains("afgifteid")) { + lp.setAfgifteid(rs.getString("afgifteid")); + } + if (namesList.contains("afgiftereferentie")) { + lp.setAfgiftereferentie(rs.getString("afgiftereferentie")); + } + if (namesList.contains("bestandsreferentie")) { + lp.setBestandsreferentie(rs.getString("bestandsreferentie")); + } + if (namesList.contains("beschikbaar_tot")) { + lp.setBeschikbaar_tot(rs.getDate("beschikbaar_tot")); + } return lp; } diff --git a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java index 2adaa0e1b5..8c5eb239f5 100644 --- a/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java +++ b/brmo-service/src/main/java/nl/b3p/brmo/service/scanner/GDS2OphalenProces.java @@ -13,6 +13,7 @@ import java.io.InputStream; import java.io.PrintWriter; import java.io.StringWriter; +import java.math.BigInteger; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; @@ -73,6 +74,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.CloseShieldInputStream; import org.apache.commons.io.input.TeeInputStream; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -186,11 +188,22 @@ public void execute(ProgressUpdateListener listener) { vanaf = getDatumTijd(sVanaf); } - // TODO instellen laagste en hoogste afgiftenummer voor dit verzoek - KlantAfgiftenummerReeksType afgiftenummers = new KlantAfgiftenummerReeksType(); -// afgiftenummers.setKlantAfgiftenummerVanaf(BigInteger.ONE); -// afgiftenummers.setKlantAfgiftenummerTotmet(BigInteger.valueOf(10000)); -// criteria.setKlantAfgiftenummerReeks(afgiftenummers); + if (vanaf == null && tot == null) { + // instellen laagste en hoogste afgiftenummer voor dit verzoek, mag alleen als er geen periode is gedefinieerd + KlantAfgiftenummerReeksType afgiftenummers = new KlantAfgiftenummerReeksType(); + String nr = ClobElement.nullSafeGet(this.config.getConfig().get("klantafgiftenummer_vanaf")); + if (StringUtils.isNotBlank(nr)) { + BigInteger afgifteNrVanaf = new BigInteger(nr); + afgiftenummers.setKlantAfgiftenummerVanaf(afgifteNrVanaf); + + nr = ClobElement.nullSafeGet(this.config.getConfig().get("klantafgiftenummer_totenmet")); + if (StringUtils.isNotBlank(nr)) { + BigInteger afgifteNrTM = new BigInteger(nr); + afgiftenummers.setKlantAfgiftenummerTotmet(afgifteNrTM); + } + criteria.setKlantAfgiftenummerReeks(afgiftenummers); + } + } GregorianCalendar currentMoment = null; boolean parseblePeriod = false; @@ -207,6 +220,7 @@ public void execute(ProgressUpdateListener listener) { List afgiftes = new ArrayList<>(); BestandenlijstOpvragenResponse response = null; + int hoogsteKlantAfgifteNummer = -1; Gds2AfgifteServiceV20170401 gds2 = initGDS2(); l.updateStatus("Uitvoeren SOAP request naar Kadaster..."); @@ -297,6 +311,7 @@ public void execute(ProgressUpdateListener listener) { verzoek.setAfgifteSelectieCriteria(criteria); response = retryBestandenLijstOpvragen(gds2, request, BESTANDENLIJST_ATTEMPTS, BESTANDENLIJST_RETRY_WAIT); + hoogsteKlantAfgifteNummer = response.getAntwoord().getKlantAfgiftenummerMax(); int aantalInAntwoord = response.getAntwoord().getAfgifteAantalInLijst(); l.addLog("Aantal in antwoord: " + aantalInAntwoord); @@ -325,7 +340,9 @@ public void execute(ProgressUpdateListener listener) { } } - afgiftes.addAll(response.getAntwoord().getBestandenLijst().getAfgifte()); + if (aantalInAntwoord > 0) { + afgiftes.addAll(response.getAntwoord().getBestandenLijst().getAfgifte()); + } /* * Indicatie nog niet gerapporteerd: Met deze indicatie wordt @@ -345,6 +362,7 @@ public void execute(ProgressUpdateListener listener) { l.updateStatus("Uitvoeren SOAP request naar Kadaster voor meer afgiftes..." + moreCount++); criteria.setNogNietGerapporteerd(true); response = retryBestandenLijstOpvragen(gds2, request, BESTANDENLIJST_ATTEMPTS, BESTANDENLIJST_RETRY_WAIT); + hoogsteKlantAfgifteNummer = response.getAntwoord().getKlantAfgiftenummerMax(); List afgifteLijst = response.getAntwoord().getBestandenLijst().getAfgifte(); for (AfgifteType t : afgiftes) { @@ -368,13 +386,21 @@ public void execute(ProgressUpdateListener listener) { l.total(afgiftes.size()); l.addLog("Totaal aantal op te halen berichten: " + afgiftes.size()); - - if (criteria.getBestandKenmerken().getContractnummer() == null) { - // bag - verwerkAfgiftes(afgiftes, getAnoniemBaseURL(response.getAntwoord())); - } else { - // brk - verwerkAfgiftes(afgiftes, getCertificaatBaseURL(response.getAntwoord())); + l.addLog("Hoogste klant afgifte nummer: " + hoogsteKlantAfgifteNummer); + + this.config.getConfig().put("hoogste_afgiftenummer", new ClobElement("" + hoogsteKlantAfgifteNummer)); + + final String soort = this.config.getConfig().getOrDefault("gds2_br_soort", new ClobElement("brk")).getValue(); + switch (soort) { + case "brk": + verwerkAfgiftes(afgiftes, getCertificaatBaseURL(response.getAntwoord())); + break; + case "bag": + // bag heeft geen contractnummer + verwerkAfgiftes(afgiftes, getAnoniemBaseURL(response.getAntwoord())); + break; + default: + throw new BrmoException("Onbekende basisregistratie soort: " + soort); } } catch (Exception e) { @@ -474,20 +500,31 @@ private void laadBagAfgifte(AfgifteType a, String url) throws Exception { // alleen mutaties oppakken ZipInputStream innerzip = new ZipInputStream(zip); ZipEntry innerentry = innerzip.getNextEntry(); + String localLpName = ""; while (innerentry != null && innerentry.getName().toLowerCase().endsWith(".xml")) { msg = "Verwerken " + entry.getName() + "/" + innerentry.getName() + " uit " + getLaadprocesBestandsnaam(a); l.updateStatus(msg); l.addLog(msg); log.debug(msg); try { - String localLpName = getLaadprocesBestandsnaam(a) + "/" + entry.getName() + "/" + innerentry.getName(); + localLpName = getLaadprocesBestandsnaam(a) + "/" + entry.getName() + "/" + innerentry.getName(); brmo.loadFromStream( BrmoFramework.BR_BAG, new CloseShieldInputStream(innerzip), localLpName, config.getId() ); - + } catch (BrmoDuplicaatLaadprocesException d) { + msg = "Duplicaat laadproces. " + d.getLocalizedMessage(); + l.updateStatus(msg); + l.addLog(msg); + log.warn(msg); + } catch (BrmoLeegBestandException e) { + msg = "Leeg bestand voor laadproces. " + e.getLocalizedMessage(); + l.updateStatus(msg); + l.addLog(msg); + log.info(msg); + } finally { brmo.updateLaadProcesMeta( brmo.getLaadProcesIdByFileName(localLpName), a.getKlantAfgiftenummer(), @@ -499,17 +536,6 @@ private void laadBagAfgifte(AfgifteType a, String url) throws Exception { a.getBestand().getBestandsreferentie(), a.getBeschikbaarTot().toGregorianCalendar().getTime() ); - - } catch (BrmoDuplicaatLaadprocesException d) { - msg = "Duplicaat laadproces. " + d.getLocalizedMessage(); - l.updateStatus(msg); - l.addLog(msg); - log.warn(msg); - } catch (BrmoLeegBestandException e) { - msg = "Leeg bestand voor laadproces. " + e.getLocalizedMessage(); - l.updateStatus(msg); - l.addLog(msg); - log.info(msg); } innerentry = innerzip.getNextEntry(); } @@ -775,8 +801,11 @@ private void verwerkAfgiftes(List afgiftes, BaseURLType baseUrl) th String.format("Het GDS2 ophalen proces, gestart op %tc, is afgerond op %tc. " + LOG_NEWLINE + "Aantal afgiftes die al waren verwerkt: %d" + LOG_NEWLINE + "Aantal afgiftes geladen: %d" + LOG_NEWLINE - + "Aantal afgiftes doorgestuurd: %d", - this.config.getLastrun(), Calendar.getInstance(), filterAlVerwerkt, aantalGeladen, aantalDoorgestuurd)); + + "Aantal afgiftes doorgestuurd: %d" + LOG_NEWLINE + + "Hoogste klantafgiftenummer: %s", + this.config.getLastrun(), Calendar.getInstance(), filterAlVerwerkt, aantalGeladen, aantalDoorgestuurd, + ClobElement.nullSafeGet(this.config.getConfig().get("hoogste_afgiftenummer"))) + ); this.config.setStatus(AutomatischProces.ProcessingStatus.WAITING); this.config.setLastrun(new Date()); diff --git a/brmo-service/src/main/java/nl/b3p/brmo/service/stripes/LaadProcesActionBean.java b/brmo-service/src/main/java/nl/b3p/brmo/service/stripes/LaadProcesActionBean.java index 7728100280..678e8c9d2b 100644 --- a/brmo-service/src/main/java/nl/b3p/brmo/service/stripes/LaadProcesActionBean.java +++ b/brmo-service/src/main/java/nl/b3p/brmo/service/stripes/LaadProcesActionBean.java @@ -187,6 +187,7 @@ private JSONObject laadProces2Json(LaadProces lp) { JSONObject json = new JSONObject(); json.put("id", lp.getId()); + json.put("ka_nr", lp.getKlantafgiftenummer()); json.put("bestand_naam", lp.getBestandNaam()); json.put("bestand_datum", lp.getBestandDatum()); json.put("soort", lp.getSoort()); diff --git a/brmo-service/src/main/webapp/WEB-INF/jsp/beheer/editgds2proces.jsp b/brmo-service/src/main/webapp/WEB-INF/jsp/beheer/editgds2proces.jsp index a378ce971c..05e479c105 100644 --- a/brmo-service/src/main/webapp/WEB-INF/jsp/beheer/editgds2proces.jsp +++ b/brmo-service/src/main/webapp/WEB-INF/jsp/beheer/editgds2proces.jsp @@ -1,6 +1,6 @@ <%@include file="/WEB-INF/taglibs.jsp" %> - + <%--tr> <%--tr> @@ -22,6 +22,8 @@ +<%-- hidden field onderaan de pagina zodat deze niet wordt weggegooid bij opslaan --%> + + + + + + +
Label:
Label:
Afleveringsendpoint:
GDS2 endpoint (leeg is standaard):GDS2 HTTP BASIC username: (optioneel)
Contractnummer:
Artikelnummer:
Hoogste klantafgiftenummer:
Bericht soort: @@ -48,4 +50,11 @@
datum tot (dd-MM-yyyy formaat of "nu")
klantafgiftenummer vanaf
klantafgiftenummer tot-en-met
+ diff --git a/brmo-service/src/main/webapp/scripts/laadprocessen.js b/brmo-service/src/main/webapp/scripts/laadprocessen.js index fe73e54e8a..c5757820fd 100644 --- a/brmo-service/src/main/webapp/scripts/laadprocessen.js +++ b/brmo-service/src/main/webapp/scripts/laadprocessen.js @@ -24,14 +24,16 @@ Ext.define('B3P.brmo.LaadProces', { var gridSelection = Ext.create('B3P.common.GridSelection', { fields: [ {name: 'id', type: 'int'}, + {name: 'ka_nr', type: 'int'}, {name: 'bestand_naam', type: 'string'}, {name: 'bestand_datum', type: 'string'}, {name: 'soort', type: 'string'}, {name: 'status', type: 'string'} ], columns: [ - {text: "id", dataIndex: 'id'}, - {text: "bestand_naam", dataIndex: 'bestand_naam', flex: 1}, + {text: "id", dataIndex: 'id', tooltip: "database rij nummer"}, + {text: "klant afgifte nr", dataIndex: 'ka_nr', tooltip: "klant afgifte nummer"}, + {text: "bestand_naam", dataIndex: 'bestand_naam', flex: 2}, {text: "bestand_datum", dataIndex: 'bestand_datum'}, {text: "soort", dataIndex: 'soort', filter: 'string'}, {text: "status", dataIndex: 'status', filter: 'string', @@ -43,10 +45,12 @@ Ext.define('B3P.brmo.LaadProces', { { text: "log", dataIndex: 'id', - flex: 1, + flex: -1, renderer: function (value) { return Ext.String.format('', value); - } + }, + tooltip: "opmerkingen", + sortable: false } ], gridUrl: config.gridurl,