20260924_data_file_sync.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. -- 20260917 增加气象、功率文件数据同步任务 (aicoding/2026091706)
  2. -- 可重复执行
  3. -- -----------------------------------------------------
  4. -- 1. 待处理文件表 data_file_sync_files
  5. -- -----------------------------------------------------
  6. CREATE TABLE IF NOT EXISTS data_file_sync_files (
  7. id SERIAL NOT NULL,
  8. type VARCHAR(64),
  9. file VARCHAR(1024) NOT NULL,
  10. status INTEGER NOT NULL DEFAULT 0,
  11. handler VARCHAR(255),
  12. create_time TIMESTAMP NOT NULL DEFAULT now(),
  13. update_time TIMESTAMP NOT NULL DEFAULT now(),
  14. fail_reason VARCHAR(1024),
  15. process_times INTEGER NOT NULL DEFAULT 0,
  16. priority INTEGER NOT NULL DEFAULT 3,
  17. CONSTRAINT pk_data_file_sync_files PRIMARY KEY (id)
  18. );
  19. -- 文件路径查重保险(扫描任务按 file 去重插入)
  20. CREATE UNIQUE INDEX IF NOT EXISTS uk_data_file_sync_files_file ON data_file_sync_files (file);
  21. COMMENT ON TABLE data_file_sync_files IS '待处理数据文件同步';
  22. COMMENT ON COLUMN data_file_sync_files.id IS '唯一标识';
  23. COMMENT ON COLUMN data_file_sync_files.type IS '类型';
  24. COMMENT ON COLUMN data_file_sync_files.file IS '文件(完整路径)';
  25. COMMENT ON COLUMN data_file_sync_files.status IS '状态(0待处理,1处理中,2完成,99失败,-1取消)';
  26. COMMENT ON COLUMN data_file_sync_files.handler IS '处理器bean名称';
  27. COMMENT ON COLUMN data_file_sync_files.create_time IS '创建时间';
  28. COMMENT ON COLUMN data_file_sync_files.update_time IS '更新时间';
  29. COMMENT ON COLUMN data_file_sync_files.fail_reason IS '失败原因';
  30. COMMENT ON COLUMN data_file_sync_files.process_times IS '处理次数';
  31. COMMENT ON COLUMN data_file_sync_files.priority IS '优先级';
  32. -- -----------------------------------------------------
  33. -- 2. 字典配置项 data_file_sync_config
  34. -- dict_value 存整个 JSON 数组: [{scanFolder, updateInterval, handler, type?}]
  35. -- 例: [{"scanFolder":"/data/weather","updateInterval":12,"handler":"weatherFileSyncHandler","type":"weather"}]
  36. -- -----------------------------------------------------
  37. -- JSON 数组配置可能超过 dict_value 原长度(VARCHAR(100)), 扩容(可重复执行)
  38. ALTER TABLE sys_dict_data ALTER COLUMN dict_value TYPE VARCHAR(2000);
  39. INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, status, create_by, create_time, remark)
  40. SELECT
  41. nextval(pg_get_serial_sequence('sys_dict_type', 'dict_id')),
  42. '数据文件同步配置', 'data_file_sync_config', '0', 'admin', now(), '气象、功率数据文件同步扫描目录配置'
  43. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type t WHERE t.dict_type = 'data_file_sync_config');
  44. INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
  45. SELECT
  46. nextval(pg_get_serial_sequence('sys_dict_data', 'dict_code')),
  47. 1, '文件同步配置', '[]', 'data_file_sync_config', '', '', 'Y', '0', 'admin', now(), 'JSON数组, 每项含 scanFolder/updateInterval/handler, type可选'
  48. WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data t WHERE t.dict_type = 'data_file_sync_config');