feat: refs #8227 Added roadmap_cloneDay
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Guillermo Bonet 2025-01-24 11:20:16 +01:00
parent 306eb6a059
commit e9f1e28ac0
5 changed files with 79 additions and 1 deletions

View File

@ -0,0 +1,71 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`roadmap_cloneDay`(
vDateToCopy DATE,
vDateToPaste DATE
)
BEGIN
/**
* Clona roadmaps de un día a otro, incluyendo las paradas y sin algunos
* campos de la tabla principal, como matrículas, conductores...
*
* @param vDateToCopy Fecha para copiar
* @param vDateToPaste Fecha para pegar
*/
DECLARE vDaysDiff INT;
DECLARE vNextRoadmapId INT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
RESIGNAL;
END;
SET vDaysDiff = DATEDIFF(vDateToPaste, vDateToCopy);
IF vDaysDiff IS NULL OR NOT vDaysDiff THEN
CALL util.throw("No valid dates");
END IF;
START TRANSACTION;
SELECT AUTO_INCREMENT INTO vNextRoadmapId
FROM information_schema.tables
WHERE table_name = 'roadmap'
AND table_schema = 'vn';
CREATE OR REPLACE TEMPORARY TABLE tmp.roadmapsToCopy
ENGINE = MEMORY
SELECT ROW_NUMBER() OVER(ORDER BY id) rowOrder,
id,
`name`,
roadmapAddressFk,
etd,
eta,
observations,
price
FROM roadmap
WHERE etd BETWEEN vDateToCopy AND util.dayEnd(vDateToCopy);
INSERT INTO roadmap (`name`, roadmapAddressFk, etd, eta, observations, price)
SELECT `name`,
roadmapAddressFk,
etd + INTERVAL vDaysDiff DAY,
eta + INTERVAL vDaysDiff DAY,
observations,
price
FROM tmp.roadmapsToCopy;
INSERT INTO roadmapStop (roadmapFk, roadmapAddressFk, eta, `description`, bufferFk)
SELECT (rtc.rowOrder - 1) + vNextRoadmapId,
rs.roadmapAddressFk,
rs.eta + INTERVAL vDaysDiff DAY,
rs.description,
rs.bufferFk
FROM tmp.roadmapsToCopy rtc
JOIN roadmapStop rs ON rs.roadmapFk = rtc.id;
COMMIT;
DROP TEMPORARY TABLE tmp.roadmapsToCopy;
END$$
DELIMITER ;

View File

@ -14,5 +14,6 @@ BEGIN
IF NEW.trailerPlate IS NOT NULL THEN IF NEW.trailerPlate IS NOT NULL THEN
CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL); CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL);
END IF; END IF;
SET NEW.name = UCASE(NEW.name);
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -14,5 +14,6 @@ BEGIN
IF NEW.trailerPlate IS NOT NULL THEN IF NEW.trailerPlate IS NOT NULL THEN
CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL); CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL);
END IF; END IF;
SET NEW.name = UCASE(NEW.name);
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -3,6 +3,7 @@ ALTER TABLE vn.roadmap
MODIFY COLUMN m3 int(10) unsigned DEFAULT NULL NULL COMMENT 'Capacidad máxima del remolque', MODIFY COLUMN m3 int(10) unsigned DEFAULT NULL NULL COMMENT 'Capacidad máxima del remolque',
MODIFY COLUMN trailerPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL, MODIFY COLUMN trailerPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL,
MODIFY COLUMN etd datetime NOT NULL COMMENT 'Tiempo estimado de salida', MODIFY COLUMN etd datetime NOT NULL COMMENT 'Tiempo estimado de salida',
MODIFY COLUMN `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL,
ADD eta datetime NOT NULL COMMENT 'Tiempo estimado de llegada' AFTER etd, ADD eta datetime NOT NULL COMMENT 'Tiempo estimado de llegada' AFTER etd,
ADD roadmapAddressFk int(11) NOT NULL AFTER `name`; ADD roadmapAddressFk int(11) NOT NULL AFTER `name`;

View File

@ -1,3 +1,7 @@
ALTER TABLE vn.roadmapStop ALTER TABLE vn.roadmapStop
CHANGE userFk editorFk int(10) unsigned DEFAULT NULL NULL, CHANGE userFk editorFk int(10) unsigned DEFAULT NULL NULL,
CHANGE addressFk roadmapAddressFk int(11) DEFAULT NULL NULL; CHANGE addressFk roadmapAddressFk int(11) DEFAULT NULL NULL,
DROP FOREIGN KEY expeditionTruck_FK_2;
ALTER TABLE vn.roadmapStop ADD CONSTRAINT roadmapStop_roadmap_FK
FOREIGN KEY (roadmapFk) REFERENCES vn.roadmap(id) ON DELETE CASCADE ON UPDATE CASCADE;