alter_auto_dispatch_schema.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. -- ============================================
  2. -- 自动分派功能 - 数据库扩改动议脚本(达梦 DM8)
  3. -- 执行前请备份当前数据!
  4. -- ============================================
  5. -- ====================================================
  6. -- 1. complaint_workorder 表扩展现有结构
  7. -- ====================================================
  8. COMMENT ON COLUMN complaint_workorder.status IS '状态:-1 待分派 0 待受理 1 处理中 2 已办结 3 已驳回 5 复核中';
  9. -- 扩展字段 1: 系统分派备注(记录自动分派信息)
  10. ALTER TABLE complaint_workorder ADD dispatch_note VARCHAR(200);
  11. COMMENT ON COLUMN complaint_workorder.dispatch_note IS '系统分派备注';
  12. -- 扩展字段 2: 是否已归档(新增列)
  13. ALTER TABLE complaint_workorder ADD is_archived CHAR(1) DEFAULT '0';
  14. COMMENT ON COLUMN complaint_workorder.is_archived IS '是否已归档(0 否 1 是)';
  15. -- 扩展字段 3: 归档时间(新增列)
  16. ALTER TABLE complaint_workorder ADD archive_time TIMESTAMP;
  17. COMMENT ON COLUMN complaint_workorder.archive_time IS '归档时间(T+90 天后填充)';
  18. -- ====================================================
  19. -- 2. 创建投诉工单归档表(物理隔离历史数据)
  20. -- ====================================================
  21. DROP TABLE IF EXISTS complaint_archive;
  22. CREATE TABLE complaint_archive (
  23. id BIGINT NOT NULL IDENTITY(1,1),
  24. complaint_no VARCHAR(32) NOT NULL,
  25. openid VARCHAR(64) DEFAULT '',
  26. name VARCHAR(30) DEFAULT '',
  27. phone VARCHAR(11) DEFAULT '',
  28. "identity" VARCHAR(10) DEFAULT '',
  29. city VARCHAR(30) DEFAULT '',
  30. district VARCHAR(30) DEFAULT '',
  31. unit_uid VARCHAR(64) DEFAULT '',
  32. school_name VARCHAR(100) DEFAULT '',
  33. school_type VARCHAR(20) DEFAULT '',
  34. category VARCHAR(30) DEFAULT '',
  35. content VARCHAR(1000) DEFAULT '',
  36. images VARCHAR(2000) DEFAULT '',
  37. status TINYINT DEFAULT 2,
  38. investigation VARCHAR(2000) DEFAULT '',
  39. conclusion VARCHAR(2000) DEFAULT '',
  40. process_images VARCHAR(2000) DEFAULT '',
  41. reject_reason VARCHAR(1000) DEFAULT '',
  42. accept_time TIMESTAMP,
  43. close_time TIMESTAMP,
  44. create_by VARCHAR(64) DEFAULT '',
  45. create_time TIMESTAMP,
  46. update_by VARCHAR(64) DEFAULT '',
  47. update_time TIMESTAMP,
  48. remark VARCHAR(500) DEFAULT '',
  49. original_submit_time TIMESTAMP NOT NULL,
  50. archive_time TIMESTAMP NOT NULL,
  51. PRIMARY KEY (id)
  52. );
  53. COMMENT ON TABLE complaint_archive IS '投诉工单归档表(T+90 天自动迁移)';
  54. COMMENT ON COLUMN complaint_archive.original_submit_time IS '原始提交时间(查询优化用)';
  55. COMMENT ON COLUMN complaint_archive.archive_time IS '归档操作时间';
  56. -- 归档表索引优化
  57. CREATE INDEX idx_archive_no ON complaint_archive (complaint_no);
  58. CREATE INDEX idx_archive_unit ON complaint_archive (unit_uid);
  59. CREATE INDEX idx_archive_status ON complaint_archive (status);
  60. CREATE INDEX idx_archive_create ON complaint_archive (original_submit_time);
  61. -- ====================================================
  62. -- 3. 重复检测辅助视图(提升查询性能)
  63. -- ====================================================
  64. DROP VIEW IF EXISTS v_recent_complaints;
  65. CREATE VIEW v_recent_complaints AS
  66. SELECT
  67. phone,
  68. unit_uid,
  69. LEFT(content, 50) AS content_snippet,
  70. create_time,
  71. complaint_no
  72. FROM complaint_workorder
  73. WHERE del_flag = '0' AND create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY);
  74. -- ====================================================
  75. -- 4. 校验检查点(防止字段已存在)
  76. -- ====================================================
  77. SELECT
  78. CASE WHEN COUNT(*) > 0 THEN '⚠️ dispatch_note 字段已存在' ELSE '✓ dispatch_note 字段不存在' END as check1
  79. FROM syscolumns WHERE name = 'dispatch_note';
  80. SELECT
  81. CASE WHEN COUNT(*) > 0 THEN '⚠️ is_archived 字段已存在' ELSE '✓ is_archived 字段不存在' END as check2
  82. FROM syscolumns WHERE name = 'is_archived';
  83. SELECT
  84. CASE WHEN COUNT(*) > 0 THEN '✓ complaint_archive 表已存在' ELSE '✗ complaint_archive 表不存在' END as check3
  85. FROM sysschema s, sysobjects o WHERE s.schemaid = o.schemaid AND o.name = 'complaint_archive';
  86. -- ====================================================
  87. -- 结束
  88. -- ====================================================
  89. COMMIT;