Renane process_logbook_valid_fn to process_pre_logbook_fn

This commit is contained in:
xbgmsharp
2024-01-17 20:20:49 +01:00
parent d0bc468ce7
commit d3dd46c834
2 changed files with 13 additions and 12 deletions

View File

@@ -22,7 +22,7 @@ BEGIN
LOOP LOOP
RAISE NOTICE 'cron_process_pre_logbook_fn processing queue [%] for logbook id [%]', process_rec.id, process_rec.payload; RAISE NOTICE 'cron_process_pre_logbook_fn processing queue [%] for logbook id [%]', process_rec.id, process_rec.payload;
-- update logbook -- update logbook
PERFORM process_logbook_valid_fn(process_rec.payload::INTEGER); PERFORM process_pre_logbook_fn(process_rec.payload::INTEGER);
-- update process_queue table , processed -- update process_queue table , processed
UPDATE process_queue UPDATE process_queue
SET SET

View File

@@ -1262,8 +1262,8 @@ COMMENT ON FUNCTION
public.badges_geom_fn public.badges_geom_fn
IS 'check geometry logbook for new badges, eg: Tropic, Alaska, Geographic zone'; IS 'check geometry logbook for new badges, eg: Tropic, Alaska, Geographic zone';
DROP FUNCTION IF EXISTS public.process_logbook_valid_fn; DROP FUNCTION IF EXISTS public.process_pre_logbook_fn;
CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETURNS void AS $process_logbook_valid$ CREATE OR REPLACE FUNCTION public.process_pre_logbook_fn(IN _id integer) RETURNS void AS $process_pre_logbook$
DECLARE DECLARE
logbook_rec record; logbook_rec record;
avg_rec record; avg_rec record;
@@ -1281,7 +1281,7 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
BEGIN BEGIN
-- If _id is not NULL -- If _id is not NULL
IF _id IS NULL OR _id < 1 THEN IF _id IS NULL OR _id < 1 THEN
RAISE WARNING '-> process_logbook_valid_fn invalid input %', _id; RAISE WARNING '-> process_pre_logbook_fn invalid input %', _id;
RETURN; RETURN;
END IF; END IF;
-- Get the logbook record with all necessary fields exist -- Get the logbook record with all necessary fields exist
@@ -1295,7 +1295,7 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
AND _to_lat IS NOT NULL; AND _to_lat IS NOT NULL;
-- Ensure the query is successful -- Ensure the query is successful
IF logbook_rec.vessel_id IS NULL THEN IF logbook_rec.vessel_id IS NULL THEN
RAISE WARNING '-> process_logbook_valid_fn invalid logbook %', _id; RAISE WARNING '-> process_pre_logbook_fn invalid logbook %', _id;
RETURN; RETURN;
END IF; END IF;
@@ -1304,7 +1304,7 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
-- Check if all metrics are within 50meters base on geo loc -- Check if all metrics are within 50meters base on geo loc
count_metric := logbook_metrics_dwithin_fn(logbook_rec._from_time::TEXT, logbook_rec._to_time::TEXT, logbook_rec._from_lng::NUMERIC, logbook_rec._from_lat::NUMERIC); count_metric := logbook_metrics_dwithin_fn(logbook_rec._from_time::TEXT, logbook_rec._to_time::TEXT, logbook_rec._from_lng::NUMERIC, logbook_rec._from_lat::NUMERIC);
RAISE NOTICE '-> process_logbook_valid_fn logbook_metrics_dwithin_fn count:[%]', count_metric; RAISE NOTICE '-> process_pre_logbook_fn logbook_metrics_dwithin_fn count:[%]', count_metric;
-- Calculate logbook data average and geo -- Calculate logbook data average and geo
-- Update logbook entry with the latest metric data and calculate data -- Update logbook entry with the latest metric data and calculate data
@@ -1318,8 +1318,9 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
SELECT geo_rec._track_distance < 0.010 INTO _invalid_distance; SELECT geo_rec._track_distance < 0.010 INTO _invalid_distance;
-- Is duration is less than 100sec -- Is duration is less than 100sec
SELECT (logbook_rec._to_time::TIMESTAMPTZ - logbook_rec._from_time::TIMESTAMPTZ) < (100::text||' secs')::interval INTO _invalid_interval; SELECT (logbook_rec._to_time::TIMESTAMPTZ - logbook_rec._from_time::TIMESTAMPTZ) < (100::text||' secs')::interval INTO _invalid_interval;
-- If we have less than 15 metrics
-- Is within metrics represent more or equal than 60% of the total entry -- Is within metrics represent more or equal than 60% of the total entry
IF count_metric::NUMERIC <= 10 THEN IF count_metric::NUMERIC <= 15 THEN
SELECT (count_metric::NUMERIC / avg_rec.count_metric::NUMERIC) >= 0.60 INTO _invalid_ratio; SELECT (count_metric::NUMERIC / avg_rec.count_metric::NUMERIC) >= 0.60 INTO _invalid_ratio;
END IF; END IF;
-- if stationary fix data metrics,logbook,stays,moorage -- if stationary fix data metrics,logbook,stays,moorage
@@ -1327,7 +1328,7 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
OR _invalid_interval IS True OR count_metric = avg_rec.count_metric OR _invalid_interval IS True OR count_metric = avg_rec.count_metric
OR _invalid_ratio IS True OR _invalid_ratio IS True
OR avg_rec.count_metric <= 3 THEN OR avg_rec.count_metric <= 3 THEN
RAISE NOTICE '-> process_logbook_valid_fn invalid logbook data id [%], _invalid_time [%], _invalid_distance [%], _invalid_interval [%], count_metric_in_zone [%], count_metric_log [%], _invalid_ratio [%]', RAISE NOTICE '-> process_pre_logbook_fn invalid logbook data id [%], _invalid_time [%], _invalid_distance [%], _invalid_interval [%], count_metric_in_zone [%], count_metric_log [%], _invalid_ratio [%]',
logbook_rec.id, _invalid_time, _invalid_distance, _invalid_interval, count_metric, avg_rec.count_metric, _invalid_ratio; logbook_rec.id, _invalid_time, _invalid_distance, _invalid_interval, count_metric, avg_rec.count_metric, _invalid_ratio;
-- Update metrics status to moored -- Update metrics status to moored
UPDATE api.metrics UPDATE api.metrics
@@ -1365,9 +1366,9 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
AND id = previous_stays_id; AND id = previous_stays_id;
-- Clean up, remove invalid logbook and stay entry -- Clean up, remove invalid logbook and stay entry
DELETE FROM api.logbook WHERE id = logbook_rec.id; DELETE FROM api.logbook WHERE id = logbook_rec.id;
RAISE WARNING '-> process_logbook_valid_fn delete invalid logbook [%]', logbook_rec.id; RAISE WARNING '-> process_pre_logbook_fn delete invalid logbook [%]', logbook_rec.id;
DELETE FROM api.stays WHERE id = current_stays_id; DELETE FROM api.stays WHERE id = current_stays_id;
RAISE WARNING '-> process_logbook_valid_fn delete invalid stays [%]', current_stays_id; RAISE WARNING '-> process_pre_logbook_fn delete invalid stays [%]', current_stays_id;
RETURN; RETURN;
END IF; END IF;
@@ -1394,11 +1395,11 @@ CREATE OR REPLACE FUNCTION public.process_logbook_valid_fn(IN _id integer) RETUR
VALUES ('new_logbook', logbook_rec.id, NOW(), current_setting('vessel.id', true)); VALUES ('new_logbook', logbook_rec.id, NOW(), current_setting('vessel.id', true));
END; END;
$process_logbook_valid$ LANGUAGE plpgsql; $process_pre_logbook$ LANGUAGE plpgsql;
-- Description -- Description
COMMENT ON FUNCTION COMMENT ON FUNCTION
public.process_logbook_queue_fn public.process_logbook_queue_fn
IS 'Avoid/ignore/delete logbook stationary movement or time sync issue'; IS 'Detect/Avoid/ignore/delete logbook stationary movement or time sync issue';
DROP FUNCTION IF EXISTS process_lat_lon_fn; DROP FUNCTION IF EXISTS process_lat_lon_fn;
CREATE OR REPLACE FUNCTION process_lat_lon_fn(IN lon NUMERIC, IN lat NUMERIC, CREATE OR REPLACE FUNCTION process_lat_lon_fn(IN lon NUMERIC, IN lat NUMERIC,