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_tri.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_ini.src \
$(MSRC)\cnt\cnt_pac.src \

View File

@@ -47,7 +47,7 @@ WHENEVER SQLERROR CONTINUE;
PROMPT [&fcltlogfile]
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 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
@@ -181,6 +181,6 @@ PROMPT ======================================================================
SELECT 'Schema FACILITOR@' || USER || ' is now ' || fac.getdbversion() FROM DUAL;
PROMPT
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 Copyright (c) 1996-2019 Aareon Nederland B.V. All rights reserved.
PROMPT If in doubt please contact: FACILITOR Helpdesk +31 53 4800 710
PROMPT Copyright (c) 1996-2020 Aareon Nederland B.V. All rights reserved.
SPOOL OFF

View File

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

View File

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