Files
smart_grid_iot/database/seed_worker_app_orders.sql
T
andyesfly 91aa3c06f0 feat: 新增电工APP订单相关功能及数据库扩展
为四类订单表(报修/安装/维保/勘察)新增人工费、材料费、距离、预计时长字段,新增订单池、我的订单、订单详情、接单、完成订单、收益汇总接口,新增数据库迁移脚本和演示数据,支撑电工APP订单管理闭环
2026-10-04 09:26:59 +08:00

118 lines
7.6 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 电工 APP(VoltLink)订单池演示数据
--
-- 依赖:
-- 1) db_init.sql 基础表结构
-- 2) 20261003_worker_app_orders.sql 报价/距离/时长等展示字段
--
-- 用法:
-- psql -U postgres -d xintong -f database/seed_worker_app_orders.sql
--
-- 特性:
-- - 独立事务(BEGIN/COMMIT)
-- - 幂等可重复执行:全部使用「固定业务单号 + ON CONFLICT DO NOTHING」
-- - 不写死主键,id 均由序列自增
-- - 生成「未被任何电工接单」的订单池数据:报修 3 / 安装 2 / 维保 2 / 勘察 2
-- ============================================================
BEGIN;
-- ------------------------------------------------------------
-- 1. 演示客户(customer_no 唯一,作为全部演示订单的归属客户)
-- ------------------------------------------------------------
INSERT INTO customer (customer_no, customer_name, province, city, district, address, contact_person, contact_phone, customer_level, status)
VALUES ('KH-DEMO-0001', '示例智电科技园', '江苏省', '南京市', '江宁区', '江宁区智汇路 88 号', '张工', '13800000000', '企业', 3)
ON CONFLICT (customer_no) DO NOTHING;
-- ------------------------------------------------------------
-- 2. 演示方案(install_order.plan_id 为必填外键,需保证存在可引用的 project_plan)
-- 优先保证存在一条固定的演示方案;install_order 插入时再兜底取「任意已存在的方案」
-- ------------------------------------------------------------
INSERT INTO project_plan (plan_no, customer_id, registrar, register_time, plan_desc, status)
SELECT 'FA-DEMO-0001', c.id, '演示业务员', CURRENT_DATE, '电工 APP 订单池演示方案(自动生成)', 1
FROM customer c
WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (plan_no) DO NOTHING;
-- ------------------------------------------------------------
-- 3. 报修单(status=0 待处理,进入订单池)—— 3 条,金额各不相同
-- ------------------------------------------------------------
INSERT INTO repair_request
(repair_no, customer_id, requester, requester_phone, request_time, location, repair_content, photos, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'BX-DEMO-0001', c.id, '张工', '13800000001', NOW() - INTERVAL '2 hour', 'A 栋 3 层配电间',
'配电箱空开频繁跳闸,怀疑线路过载,请尽快上门排查处理', '[]'::jsonb, 0, 150.00, 80.00, 5.20, '1 - 1.5 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (repair_no) DO NOTHING;
INSERT INTO repair_request
(repair_no, customer_id, requester, requester_phone, request_time, location, repair_content, photos, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'BX-DEMO-0002', c.id, '李主管', '13800000002', NOW() - INTERVAL '5 hour', 'B 栋 1 层强电井',
'楼层照明回路部分失电,需检测并更换损坏断路器', '[]'::jsonb, 0, 260.00, 120.00, 12.40, '2 - 3 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (repair_no) DO NOTHING;
INSERT INTO repair_request
(repair_no, customer_id, requester, requester_phone, request_time, location, repair_content, photos, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'BX-DEMO-0003', c.id, '王工', '13800000003', NOW() - INTERVAL '30 minute', 'C 栋 2 层办公室',
'插座无电,需排查线路并更换面板', '[]'::jsonb, 0, 90.00, 35.00, 3.10, '1 小时以内'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (repair_no) DO NOTHING;
-- ------------------------------------------------------------
-- 4. 安装派单(worker_id 为空,status=0 已派发,进入订单池)—— 2 条
-- plan_id 优先取已存在的任意方案,其次回退到演示方案
-- ------------------------------------------------------------
INSERT INTO install_order
(install_no, customer_id, installer, worker_id, dispatch_date, start_date, end_date, plan_id, remark, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'AZ-DEMO-0001', c.id, NULL, NULL, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE + 3,
COALESCE((SELECT id FROM project_plan ORDER BY id LIMIT 1), (SELECT id FROM project_plan WHERE plan_no = 'FA-DEMO-0001')),
'智能电表安装 12 台,含桥架布线', 0, 480.00, 260.00, 12.50, '4 - 6 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (install_no) DO NOTHING;
INSERT INTO install_order
(install_no, customer_id, installer, worker_id, dispatch_date, start_date, end_date, plan_id, remark, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'AZ-DEMO-0002', c.id, NULL, NULL, CURRENT_DATE + 1, CURRENT_DATE + 1, CURRENT_DATE + 2,
COALESCE((SELECT id FROM project_plan ORDER BY id LIMIT 1), (SELECT id FROM project_plan WHERE plan_no = 'FA-DEMO-0001')),
'智能网关与采集器安装调试 3 套', 0, 320.00, 180.00, 6.80, '3 - 4 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (install_no) DO NOTHING;
-- ------------------------------------------------------------
-- 5. 维保派单(worker_id 为空,status=0 已派发,进入订单池)—— 2 条
-- ------------------------------------------------------------
INSERT INTO maintenance_order
(maintenance_no, customer_id, maintainer, worker_id, maintenance_date, remark, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'WB-DEMO-0001', c.id, NULL, NULL, CURRENT_DATE + 2,
'季度维保:配电柜除尘、紧固、绝缘检测', 0, 200.00, 60.00, 8.30, '2 - 3 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (maintenance_no) DO NOTHING;
INSERT INTO maintenance_order
(maintenance_no, customer_id, maintainer, worker_id, maintenance_date, remark, status, labor_fee, material_fee, distance, estimated_duration)
SELECT 'WB-DEMO-0002', c.id, NULL, NULL, CURRENT_DATE + 5,
'年度维保:变压器巡检与接地电阻测试', 0, 180.00, 40.00, 15.60, '2 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (maintenance_no) DO NOTHING;
-- ------------------------------------------------------------
-- 6. 勘察派单(worker_id 为空,status=0 待指派,is_draft=0,进入订单池)—— 2 条
-- 金额复用 estimated_fee / actual_fee,不新增费用列
-- ------------------------------------------------------------
INSERT INTO survey_order
(survey_no, customer_id, surveyor, worker_id, survey_time, priority, task_title, site_location, source, tech_contact,
plan_start, plan_end, is_draft, estimated_fee, actual_fee, photos, remark, status, distance, estimated_duration)
SELECT 'KC-DEMO-0001', c.id, NULL, NULL, NOW(), 3, '新增大功率充电桩勘察', 'C 栋地下车库', 'ledger', '13800000002',
NOW() + INTERVAL '1 day', NOW() + INTERVAL '1 day 2 hour', 0, 260.00, NULL, '[]', '需评估配电容量与布线路径', 0, 8.30, '2 - 3 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (survey_no) DO NOTHING;
INSERT INTO survey_order
(survey_no, customer_id, surveyor, worker_id, survey_time, priority, task_title, site_location, source, tech_contact,
plan_start, plan_end, is_draft, estimated_fee, actual_fee, photos, remark, status, distance, estimated_duration)
SELECT 'KC-DEMO-0002', c.id, NULL, NULL, NOW(), 3, '配电房扩容勘察', 'A 栋 1 层配电房', 'ledger', '13800000003',
NOW() + INTERVAL '2 day', NOW() + INTERVAL '2 day 2 hour', 0, 180.00, NULL, '[]', '需确认扩容后回路数与母线规格', 0, 4.60, '1.5 - 2 小时'
FROM customer c WHERE c.customer_no = 'KH-DEMO-0001'
ON CONFLICT (survey_no) DO NOTHING;
COMMIT;