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

revenue_tables.sql 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. -- 营业收费系统表结构
  2. -- 客户信息表
  3. CREATE TABLE IF NOT EXISTS rev_customer (
  4. id BIGSERIAL PRIMARY KEY,
  5. customer_no VARCHAR(30) UNIQUE NOT NULL,
  6. customer_name VARCHAR(100) NOT NULL,
  7. customer_type VARCHAR(20) DEFAULT 'residential', -- residential/business/enterprise/institution
  8. area VARCHAR(50),
  9. address VARCHAR(300),
  10. phone VARCHAR(20),
  11. id_card VARCHAR(18),
  12. contract_no VARCHAR(50),
  13. status VARCHAR(20) DEFAULT 'active',
  14. created_at TIMESTAMP DEFAULT NOW(),
  15. updated_at TIMESTAMP DEFAULT NOW()
  16. );
  17. -- 水表档案表
  18. CREATE TABLE IF NOT EXISTS rev_meter (
  19. id BIGSERIAL PRIMARY KEY,
  20. meter_no VARCHAR(50) UNIQUE NOT NULL,
  21. customer_id BIGINT REFERENCES rev_customer(id),
  22. device_id BIGINT, -- 关联IoT设备
  23. caliber VARCHAR(10), -- DN15/DN20/DN40...
  24. meter_type VARCHAR(20), -- mechanical/ultrasonic/electromagnetic
  25. initial_reading DECIMAL(10,2),
  26. install_date DATE,
  27. status VARCHAR(20) DEFAULT 'active', -- active/dismantled/scrapped/repaired
  28. created_at TIMESTAMP DEFAULT NOW(),
  29. updated_at TIMESTAMP DEFAULT NOW()
  30. );
  31. -- 抄表记录表
  32. CREATE TABLE IF NOT EXISTS rev_reading (
  33. id BIGSERIAL PRIMARY KEY,
  34. meter_id BIGINT REFERENCES rev_meter(id),
  35. reading_date DATE NOT NULL,
  36. prev_reading DECIMAL(10,2),
  37. curr_reading DECIMAL(10,2),
  38. consumption DECIMAL(10,2), -- 用水量
  39. read_type VARCHAR(20), -- manual/remote/estimate
  40. reader_id BIGINT,
  41. photo_url VARCHAR(500),
  42. verified TINYINT DEFAULT 0,
  43. created_at TIMESTAMP DEFAULT NOW(),
  44. updated_at TIMESTAMP DEFAULT NOW()
  45. );
  46. -- 水费账单表
  47. CREATE TABLE IF NOT EXISTS rev_bill (
  48. id BIGSERIAL PRIMARY KEY,
  49. customer_id BIGINT REFERENCES rev_customer(id),
  50. bill_period VARCHAR(10) NOT NULL, -- 2026-06
  51. consumption DECIMAL(10,2),
  52. water_fee DECIMAL(10,2),
  53. sewage_fee DECIMAL(10,2),
  54. total_fee DECIMAL(10,2),
  55. paid_fee DECIMAL(10,2) DEFAULT 0,
  56. status VARCHAR(20) DEFAULT 'pending', -- pending/partial/paid/overdue
  57. due_date DATE,
  58. paid_at TIMESTAMP,
  59. created_at TIMESTAMP DEFAULT NOW(),
  60. updated_at TIMESTAMP DEFAULT NOW(),
  61. UNIQUE(customer_id, bill_period)
  62. );
  63. -- 报装申请表
  64. CREATE TABLE IF NOT EXISTS rev_install (
  65. id BIGSERIAL PRIMARY KEY,
  66. app_no VARCHAR(50) UNIQUE NOT NULL,
  67. customer_name VARCHAR(100) NOT NULL,
  68. phone VARCHAR(20) NOT NULL,
  69. area VARCHAR(50) NOT NULL,
  70. address VARCHAR(300) NOT NULL,
  71. customer_type VARCHAR(20) NOT NULL,
  72. caliber VARCHAR(10) NOT NULL,
  73. status VARCHAR(20) DEFAULT 'pre_apply', -- pre_apply/engineering/completed/terminated
  74. apply_time TIMESTAMP DEFAULT NOW(),
  75. complete_time TIMESTAMP,
  76. engineer_id BIGINT,
  77. remark TEXT,
  78. created_at TIMESTAMP DEFAULT NOW(),
  79. updated_at TIMESTAMP DEFAULT NOW()
  80. );
  81. -- 知识库字典类型
  82. INSERT INTO sys_dict_type (dict_key, dict_name, status, created_at) VALUES
  83. ('knowledge_base', '客服知识库', 1, NOW())
  84. ON CONFLICT (dict_key) DO NOTHING;
  85. -- 知识库字典数据
  86. INSERT INTO sys_dict_data (dict_type_id, dict_label, dict_value, dict_sort, status)
  87. VALUES (
  88. (SELECT id FROM sys_dict_type WHERE dict_key = 'knowledge_base'),
  89. '水费缴纳方式',
  90. '支持微信、支付宝、银行卡等多种缴费方式,可通过微信公众号、营业厅或自助终端缴纳。',
  91. 1,
  92. 1
  93. ),
  94. (
  95. (SELECT id FROM sys_dict_type WHERE dict_key = 'knowledge_base'),
  96. '水费计算规则',
  97. '水费 = 基本水费 + 超额水费 + 污水处理费。阶梯水价:第一级0-12m³/户,第二级12-24m³/户,第三级24m³以上/户。',
  98. 2,
  99. 1
  100. ),
  101. (
  102. (SELECT id FROM sys_dict_type WHERE dict_key = 'knowledge_base'),
  103. '报装流程',
  104. '1. 提交申请 2. 现场勘查 3. 方案制定 4. 工程施工 5. 验收通水 6. 资料归档。一般7-15个工作日完成。',
  105. 3,
  106. 1
  107. ),
  108. (
  109. (SELECT id FROM sys_dict_type WHERE dict_key = 'knowledge_base'),
  110. '水质问题处理',
  111. '如发现水质异常,请立即拨打客服热线400-123-4567,我们会安排工作人员24小时内上门处理。',
  112. 4,
  113. 1
  114. )
  115. ON CONFLICT (dict_value) DO NOTHING;
  116. -- 公告板字典类型
  117. INSERT INTO sys_dict_type (dict_key, dict_name, status, created_at) VALUES
  118. ('notice_water_stop', '停水公告', 1, NOW()),
  119. ('notice_water_quality', '水质公告', 1, NOW()),
  120. ('notice_service', '服务通知', 1, NOW())
  121. ON CONFLICT (dict_key) DO NOTHING;
  122. -- 示例停水公告
  123. INSERT INTO sys_dict_data (dict_type_id, dict_label, dict_value, created_at)
  124. VALUES (
  125. (SELECT id FROM sys_dict_type WHERE dict_key = 'notice_water_stop'),
  126. '精芒片区计划停水通知',
  127. '因管道维修,精芒片区将于2026年6月15日9:00-17:00停水,请提前储水。'
  128. ) ON CONFLICT (dict_value) DO NOTHING;
  129. INSERT INTO sys_dict_data (dict_type_id, dict_label, dict_value, created_at)
  130. VALUES (
  131. (SELECT id FROM sys_dict_type WHERE dict_key = 'notice_service'),
  132. '营业厅服务时间调整',
  133. '精河营业厅周末服务时间调整为9:00-17:00,欢迎大家前来办理业务。'
  134. ) ON CONFLICT (dict_value) DO NOTHING;
  135. -- 示例数据
  136. -- 创建一些测试客户
  137. INSERT INTO rev_customer (customer_no, customer_name, phone, area, address) VALUES
  138. ('C001', '张三', '13812345678', '精芒片区', '精河县精芒街道123号'),
  139. ('C002', '李四', '13987654321', '托里片区', '精河县托里路456号'),
  140. ('C003', '王五', '13555666777', '八家户片区', '精河县八家户街789号')
  141. ON CONFLICT (customer_no) DO NOTHING;
  142. -- 创建测试水表
  143. INSERT INTO rev_meter (meter_no, customer_id, caliber, meter_type, install_date) VALUES
  144. ('M001', 1, 'DN15', 'mechanical', '2025-01-01'),
  145. ('M002', 2, 'DN20', 'electromagnetic', '2025-02-01'),
  146. ('M003', 3, 'DN15', 'ultrasonic', '2025-03-01')
  147. ON CONFLICT (meter_no) DO NOTHING;
  148. -- 创建测试抄表记录
  149. INSERT INTO rev_reading (meter_id, reading_date, prev_reading, curr_reading, consumption, read_type) VALUES
  150. (1, '2026-05-01', 1000.00, 1100.00, 100.00, 'remote'),
  151. (2, '2026-05-01', 2000.00, 2100.00, 100.00, 'manual'),
  152. (3, '2026-05-01', 3000.00, 3200.00, 200.00, 'remote')
  153. ON CONFLICT (id) DO NOTHING;
  154. -- 创建测试账单
  155. INSERT INTO rev_bill (customer_id, bill_period, consumption, water_fee, sewage_fee, total_fee, status, due_date) VALUES
  156. (1, '2026-05', 100.00, 45.00, 15.00, 60.00, 'pending', '2026-06-20'),
  157. (2, '2026-05', 100.00, 45.00, 15.00, 60.00, 'paid', '2026-06-15'),
  158. (3, '2026-05', 200.00, 90.00, 30.00, 120.00, 'overdue', '2026-06-10')
  159. ON CONFLICT (id) DO NOTHING;
  160. -- 创建测试报装申请
  161. INSERT INTO rev_install (app_no, customer_name, phone, area, address, customer_type, caliber, status) VALUES
  162. ('A001', '赵六', '13666777888', '大镇阿合其片区', '精河县大镇路999号', 'residential', 'DN15', 'completed'),
  163. ('A002', '钱七', '13777888999', '托托片区', '精河县托托街111号', 'business', 'DN20', 'engineering')
  164. ON CONFLICT (app_no) DO NOTHING;