BULK LOAD - added support drawings, bases and housings
QUOTATION - moved costing of labour outside of main query, provide more details on failure to produce automatic quote. git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3206 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -6,6 +6,10 @@ CREATE OR REPLACE PACKAGE mip_bulk_load IS
|
||||
|
||||
PROCEDURE load_meters;
|
||||
PROCEDURE load_modules;
|
||||
PROCEDURE load_drawings;
|
||||
PROCEDURE load_bases;
|
||||
|
||||
PROCEDURE load_all;
|
||||
|
||||
END mip_bulk_load;
|
||||
/
|
||||
@@ -13,6 +17,9 @@ CREATE OR REPLACE PACKAGE BODY mip_bulk_load IS
|
||||
|
||||
g_unknown_manufacturer_id parties.id%TYPE;
|
||||
|
||||
PROCEDURE get_dir_list(p_directory IN VARCHAR2) AS
|
||||
LANGUAGE JAVA NAME 'DirList.getList( java.lang.String )';
|
||||
|
||||
PROCEDURE get_globals IS
|
||||
BEGIN
|
||||
|
||||
@@ -141,32 +148,6 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
|
||||
END get_globals;
|
||||
|
||||
PROCEDURE load_manufacturers(p_reason VARCHAR2 DEFAULT 'no reason given') IS
|
||||
BEGIN
|
||||
MERGE INTO parties prty
|
||||
|
||||
USING (SELECT field_1
|
||||
FROM ext_meters) e_metr
|
||||
ON (upper(e_metr.field_1) = upper(prty.manu_ref))
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT
|
||||
(prty.manu_ref
|
||||
,NAME
|
||||
,description
|
||||
,created_on
|
||||
,created_by
|
||||
,prty_type
|
||||
,id)
|
||||
VALUES
|
||||
(upper(e_metr.field_1)
|
||||
,e_metr.field_1
|
||||
,'Inserted missing manufacturer - ' || p_reason
|
||||
,SYSDATE
|
||||
,USER
|
||||
,'MANU'
|
||||
,prty_seq.NEXTVAL) log errors reject LIMIT unlimited;
|
||||
END load_manufacturers;
|
||||
|
||||
PROCEDURE load_meters IS
|
||||
BEGIN
|
||||
|
||||
@@ -175,13 +156,13 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(code
|
||||
,description
|
||||
)
|
||||
(SELECT manu_ref
|
||||
(SELECT code
|
||||
,'Inserted for load_meters'
|
||||
FROM (SELECT DISTINCT upper(field_3) AS manu_ref
|
||||
FROM (SELECT DISTINCT upper(field_3) AS code
|
||||
FROM ext_meters
|
||||
WHERE field_3 IS NOT NULL)
|
||||
WHERE manu_ref NOT IN (SELECT manu_ref
|
||||
FROM parties));
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM meter_types));
|
||||
|
||||
-- Manufacturers
|
||||
INSERT INTO parties
|
||||
@@ -208,10 +189,10 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(code
|
||||
,description)
|
||||
(SELECT code
|
||||
,'Inserted for load_modules'
|
||||
FROM (SELECT DISTINCT field_4 AS code
|
||||
,'Inserted for load_meters'
|
||||
FROM (SELECT DISTINCT upper(field_2) AS code
|
||||
FROM ext_meters
|
||||
WHERE field_4 IS NOT NULL)
|
||||
WHERE field_2 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM drawings));
|
||||
|
||||
@@ -300,10 +281,10 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(SELECT code
|
||||
,'Inserted for load_modules'
|
||||
FROM (SELECT DISTINCT code
|
||||
FROM (SELECT field_2 AS code
|
||||
FROM (SELECT upper(field_2) AS code
|
||||
FROM ext_modules
|
||||
UNION
|
||||
SELECT field_3
|
||||
SELECT upper(field_3)
|
||||
FROM ext_modules))
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM connection_types));
|
||||
@@ -314,7 +295,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,description)
|
||||
(SELECT code
|
||||
,'Inserted for load_modules'
|
||||
FROM (SELECT DISTINCT field_4 AS code
|
||||
FROM (SELECT DISTINCT upper(field_4) AS code
|
||||
FROM ext_modules
|
||||
WHERE field_4 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
@@ -366,7 +347,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,.999
|
||||
,.999
|
||||
,trunc(SYSDATE)
|
||||
FROM (SELECT DISTINCT nvl(field_5,'UNKNOWN') AS code
|
||||
FROM (SELECT DISTINCT nvl(upper(field_5),'UNKNOWN') AS code
|
||||
FROM ext_modules)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM meters));
|
||||
@@ -382,7 +363,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,'UNKNOWN'
|
||||
,999
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_6 AS code
|
||||
FROM (SELECT DISTINCT upper(field_6) AS code
|
||||
FROM ext_modules)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM relief_valves));
|
||||
@@ -397,7 +378,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,'UNKNOWN'
|
||||
,999
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_7 AS code
|
||||
FROM (SELECT DISTINCT upper(field_7) AS code
|
||||
FROM ext_modules)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM slamshut_valves));
|
||||
@@ -410,7 +391,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(SELECT code
|
||||
,'UNKNOWN'
|
||||
,'Inserted for load_modules'
|
||||
FROM (SELECT DISTINCT field_8 AS code
|
||||
FROM (SELECT DISTINCT upper(field_8) AS code
|
||||
FROM ext_modules)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM service_pressures));
|
||||
@@ -443,7 +424,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,999
|
||||
,999
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_15 AS code
|
||||
FROM (SELECT DISTINCT upper(field_15) AS code
|
||||
FROM ext_modules
|
||||
WHERE field_15 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
@@ -469,7 +450,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,999
|
||||
,999
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_16 AS code
|
||||
FROM (SELECT DISTINCT upper(field_16) AS code
|
||||
FROM ext_modules
|
||||
WHERE field_16 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
@@ -487,7 +468,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,'Inserted for load_modules'
|
||||
,999
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_25 AS code
|
||||
FROM (SELECT DISTINCT upper(field_25) AS code
|
||||
FROM ext_modules
|
||||
WHERE field_25 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
@@ -501,7 +482,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(SELECT code
|
||||
,'UNKNOWN'
|
||||
,999
|
||||
FROM (SELECT DISTINCT field_26 AS code
|
||||
FROM (SELECT DISTINCT upper(field_26) AS code
|
||||
FROM ext_modules
|
||||
WHERE field_26 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
@@ -513,32 +494,32 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
(SELECT code
|
||||
,'Inserted for load_modules'
|
||||
FROM (SELECT DISTINCT code
|
||||
FROM (SELECT field_27 AS code
|
||||
FROM (SELECT upper(field_27) AS code
|
||||
FROM ext_modules
|
||||
UNION
|
||||
SELECT field_28
|
||||
SELECT upper(field_28)
|
||||
FROM ext_modules)
|
||||
WHERE code IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM connection_orientations));
|
||||
|
||||
MERGE INTO modules modu
|
||||
USING (SELECT field_1
|
||||
,field_2
|
||||
,field_3
|
||||
,field_4
|
||||
,field_5
|
||||
,field_6
|
||||
,field_7
|
||||
,field_8
|
||||
USING (SELECT upper(field_1) AS field_1
|
||||
,upper(field_2) AS field_2
|
||||
,upper(field_3) AS field_3
|
||||
,upper(field_4) AS field_4 -- drwg_code
|
||||
,upper(field_5) AS field_5
|
||||
,upper(field_6) AS field_6
|
||||
,upper(field_7) AS field_7
|
||||
,upper(field_8) AS field_8
|
||||
,field_9
|
||||
,field_10
|
||||
,field_11
|
||||
,field_12
|
||||
,field_13
|
||||
,field_14
|
||||
,field_15
|
||||
,field_16
|
||||
,upper(field_15) AS field_15 -- base
|
||||
,upper(field_16) AS field_16 -- housing
|
||||
,field_17
|
||||
,field_18
|
||||
,field_19
|
||||
@@ -547,12 +528,12 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,field_22
|
||||
,field_23
|
||||
,field_24
|
||||
,field_25
|
||||
,field_26
|
||||
,field_27
|
||||
,field_28
|
||||
,upper(field_25) AS field_25 -- regu_code
|
||||
,upper(field_26) AS field_26 -- fltr_code
|
||||
,upper(field_27) AS field_27 -- inlet connection orientation
|
||||
,upper(field_28) AS field_28 -- outlet ...
|
||||
,field_29
|
||||
,field_30
|
||||
,upper(field_30) AS field_30 -- MANU_REF
|
||||
FROM ext_modules) e
|
||||
ON (e.field_1 = modu.code)
|
||||
WHEN MATCHED THEN
|
||||
@@ -590,7 +571,7 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,lead_time = e.field_29
|
||||
,prty_id = (SELECT id
|
||||
FROM parties p
|
||||
WHERE upper(p.manu_ref) = upper(e.field_30)
|
||||
WHERE p.manu_ref = e.field_30
|
||||
AND p.prty_type = 'MANU')
|
||||
|
||||
WHEN NOT MATCHED THEN
|
||||
@@ -666,6 +647,298 @@ g_unknown_manufacturer_id parties.id%TYPE;
|
||||
,'dd/mm/yyyy')END) log errors reject LIMIT unlimited;
|
||||
END load_modules;
|
||||
|
||||
PROCEDURE load_drawings IS
|
||||
l_directory_path all_directories.directory_path%TYPE;
|
||||
l_source_file BFILE;
|
||||
l_source_file_length BINARY_INTEGER;
|
||||
l_blob BLOB;
|
||||
l_success BOOLEAN;
|
||||
BEGIN
|
||||
|
||||
dbms_lob.createtemporary(lob_loc => l_blob
|
||||
,cache => TRUE);
|
||||
dbms_lob.OPEN(lob_loc => l_blob
|
||||
,open_mode => dbms_lob.lob_readwrite);
|
||||
|
||||
SELECT directory_path
|
||||
INTO l_directory_path
|
||||
FROM all_directories
|
||||
WHERE directory_name = 'WEBMIP_BULK_LOAD';
|
||||
|
||||
get_dir_list(l_directory_path);
|
||||
|
||||
FOR l_rec IN (SELECT filename AS filename
|
||||
,upper(substr(filename
|
||||
,1
|
||||
,regexp_instr(filename
|
||||
,'.(jpg)|.(jpeg)|.(png)$'
|
||||
,1
|
||||
,1
|
||||
,0
|
||||
,'i') - 1)) AS drwg_code
|
||||
,substr(filename
|
||||
,regexp_instr(filename
|
||||
,'.(jpg)|.(jpeg)|.(png)$'
|
||||
,1
|
||||
,1
|
||||
,0
|
||||
,'i') + 1) AS filename_suffix
|
||||
FROM gtt_dir_list g
|
||||
WHERE g.filetype = 'F'
|
||||
AND regexp_like(g.filename
|
||||
,'.(jpg)|.(jpeg)|.(png)$'
|
||||
,'i')) LOOP
|
||||
|
||||
l_source_file := bfilename('WEBMIP_BULK_LOAD'
|
||||
,l_rec.filename);
|
||||
l_source_file_length := dbms_lob.getlength(l_source_file);
|
||||
|
||||
dbms_lob.OPEN(file_loc => l_source_file
|
||||
,open_mode => dbms_lob.lob_readonly);
|
||||
|
||||
dbms_lob.loadfromfile(dest_lob => l_blob
|
||||
,src_lob => l_source_file
|
||||
,amount => l_source_file_length);
|
||||
|
||||
dbms_lob.fileclose(file_loc => l_source_file);
|
||||
|
||||
BEGIN
|
||||
SAVEPOINT this_drawing_savepoint;
|
||||
BEGIN
|
||||
INSERT INTO drawings
|
||||
(code
|
||||
,description)
|
||||
VALUES
|
||||
(l_rec.drwg_code
|
||||
,'Inserted for load_drawings');
|
||||
EXCEPTION
|
||||
WHEN dup_val_on_index THEN
|
||||
NULL;
|
||||
END;
|
||||
|
||||
DELETE FROM wwv_flow_files
|
||||
WHERE NAME = l_rec.filename;
|
||||
|
||||
DELETE FROM document_roles doro
|
||||
WHERE doro.drwg_code = l_rec.drwg_code;
|
||||
|
||||
DELETE FROM documents doco
|
||||
WHERE doco.uri = l_rec.filename;
|
||||
|
||||
INSERT INTO wwv_flow_files
|
||||
(NAME
|
||||
,title
|
||||
,mime_type
|
||||
,flow_id
|
||||
,doc_size
|
||||
,description
|
||||
,blob_content)
|
||||
VALUES
|
||||
(l_rec.filename
|
||||
,'Drawing'
|
||||
,'image/' || l_rec.filename_suffix
|
||||
,apex_application.g_flow_id
|
||||
,l_source_file_length
|
||||
,'Bulk Loaded on ' ||
|
||||
to_char(SYSDATE
|
||||
,'DD-MON-YYYY HH24:MI:SS')
|
||||
,l_blob)
|
||||
;
|
||||
|
||||
l_success := mip_files.set_file_association(p_uri => l_rec.filename
|
||||
,p_description => 'Drawing'
|
||||
,p_docu_type => 'INDO'
|
||||
,p_rt_code => 'HIGH DEFINITION DRAWING'
|
||||
,p_qute_id => NULL
|
||||
,p_enqu_id => NULL
|
||||
,p_drwg_code => l_rec.drwg_code
|
||||
,p_doro_type => 'DRRO');
|
||||
IF NOT l_success THEN
|
||||
ROLLBACK TO this_drawing_savepoint;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
END load_drawings;
|
||||
|
||||
PROCEDURE load_bases IS
|
||||
BEGIN
|
||||
|
||||
-- Drawings
|
||||
INSERT INTO drawings
|
||||
(code
|
||||
,description)
|
||||
(SELECT code
|
||||
,'Inserted for load_bases'
|
||||
FROM (SELECT DISTINCT upper(field_2) AS code
|
||||
FROM ext_bases
|
||||
WHERE field_2 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM drawings));
|
||||
|
||||
MERGE INTO bases bas
|
||||
USING (SELECT upper(field_1) AS field_1
|
||||
,upper(field_2) AS field_2
|
||||
,field_3
|
||||
,field_4
|
||||
,field_5
|
||||
,field_6
|
||||
,field_7
|
||||
,field_8
|
||||
,field_9
|
||||
,field_10
|
||||
,field_11
|
||||
,field_12
|
||||
,field_13
|
||||
FROM ext_bases) e
|
||||
ON (e.field_1 = bas.code)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET drwg_code = e.field_2
|
||||
,description = e.field_3
|
||||
,dim_a = e.field_4
|
||||
,dim_b = e.field_5
|
||||
,dim_c = e.field_6
|
||||
,dim_d = e.field_7
|
||||
,dim_e = e.field_8
|
||||
,dim_f = e.field_9
|
||||
,dim_g = e.field_10
|
||||
,dim_h = e.field_11
|
||||
,dim_i = e.field_12
|
||||
,depth = e.field_13
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT
|
||||
(code
|
||||
,drwg_code
|
||||
,description
|
||||
,dim_a
|
||||
,dim_b
|
||||
,dim_c
|
||||
,dim_d
|
||||
,dim_e
|
||||
,dim_f
|
||||
,dim_g
|
||||
,dim_h
|
||||
,dim_i
|
||||
,depth)
|
||||
VALUES
|
||||
(e.field_1
|
||||
,e.field_2
|
||||
,e.field_3
|
||||
,e.field_4
|
||||
,e.field_5
|
||||
,e.field_6
|
||||
,e.field_7
|
||||
,e.field_8
|
||||
,e.field_9
|
||||
,e.field_10
|
||||
,e.field_11
|
||||
,e.field_12
|
||||
,e.field_13) log errors reject LIMIT unlimited;
|
||||
END load_bases;
|
||||
|
||||
PROCEDURE load_housings IS
|
||||
BEGIN
|
||||
|
||||
-- Manufacturers
|
||||
INSERT INTO parties
|
||||
(id
|
||||
,manu_ref
|
||||
,description
|
||||
,prty_type
|
||||
,created_on
|
||||
,created_by)
|
||||
(SELECT prty_seq.NEXTVAL
|
||||
,manu_ref
|
||||
,'Inserted for load_housings'
|
||||
,'MANU'
|
||||
,SYSDATE
|
||||
,USER
|
||||
FROM (SELECT DISTINCT upper(field_2) AS manu_ref
|
||||
FROM ext_housings
|
||||
WHERE field_2 IS NOT NULL)
|
||||
WHERE manu_ref NOT IN (SELECT manu_ref
|
||||
FROM parties));
|
||||
-- Drawings
|
||||
INSERT INTO drawings
|
||||
(code
|
||||
,description)
|
||||
(SELECT code
|
||||
,'Inserted for load_housings'
|
||||
FROM (SELECT DISTINCT upper(field_3) AS code
|
||||
FROM ext_housings
|
||||
WHERE field_3 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM drawings));
|
||||
|
||||
-- Housing Types
|
||||
INSERT INTO housing_types
|
||||
(code
|
||||
,description)
|
||||
(SELECT code
|
||||
,'Inserted for load_housings'
|
||||
FROM (SELECT DISTINCT upper(field_4) AS code
|
||||
FROM ext_housings
|
||||
WHERE field_4 IS NOT NULL)
|
||||
WHERE code NOT IN (SELECT code
|
||||
FROM housing_types));
|
||||
|
||||
MERGE INTO housings hou
|
||||
USING (SELECT upper(field_1) AS field_1
|
||||
,upper(field_2) AS field_2
|
||||
,upper(field_3) AS field_3
|
||||
,upper(field_4) AS field_4
|
||||
,field_5
|
||||
,field_6
|
||||
,field_7
|
||||
,field_8
|
||||
,field_9
|
||||
FROM ext_housings) e
|
||||
ON (e.field_1 = hou.code)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE
|
||||
SET prty_id = (SELECT id FROM parties WHERE manu_ref = e.field_2 AND prty_type = 'MANU')
|
||||
,drwg_code = e.field_3
|
||||
,hoty_code = e.field_4
|
||||
,description = e.field_5
|
||||
,dim_w = e.field_6
|
||||
,dim_h = e.field_7
|
||||
,dim_l = e.field_8
|
||||
,weight = e.field_9
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT
|
||||
(code
|
||||
,prty_id
|
||||
,drwg_code
|
||||
,hoty_code
|
||||
,description
|
||||
,dim_w
|
||||
,dim_h
|
||||
,dim_l
|
||||
,weight)
|
||||
VALUES
|
||||
(e.field_1
|
||||
,(SELECT id FROM parties WHERE manu_ref = e.field_2 AND prty_type = 'MANU')
|
||||
,e.field_3
|
||||
,e.field_4
|
||||
,e.field_5
|
||||
,e.field_6
|
||||
,e.field_7
|
||||
,e.field_8
|
||||
,e.field_9) log errors reject LIMIT unlimited;
|
||||
END load_housings;
|
||||
|
||||
|
||||
PROCEDURE load_all
|
||||
IS
|
||||
BEGIN
|
||||
|
||||
load_modules;
|
||||
load_meters;
|
||||
load_bases;
|
||||
load_housings;
|
||||
load_drawings;
|
||||
|
||||
END load_all;
|
||||
BEGIN
|
||||
-- Initialization
|
||||
get_globals;
|
||||
|
||||
Reference in New Issue
Block a user