DROP TRIGGER IF EXISTS `trigger_fire_equipment_point_update`;
CREATE TRIGGER `trigger_fire_equipment_point_update` AFTER UPDATE ON `f_fire_equipment_point` FOR EACH ROW
BEGIN
DECLARE num1 INT (4) default 0;
select count(1) into num1 from f_fire_equipment_point where fire_equipment_id = new.fire_equipment_id and type='SWITCH' and 0x4000>=CAST(code AS SIGNED) and value > 0;
if num1 > 0 then
update f_fire_equipment set equip_status = 1 where id = new.fire_equipment_id;
else
update f_fire_equipment set equip_status = 0 where id = new.fire_equipment_id;
DROP TRIGGER IF EXISTS `trigger_fire_equipment_point_update`;
CREATE TRIGGER `trigger_fire_equipment_point_update` AFTER UPDATE ON `f_fire_equipment_point` FOR EACH ROW
BEGIN
DECLARE num1 INT (4) default 0;
select count(1) into num1 from f_fire_equipment_point where fire_equipment_id = new.fire_equipment_id and type='SWITCH' and 0x4000>=CAST(code AS SIGNED) and value > 0;
if num1 > 0 then
update f_fire_equipment set equip_status = 1 where id = new.fire_equipment_id;
update f_risk_source_equipment set status = 1 where fire_equipment_id = new.fire_equipment_id;
else
update f_fire_equipment set equip_status = 0 where id = new.fire_equipment_id;
update f_risk_source_equipment set status = 0 where fire_equipment_id = new.fire_equipment_id;
DROP TRIGGER IF EXISTS `risk_source_point_item_upd`;
CREATE TRIGGER risk_source_point_item_upd AFTER UPDATE on f_risk_source_point_inputitem FOR EACH ROW
DROP TRIGGER IF EXISTS `trigger_fmea_point_inputitem_update`;
CREATE TRIGGER trigger_fmea_point_inputitem_update AFTER UPDATE on f_fmea_point_inputitem FOR EACH ROW
BEGIN
DECLARE riskSourceId BIGINT (20);
DECLARE num1 int (20);
DECLARE num2 int (20);
select rsp.risk_source_id INTO riskSourceId from f_risk_source_point_inputitem rsp where rsp.id = new.id;
IF new.status = '2' then UPDATE f_risk_source rs set rs.status = 'ANOMALY'
where rs.id= riskSourceId;
SELECT fm.risk_source_id INTO riskSourceId FROM f_fmea fm WHERE fm.id = (select fmea_id from f_fmea_point_inputitem fpi where fpi.id = new.id);
IF new.state = '1' then
UPDATE f_risk_source rs set rs.status = 'ANOMALY' where rs.id= riskSourceId;
ELSE
SELECT COUNT(1) INTO num1 FROM f_risk_source_equipment rse WHERE rse.risk_source_id = riskSourceId and rse.status = 1;-- 告警
SELECT COUNT(1) INTO num2 FROM f_risk_source_point_inputitem rsp WHERE rsp.risk_source_id = riskSourceId and rsp.status = '2';
update f_risk_source rs set rs.`status` = (case when num1+num2>0 then 'ANOMALY' else 'NORMAL' END) where rs.id = riskSourceId;
SELECT count(fep.id) INTO num1 FROM f_fmea_equipment_point fep
LEFT JOIN f_fmea ff ON ff.id = fep.fmea_id
WHERE fep.state = '1' AND ff.risk_source_id = riskSourceId;
SELECT count(fpi.id) INTO num2 FROM f_fmea_point_inputitem fpi
LEFT JOIN f_fmea ff ON ff.id = fpi.fmea_id
WHERE state = '1' AND ff.risk_source_id = riskSourceId;
update f_risk_source rs set rs.`status` = (case when (num1+num2)>0 then 'ANOMALY' else 'NORMAL' END) where rs.id = riskSourceId;
END IF;
END#
</sql>
...
...
@@ -91,10 +67,8 @@
select count(1) into num1 from f_fire_equipment_point where fire_equipment_id = new.fire_equipment_id and type='SWITCH' and 0x4000>=CAST(code AS SIGNED) and value = 'true';
if num1 > 0 then
update f_fire_equipment set equip_status = 1 where id = new.fire_equipment_id;
update f_risk_source_equipment set status = 1 where fire_equipment_id = new.fire_equipment_id;
else
update f_fire_equipment set equip_status = 0 where id = new.fire_equipment_id;
update f_risk_source_equipment set status = 0 where fire_equipment_id = new.fire_equipment_id;