_合并分析报告.md 11 KB

六项机制(ROHS) 与 安监(slaj) 数据库合并分析报告

分析时间:2026-07-10

一、总体概况

项目 数量
ROHS SQL文件表总数 203
ROHS 真实业务表 174
ROHS 备份/MV/日志表(排除) 29
安监 slaj schema 表总数 3,234
两库重叠表 72
ROHS独有表(安监中不存在) 102
安监独有表(ROHS中不存在) 3,162

二、重叠表分析

2.1 完全一致(28张)— 可直接兼容

这28张表字段名称和类型完全一致,仅存在 PostgreSQL 类型名写法差异(如 CHAR(32) vs BPCHAR、VARCHAR(100) vs VARCHAR、DECIMAL vs NUMERIC),这些在 PostgreSQL 中是同义词,不影响兼容性。

ROHS表 安监表 列数
ATT_ENG_CWS att_eng_cws 31
ATT_ENG_DIKE att_eng_dike 38
ATT_ENG_HYST att_eng_hyst 39
ATT_ENG_IRR att_eng_irr 42
ATT_ENG_OTHE att_eng_othe 30
ATT_ENG_PUST att_eng_pust 34
ATT_ENG_RES att_eng_res 42
ATT_ENG_SD att_eng_sd 31
ATT_ENG_WADI att_eng_wadi 34
ATT_ENG_WAGA att_eng_waga 33
ATT_MED_BASE att_med_base 22
ATT_ORG_UWAT_EXT att_org_uwat_ext 66
BIS_ACCI_EXP_REP bis_acci_exp_rep 8
BIS_ACCI_INVE bis_acci_inve 10
BIS_ACCI_PROG bis_acci_prog 7
BIS_ACCI_REC_REP bis_acci_rec_rep 10
BIS_ENG_SARE bis_eng_sare 24
BIS_HIDD_MAJ_VERI bis_hidd_maj_veri 11
BIS_HIDD_RECT_PROG bis_hidd_rect_prog 7
BIS_HIDD_REC_REP bis_hidd_rec_rep 10
BIS_MAJ_HIDD_SUP bis_maj_hidd_sup 13
HAZARD_SOURCE hazard_source 18
OBJ_SE obj_se 10
T_BUSI_PLAN_DISCLOSURE t_busi_plan_disclosure 11
T_DICT_MAJOR_BUILDING t_dict_major_building 13
T_DICT_MAJOR_COMMON t_dict_major_common 15
T_DICT_MAJOR_ED t_dict_major_ed 12
T_DICT_MAJOR_SOURCE t_dict_major_source 14

2.2 有差异需要处理(44张)

差异分为以下几类:

A. STR_TO_DATE ↔ TO_DATE 列名差异(11张表)

ROHS 使用 STR_TO_DATE 作为时间戳列,安监使用 TO_DATE。这是同一个字段的不同命名,合并时需统一。

涉及表:ATT_ENG_BASE、ATT_ORG_BASE、ATT_ORG_UWAT_BASE、OBJ_ACCI、OBJ_ENG、OBJ_HIDD、OBJ_TEND、REL_BIS_MED、REL_ENG_ORG、REL_ENG_ORG_UWAT、REL_PROJ_ORG、REL_TEND_ORG、REL_USER_TEND、T_BUSI_RISK_THRESHOLD

B. TIMESTAMP ↔ DATE 类型差异(约15张表)

ROHS 使用 TIMESTAMP 类型,安监使用 DATE 类型。这是精密度的差异:

  • TIMESTAMP 存储到秒/毫秒级别
  • DATE 只存储到日期级别

涉及字段:START_DATE, COMP_DATE, CREATE_TIME, UPDATE_TIME, BORN_DATE 等

注意:如果安监现有的数据没有时间部分,升级为 TIMESTAMP 是安全的(向下兼容)。

涉及表:ATT_ENG_BASE、ATT_PERS_BASE、ATT_PERS_EXT、OBJ_HAZARD、T_BUSI_CONTROL_MEASURE、T_BUSI_CONTROL_TERM、T_BUSI_HAZARD_ARCHIVE、T_BUSI_HAZARD_REPORT、T_BUSI_HAZARD_WARM、T_BUSI_HAZ_IDEN、T_BUSI_INSPECT_ITEM、T_BUSI_INSPECT_RECORD、T_BUSI_INSPECT_TASK、T_BUSI_INSPECT_TASK_ITEM、T_BUSI_RESP_PER

C. SYS系统表 — 列名完全不同(4张表)⚠️ 高风险

ROHS 和安监的系统管理表使用了完全不同的列命名规范

ROHS列数 安监列数 说明
SYS_MENU 26 20 ROHS用 ID/NAME/CODE;安监用 MENU_ID/MENU_NAME/PERMS
SYS_NOTICE 13 10 ROHS用 ID/TITLE/TYPE_ID;安监用 NOTICE_ID/NOTICE_TITLE/NOTICE_TYPE
SYS_POST 16 10 ROHS用 ID/POST_RESP/DEP_ID;安监用 POST_ID/POST_SORT/STATUS
SYS_ROLE 17 14 ROHS用 ID/NAME/CODE/VALID;安监用 ROLE_ID/ROLE_NAME/ROLE_KEY/STATUS
SYS_USER 34 20 ROHS用 ID/NAME/LOGIN/CODE;安监用 USER_ID/USER_NAME/REAL_NAME
SYS_ROLE_MENU 2 2 ROLE_ID: VARCHAR(40) vs INT8(BIGINT);MENU_ID: VARCHAR(40) vs INT8(BIGINT)
SYS_USER_ROLE 4 2 ROHS多了 GROUP_MANAGER, SORT_NUM

⚠️ 这是最大的风险点。ROHS 和 安监的 SYS_ 系统表实际上是两套完全不同的系统框架:

  • ROHS 似乎基于若依(RuoYi)框架的旧版本(若依早期版本使用这些列名)
  • 安监似乎基于若依(RuoYi)框架的新版本或自行改造版本

这两套系统表不能简单合并,需要评估是否统一使用其中一套框架的系统表。

D. 其他列差异(约10张表)

这些表存在个别的列多/少差异:

差异
ATT_ORG_EXT 安监多了 ACC_EMECONTA, ACC_EMECONTA_MPOH
ATT_PERS_BASE ROHS多了 MODIFIER, FROM_DATE, NODE_CODE;安监多了 COLL_TIME, UPD_TIME, REC_PERS
ATT_PERS_EXT ROHS多了 ORG_GUID;WORK_DATE: DECIMAL vs VARCHAR
BIS_HIDD_INVE 安监多了 ORG_MANAGE, HIDD_CONTENT
BIS_HIDD_RECT_ACCE ROHS多了 ACCEPT_ORG, ACCEPT_DATE, ACCEPT_OPINION, CURL_RESULT
BIS_HIDD_RECT_IMPL ROHS多了 RECT_DEPT
OBJ_ACCI ROHS多了 DATA_TYPE, HIDD_GUID, HAZ_GUID, ACCI_SITU, DATA_SIGN
T_BUSI_CONPLAN_BASIC ROHS多了 HAZ_GUID, ENG_GUID, EMER_TYPE, AREA_TYPE
T_BUSI_HAZ_IDEN ROHS多了 OTLCOL_QGW_TNYGTS;安监多了 HAZ_REMARK, ORG_PER, ORG_PHONE 等人员字段
T_BUSI_REGULAR_EVALU 列名完全不一致(可能是不同的评估模块)
T_BUSI_REVIEW_INFO 列名完全不一致(可能是不同的评审模块)
T_DICT_HIDD_ENG 列名完全不一致(结构不同)
ATT_ORG_BASE AD_CODE: VARCHAR vs BPCHAR 类型不兼容

三、ROHS独有表(102张新表)— 需要在安监中新建

3.1 按分类汇总

分类 数量 涉及的表
业务类 (TBUSI) 33 ACCI_EVALUATE, ACCOUNT_RECORD, BD_TOTAL, CONT_MEAS, DRILL_EVA, DRILL_RECORD, ENG_PART, ENG_SAFE_EVALUATE, EVALUATE, GROUP_INFO, HARD_TOTAL, HIDD_EVALUATE, HIDD_TOTAL, HUIZONG_TOTAL, INSURE_INFO, INSURE_PRE, MEET_TOTAL, ORG_SAFE_EVALUATE, POSSIBLE_ACCIDENT, POSTRES, POSTRES_PERSON, SAFEORG_INFO, SIX_BOOST_MWR, SMS_RECORD, STR_PUNISH, SUPPLIES_RESERVE, TEAM_INFO, TRAIN_RECORD 等
系统管理类 (SYS_) 29 APPLICATION, CODE, CODE_LINE, DATA_SOURCE, DEPARTMENT, DOCMENT/DOCUMENT, DOCUMENT_TYPE, LOGIN_LOG, MESSAGE_LOG, NOTICE_TYPE, OAUTH_CLIENT_DETAILS, OPERATELOG, ORGANIZATION, RESOURCE, ROLE* (多个), ROUTE_CONFIG, SETTING, SOCIAL_DETAILS, SYSTEM_CONFIG, TABLES, TENANT, USER_CATEGORY, USER_NOTICE
关系类 (REL_) 13 DRILL_EVA, DRILL_SC, INSURE_TEND, JOB_ROLE, ORG_ZCPT, PERS_ZCPT, SYS_PERS, USER_APP, USER_APPOINT, USER_JOB, USER_ROLE, USER_ROLE_EXT
对象类 (OBJ_) 9 AD, BAAD, ORG_ZCPT, ROLE 等
附件/属性类 (ATT_) 7 APP_BASE, JOB_BASE, ORG_DEP, PERSON_EXT, ROLE_BASE, USER_EXT
字典类 (TDICT) 2 SCOR_CERTI, SCOR_PUNISH
配置类 (TCON) 2 SAFE_ENU, SLAJ_LOG
SSO类 (TSSO) 2 USERROLE_SM3, USER_SM3
其他 5 BDMS_ATT_ENG_PUST, PPRTY_NOTICE_INFO, HARD_TOTAL, HIDD_STATISTICS, BIS_HIDD_REC_REP20250113

3.2 重点关注的六项机制业务表

这些是"六项机制"的特有业务表,应该是合并的核心目标:

  • T_BUSI_SIX_BOOST_MWR (32列) — 六项机制主表
  • T_BUSI_HIDD_TOTAL (47列) — 隐患汇总
  • T_BUSI_HUIZONG_TOTAL (19列) — 汇总表
  • T_BUSI_BD_TOTAL (13列) — 北斗卫星汇总(?)
  • T_BUSI_HARD_TOTAL (35列) — 硬件汇总
  • T_BUSI_MEET_TOTAL (19列) — 会议汇总
  • T_BUSI_CONT_MEAS (21列) — 管控措施
  • T_BUSI_DATA_TYPE_LEVEL (24列) — 数据类型级别
  • T_BUSI_DRILL_EVA (10列) — 演练评估
  • T_BUSI_DRILL_RECORD (16列) — 演练记录
  • T_BUSI_EVALUATE (18列) — 评估
  • T_BUSI_HIDD_EVALUATE (18列) — 隐患评估
  • T_BUSI_INSURE_INFO (34列) — 保险信息
  • T_BUSI_INSURE_PRE (16列) — 保险保费
  • T_BUSI_POSTRES (9列) — 岗位职责
  • T_BUSI_POSTRES_PERSON (10列) — 岗位人员
  • T_BUSI_ACCI_EVALUATE (18列) — 事故评估
  • T_BUSI_ACCOUNT_RECORD (10列) — 台账记录
  • T_BUSI_ENG_PART (14列) — 工程参与
  • T_BUSI_ENG_SAFE_EVALUATE (14列) — 工程安全评估
  • T_BUSI_ORG_SAFE_EVALUATE (15列) — 单位安全评估
  • T_BUSI_POSSIBLE_ACCIDENT (7列) — 可能事故
  • T_BUSI_STR_PUNISH (12列) — 处罚
  • T_BUSI_SUPPLIES_RESERVE (14列) — 物资储备
  • T_BUSI_TEAM_INFO (11列) — 班组信息
  • T_BUSI_TRAIN_RECORD (13列) — 培训记录
  • T_BUSI_SAFEORG_INFO (8列) — 安评机构信息
  • T_BUSI_GROUP_INFO (10列) — 分组信息
  • T_BUSI_SMS_RECORD (4列) — 短信记录

四、合并可行性评估

4.1 可合并的部分 ✅

  1. 28张完全一致的表:结构完全兼容,数据可直接迁移
  2. STR_TO_DATE/TO_DATE差异的表:只需统一列名
  3. TIMESTAMP/DATE差异的表:将 DATE 升级为 TIMESTAMP 即可(向下兼容)
  4. 102张ROHS独有表:直接在安监 schema 中执行 CREATE TABLE 即可

4.2 需要谨慎处理的部分 ⚠️

  1. SYS_ 系统表冲突(重大风险):

    • ROHS 和安监使用完全不同的系统管理表结构
    • 两套表分别维护各自的用户、菜单、角色、岗位等
    • 建议:保留安监现有 SYS_ 表不变,ROHS 的应用代码改为使用安监的 SYS_ 表体系
    • 或者:将 ROHS 的 SYS_ 表作为独立的扩展表,不作为主表
  2. 列结构不一致的业务表(约10张):

    • 需要逐表分析业务逻辑,确认哪些列是需要保留的
    • 推荐做法:保留两边的列(取并集),缺失的列加 ALTER TABLE ADD COLUMN
  3. 不同框架的表

    • T_BUSI_REGULAR_EVALU(定期评估)- 两库列结构完全不同
    • T_BUSI_REVIEW_INFO(评审信息)- 两库列结构完全不同
    • T_DICT_HIDD_ENG(隐患工程字典)- 两库列结构完全不同
    • 建议:这些可能是独立的业务模块,ROHS版本应该是新版本,建议用 ROHS 的表结构替换

4.3 Schema 差异

  • ROHS 使用 schema: SLAJ_ROHS(大写)
  • 安监使用 schema: slaj(小写)
  • PostgreSQL 中 schema 名区分大小写(双引号内)
  • 合并时建议统一使用 slaj schema,将 ROHS 的表移至 slaj

五、合并路线图建议

阶段一:低风险表迁移

  1. 执行 28 张完全一致表的 DDL(结果已兼容,可跳过)
  2. 创建 102 张 ROHS 独有表到安监 slaj schema

阶段二:差异表处理

  1. 对 STR_TO_DATE/TO_DATE 差异的 14 张表,统一为 TO_DATE
  2. 对 TIMESTAMP/DATE 差异的 15 张表,统一为 TIMESTAMP
  3. 对列差异的 10 张业务表,取并集添加缺失列

阶段三:系统表整合(需业务决策)

  1. 决定 SYS_ 表的使用策略(两套并存 vs 统一)
  2. 修改六项机制应用代码适配安监的 SYS_ 表
  3. 迁移 SYS_ 相关的独有表

阶段四:T_BUSI_REGULAR_EVALU / T_BUSI_REVIEW_INFO / T_DICT_HIDD_ENG

  1. 分析业务逻辑,确认是否可以完全替换
  2. 如需保留两边数据,需要进行数据迁移

六、数据文件

分析过程中生成的中间文件:

  • _rohs_tables.json — ROHS SQL文件解析结果
  • _slaj_table_names.json — 安监数据库所有表名
  • _db_overlap_cols.json — 重叠表的安监列定义
  • _comparison_report.json — 完整对比数据
  • _final_compare.js — 最终对比脚本