为四类订单表(报修/安装/维保/勘察)新增人工费、材料费、距离、预计时长字段,新增订单池、我的订单、订单详情、接单、完成订单、收益汇总接口,新增数据库迁移脚本和演示数据,支撑电工APP订单管理闭环
118 lines
7.6 KiB
PL/PgSQL
118 lines
7.6 KiB
PL/PgSQL
-- ============================================================
|
||
-- 电工 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;
|