ASLE#38748 -- Verbeteringen implementatie NH punt 4 en 7

svn path=/Customer/trunk/; revision=32662
This commit is contained in:
Arthur Egberink
2017-02-01 15:50:55 +00:00
parent 6cc33c62c5
commit 9f8ad5402e

View File

@@ -76,6 +76,7 @@ CREATE OR REPLACE VIEW asle_v_schoonmaak_bron
zone,
compartiment,
opmerking_sup,
dnd,
plan_start,
plan_eind,
groep_naam
@@ -101,6 +102,12 @@ AS
r.zone,
r.compartiment,
r.opmerking_sup,
COALESCE(
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key AND mld_kenmerk_key = 201),
0)
dnd,
(SELECT fac.safe_to_date (mld_kenmerkopdr_waarde,
'dd-mm-yyyy hh24:mi')
FROM mld_kenmerkopdr ko
@@ -248,6 +255,7 @@ AS
AND alg_kenmerk_key = 1080) os -- opmerking voor de schoonmaker
WHERE o.mld_statusopdr_key IN (3, 5, 8)
AND o.mld_opdr_key = s.mld_opdr_key
AND s.dnd = 0
AND TRUNC (COALESCE (s.plan_start, o.mld_opdr_einddatum)) =
TRUNC (SYSDATE)
AND o.mld_opdr_key = ks.mld_opdr_key(+)
@@ -270,7 +278,7 @@ AS
timestamp,
prs_perslid_naam,
alg_ruimte_nr,
type_schoonmaak,
type_schoonmaak || DECODE(dnd, 0, NULL, ' [DND]'),
status
|| ' - '
|| TO_CHAR (plan_eind, 'hh24:mi')
@@ -322,7 +330,8 @@ AS
COALESCE (plan_eind, SYSDATE))
plan_eind,
mld_opdr_key,
mld_melding_key
mld_melding_key,
dnd
FROM (SELECT prs_perslid_naam,
COALESCE(plan_start, b.mld_melding_einddatum),
b.mld_melding_einddatum,
@@ -335,7 +344,8 @@ AS
b.mld_opdr_key,
b.mld_melding_key,
b.mld_typeopdr_key,
ks.mld_kenmerkopdr_waarde
ks.mld_kenmerkopdr_waarde,
b.dnd
FROM asle_v_schoonmaak_bron b,
mld_statusopdr so,
mld_melding m,
@@ -398,7 +408,7 @@ AS
FROM prs_perslid p
WHERE p.prs_perslid_key = s.prs_perslid_key) naam,
s.prs_perslid_key,
mld_stdmelding_omschrijving,
mld_stdmelding_omschrijving || DECODE(dnd, 0, NULL, ' [DND]'),
mld_melding_einddatum,
listagg (mld_typeopdr_omschrijving, CHR (10))
WITHIN GROUP (ORDER BY mld_opdr_bedrijfopdr_volgnr)
@@ -445,7 +455,8 @@ AS
prs_perslid_key,
mld_stdmelding_omschrijving,
mld_melding_einddatum,
alg_ruimte_nr;
alg_ruimte_nr,
dnd;
CREATE OR REPLACE VIEW asle_v_rap_schoonmaak_sched
(
@@ -476,7 +487,7 @@ AS
groep_naam,
s.alg_ruimte_key
FROM asle_v_schoonmaak s, asle_imp_werkschema w, prs_perslid p
WHERE TRUNC (mld_melding_einddatum) > TRUNC (SYSDATE - 7)
WHERE TRUNC (mld_melding_einddatum) > TRUNC (SYSDATE - 28)
AND TRUNC (mld_melding_einddatum) = TRUNC (start_inzet)
AND s.prs_perslid_key = w.prs_perslid_key
AND s.prs_perslid_key = p.prs_perslid_key
@@ -874,6 +885,12 @@ AS
AND s.mld_stdmelding_omschrijving = 'DND'
AND s.mld_opdr_key IS NOT NULL;
CREATE OR REPLACE VIEW asle_v_uitvoerende_vandaag
AS
SELECT DISTINCT pf.prs_perslid_key, prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames pf, mld_opdr o
WHERE pf.prs_perslid_key = o.mld_uitvoerende_keys
AND TRUNC (mld_opdr_datumbegin) = TRUNC (SYSDATE);
-- View voor John om data uit FACILITOR te analyseren.
CREATE OR REPLACE VIEW asle_v_rap_schoonm_result_det
@@ -1062,11 +1079,14 @@ AS
p_naar VARCHAR2)
RETURN NUMBER;
FUNCTION find_next_room (p_import_key IN NUMBER,
p_locatie_key IN NUMBER,
p_date IN DATE,
p_perslid_key IN NUMBER,
p_tolerantie IN NUMBER)
FUNCTION find_next_room (p_import_key IN NUMBER,
p_locatie_key IN NUMBER,
p_date IN DATE,
p_perslid_key IN NUMBER,
p_tolerantie IN NUMBER,
p_MinRoomForFloorChange IN NUMBER,
p_StartTimeMechanism IN NUMBER,
p_WaitTimeForFloorChange IN NUMBER)
RETURN NUMBER;
PROCEDURE schedule_stats (p_import_key IN NUMBER,
@@ -1303,11 +1323,14 @@ AS
FUNCTION find_next_room (p_import_key IN NUMBER,
p_locatie_key IN NUMBER,
p_date IN DATE,
p_perslid_key IN NUMBER,
p_tolerantie IN NUMBER)
FUNCTION find_next_room (p_import_key IN NUMBER,
p_locatie_key IN NUMBER,
p_date IN DATE,
p_perslid_key IN NUMBER,
p_tolerantie IN NUMBER,
p_MinRoomForFloorChange IN NUMBER,
p_StartTimeMechanism IN NUMBER,
p_WaitTimeForFloorChange IN NUMBER)
RETURN NUMBER
AS
CURSOR c_find_room (
@@ -1538,9 +1561,9 @@ AS
-- *** als nu blijkt dat we voor <20><>n kamer een zonewisseling over gaan, dan toch maar even proberen
-- of ik op mijn eigen zone met een langere (leegloop) tijd nog iets kan schoonmaken
-- dit wordt pas interessant na half tien
IF v_rooms_that_can_be_cleaned <2 AND to_number(to_char(v_last_clean, 'hh24mi')) > 930
IF v_rooms_that_can_be_cleaned < p_MinRoomForFloorChange AND to_number(to_char(v_last_clean, 'hh24mi')) > p_StartTimeMechanism
THEN
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'Match', 15)
FOR rec IN c_find_room (v_last_clean, v_last_zone, 'Match', p_WaitTimeForFloorChange)
LOOP
BEGIN
v_found_mld := rec.mld_melding_key;
@@ -2410,6 +2433,9 @@ AS
v_melding_key mld_melding.mld_melding_key%TYPE;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_tolerantie NUMBER(3);
v_MinRoomForFloorChange NUMBER(3);
v_StartTimeMechanism NUMBER(4);
v_WaitTimeForFloorChange NUMBER(3);
v_ruimte_aanduiding VARCHAR2(100);
c_mld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= mld_t_uitvoertijd (1, 'D');
@@ -2727,6 +2753,32 @@ BEGIN
FROM asle_v_schoonmaak
WHERE TRUNC (mld_melding_einddatum) = TRUNC(SYSDATE+p_offset);
-- Een aantal parameters in het planningsprocess zijn configureerbaar
-- MinRoomForFloorChange Minimaal aantal kamers op de nieuwe zone om niet te wachten (default 2)
-- StartTimeMechanism Begintijd voor het mechanisme (default: 9:30)
-- WaitTimeForFloorChange Wachttijd om te kijken bij minder dan MinRoomForFloorChange kamers op nieuwe zone of er op deze zone nog kamers zijn. (Default 15 min)
SELECT MIN(TRUNC(fac_usrdata_prijs))
INTO v_MinRoomForFloorChange
FROM fac_usrdata
WHERE fac_usrdata_code = 'MinRoomForFloorChange'
AND fac_usrdata_verwijder IS NULL;
IF v_MinRoomForFloorChange IS NULL THEN v_MinRoomForFloorChange := 2; END IF;
SELECT MIN(TRUNC(fac_usrdata_prijs))
INTO v_StartTimeMechanism
FROM fac_usrdata
WHERE fac_usrdata_code = 'StartTimeMechanism'
AND fac_usrdata_verwijder IS NULL;
IF v_StartTimeMechanism IS NULL THEN v_StartTimeMechanism := 930; END IF;
SELECT MIN(TRUNC(fac_usrdata_prijs))
INTO v_WaitTimeForFloorChange
FROM fac_usrdata
WHERE fac_usrdata_code = 'WaitTimeForFloorChange'
AND fac_usrdata_verwijder IS NULL;
IF v_WaitTimeForFloorChange IS NULL THEN v_WaitTimeForFloorChange := 15; END IF;
WHILE v_room_planned <> 0 AND v_loopcount < 1000
LOOP
v_room_planned := 0;
@@ -2739,7 +2791,10 @@ BEGIN
rec.alg_locatie_key,
TRUNC (rec.last_clean),
rec.prs_perslid_key,
v_tolerantie);
v_tolerantie,
v_MinRoomForFloorChange,
v_StartTimeMechanism,
v_WaitTimeForFloorChange);
IF v_opdr_key <> -1 OR v_opdr_key IS NULL
THEN