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

V3__workorder.sql 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. -- =============================================
  2. -- 智慧水务管理系统 - 综合工单管理 DDL
  3. -- 版本: V3
  4. -- 描述: 工单创建/分派/处理/完成/统计
  5. -- =============================================
  6. -- ==================== 工单主表 ====================
  7. CREATE TABLE IF NOT EXISTS dispatch_work_order (
  8. id BIGSERIAL PRIMARY KEY,
  9. order_no VARCHAR(50) UNIQUE NOT NULL,
  10. title VARCHAR(200) NOT NULL,
  11. description TEXT,
  12. type VARCHAR(30) NOT NULL DEFAULT 'REPAIR', -- REPAIR/INSPECTION/COMPLAINT/EMERGENCY
  13. priority VARCHAR(20) NOT NULL DEFAULT 'MEDIUM', -- LOW/MEDIUM/HIGH/URGENT
  14. status INT NOT NULL DEFAULT 0, -- 0:待办 1:已分派 2:处理中 4:已完成 5:已驳回 6:已取消
  15. assignee_id BIGINT,
  16. assignee_name VARCHAR(50),
  17. creator_id BIGINT,
  18. creator_name VARCHAR(50),
  19. source VARCHAR(50), -- 来源: manual/phone/app/alert
  20. facility_id BIGINT,
  21. location VARCHAR(500),
  22. longitude DOUBLE PRECISION,
  23. latitude DOUBLE PRECISION,
  24. attachments TEXT, -- JSON数组
  25. deadline TIMESTAMP,
  26. assigned_at TIMESTAMP,
  27. started_at TIMESTAMP,
  28. completed_at TIMESTAMP,
  29. result TEXT,
  30. reject_reason TEXT,
  31. remark TEXT,
  32. deleted SMALLINT DEFAULT 0,
  33. created_at TIMESTAMP DEFAULT NOW(),
  34. updated_at TIMESTAMP DEFAULT NOW()
  35. );
  36. COMMENT ON TABLE dispatch_work_order IS '工单主表';
  37. COMMENT ON COLUMN dispatch_work_order.type IS '工单类型: REPAIR(维修)/INSPECTION(巡检)/COMPLAINT(投诉)/EMERGENCY(应急)';
  38. COMMENT ON COLUMN dispatch_work_order.priority IS '优先级: LOW/MEDIUM/HIGH/URGENT';
  39. COMMENT ON COLUMN dispatch_work_order.status IS '状态: 0待办/1已分派/2处理中/4已完成/5已驳回/6已取消';
  40. CREATE INDEX IF NOT EXISTS idx_wo_order_no ON dispatch_work_order(order_no);
  41. CREATE INDEX IF NOT EXISTS idx_wo_status ON dispatch_work_order(status);
  42. CREATE INDEX IF NOT EXISTS idx_wo_type ON dispatch_work_order(type);
  43. CREATE INDEX IF NOT EXISTS idx_wo_assignee ON dispatch_work_order(assignee_id);
  44. CREATE INDEX IF NOT EXISTS idx_wo_creator ON dispatch_work_order(creator_id);
  45. CREATE INDEX IF NOT EXISTS idx_wo_created_at ON dispatch_work_order(created_at);
  46. -- ==================== 工单处理日志 ====================
  47. CREATE TABLE IF NOT EXISTS dispatch_work_order_log (
  48. id BIGSERIAL PRIMARY KEY,
  49. work_order_id BIGINT NOT NULL REFERENCES dispatch_work_order(id),
  50. order_no VARCHAR(50),
  51. stage VARCHAR(30),
  52. from_status INT,
  53. to_status INT,
  54. operator_id BIGINT,
  55. operator_name VARCHAR(50),
  56. action_desc TEXT,
  57. attachments TEXT,
  58. created_at TIMESTAMP DEFAULT NOW()
  59. );
  60. COMMENT ON TABLE dispatch_work_order_log IS '工单处理日志';
  61. CREATE INDEX IF NOT EXISTS idx_wolog_wo_id ON dispatch_work_order_log(work_order_id);
  62. CREATE INDEX IF NOT EXISTS idx_wolog_order_no ON dispatch_work_order_log(order_no);
  63. -- ==================== 工单分派记录 ====================
  64. CREATE TABLE IF NOT EXISTS dispatch_work_order_assignment (
  65. id BIGSERIAL PRIMARY KEY,
  66. work_order_id BIGINT NOT NULL REFERENCES dispatch_work_order(id),
  67. order_no VARCHAR(50),
  68. assigner_id BIGINT,
  69. assigner_name VARCHAR(50),
  70. assignee_id BIGINT,
  71. assignee_name VARCHAR(50),
  72. role VARCHAR(20) NOT NULL DEFAULT 'PRIMARY', -- PRIMARY/ASSISTANT
  73. assignment_note TEXT,
  74. assignment_type VARCHAR(20) DEFAULT 'MANUAL', -- MANUAL/AUTO
  75. status INT DEFAULT 1, -- 1:活跃 0:已移除
  76. created_at TIMESTAMP DEFAULT NOW(),
  77. updated_at TIMESTAMP DEFAULT NOW()
  78. );
  79. COMMENT ON TABLE dispatch_work_order_assignment IS '工单分派记录(支持多人协作)';
  80. CREATE INDEX IF NOT EXISTS idx_woassign_wo_id ON dispatch_work_order_assignment(work_order_id);
  81. CREATE INDEX IF NOT EXISTS idx_woassign_assignee ON dispatch_work_order_assignment(assignee_id);