39 lines
1.0 KiB
MySQL
39 lines
1.0 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT)
|
||
|
BEGIN
|
||
|
|
||
|
/**
|
||
|
* Actualiza el registro correspondiente si el vWorkerFk se ha registrado en las últimas horas (campo maxHours de machineWorkerConfig) con vPlate,
|
||
|
*
|
||
|
* @param vPlate número de matrícula
|
||
|
* @param vWorkerFk id del trabajador
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
DECLARE vMachineFk INT(10);
|
||
|
DECLARE vMaxHours INT(10);
|
||
|
|
||
|
SELECT m.id INTO vMachineFk
|
||
|
FROM machine m
|
||
|
WHERE m.plate = vPlate;
|
||
|
|
||
|
SELECT maxHours INTO vMaxHours
|
||
|
FROM machineWorkerConfig;
|
||
|
|
||
|
IF (SELECT COUNT(*)
|
||
|
FROM machineWorker m
|
||
|
WHERE m.workerFk = vWorkerFk
|
||
|
AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW()) AND ISNULL(m.outTimed)) THEN
|
||
|
|
||
|
UPDATE machineWorker m
|
||
|
SET m.outTimed = CURRENT_TIMESTAMP()
|
||
|
WHERE m.workerFk = vWorkerFk
|
||
|
AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW())
|
||
|
AND ISNULL(m.outTimed)
|
||
|
AND m.machineFk = vMachineFk;
|
||
|
|
||
|
END IF;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|