2025-12-02 22:12:43 +00:00
|
|
|
|
2025-12-05 23:11:57 +00:00
|
|
|
-- +goose StatementBegin
|
|
|
|
|
CREATE OR REPLACE FUNCTION fieldseeker.insert_treatment(
|
|
|
|
|
p_objectid bigint,
|
|
|
|
|
|
|
|
|
|
p_activity varchar,
|
|
|
|
|
p_treatarea double precision,
|
|
|
|
|
p_areaunit varchar,
|
|
|
|
|
p_product varchar,
|
|
|
|
|
p_qty double precision,
|
|
|
|
|
p_qtyunit varchar,
|
|
|
|
|
p_method varchar,
|
|
|
|
|
p_equiptype varchar,
|
|
|
|
|
p_comments varchar,
|
|
|
|
|
p_avetemp double precision,
|
|
|
|
|
p_windspeed double precision,
|
|
|
|
|
p_winddir varchar,
|
|
|
|
|
p_raingauge double precision,
|
|
|
|
|
p_startdatetime timestamp,
|
|
|
|
|
p_enddatetime timestamp,
|
|
|
|
|
p_insp_id uuid,
|
|
|
|
|
p_reviewed smallint,
|
|
|
|
|
p_reviewedby varchar,
|
|
|
|
|
p_revieweddate timestamp,
|
|
|
|
|
p_locationname varchar,
|
|
|
|
|
p_zone varchar,
|
|
|
|
|
p_warningoverride smallint,
|
|
|
|
|
p_recordstatus smallint,
|
|
|
|
|
p_zone2 varchar,
|
|
|
|
|
p_treatacres double precision,
|
|
|
|
|
p_tirecount smallint,
|
|
|
|
|
p_cbcount smallint,
|
|
|
|
|
p_containercount smallint,
|
|
|
|
|
p_globalid uuid,
|
|
|
|
|
p_treatmentlength double precision,
|
|
|
|
|
p_treatmenthours double precision,
|
|
|
|
|
p_treatmentlengthunits varchar,
|
|
|
|
|
p_linelocid uuid,
|
|
|
|
|
p_pointlocid uuid,
|
|
|
|
|
p_polygonlocid uuid,
|
|
|
|
|
p_srid uuid,
|
|
|
|
|
p_sdid uuid,
|
|
|
|
|
p_barrierrouteid uuid,
|
|
|
|
|
p_ulvrouteid uuid,
|
|
|
|
|
p_fieldtech varchar,
|
|
|
|
|
p_ptaid uuid,
|
|
|
|
|
p_flowrate double precision,
|
|
|
|
|
p_habitat varchar,
|
|
|
|
|
p_treathectares double precision,
|
|
|
|
|
p_invloc varchar,
|
|
|
|
|
p_temp_sitecond varchar,
|
|
|
|
|
p_sitecond varchar,
|
|
|
|
|
p_totalcostprodcut double precision,
|
|
|
|
|
p_creationdate timestamp,
|
|
|
|
|
p_creator varchar,
|
|
|
|
|
p_editdate timestamp,
|
|
|
|
|
p_editor varchar,
|
|
|
|
|
p_targetspecies varchar,
|
|
|
|
|
p_geometry jsonb,
|
|
|
|
|
p_geospatial geometry
|
|
|
|
|
) RETURNS TABLE(row_inserted boolean, version_num integer) AS $$
|
|
|
|
|
DECLARE
|
|
|
|
|
v_next_version integer;
|
|
|
|
|
v_changes_exist boolean;
|
|
|
|
|
BEGIN
|
|
|
|
|
-- Check if changes exist
|
|
|
|
|
SELECT NOT EXISTS (
|
|
|
|
|
SELECT 1 FROM fieldseeker.treatment lv
|
|
|
|
|
WHERE lv.objectid = p_objectid
|
|
|
|
|
|
|
|
|
|
AND lv.activity IS NOT DISTINCT FROM p_activity
|
|
|
|
|
AND lv.treatarea IS NOT DISTINCT FROM p_treatarea
|
|
|
|
|
AND lv.areaunit IS NOT DISTINCT FROM p_areaunit
|
|
|
|
|
AND lv.product IS NOT DISTINCT FROM p_product
|
|
|
|
|
AND lv.qty IS NOT DISTINCT FROM p_qty
|
|
|
|
|
AND lv.qtyunit IS NOT DISTINCT FROM p_qtyunit
|
|
|
|
|
AND lv.method IS NOT DISTINCT FROM p_method
|
|
|
|
|
AND lv.equiptype IS NOT DISTINCT FROM p_equiptype
|
|
|
|
|
AND lv.comments IS NOT DISTINCT FROM p_comments
|
|
|
|
|
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
|
|
|
|
|
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
|
|
|
|
|
AND lv.winddir IS NOT DISTINCT FROM p_winddir
|
|
|
|
|
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
|
|
|
|
|
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
|
|
|
|
|
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
|
|
|
|
|
AND lv.insp_id IS NOT DISTINCT FROM p_insp_id
|
|
|
|
|
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
|
|
|
|
|
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
|
|
|
|
|
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
|
|
|
|
|
AND lv.locationname IS NOT DISTINCT FROM p_locationname
|
|
|
|
|
AND lv.zone IS NOT DISTINCT FROM p_zone
|
|
|
|
|
AND lv.warningoverride IS NOT DISTINCT FROM p_warningoverride
|
|
|
|
|
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
|
|
|
|
|
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
|
|
|
|
|
AND lv.treatacres IS NOT DISTINCT FROM p_treatacres
|
|
|
|
|
AND lv.tirecount IS NOT DISTINCT FROM p_tirecount
|
|
|
|
|
AND lv.cbcount IS NOT DISTINCT FROM p_cbcount
|
|
|
|
|
AND lv.containercount IS NOT DISTINCT FROM p_containercount
|
|
|
|
|
AND lv.globalid IS NOT DISTINCT FROM p_globalid
|
|
|
|
|
AND lv.treatmentlength IS NOT DISTINCT FROM p_treatmentlength
|
|
|
|
|
AND lv.treatmenthours IS NOT DISTINCT FROM p_treatmenthours
|
|
|
|
|
AND lv.treatmentlengthunits IS NOT DISTINCT FROM p_treatmentlengthunits
|
|
|
|
|
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
|
|
|
|
|
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
|
|
|
|
|
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
|
|
|
|
|
AND lv.srid IS NOT DISTINCT FROM p_srid
|
|
|
|
|
AND lv.sdid IS NOT DISTINCT FROM p_sdid
|
|
|
|
|
AND lv.barrierrouteid IS NOT DISTINCT FROM p_barrierrouteid
|
|
|
|
|
AND lv.ulvrouteid IS NOT DISTINCT FROM p_ulvrouteid
|
|
|
|
|
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
|
|
|
|
|
AND lv.ptaid IS NOT DISTINCT FROM p_ptaid
|
|
|
|
|
AND lv.flowrate IS NOT DISTINCT FROM p_flowrate
|
|
|
|
|
AND lv.habitat IS NOT DISTINCT FROM p_habitat
|
|
|
|
|
AND lv.treathectares IS NOT DISTINCT FROM p_treathectares
|
|
|
|
|
AND lv.invloc IS NOT DISTINCT FROM p_invloc
|
|
|
|
|
AND lv.temp_sitecond IS NOT DISTINCT FROM p_temp_sitecond
|
|
|
|
|
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
|
|
|
|
|
AND lv.totalcostprodcut IS NOT DISTINCT FROM p_totalcostprodcut
|
|
|
|
|
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
|
|
|
|
|
AND lv.creator IS NOT DISTINCT FROM p_creator
|
|
|
|
|
AND lv.editdate IS NOT DISTINCT FROM p_editdate
|
|
|
|
|
AND lv.editor IS NOT DISTINCT FROM p_editor
|
|
|
|
|
AND lv.targetspecies IS NOT DISTINCT FROM p_targetspecies
|
|
|
|
|
AND lv.geometry IS NOT DISTINCT FROM p_geometry
|
|
|
|
|
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
|
|
|
|
|
ORDER BY VERSION DESC LIMIT 1
|
|
|
|
|
) INTO v_changes_exist;
|
|
|
|
|
|
|
|
|
|
-- If no changes, return false with current version
|
|
|
|
|
IF NOT v_changes_exist THEN
|
|
|
|
|
RETURN QUERY
|
|
|
|
|
SELECT
|
|
|
|
|
FALSE AS row_inserted,
|
|
|
|
|
(SELECT VERSION FROM fieldseeker.treatment
|
|
|
|
|
WHERE objectid = p_objectid ORDER BY VERSION DESC LIMIT 1) AS version_num;
|
|
|
|
|
RETURN;
|
|
|
|
|
END IF;
|
|
|
|
|
|
|
|
|
|
-- Calculate next version
|
|
|
|
|
SELECT COALESCE(MAX(VERSION) + 1, 1) INTO v_next_version
|
|
|
|
|
FROM fieldseeker.treatment
|
|
|
|
|
WHERE objectid = p_objectid;
|
|
|
|
|
|
|
|
|
|
-- Insert new version
|
|
|
|
|
INSERT INTO fieldseeker.treatment (
|
|
|
|
|
objectid,
|
|
|
|
|
|
|
|
|
|
activity,
|
|
|
|
|
treatarea,
|
|
|
|
|
areaunit,
|
|
|
|
|
product,
|
|
|
|
|
qty,
|
|
|
|
|
qtyunit,
|
|
|
|
|
method,
|
|
|
|
|
equiptype,
|
|
|
|
|
comments,
|
|
|
|
|
avetemp,
|
|
|
|
|
windspeed,
|
|
|
|
|
winddir,
|
|
|
|
|
raingauge,
|
|
|
|
|
startdatetime,
|
|
|
|
|
enddatetime,
|
|
|
|
|
insp_id,
|
|
|
|
|
reviewed,
|
|
|
|
|
reviewedby,
|
|
|
|
|
revieweddate,
|
|
|
|
|
locationname,
|
|
|
|
|
zone,
|
|
|
|
|
warningoverride,
|
|
|
|
|
recordstatus,
|
|
|
|
|
zone2,
|
|
|
|
|
treatacres,
|
|
|
|
|
tirecount,
|
|
|
|
|
cbcount,
|
|
|
|
|
containercount,
|
|
|
|
|
globalid,
|
|
|
|
|
treatmentlength,
|
|
|
|
|
treatmenthours,
|
|
|
|
|
treatmentlengthunits,
|
|
|
|
|
linelocid,
|
|
|
|
|
pointlocid,
|
|
|
|
|
polygonlocid,
|
|
|
|
|
srid,
|
|
|
|
|
sdid,
|
|
|
|
|
barrierrouteid,
|
|
|
|
|
ulvrouteid,
|
|
|
|
|
fieldtech,
|
|
|
|
|
ptaid,
|
|
|
|
|
flowrate,
|
|
|
|
|
habitat,
|
|
|
|
|
treathectares,
|
|
|
|
|
invloc,
|
|
|
|
|
temp_sitecond,
|
|
|
|
|
sitecond,
|
|
|
|
|
totalcostprodcut,
|
|
|
|
|
creationdate,
|
|
|
|
|
creator,
|
|
|
|
|
editdate,
|
|
|
|
|
editor,
|
|
|
|
|
targetspecies,
|
|
|
|
|
geometry,
|
|
|
|
|
geospatial,
|
|
|
|
|
VERSION
|
|
|
|
|
) VALUES (
|
|
|
|
|
p_objectid,
|
|
|
|
|
|
|
|
|
|
p_activity,
|
|
|
|
|
p_treatarea,
|
|
|
|
|
p_areaunit,
|
|
|
|
|
p_product,
|
|
|
|
|
p_qty,
|
|
|
|
|
p_qtyunit,
|
|
|
|
|
p_method,
|
|
|
|
|
p_equiptype,
|
|
|
|
|
p_comments,
|
|
|
|
|
p_avetemp,
|
|
|
|
|
p_windspeed,
|
|
|
|
|
p_winddir,
|
|
|
|
|
p_raingauge,
|
|
|
|
|
p_startdatetime,
|
|
|
|
|
p_enddatetime,
|
|
|
|
|
p_insp_id,
|
|
|
|
|
p_reviewed,
|
|
|
|
|
p_reviewedby,
|
|
|
|
|
p_revieweddate,
|
|
|
|
|
p_locationname,
|
|
|
|
|
p_zone,
|
|
|
|
|
p_warningoverride,
|
|
|
|
|
p_recordstatus,
|
|
|
|
|
p_zone2,
|
|
|
|
|
p_treatacres,
|
|
|
|
|
p_tirecount,
|
|
|
|
|
p_cbcount,
|
|
|
|
|
p_containercount,
|
|
|
|
|
p_globalid,
|
|
|
|
|
p_treatmentlength,
|
|
|
|
|
p_treatmenthours,
|
|
|
|
|
p_treatmentlengthunits,
|
|
|
|
|
p_linelocid,
|
|
|
|
|
p_pointlocid,
|
|
|
|
|
p_polygonlocid,
|
|
|
|
|
p_srid,
|
|
|
|
|
p_sdid,
|
|
|
|
|
p_barrierrouteid,
|
|
|
|
|
p_ulvrouteid,
|
|
|
|
|
p_fieldtech,
|
|
|
|
|
p_ptaid,
|
|
|
|
|
p_flowrate,
|
|
|
|
|
p_habitat,
|
|
|
|
|
p_treathectares,
|
|
|
|
|
p_invloc,
|
|
|
|
|
p_temp_sitecond,
|
|
|
|
|
p_sitecond,
|
|
|
|
|
p_totalcostprodcut,
|
|
|
|
|
p_creationdate,
|
|
|
|
|
p_creator,
|
|
|
|
|
p_editdate,
|
|
|
|
|
p_editor,
|
|
|
|
|
p_targetspecies,
|
|
|
|
|
p_geometry,
|
|
|
|
|
p_geospatial,
|
|
|
|
|
v_next_version
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- Return success with new version
|
|
|
|
|
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
|
|
|
|
|
END;
|
|
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
|
-- +goose StatementEnd
|