FCLT#60015 nieuwe conditiemeting-werkwijze is onderdeel van de core muv initialisatie

svn path=/Database/trunk/; revision=45400
This commit is contained in:
Peter Feij
2020-01-09 17:10:32 +00:00
parent f83d1982e0
commit 4b69b7a80d
8 changed files with 3150 additions and 3131 deletions

File diff suppressed because it is too large Load Diff

2836
CND/CND_PAC.SRC Normal file

File diff suppressed because it is too large Load Diff

99
CND/CND_TRI.SRC Normal file
View File

@@ -0,0 +1,99 @@
#ifdef CND
/*
* $Revision$
* $Id$
*/
-----------------------------------------------------------------------------------------------------------------------
--
-- Additional triggers for tables that are related to CND. AFTER-update, ze mogen de normale flow niet beinvloeden
--
-----------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER cnd_t_alg_gebouw_a_u
AFTER UPDATE
ON alg_gebouw
FOR EACH ROW
DECLARE
CURSOR gebouw_objecten
IS
SELECT dg.ins_deel_key
FROM ins_v_deel_gegevens_keys dg, ins_deel d
WHERE d.ins_deel_key = dg.ins_deel_key
AND ins_deel_verwijder IS NULL
AND dg.alg_gebouw_key = :new.alg_gebouw_key;
BEGIN
IF :new.alg_gebouw_in_bewerking = 0 AND :old.alg_gebouw_in_bewerking = 1
THEN
-- recalculate the mjb_scores of all objects within this building
-- This may take some time
FOR d IN gebouw_objecten
LOOP
cnd.update_mjb_scores (d.ins_deel_key, 0);
END LOOP;
END IF;
END;
/
CREATE OR REPLACE TRIGGER cnd_t_alg_terreinsector_a_u
AFTER UPDATE
ON alg_terreinsector
FOR EACH ROW
DECLARE
CURSOR terreinsector_objecten
IS
SELECT dg.ins_deel_key
FROM ins_v_deel_gegevens_keys dg, ins_deel d
WHERE d.ins_deel_key = dg.ins_deel_key
AND ins_deel_verwijder IS NULL
AND dg.alg_terreinsector_key = :new.alg_terreinsector_key;
BEGIN
IF :new.alg_terreinsector_in_bewerk = 0 AND :old.alg_terreinsector_in_bewerk = 1
THEN
-- recalculate the mjb_scores of all objects within this terrain
-- This may take some time
FOR d IN terreinsector_objecten
LOOP
cnd.update_mjb_scores (d.ins_deel_key, 0);
END LOOP;
END IF;
END;
/
-- een trigger op srtcontrole die bij afmelden de scores reset (bij methode 1?)
CREATE OR REPLACE TRIGGER cnd_t_deelsrtcontrole_a_u
AFTER UPDATE
ON ins_deelsrtcontrole
FOR EACH ROW
DECLARE
lcount NUMBER;
BEGIN
-- de bij dit object behorende gebreken afmelden en daarna de scores herberekenen, zou dan 1 moeten worden, nog uitdenken
-- de statussen (vooralsnog 0;Ingepland 2;Gestart/In behandeling 5;Afgemeld/Gereed gemeld; 6;Afgerond)
-- Ik kies even voor 6, maar misschien moet ook al bij 5?
IF :new.ins_deelsrtcontrole_status = 6
AND :new.ins_deelsrtcontrole_status <> :old.ins_deelsrtcontrole_status
THEN
-- dit gaat natuurlijk niet goed. Zijn er nog meer lopende taken op ditzelfde object?
-- SELECT COUNT (*)
-- INTO lcount
-- FROM ins_deelsrtcontrole
-- WHERE ins_deel_key = :new.ins_deel_key
-- AND ins_deelsrtcontrole_status <> 6
-- AND ins_deelsrtcontrole_key <> :new.ins_deelsrtcontrole_key;
-- IF lcount = 0
-- THEN
cnd.resetgebreken(:new.ins_deel_key);
cnd.update_mjb_scores (:new.ins_deel_key); -- als nu in_bewerking, komt het dan nog ooit goed?
-- END IF;
END IF;
END;
/
REGISTERRUN('$Id$')
#endif // CND

204
CND/CND_VIE.SRC Normal file
View File

@@ -0,0 +1,204 @@
#ifdef CND
/*
* $Revision$
* $Id$
*/
-- CND_V_NEN2767_ALLE_GEBREKEN: hierin zitten alle meldingen (gebreken) die nu relevant voor de berekening kunnen zijn
-- dus gebreken die erkend zijn maar nog niet verwerkt of afgewezen.
-- Niet uit te sluiten valt dat er dubbele registraties zijn, dat wordt ontdubbeld in cnd_v_nen2767_per_srtgebrek
-- Het is daarmee niet aannemelijk dat je deze view nodig hebt, gebruik cnd_v_nen2767_per_srtgebrek.
-- Merk op: op alle 3 de aspecten in mld_kenmerkmelding zit geen outer join, omdat ze overal verplicht zijn;
-- zonder deze waarden is de conditiescore ook niet te berekenen overigens.
CREATE OR REPLACE VIEW cnd_v_nen2767_alle_gebreken
(
ins_deel_key,
mld_melding_key,
mld_stdmelding_key,
mld_melding_status,
ernst,
intensiteit,
omvang
)
AS
WITH
w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
SELECT d.ins_deel_key,
m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_status,
km_ernst.mld_kenmerkmelding_waarde,
km_intensiteit.mld_kenmerkmelding_waarde,
ud_omvang.fac_usrdata_prijs
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
ins_deel d,
mld_kenmerkmelding km_ernst,
mld_kenmerk k_ernst,
mld_srtkenmerk sk_ernst,
mld_kenmerkmelding km_intensiteit,
mld_kenmerk k_intensiteit,
mld_srtkenmerk sk_intensiteit,
mld_kenmerkmelding km_omvang,
mld_kenmerk k_omvang,
mld_srtkenmerk sk_omvang,
fac_usrdata ud_omvang,
w_srtdisc_key
WHERE disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
AND sm.mld_stdmelding_code <> 'GEEN' -- moet uiteindelijk wegkunnen
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = mo.ins_deel_key
AND km_ernst.mld_melding_key = m.mld_melding_key
AND k_ernst.mld_kenmerk_key = km_ernst.mld_kenmerk_key
AND k_ernst.mld_srtkenmerk_key = sk_ernst.mld_srtkenmerk_key
AND sk_ernst.mld_srtkenmerk_code = 'ERNST'
AND km_intensiteit.mld_melding_key = m.mld_melding_key
AND k_intensiteit.mld_kenmerk_key = km_intensiteit.mld_kenmerk_key
AND k_intensiteit.mld_srtkenmerk_key = sk_intensiteit.mld_srtkenmerk_key
AND sk_intensiteit.mld_srtkenmerk_code = 'INTENSITEIT'
AND km_omvang.mld_melding_key = m.mld_melding_key
AND k_omvang.mld_kenmerk_key = km_omvang.mld_kenmerk_key
AND k_omvang.mld_srtkenmerk_key = sk_omvang.mld_srtkenmerk_key
AND sk_omvang.mld_srtkenmerk_code = 'OMVANG'
AND ud_omvang.fac_usrdata_key = fac.safe_to_number (km_omvang.mld_kenmerkmelding_waarde)
AND m.mld_melding_status NOT IN (1, 6);
-- Ontdubbel eventuele zelfde gebreken die op hetzelfde object zijn gemaakt, dus wanneer na elkaar
-- hetzelfde gebrek (stdmelding) is ingelegd, dan geldt de laatste (=hoogste melding_key)
CREATE OR REPLACE VIEW cnd_v_nen2767_per_srtgebrek
(
ins_deel_key,
mld_melding_key,
mld_stdmelding_key,
mld_melding_status,
ernst,
intensiteit,
omvang
)
AS
SELECT a.ins_deel_key,
a.mld_melding_key,
a.mld_stdmelding_key,
a.mld_melding_status,
a.ernst,
a.intensiteit,
a.omvang
FROM cnd_v_nen2767_alle_gebreken a,
( SELECT a2.mld_stdmelding_key,
a2.ins_deel_key,
MAX (a2.mld_melding_key) AS mld_melding_key
FROM cnd_v_nen2767_alle_gebreken a2
GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
WHERE a.mld_melding_key = b.mld_melding_key
AND a.ins_deel_key = b.ins_deel_key;
CREATE OR REPLACE VIEW cnd_v_nen2767_gebrek
AS
WITH
w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
SELECT mo.ins_deel_key,
m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_status,
m.mld_melding_datum
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
w_srtdisc_key
WHERE disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND m.mld_melding_status NOT IN (1,6);
CREATE OR REPLACE VIEW cnd_v_nen2767_srtgebrek
AS
SELECT a.ins_deel_key,
a.mld_melding_key,
a.mld_stdmelding_key,
a.mld_melding_status,
a.mld_melding_datum
FROM cnd_v_nen2767_gebrek a,
( SELECT a2.mld_stdmelding_key,
a2.ins_deel_key,
MAX (a2.mld_melding_key) AS mld_melding_key
FROM cnd_v_nen2767_gebrek a2
GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
WHERE a.mld_melding_key = b.mld_melding_key
AND a.ins_deel_key = b.ins_deel_key;
CREATE OR REPLACE VIEW cnd_v_aggr_cond_score
(
alg_locatie_key,
alg_gebouw_key,
ins_deel_key,
ins_deel_aantal,
ins_deel_mjb_score1,
kosten,
correctiefactor,
totale_vervangingswaarde,
correctie_vervangingswaarde
)
AS
SELECT l.alg_locatie_key,
g.alg_gebouw_key,
d.ins_deel_key,
MAX (d.ins_deel_aantal),
MAX (d.ins_deel_mjb_score1),
MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
kosten,
cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
correctiefactor,
MAX (d.ins_deel_aantal)
* MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
totale_vervangingswaarde,
MAX (d.ins_deel_aantal)
* MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
* cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
correctie_vervangingswaarde
FROM ins_deel d,
ins_v_defined_inspect_xcp sc,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE d.ins_deel_verwijder IS NULL
AND ins_deel_mjb_score1 IS NOT NULL
AND sc.ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND ins_scenario_key = 1
AND ctr_ismjob = 1
GROUP BY d.ins_deel_key, l.alg_locatie_key, g.alg_gebouw_key;
REGISTERRUN('$Id$')
#endif // CND

View File

@@ -156,6 +156,9 @@ $(EXE)\$(NEXTROOT)\FCLT$(NEXTVERSION)$(FILEVERSION).SQL: \
$(MSRC)\cad\cad_tab.src \ $(MSRC)\cad\cad_tab.src \
$(MSRC)\cad\cad_tri.src \ $(MSRC)\cad\cad_tri.src \
$(MSRC)\cad\cad_vie.src \ $(MSRC)\cad\cad_vie.src \
$(MSRC)\cnt\cnd_pac.src \
$(MSRC)\cnt\cnd_tri.src \
$(MSRC)\cnt\cnd_vie.src \
$(MSRC)\cnt\cnt_ind.src \ $(MSRC)\cnt\cnt_ind.src \
$(MSRC)\cnt\cnt_ini.src \ $(MSRC)\cnt\cnt_ini.src \
$(MSRC)\cnt\cnt_pac.src \ $(MSRC)\cnt\cnt_pac.src \

View File

@@ -47,7 +47,7 @@ WHENEVER SQLERROR CONTINUE;
PROMPT [&fcltlogfile] PROMPT [&fcltlogfile]
PROMPT PROMPT
PROMPT Copyright 1996-2019 Aareon Nederland B.V. ALL RIGHTS RESERVED. PROMPT Copyright 1996-2020 Aareon Nederland B.V. ALL RIGHTS RESERVED.
PROMPT PROMPT
PROMPT This is the generated list-file of EVALCONCAT(FCLT,_DBV).sql which was used PROMPT This is the generated list-file of EVALCONCAT(FCLT,_DBV).sql which was used
PROMPT to create the FACILITOR(r) EVALCONCAT(DB,_DBV) schema in Oracle PROMPT to create the FACILITOR(r) EVALCONCAT(DB,_DBV) schema in Oracle
@@ -181,6 +181,6 @@ PROMPT ======================================================================
SELECT 'Schema FACILITOR@' || USER || ' is now ' || fac.getdbversion() FROM DUAL; SELECT 'Schema FACILITOR@' || USER || ' is now ' || fac.getdbversion() FROM DUAL;
PROMPT PROMPT
PROMPT Your schema initialisation is ready. Please check the logfile for errors. PROMPT Your schema initialisation is ready. Please check the logfile for errors.
PROMPT If in doubt please contact: FACILITOR Helpdesk +31 53 4800 700 PROMPT If in doubt please contact: FACILITOR Helpdesk +31 53 4800 710
PROMPT Copyright (c) 1996-2019 Aareon Nederland B.V. All rights reserved. PROMPT Copyright (c) 1996-2020 Aareon Nederland B.V. All rights reserved.
SPOOL OFF SPOOL OFF

View File

@@ -9,6 +9,7 @@
* BEZ - Bezoekers registratie * BEZ - Bezoekers registratie
* BGT - Budgetconrole (BCS) * BGT - Budgetconrole (BCS)
* CAD - AutoCAD koppeling * CAD - AutoCAD koppeling
* CND - Conditiemetingen (NEN2767)
* CNT - Contracten * CNT - Contracten
* CTR - Periodieke taken (controles) * CTR - Periodieke taken (controles)
* FAC - Basismodule * FAC - Basismodule
@@ -29,6 +30,7 @@
#define BEZ BEZ #define BEZ BEZ
#define BGT BGT #define BGT BGT
#define CAD CAD #define CAD CAD
#define CND CND
#define CNT CNT #define CNT CNT
#define CTR CTR #define CTR CTR
#define FAC FAC #define FAC FAC

View File

@@ -23,6 +23,7 @@
#include "msg\msg_vie.src" #include "msg\msg_vie.src"
#include "kpi\kpi_vie.src" #include "kpi\kpi_vie.src"
#include "ctr\ctr_vie.src" #include "ctr\ctr_vie.src"
#include "cnd\cnd_vie.src"
// Recreation all packages // Recreation all packages
#include "adm\adm_pac.src" #include "adm\adm_pac.src"
@@ -44,6 +45,7 @@
#include "msg\msg_pac.src" #include "msg\msg_pac.src"
#include "kpi\kpi_pac.src" #include "kpi\kpi_pac.src"
#include "ctr\ctr_pac.src" #include "ctr\ctr_pac.src"
#include "cnd\cnd_pac.src"
// Recreation all triggers // Recreation all triggers
// adm_tri staat ook al in FCLT.SRC maar hier herhalen voor upgrade-scripts // adm_tri staat ook al in FCLT.SRC maar hier herhalen voor upgrade-scripts
@@ -67,6 +69,7 @@
#include "msg\msg_tri.src" #include "msg\msg_tri.src"
#include "kpi\kpi_tri.src" #include "kpi\kpi_tri.src"
#include "ctr\ctr_tri.src" #include "ctr\ctr_tri.src"
#include "cnd\cnd_tri.src"
/* LOCALE's */ /* LOCALE's */
#include "fac\fac_lcl.src" #include "fac\fac_lcl.src"