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
CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL);
END IF;
SET NEW.name = UCASE(NEW.name);
END$$
DELIMITER ;

View File

@ -14,5 +14,6 @@ BEGIN
IF NEW.trailerPlate IS NOT NULL THEN
CALL vehicle_checkNumberPlate(NEW.trailerPlate, NULL);
END IF;
SET NEW.name = UCASE(NEW.name);
END$$
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 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 `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL,
ADD eta datetime NOT NULL COMMENT 'Tiempo estimado de llegada' AFTER etd,
ADD roadmapAddressFk int(11) NOT NULL AFTER `name`;

View File

@ -1,3 +1,7 @@
ALTER TABLE vn.roadmapStop
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;