智慧水务管理系统 - 精河县供水工程综合管理平台

V3__meter_reading.sql 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. -- =============================================
  2. -- 远传集抄模块 DDL
  3. -- 批量抄表 + 大表监控(DN80+) + 任务管理 + 数据质量
  4. -- =============================================
  5. -- 抄表任务
  6. CREATE TABLE IF NOT EXISTS mr_task (
  7. id BIGSERIAL PRIMARY KEY,
  8. task_no VARCHAR(30) UNIQUE NOT NULL,
  9. task_name VARCHAR(200) NOT NULL,
  10. task_type VARCHAR(20) NOT NULL, -- batch_read / large_monitor / manual_check
  11. area VARCHAR(50),
  12. meter_count INT DEFAULT 0,
  13. success_count INT DEFAULT 0,
  14. fail_count INT DEFAULT 0,
  15. abnormal_count INT DEFAULT 0,
  16. progress SMALLINT DEFAULT 0, -- 0-100
  17. status VARCHAR(20) DEFAULT 'pending', -- pending / running / completed / failed / cancelled
  18. scheduled_time TIMESTAMP,
  19. started_at TIMESTAMP,
  20. completed_at TIMESTAMP,
  21. assigned_to VARCHAR(50),
  22. remark VARCHAR(500),
  23. deleted SMALLINT DEFAULT 0,
  24. created_at TIMESTAMP DEFAULT NOW(),
  25. updated_at TIMESTAMP DEFAULT NOW()
  26. );
  27. COMMENT ON TABLE mr_task IS '抄表任务表';
  28. CREATE INDEX IF NOT EXISTS idx_mr_task_status ON mr_task(status);
  29. -- 远传抄表记录
  30. CREATE TABLE IF NOT EXISTS mr_meter_reading (
  31. id BIGSERIAL PRIMARY KEY,
  32. task_id BIGINT REFERENCES mr_task(id),
  33. meter_id BIGINT NOT NULL,
  34. meter_no VARCHAR(50) NOT NULL,
  35. device_sn VARCHAR(50),
  36. prev_reading DECIMAL(12,2),
  37. curr_reading DECIMAL(12,2),
  38. consumption DECIMAL(12,2),
  39. reading_time TIMESTAMP NOT NULL,
  40. reading_period VARCHAR(10), -- 2026-06
  41. signal_strength SMALLINT, -- 信号强度 0-100
  42. battery_level SMALLINT, -- 电池电量 0-100
  43. read_status VARCHAR(20) DEFAULT 'success', -- success / failed / timeout / abnormal
  44. abnormal_type VARCHAR(50), -- reverse_flow / over_range / stuck / low_battery / signal_lost
  45. abnormal_desc VARCHAR(500),
  46. verified SMALLINT DEFAULT 0,
  47. verified_by BIGINT,
  48. verified_at TIMESTAMP,
  49. deleted SMALLINT DEFAULT 0,
  50. created_at TIMESTAMP DEFAULT NOW(),
  51. updated_at TIMESTAMP DEFAULT NOW()
  52. );
  53. COMMENT ON TABLE mr_meter_reading IS '远传抄表记录表';
  54. CREATE INDEX IF NOT EXISTS idx_mr_reading_task ON mr_meter_reading(task_id);
  55. CREATE INDEX IF NOT EXISTS idx_mr_reading_meter ON mr_meter_reading(meter_id);
  56. CREATE INDEX IF NOT EXISTS idx_mr_reading_period ON mr_meter_reading(reading_period);
  57. -- 大表监控记录 (DN80+)
  58. CREATE TABLE IF NOT EXISTS mr_large_meter_monitor (
  59. id BIGSERIAL PRIMARY KEY,
  60. meter_id BIGINT NOT NULL,
  61. meter_no VARCHAR(50) NOT NULL,
  62. caliber VARCHAR(10) NOT NULL, -- DN80/DN100/DN150/DN200/DN300/DN400
  63. customer_name VARCHAR(100),
  64. area VARCHAR(50),
  65. instant_flow DECIMAL(12,4), -- 瞬时流量 m³/h
  66. cumulative_flow DECIMAL(12,2), -- 累计流量 m³
  67. pressure DECIMAL(8,4), -- 压力 MPa
  68. flow_direction SMALLINT DEFAULT 1, -- 1:正向 -1:反向
  69. temperature DECIMAL(6,2), -- 水温 ℃
  70. monitor_time TIMESTAMP NOT NULL,
  71. status VARCHAR(20) DEFAULT 'normal', -- normal / warning / alarm / offline
  72. alarm_type VARCHAR(50), -- over_flow / reverse_flow / pressure_low / pressure_high / offline
  73. alarm_desc VARCHAR(500),
  74. deleted SMALLINT DEFAULT 0,
  75. created_at TIMESTAMP DEFAULT NOW(),
  76. updated_at TIMESTAMP DEFAULT NOW()
  77. );
  78. COMMENT ON TABLE mr_large_meter_monitor IS '大表监控记录表(DN80+)';
  79. CREATE INDEX IF NOT EXISTS idx_mr_large_meter ON mr_large_meter_monitor(meter_id);
  80. CREATE INDEX IF NOT EXISTS idx_mr_large_time ON mr_large_meter_monitor(monitor_time);
  81. CREATE INDEX IF NOT EXISTS idx_mr_large_status ON mr_large_meter_monitor(status);
  82. -- 数据质量分析
  83. CREATE TABLE IF NOT EXISTS mr_data_quality (
  84. id BIGSERIAL PRIMARY KEY,
  85. analysis_period VARCHAR(10) NOT NULL, -- 2026-06
  86. area VARCHAR(50),
  87. total_meters INT DEFAULT 0,
  88. read_success INT DEFAULT 0,
  89. read_failed INT DEFAULT 0,
  90. read_timeout INT DEFAULT 0,
  91. abnormal_count INT DEFAULT 0,
  92. read_rate DECIMAL(6,2), -- 抄表率 %
  93. success_rate DECIMAL(6,2), -- 成功率 %
  94. abnormal_rate DECIMAL(6,2), -- 异常率 %
  95. avg_signal DECIMAL(6,2), -- 平均信号强度
  96. avg_battery DECIMAL(6,2), -- 平均电池电量
  97. quality_score DECIMAL(6,2), -- 数据质量评分 0-100
  98. quality_level VARCHAR(10), -- excellent / good / fair / poor
  99. detail JSONB, -- 详细分析数据
  100. deleted SMALLINT DEFAULT 0,
  101. created_at TIMESTAMP DEFAULT NOW(),
  102. updated_at TIMESTAMP DEFAULT NOW()
  103. );
  104. COMMENT ON TABLE mr_data_quality IS '抄表数据质量分析表';
  105. CREATE INDEX IF NOT EXISTS idx_mr_quality_period ON mr_data_quality(analysis_period);