|
|
@@ -0,0 +1,191 @@
|
|
|
+-- ============================================================
|
|
|
+-- 供水管网 设备异常管理页面 测试数据脚本(KingbaseES)
|
|
|
+-- 说明:
|
|
|
+-- 1. 测试主键与编号均使用 T6-ABN-TEST- / WO20260905 前缀,可重复执行。
|
|
|
+-- 2. 本脚本只初始化测试数据,不创建业务表;执行前请确认以下表已存在:
|
|
|
+-- app_user.equipment_type、app_user.equipment_base、app_user.equipment_status、
|
|
|
+-- app_user.alarm_data、app_user.work_order、app_user.work_order_log
|
|
|
+-- 3. 覆盖场景:
|
|
|
+-- a. 有状态记录 + alarm_status=1 + 有效报警 -> 显示。
|
|
|
+-- b. 有状态记录 + current_status=3 + 无有效报警 -> 显示,原因为设备维修中。
|
|
|
+-- c. 无状态记录 + alarm_data.alarm_status=0 -> 显示(验证无状态回退修复)。
|
|
|
+-- d. 无状态记录 + 无报警 -> 不显示。
|
|
|
+-- e. 有状态记录但正常 + 仅存在已处理报警 -> 不显示。
|
|
|
+-- f. 非供水设备 + 报警 -> 不显示。
|
|
|
+-- ============================================================
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 0. 清理历史测试数据(先清工单日志与工单,再清报警、状态、设备、临时类型)
|
|
|
+-- ------------------------------------------------------------
|
|
|
+DELETE FROM app_user.work_order_log WHERE order_id IN
|
|
|
+ (SELECT order_id FROM app_user.work_order WHERE order_no LIKE 'WO20260905%' AND order_no IN (
|
|
|
+ 'WO202609050001', 'WO202609050002', 'WO202609050003'
|
|
|
+ ));
|
|
|
+DELETE FROM app_user.work_order WHERE order_no IN
|
|
|
+ ('WO202609050001', 'WO202609050002', 'WO202609050003');
|
|
|
+DELETE FROM app_user.alarm_data WHERE id LIKE 'T6-ABN-TEST-ALARM-%';
|
|
|
+DELETE FROM app_user.equipment_status WHERE equipment_id LIKE 'T6-ABN-TEST-EQ-%';
|
|
|
+DELETE FROM app_user.equipment_base WHERE equipment_id LIKE 'T6-ABN-TEST-EQ-%';
|
|
|
+DELETE FROM app_user.equipment_type WHERE id = 'T6-ABN-TEST-GAS-TYPE';
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 1. 校验规范供水设备类型,并创建临时非供水类型用于边界排除
|
|
|
+-- ------------------------------------------------------------
|
|
|
+DO $$
|
|
|
+DECLARE
|
|
|
+ v_count integer;
|
|
|
+BEGIN
|
|
|
+ SELECT count(*) INTO v_count
|
|
|
+ FROM app_user.equipment_type
|
|
|
+ WHERE id = '1' AND parent_type_id = '0' AND type_name = '供水';
|
|
|
+ IF v_count <> 1 THEN
|
|
|
+ RAISE EXCEPTION '缺少规范供水顶级设备类型:id=1,type_name=供水,parent_type_id=0';
|
|
|
+ END IF;
|
|
|
+
|
|
|
+ SELECT count(*) INTO v_count
|
|
|
+ FROM app_user.equipment_type
|
|
|
+ WHERE type_id IN ('ws_flow', 'ws_pressure', 'ws_leak')
|
|
|
+ AND parent_type_id = '1';
|
|
|
+ IF v_count <> 3 THEN
|
|
|
+ RAISE EXCEPTION '缺少规范供水监测子类型:ws_flow/ws_pressure/ws_leak 必须 parent_type_id=1';
|
|
|
+ END IF;
|
|
|
+END $$;
|
|
|
+
|
|
|
+INSERT INTO app_user.equipment_type
|
|
|
+ (id, type_id, type_name, parent_type_id, type_remark)
|
|
|
+VALUES
|
|
|
+ ('T6-ABN-TEST-GAS-TYPE', 't6_abn_test_gas', '燃气(异常页测试)', '0',
|
|
|
+ 'T6异常页非供水设备排除测试类型');
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 2. 设备基础信息(6 台供水设备 + 1 台非供水设备)
|
|
|
+-- 注意:T6-ABN-TEST-EQ-NOSTATUS-ALARM 不插入 equipment_status,
|
|
|
+-- 专门用于验证 alarm_data.alarm_status=0 的无状态回退判定。
|
|
|
+-- ------------------------------------------------------------
|
|
|
+INSERT INTO app_user.equipment_base
|
|
|
+ (equipment_id, equipment_code, equipment_name, equipment_model, equipment_type_id,
|
|
|
+ longitude, latitude, equipment_location, maintainer, maintainer_phone,
|
|
|
+ ownership_unit, remark, create_time, update_time, del_flag, district)
|
|
|
+VALUES
|
|
|
+ ('T6-ABN-TEST-EQ-ALARM-OPEN', 'CN-GS-202609050001', '异常页测试压力报警设备', 'PRESSURE-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.28000000, 23.12000000, '异常页测试大道1号', '异常页测试维护员', '13800000101',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '城南'),
|
|
|
+ ('T6-ABN-TEST-EQ-ALARM-ORDERED', 'CB-GS-202609050002', '异常页测试压力已派单设备', 'PRESSURE-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.29000000, 23.13000000, '异常页测试大道2号', '异常页测试维护员', '13800000102',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '城北'),
|
|
|
+ ('T6-ABN-TEST-EQ-REPAIR', 'TC-GS-202609050003', '异常页测试流量维修中设备', 'FLOW-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.30000000, 23.14000000, '异常页测试大道3号', '异常页测试维护员', '13800000103',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '太常'),
|
|
|
+ ('T6-ABN-TEST-EQ-NOSTATUS-ALARM', 'CN-GS-202609050004', '异常页测试无状态报警设备', 'LEAK-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_leak' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.31000000, 23.15000000, '异常页测试大道4号', '异常页测试维护员', '13800000104',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '城南'),
|
|
|
+ ('T6-ABN-TEST-EQ-NORMAL-HIDDEN', 'CB-GS-202609050005', '异常页测试正常隐藏设备', 'FLOW-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.32000000, 23.16000000, '异常页测试大道5号', '异常页测试维护员', '13800000105',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '城北'),
|
|
|
+ ('T6-ABN-TEST-EQ-NOSTATUS-HIDDEN', 'TC-GS-202609050007', '异常页测试无状态隐藏设备', 'PRESSURE-ABN-TEST',
|
|
|
+ (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1),
|
|
|
+ 113.33000000, 23.17000000, '异常页测试大道7号', '异常页测试维护员', '13800000107',
|
|
|
+ '异常页测试供水公司', '设备异常管理测试数据', now() - interval '7 days', now(), '0', '太常'),
|
|
|
+ ('T6-ABN-TEST-EQ-GAS-EXCLUDED', 'CN-RQ-202609050006', '异常页测试燃气排除设备', 'GAS-ABN-TEST',
|
|
|
+ 'T6-ABN-TEST-GAS-TYPE', 113.34000000, 23.18000000, '异常页测试大道6号',
|
|
|
+ '异常页测试维护员', '13800000106', '异常页测试燃气公司', '非供水设备排除测试数据',
|
|
|
+ now() - interval '7 days', now(), '0', '城南');
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 3. 设备状态
|
|
|
+-- ------------------------------------------------------------
|
|
|
+INSERT INTO app_user.equipment_status
|
|
|
+ (equipment_id, current_status, alarm_status, online_status,
|
|
|
+ installation_addr, status_update_time, create_time, del_flag)
|
|
|
+VALUES
|
|
|
+ ('T6-ABN-TEST-EQ-ALARM-OPEN', 1, 1, 1, '异常页测试大道1号',
|
|
|
+ now() - interval '1 hour', now() - interval '1 hour', '0'),
|
|
|
+ ('T6-ABN-TEST-EQ-ALARM-ORDERED', 1, 1, 1, '异常页测试大道2号',
|
|
|
+ now() - interval '2 hours', now() - interval '2 hours', '0'),
|
|
|
+ ('T6-ABN-TEST-EQ-REPAIR', 3, 0, 1, '异常页测试大道3号',
|
|
|
+ now() - interval '3 hours', now() - interval '3 hours', '0'),
|
|
|
+ ('T6-ABN-TEST-EQ-NORMAL-HIDDEN', 1, 0, 1, '异常页测试大道5号',
|
|
|
+ now() - interval '5 hours', now() - interval '5 hours', '0'),
|
|
|
+ ('T6-ABN-TEST-EQ-GAS-EXCLUDED', 1, 1, 1, '异常页测试大道6号',
|
|
|
+ now() - interval '6 hours', now() - interval '6 hours', '0');
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 4. 报警数据
|
|
|
+-- alarm_status=0 表示未处置/有效报警;alarm_status=1 表示已处理报警。
|
|
|
+-- ------------------------------------------------------------
|
|
|
+INSERT INTO app_user.alarm_data
|
|
|
+ (id, device_code, device_name, device_type, warning_type, warning_code,
|
|
|
+ min_value, max_value, actual_value, alarm_level, deviation_ratio,
|
|
|
+ alarm_status, alarm_time, handle_time, handle_user, handle_remark, remark,
|
|
|
+ create_time, update_time)
|
|
|
+VALUES
|
|
|
+ ('T6-ABN-TEST-ALARM-OPEN', 'CN-GS-202609050001', '异常页测试压力报警设备', '压力监测',
|
|
|
+ '供水压力超限', 'WARN-ABN-PRESSURE-OPEN', 0.20, 0.80, 1.20, 1, 50.00,
|
|
|
+ 0, now() - interval '1 hour', NULL, NULL, NULL, '设备异常管理测试数据',
|
|
|
+ now() - interval '1 hour', now() - interval '1 hour'),
|
|
|
+ ('T6-ABN-TEST-ALARM-ORDERED', 'CB-GS-202609050002', '异常页测试压力已派单设备', '压力监测',
|
|
|
+ '供水压力异常', 'WARN-ABN-PRESSURE-ORDERED', 0.20, 0.80, 0.95, 2, 18.75,
|
|
|
+ 0, now() - interval '2 hours', NULL, NULL, NULL, '设备异常管理测试数据',
|
|
|
+ now() - interval '2 hours', now() - interval '2 hours'),
|
|
|
+ ('T6-ABN-TEST-ALARM-NOSTATUS', 'CN-GS-202609050004', '异常页测试无状态报警设备', '漏失监测',
|
|
|
+ '供水漏失异常', 'WARN-ABN-LEAK-NOSTATUS', 0.00, 5.00, 8.00, 3, 60.00,
|
|
|
+ 0, now() - interval '3 hours', NULL, NULL, NULL, '设备异常管理测试数据',
|
|
|
+ now() - interval '3 hours', now() - interval '3 hours'),
|
|
|
+ ('T6-ABN-TEST-ALARM-NORMAL-RESOLVED', 'CB-GS-202609050005', '异常页测试正常隐藏设备', '流量监测',
|
|
|
+ '供水流量波动', 'WARN-ABN-FLOW-RESOLVED', 1.00, 10.00, 12.00, 4, 20.00,
|
|
|
+ 1, now() - interval '5 hours', now() - interval '4 hours', 'admin', '测试已处理报警',
|
|
|
+ '设备异常管理测试数据', now() - interval '5 hours', now() - interval '4 hours'),
|
|
|
+ ('T6-ABN-TEST-ALARM-GAS-EXCLUDED', 'CN-RQ-202609050006', '异常页测试燃气排除设备', '燃气监测',
|
|
|
+ '燃气浓度超限', 'WARN-ABN-GAS-EXCLUDED', 0.00, 20.00, 45.00, 1, 125.00,
|
|
|
+ 0, now() - interval '6 hours', NULL, NULL, NULL, '非供水设备排除测试数据',
|
|
|
+ now() - interval '6 hours', now() - interval '6 hours');
|
|
|
+
|
|
|
+-- ------------------------------------------------------------
|
|
|
+-- 5. 关联统一工单(order_type=1 表示故障维修)
|
|
|
+-- WO202609050001 为已结案工单,不应阻止报警设备重新派单。
|
|
|
+-- WO202609050002/003 为未结束工单,dispatchableOnly=true 时对应设备应被排除。
|
|
|
+-- ------------------------------------------------------------
|
|
|
+INSERT INTO app_user.work_order
|
|
|
+ (order_no, alarm_id, case_id, case_no, device_id, device_code,
|
|
|
+ order_type, order_level, order_desc, dept_id, dispatch_user, dispatch_time,
|
|
|
+ receive_user, order_status, delayed_reason, delayed_deadline, plan_finish_time,
|
|
|
+ real_finish_time, repair_result, maintenance_before_img, maintenance_after_img,
|
|
|
+ verify_user, verify_time, create_time, update_time)
|
|
|
+VALUES
|
|
|
+ ('WO202609050001', 'T6-ABN-TEST-ALARM-OPEN', NULL, NULL,
|
|
|
+ 'T6-ABN-TEST-EQ-ALARM-OPEN', 'CN-GS-202609050001',
|
|
|
+ 1, 1, '异常页测试历史已结案维修工单', NULL, NULL, now() - interval '55 minutes',
|
|
|
+ '1', 6, NULL, NULL, now() - interval '10 minutes',
|
|
|
+ now() - interval '15 minutes', '测试结案', NULL, NULL,
|
|
|
+ '1', now() - interval '12 minutes', now() - interval '55 minutes', now()),
|
|
|
+ ('WO202609050002', 'T6-ABN-TEST-ALARM-ORDERED', NULL, NULL,
|
|
|
+ 'T6-ABN-TEST-EQ-ALARM-ORDERED', 'CB-GS-202609050002',
|
|
|
+ 1, 2, '异常页测试压力报警处理中工单', NULL, NULL, now() - interval '110 minutes',
|
|
|
+ '2', 4, NULL, NULL, now() + interval '1 day',
|
|
|
+ NULL, NULL, NULL, NULL, NULL,
|
|
|
+ NULL, now() - interval '110 minutes', now()),
|
|
|
+ ('WO202609050003', NULL, NULL, NULL,
|
|
|
+ 'T6-ABN-TEST-EQ-REPAIR', 'TC-GS-202609050003',
|
|
|
+ 1, 3, '异常页测试流量设备维修中工单', NULL, NULL, now() - interval '3 hours',
|
|
|
+ '3', 4, NULL, NULL, now() + interval '2 days',
|
|
|
+ NULL, NULL, NULL, NULL, NULL,
|
|
|
+ NULL, now() - interval '3 hours', now());
|
|
|
+
|
|
|
+-- ============================================================
|
|
|
+-- 快速核验:
|
|
|
+-- 1. 设备异常管理页应显示 4 台供水设备:
|
|
|
+-- CN-GS-202609050001(供水压力超限,可派单)。
|
|
|
+-- CB-GS-202609050002(供水压力异常,已派单)。
|
|
|
+-- TC-GS-202609050003(设备维修中,已派单)。
|
|
|
+-- CN-GS-202609050004(供水漏失异常,无状态记录但有效报警,可派单)。
|
|
|
+-- 2. CB-GS-202609050005 不应显示:状态正常,且只有已处理报警。
|
|
|
+-- 3. TC-GS-202609050007 不应显示:无状态记录且无有效报警。
|
|
|
+-- 4. CN-RQ-202609050006 不应显示:属于非供水设备。
|
|
|
+-- 5. dispatchableOnly=true 时,只应返回
|
|
|
+-- CN-GS-202609050001 和 CN-GS-202609050004。
|
|
|
+-- ============================================================
|