This commit is contained in:
parent
765a84e2eb
commit
3c013110d3
|
@ -77831,7 +77831,7 @@ BEGIN
|
||||||
LEAVE cur1Loop;
|
LEAVE cur1Loop;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL zone_getLeaves2(vZoneFk, NULL, NULL);
|
CALL zone_getLeaves(vZoneFk, NULL, NULL, TRUE);
|
||||||
|
|
||||||
myLoop: LOOP
|
myLoop: LOOP
|
||||||
SET vGeoFk = NULL;
|
SET vGeoFk = NULL;
|
||||||
|
@ -77844,7 +77844,7 @@ BEGIN
|
||||||
LEAVE myLoop;
|
LEAVE myLoop;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL zone_getLeaves2(vZoneFk, vGeoFk, NULL);
|
CALL zone_getLeaves(vZoneFk, vGeoFk, NULL, TRUE);
|
||||||
UPDATE tmp.zoneNodes
|
UPDATE tmp.zoneNodes
|
||||||
SET isChecked = TRUE
|
SET isChecked = TRUE
|
||||||
WHERE geoFk = vGeoFk;
|
WHERE geoFk = vGeoFk;
|
||||||
|
@ -78130,19 +78130,25 @@ DELIMITER ;
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
|
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getLeaves`(vSelf INT, vParentFk INT, vSearch VARCHAR(255))
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getLeaves`(
|
||||||
|
vSelf INT,
|
||||||
|
vParentFk INT,
|
||||||
|
vSearch VARCHAR(255),
|
||||||
|
vHasInsert BOOL
|
||||||
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk.
|
* Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk.
|
||||||
* @param vSelf Id de la zona
|
* @param vSelf Id de la zona
|
||||||
* @param vParentFk Id del geo a calcular
|
* @param vParentFk Id del geo a calcular
|
||||||
* @param vSearch cadena a buscar
|
* @param vSearch Cadena a buscar
|
||||||
|
* @param vHasInsert Indica si inserta en tmp.zoneNodes
|
||||||
|
* Optional @table tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
|
||||||
*/
|
*/
|
||||||
DECLARE vIsNumber BOOL;
|
DECLARE vIsNumber BOOL;
|
||||||
DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch != '';
|
DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch <> '';
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tNodes;
|
CREATE OR REPLACE TEMPORARY TABLE tNodes
|
||||||
CREATE TEMPORARY TABLE tNodes
|
|
||||||
(UNIQUE (id))
|
(UNIQUE (id))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT id
|
SELECT id
|
||||||
|
@ -78167,18 +78173,15 @@ BEGIN
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF vParentFk IS NULL THEN
|
IF vParentFk IS NULL THEN
|
||||||
DROP TEMPORARY TABLE IF EXISTS tChilds;
|
CREATE OR REPLACE TEMPORARY TABLE tChilds
|
||||||
CREATE TEMPORARY TABLE tChilds
|
(INDEX(id))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT id
|
SELECT id FROM tNodes;
|
||||||
FROM tNodes;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tParents;
|
CREATE OR REPLACE TEMPORARY TABLE tParents
|
||||||
CREATE TEMPORARY TABLE tParents
|
(INDEX(id))
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT id
|
SELECT id FROM zoneGeo LIMIT 0;
|
||||||
FROM zoneGeo
|
|
||||||
LIMIT 0;
|
|
||||||
|
|
||||||
myLoop: LOOP
|
myLoop: LOOP
|
||||||
DELETE FROM tParents;
|
DELETE FROM tParents;
|
||||||
|
@ -78189,40 +78192,64 @@ BEGIN
|
||||||
WHERE g.parentFk IS NOT NULL;
|
WHERE g.parentFk IS NOT NULL;
|
||||||
|
|
||||||
INSERT IGNORE INTO tNodes
|
INSERT IGNORE INTO tNodes
|
||||||
SELECT id
|
SELECT id FROM tParents;
|
||||||
FROM tParents;
|
|
||||||
|
|
||||||
IF ROW_COUNT() = 0 THEN
|
IF NOT ROW_COUNT() THEN
|
||||||
LEAVE myLoop;
|
LEAVE myLoop;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DELETE FROM tChilds;
|
DELETE FROM tChilds;
|
||||||
INSERT INTO tChilds
|
INSERT INTO tChilds
|
||||||
SELECT id
|
SELECT id FROM tParents;
|
||||||
FROM tParents;
|
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tChilds, tParents;
|
DROP TEMPORARY TABLE tChilds, tParents;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
IF !vIsSearch THEN
|
IF NOT vIsSearch THEN
|
||||||
INSERT IGNORE INTO tNodes
|
INSERT IGNORE INTO tNodes
|
||||||
SELECT id
|
SELECT id
|
||||||
FROM zoneGeo
|
FROM zoneGeo
|
||||||
WHERE parentFk <=> vParentFk;
|
WHERE parentFk <=> vParentFk;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tZones
|
||||||
SELECT g.id,
|
SELECT g.id,
|
||||||
g.name,
|
g.name,
|
||||||
g.parentFk,
|
g.parentFk,
|
||||||
g.sons,
|
g.sons,
|
||||||
isIncluded selected
|
NOT g.sons OR `type` = 'country' isChecked,
|
||||||
|
i.isIncluded selected,
|
||||||
|
g.`depth`,
|
||||||
|
vSelf
|
||||||
FROM zoneGeo g
|
FROM zoneGeo g
|
||||||
JOIN tNodes n ON n.id = g.id
|
JOIN tNodes n ON n.id = g.id
|
||||||
LEFT JOIN zoneIncluded i ON i.geoFk = g.id AND i.zoneFk = vSelf
|
LEFT JOIN zoneIncluded i ON i.geoFk = g.id
|
||||||
ORDER BY `depth`, selected DESC, name;
|
AND i.zoneFk = vSelf
|
||||||
|
ORDER BY g.`depth`, selected DESC, g.name;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tNodes;
|
IF vHasInsert THEN
|
||||||
|
INSERT IGNORE INTO tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk)
|
||||||
|
SELECT id,
|
||||||
|
name,
|
||||||
|
parentFk,
|
||||||
|
sons,
|
||||||
|
isChecked,
|
||||||
|
vSelf
|
||||||
|
FROM tZones
|
||||||
|
WHERE selected
|
||||||
|
OR (selected IS NULL AND vParentFk IS NOT NULL);
|
||||||
|
ELSE
|
||||||
|
SELECT id,
|
||||||
|
name,
|
||||||
|
parentFk,
|
||||||
|
sons,
|
||||||
|
selected
|
||||||
|
FROM tZones
|
||||||
|
ORDER BY `depth`, selected DESC, name;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tNodes, tZones;
|
||||||
END ;;
|
END ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
@ -78540,7 +78567,7 @@ BEGIN
|
||||||
INDEX(geoFk))
|
INDEX(geoFk))
|
||||||
ENGINE = MEMORY;
|
ENGINE = MEMORY;
|
||||||
|
|
||||||
CALL zone_getLeaves2(vSelf, NULL , NULL);
|
CALL zone_getLeaves(vSelf, NULL , NULL, TRUE);
|
||||||
|
|
||||||
UPDATE tmp.zoneNodes zn
|
UPDATE tmp.zoneNodes zn
|
||||||
SET isChecked = 0
|
SET isChecked = 0
|
||||||
|
@ -78553,7 +78580,7 @@ BEGIN
|
||||||
WHERE NOT isChecked
|
WHERE NOT isChecked
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
CALL zone_getLeaves2(vSelf, vGeoFk, NULL);
|
CALL zone_getLeaves(vSelf, vGeoFk, NULL, TRUE);
|
||||||
UPDATE tmp.zoneNodes
|
UPDATE tmp.zoneNodes
|
||||||
SET isChecked = TRUE
|
SET isChecked = TRUE
|
||||||
WHERE geoFk = vGeoFk;
|
WHERE geoFk = vGeoFk;
|
||||||
|
|
Loading…
Reference in New Issue