feat: refs #8227 Update roadmap triggers to manage eta adjustments and prevent recursive calls
gitea/salix/pipeline/pr-test There was a failure building this commit
Details
gitea/salix/pipeline/pr-test There was a failure building this commit
Details
This commit is contained in:
parent
a002168f61
commit
e19e50de14
|
@ -19,24 +19,31 @@ BEGIN
|
||||||
CALL util.throw('Departure time can not be after arrival time');
|
CALL util.throw('Departure time can not be after arrival time');
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
SELECT MAX(eta) INTO vMaxEta
|
IF @roadmapTriggerIsActive IS NULL THEN
|
||||||
FROM roadmapStop
|
SET @roadmapTriggerIsActive = TRUE;
|
||||||
WHERE roadmapFk = NEW.roadmapFk
|
|
||||||
AND id <> OLD.id;
|
|
||||||
|
|
||||||
IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN
|
SELECT MAX(eta) INTO vMaxEta
|
||||||
SET vMaxEta = NEW.eta;
|
FROM roadmapStop
|
||||||
END IF;
|
WHERE roadmapFk = NEW.roadmapFk
|
||||||
|
AND id <> OLD.id;
|
||||||
|
|
||||||
SELECT eta INTO vCurrentEta
|
IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN
|
||||||
FROM roadmap
|
SET vMaxEta = NEW.eta;
|
||||||
WHERE id = NEW.roadmapFk;
|
END IF;
|
||||||
|
|
||||||
IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN
|
SELECT eta INTO vCurrentEta
|
||||||
UPDATE roadmap
|
FROM roadmap
|
||||||
SET eta = vMaxEta
|
|
||||||
WHERE id = NEW.roadmapFk;
|
WHERE id = NEW.roadmapFk;
|
||||||
|
|
||||||
|
IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN
|
||||||
|
UPDATE roadmap
|
||||||
|
SET eta = vMaxEta
|
||||||
|
WHERE id = NEW.roadmapFk;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET @roadmapTriggerIsActive = NULL;
|
||||||
|
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -1,17 +1,26 @@
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate`
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate`
|
||||||
AFTER UPDATE ON `roadmap`
|
AFTER UPDATE ON `roadmap`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE vSeconds INT;
|
DECLARE vSeconds INT;
|
||||||
|
|
||||||
IF NOT (NEW.etd <=> OLD.etd) THEN
|
IF @roadmapTriggerIsActive IS NULL THEN
|
||||||
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
SET @roadmapTriggerIsActive = TRUE;
|
||||||
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
|
|
||||||
UPDATE roadmapStop
|
IF NOT (NEW.etd <=> OLD.etd) THEN
|
||||||
SET eta = eta + INTERVAL vSeconds SECOND
|
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
||||||
WHERE roadmapFk = NEW.id;
|
|
||||||
|
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
|
||||||
|
UPDATE vn.roadmapStop
|
||||||
|
SET eta = eta + INTERVAL vSeconds SECOND
|
||||||
|
WHERE roadmapFk = NEW.id;
|
||||||
|
|
||||||
|
SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND;
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
SET @roadmapTriggerIsActive = NULL;
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -3,6 +3,8 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate`
|
||||||
BEFORE UPDATE ON `roadmap`
|
BEFORE UPDATE ON `roadmap`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE vSeconds INT;
|
||||||
|
|
||||||
SET NEW.editorFk = account.myUser_getId();
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
|
||||||
IF NOT (NEW.name <=> OLD.name) THEN
|
IF NOT (NEW.name <=> OLD.name) THEN
|
||||||
|
@ -37,5 +39,23 @@ BEGIN
|
||||||
FROM worker w
|
FROM worker w
|
||||||
WHERE w.id = NEW.driverChangeFk);
|
WHERE w.id = NEW.driverChangeFk);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
IF @trigger_active IS NULL THEN
|
||||||
|
SET @trigger_active = TRUE;
|
||||||
|
|
||||||
|
IF NOT (NEW.etd <=> OLD.etd) THEN
|
||||||
|
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
||||||
|
|
||||||
|
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
|
||||||
|
UPDATE vn.roadmapStop
|
||||||
|
SET eta = eta + INTERVAL vSeconds SECOND
|
||||||
|
WHERE roadmapFk = NEW.id;
|
||||||
|
|
||||||
|
SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET @trigger_active = NULL;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -0,0 +1,7 @@
|
||||||
|
ALTER TABLE vn.roadmap
|
||||||
|
MODIFY COLUMN dollyPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL COMMENT
|
||||||
|
'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción';
|
||||||
|
|
||||||
|
GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss;
|
||||||
|
|
||||||
|
ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
|
Loading…
Reference in New Issue