Compare commits

1 Commits
Author SHA1 Message Date
lianlonggang 5afe7c3fcf Initial commit 2026-06-03 09:42:22 +08:00
10 changed files with 164 additions and 1157 deletions
+162
View File
@@ -0,0 +1,162 @@
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
-21
View File
@@ -1,21 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
`rkutil` 是一个 Python 工具库项目,使用 Python 3.13,通过 PyCharm 管理,虚拟环境位于 `.venv/`
## 环境配置
激活虚拟环境:
```bash
.venv/Scripts/activate
```
安装依赖(待 `pyproject.toml``requirements.txt` 创建后):
```bash
pip install -e .
# 或
pip install -r requirements.txt
```
+2
View File
@@ -0,0 +1,2 @@
# rkutil
-269
View File
@@ -1,269 +0,0 @@
import dmPython
import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
# ==================== 数据库配置 ====================
DB_CONFIG = {
"host": "192.168.1.250",
"port": 5236,
"user": "SYSDBA",
"password": "Aa15790!123",
}
SCHEMA = "AYGC_JKYWK"
TABLE_PREFIX = "QH_DAT_WATCH"
OUTPUT_FILE = "export_qh_dat_watch.xlsx"
# 排除不需要导出的表
TABLE_EXCLUDE = {
"QH_DAT_WATCH_EME_MOBILE",
"QH_DAT_WATCH_ERROR_LOG",
"QH_DAT_WATCH_LOG",
"QH_DAT_WATCH_MQTT_LOG",
"QH_DAT_WATCH_NOTIFY",
"QH_DAT_WATCH_NOTIFY_LOG",
"QH_DAT_WATCH_PERIOD",
"QH_DAT_WATCH_PERIOD_PRI",
"QH_DAT_WATCH_STAT_ALL",
"QH_DAT_WATCH_STAT_MAX_ID",
"QH_DAT_WATCH_STAT_TODAY",
"QH_DAT_WATCH_TASK",
"QH_DAT_WATCH_TASKS",
"QH_DAT_WATCH_TASKS_CYCLE",
"QH_DAT_WATCH_TASKS_PRI",
"QH_DAT_WATCH_WARN_FLAG",
"QH_DAT_WATCH_WARN_PRI",
}
# 当前表名 → 原始表名映射(来自 xc_boot.sql 的 RENAME 记录)
TABLE_NAME_MAPPING = {
"QH_DAT_WATCH_SPO2": "DC_WATCH_DATA_COMMON",
"QH_DAT_WATCH_ECG": "DC_WATCH_DATA_ECG",
"QH_DAT_WATCH_ECG_ITEM": "DC_WATCH_DATA_ECG_ITEM",
"QH_DAT_WATCH_EXERCISE": "DC_WATCH_DATA_EXERCISE",
"QH_DAT_WATCH_GPS": "DC_WATCH_DATA_GPS",
"QH_DAT_WATCH_HEART_RATE": "DC_WATCH_DATA_HEART_RATE",
"QH_DAT_WATCH_LOG": "DC_WATCH_DATA_LOG",
"QH_DAT_WATCH_MONITOR": "DC_WATCH_DATA_MONITOR",
"QH_DAT_WATCH_MONITOR_HR": "DC_WATCH_DATA_MONITOR_HEART_RATE",
"QH_DAT_WATCH_MONITOR_SPO2": "DC_WATCH_DATA_MONITOR_SPO2",
"QH_DAT_WATCH_MONITOR_STRE": "DC_WATCH_DATA_MONITOR_STRESS",
"QH_DAT_WATCH_MONITOR_TEMP": "DC_WATCH_DATA_MONITOR_TEMPERATURE",
"QH_DAT_WATCH_SDC": "DC_WATCH_DATA_SDC",
"QH_DAT_WATCH_SDC_ITEM": "DC_WATCH_DATA_SDC_ITEM",
"QH_DAT_WATCH_SDC_JSON": "DC_WATCH_DATA_SDC_JSON",
"QH_DAT_WATCH_SLEEP": "DC_WATCH_DATA_SLEEP",
"QH_DAT_WATCH_SLEEP_NEW": "DC_WATCH_DATA_SLEEP_NEW",
"QH_DAT_WATCH_SLEEP_NEWDAY": "DC_WATCH_DATA_SLEEP_NEW_DAY",
"QH_DAT_WATCH_SLEEP_NEWERR": "DC_WATCH_DATA_SLEEP_NEW_ERR",
"QH_DAT_WATCH_SLEEP_NEWMIN": "DC_WATCH_DATA_SLEEP_NEW_MINUTE",
"QH_DAT_WATCH5_SLEEP": "DC_WATCH_DATA_SLEEP_WATCH5",
"QH_DAT_WATCH5_SLEEP_DETA": "DC_WATCH_DATA_SLEEP_WATCH5_DETAIL",
"QH_DAT_WATCH_STEP": "DC_WATCH_DATA_STEP",
"QH_DAT_WATCH_STEP_NEW": "DC_WATCH_DATA_STEP_NEW",
"QH_DAT_WATCH_STRESS": "DC_WATCH_DATA_STRESS",
"QH_DAT_WATCH_TASK": "DC_WATCH_DATA_TASK",
"QH_DAT_WATCH_TEMPERATURE": "DC_WATCH_DATA_TEMPERATURE",
"QH_DAT_WATCH_WORKOUT": "DC_WATCH_DATA_WORKOUT",
"QH_DAT_WATCH_WORKOUT_TRAC":"DC_WATCH_DATA_WORKOUT_TRACE",
"QH_DAT_WATCH_DEVICE": "DC_WATCH_DEVICE",
"QH_DAT_WATCH_DEVICE_SWIT": "DC_WATCH_DEVICE_SWITCH",
"QH_DAT_WATCH_VERSION_HIS": "DC_WATCH_DEVICE_VERSION_HIS",
"QH_DAT_WATCH_EME_MOBILE": "DC_WATCH_EME_MOBILE",
"QH_DAT_WATCH_ERROR_LOG": "DC_WATCH_ERROR_LOG",
"QH_DAT_WATCH_MQTT_LOG": "DC_WATCH_MQTT_LOG",
"QH_DAT_WATCH_NET_TYPE_LOG":"DC_WATCH_NET_TYPE_LOG",
"QH_DAT_WATCH_NOTIFY": "DC_WATCH_NOTIFY",
"QH_DAT_WATCH_NOTIFY_LOG": "DC_WATCH_NOTIFY_LOG",
"QH_DAT_WATCH_PERIOD": "DC_WATCH_PERIOD",
"QH_DAT_WATCH_PERIOD_PRI": "DC_WATCH_PERIOD_PERSONAL",
"QH_DAT_WATCH_SET_INFO": "DC_WATCH_SET_INFO",
"QH_DAT_WATCH_STAT_ALL": "DC_WATCH_STAT_ALL",
"QH_DAT_WATCH_STAT_MAX_ID": "DC_WATCH_STAT_MAX_ID",
"QH_DAT_WATCH_STAT_TODAY": "DC_WATCH_STAT_TODAY",
"QH_DAT_WATCH_TASKS": "DC_WATCH_TASK",
"QH_DAT_WATCH_TASKS_CYCLE": "DC_WATCH_TASK_CYCLE",
"QH_DAT_WATCH_TASKS_PRI": "DC_WATCH_TASK_PERSONAL",
"QH_DAT_WATCH_WARN_FLAG": "DC_WATCH_WARN_FLAG",
"QH_DAT_WATCH_WARN_PRI": "DC_WATCH_WARN_PERSONAL",
}
# ====================================================
def get_connection():
"""建立达梦数据库连接"""
return dmPython.connect(
host=DB_CONFIG["host"],
port=DB_CONFIG["port"],
user=DB_CONFIG["user"],
password=DB_CONFIG["password"],
)
def get_all_tables(cursor):
"""获取指定模式下以 TABLE_PREFIX 开头的所有表名及表注释"""
cursor.execute(
"""
SELECT t.TABLE_NAME, tc.COMMENTS
FROM ALL_TABLES t
LEFT JOIN ALL_TAB_COMMENTS tc
ON tc.TABLE_NAME = t.TABLE_NAME
AND tc.OWNER = t.OWNER
WHERE t.OWNER = :1 AND t.TABLE_NAME LIKE :2
ORDER BY t.TABLE_NAME
""",
(SCHEMA, TABLE_PREFIX + "%")
)
return [(name, comment) for name, comment in cursor.fetchall()
if name not in TABLE_EXCLUDE]
def get_columns_with_comments(cursor, table_name):
"""获取表的字段名和中文注释,按字段顺序排列"""
cursor.execute(
"""
SELECT c.COLUMN_NAME, cc.COMMENTS
FROM ALL_TAB_COLUMNS c
LEFT JOIN ALL_COL_COMMENTS cc
ON cc.TABLE_NAME = c.TABLE_NAME
AND cc.COLUMN_NAME = c.COLUMN_NAME
AND cc.SCHEMA_NAME = :1
WHERE c.OWNER = :2 AND c.TABLE_NAME = :3
ORDER BY c.COLUMN_ID
""",
(SCHEMA, SCHEMA, table_name)
)
return cursor.fetchall() # [(column_name, comment), ...]
def get_sample_rows(cursor, table_name, limit=3):
"""获取表的示例数据"""
try:
cursor.execute(f'SELECT * FROM "{SCHEMA}"."{table_name}" LIMIT {limit}')
return cursor.fetchall()
except Exception:
return []
def make_header_style():
"""生成表头样式"""
fill = PatternFill(fill_type="solid", fgColor="4472C4")
font = Font(bold=True, color="FFFFFF", size=11)
alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
thin = Side(style="thin", color="FFFFFF")
border = Border(left=thin, right=thin, top=thin, bottom=thin)
return fill, font, alignment, border
def make_field_name_style():
"""字段名列样式(浅蓝底)"""
fill = PatternFill(fill_type="solid", fgColor="DCE6F1")
font = Font(bold=True, size=10)
alignment = Alignment(horizontal="left", vertical="center")
return fill, font, alignment
def make_table_title_style():
"""表名标题行样式(深绿底白字)"""
fill = PatternFill(fill_type="solid", fgColor="375623")
font = Font(bold=True, color="FFFFFF", size=12)
alignment = Alignment(horizontal="left", vertical="center")
return fill, font, alignment
def write_all_tables_to_sheet(ws, tables_data):
"""将所有表写入同一个 Sheet,每张表前有标题行"""
header_fill, header_font, header_align, header_border = make_header_style()
field_fill, field_font, field_align = make_field_name_style()
title_fill, title_font, title_align = make_table_title_style()
current_row = 1
for table_name, table_comment, columns, sample_rows in tables_data:
# 优先使用原始表名显示,找不到映射则用当前名
display_name = TABLE_NAME_MAPPING.get(table_name.upper(), table_name)
# ---------- 第1行:表名 + 表注释(合并A-E列) ----------
title_text = f"{display_name} {table_comment or ''}"
ws.merge_cells(
start_row=current_row, start_column=1,
end_row=current_row, end_column=5
)
title_cell = ws.cell(row=current_row, column=1, value=title_text)
title_cell.fill = title_fill
title_cell.font = title_font
title_cell.alignment = title_align
ws.row_dimensions[current_row].height = 22
current_row += 1
# ---------- 第2行:列头 ----------
headers = ["数据名", "中文注释", "示例数据1", "示例数据2", "示例数据3"]
for col_idx, header in enumerate(headers, start=1):
cell = ws.cell(row=current_row, column=col_idx, value=header)
cell.fill = header_fill
cell.font = header_font
cell.alignment = header_align
cell.border = header_border
ws.row_dimensions[current_row].height = 18
current_row += 1
# ---------- 字段数据行 ----------
for field_index, (col_name, comment) in enumerate(columns):
cell_a = ws.cell(row=current_row, column=1, value=col_name)
cell_a.fill = field_fill
cell_a.font = field_font
cell_a.alignment = field_align
ws.cell(row=current_row, column=2, value=comment or "")
for sample_col, sample_row in enumerate(sample_rows, start=3):
val = sample_row[field_index] if field_index < len(sample_row) else ""
ws.cell(row=current_row, column=sample_col,
value=str(val) if val is not None else "NULL")
current_row += 1
# 表与表之间空一行
current_row += 1
# ---------- 统一设置列宽 ----------
ws.column_dimensions["A"].width = 28
ws.column_dimensions["B"].width = 32
ws.column_dimensions["C"].width = 30
ws.column_dimensions["D"].width = 30
ws.column_dimensions["E"].width = 30
def main():
print(f"正在连接达梦数据库 {DB_CONFIG['host']}:{DB_CONFIG['port']} ...")
conn = get_connection()
cursor = conn.cursor()
print(f"获取模式 {SCHEMA} 下以 '{TABLE_PREFIX}' 开头的表...")
tables = get_all_tables(cursor)
print(f"共找到 {len(tables)} 张表")
# 预先收集所有表的数据
tables_data = []
for i, (table_name, table_comment) in enumerate(tables, start=1):
print(f"[{i}/{len(tables)}] 处理表: {table_name}")
columns = get_columns_with_comments(cursor, table_name)
if not columns:
print(f" ⚠ 字段为空: {table_name}")
else:
print(f" 字段数: {len(columns)}, 首字段: {columns[0]}")
sample_rows = get_sample_rows(cursor, table_name)
tables_data.append((table_name, table_comment, columns, sample_rows))
cursor.close()
conn.close()
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "表结构数据"
write_all_tables_to_sheet(ws, tables_data)
wb.save(OUTPUT_FILE)
print(f"\n导出完成 -> {OUTPUT_FILE}")
if __name__ == "__main__":
main()
-269
View File
@@ -1,269 +0,0 @@
import pymysql
import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
# ==================== 数据库配置 ====================
DB_CONFIG = {
"host": "192.168.10.100",
"port": 3308,
"user": "root",
"password": "Aa135790123",
"database": "cqyt_new_prod",
"charset": "utf8mb4",
}
OUTPUT_FILE = "export_medical_to_excel.xlsx"
# 需要导出的表名列表(来自 mysql表名.txt)
TARGET_TABLES = [
"medical_announcement_info",
"medical_banner",
"medical_check_package",
"medical_check_package_item",
"medical_conclusion",
"medical_defend_cancer_code",
"medical_depart_hospital",
"medical_diseases_dic",
"medical_diseases_dic_rel",
"medical_doctor_check_item",
"medical_doctor_sign",
"medical_emp_defend_cancer",
"medical_emp_occup_import",
"medical_emp_occupational",
"medical_health_check_statistics",
"medical_health_check_statistics_info",
"medical_hospital",
"medical_hospital_area",
"medical_hospital_doctor_check",
"medical_hospital_emp",
"medical_hospital_except_count",
"medical_hospital_except_date",
"medical_hospital_item",
"medical_hospital_item_rel",
"medical_hospital_user",
"medical_hospital_virtual",
"medical_info",
"medical_item",
"medical_item_cost",
"medical_item_mutex",
"medical_item_package",
"medical_item_package_model",
"medical_item_package_model_append",
"medical_item_package_model_append_sub",
"medical_item_package_model_sub",
"medical_item_package_sub",
"medical_item_syn",
"medical_limit_float",
"medical_limit_model",
"medical_model_float",
"medical_order_info",
"medical_order_queue",
"medical_package_check",
"medical_paper_question",
"medical_paper_question_item",
"medical_plan",
"medical_plan_user",
"medical_precheck_paper",
"medical_precheck_paper_questions",
"medical_record_model",
"medical_record_model_base",
"medical_record_model_config",
"medical_serious_result_item",
"medical_stat_year",
"medical_uni_item_class",
"medical_uni_item_class_office",
"medical_uni_item_class_sicks",
"medical_uni_item_hospital",
"medical_uni_item_info",
"medical_uni_item_risk_rel",
"medical_uni_item_unusual_rel",
"medical_user_defend_cancer_result",
"medical_user_diseases",
"medical_user_diseases_item",
"medical_user_exception",
"medical_user_exception_item",
"medical_user_form",
"medical_user_form_sub",
"medical_user_ill",
"medical_user_ill_sub",
"medical_user_image",
"medical_user_image_item",
"medical_user_limit",
"medical_user_paper",
"medical_user_paper_answer",
"medical_user_result",
"medical_user_result_ext",
"medical_user_result_item",
"medical_user_result_item_tmp_unmatch",
"medical_user_sign",
]
# ====================================================
def get_connection():
"""建立 MySQL 数据库连接"""
return pymysql.connect(
host=DB_CONFIG["host"],
port=DB_CONFIG["port"],
user=DB_CONFIG["user"],
password=DB_CONFIG["password"],
database=DB_CONFIG["database"],
charset=DB_CONFIG["charset"],
)
def get_table_comment(cursor, table_name):
"""获取表的中文注释"""
cursor.execute(
"""
SELECT TABLE_COMMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s
""",
(DB_CONFIG["database"], table_name)
)
row = cursor.fetchone()
return row[0] if row else ""
def get_columns_with_comments(cursor, table_name):
"""获取表的字段名和中文注释,按字段顺序排列"""
cursor.execute(
"""
SELECT COLUMN_NAME, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s
ORDER BY ORDINAL_POSITION
""",
(DB_CONFIG["database"], table_name)
)
return cursor.fetchall() # [(column_name, comment), ...]
def get_sample_rows(cursor, table_name, limit=3):
"""获取表的示例数据"""
try:
cursor.execute(f"SELECT * FROM `{table_name}` LIMIT %s", (limit,))
return cursor.fetchall()
except Exception:
return []
def make_header_style():
"""生成表头样式"""
fill = PatternFill(fill_type="solid", fgColor="4472C4")
font = Font(bold=True, color="FFFFFF", size=11)
alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
thin = Side(style="thin", color="FFFFFF")
border = Border(left=thin, right=thin, top=thin, bottom=thin)
return fill, font, alignment, border
def make_field_name_style():
"""字段名列样式(浅蓝底)"""
fill = PatternFill(fill_type="solid", fgColor="DCE6F1")
font = Font(bold=True, size=10)
alignment = Alignment(horizontal="left", vertical="center")
return fill, font, alignment
def make_table_title_style():
"""表名标题行样式(深绿底白字)"""
fill = PatternFill(fill_type="solid", fgColor="375623")
font = Font(bold=True, color="FFFFFF", size=12)
alignment = Alignment(horizontal="left", vertical="center")
return fill, font, alignment
def write_all_tables_to_sheet(ws, tables_data):
"""将所有表写入同一个 Sheet,每张表前有标题行"""
header_fill, header_font, header_align, header_border = make_header_style()
field_fill, field_font, field_align = make_field_name_style()
title_fill, title_font, title_align = make_table_title_style()
current_row = 1
for table_name, table_comment, columns, sample_rows in tables_data:
# ---------- 第1行:表名 + 表注释(合并A-E列) ----------
title_text = f"{table_name} {table_comment or ''}"
ws.merge_cells(
start_row=current_row, start_column=1,
end_row=current_row, end_column=5
)
title_cell = ws.cell(row=current_row, column=1, value=title_text)
title_cell.fill = title_fill
title_cell.font = title_font
title_cell.alignment = title_align
ws.row_dimensions[current_row].height = 22
current_row += 1
# ---------- 第2行:列头 ----------
headers = ["数据名", "中文注释", "示例数据1", "示例数据2", "示例数据3"]
for col_idx, header in enumerate(headers, start=1):
cell = ws.cell(row=current_row, column=col_idx, value=header)
cell.fill = header_fill
cell.font = header_font
cell.alignment = header_align
cell.border = header_border
ws.row_dimensions[current_row].height = 18
current_row += 1
# ---------- 字段数据行 ----------
for field_index, (col_name, comment) in enumerate(columns):
cell_a = ws.cell(row=current_row, column=1, value=col_name)
cell_a.fill = field_fill
cell_a.font = field_font
cell_a.alignment = field_align
ws.cell(row=current_row, column=2, value=comment or "")
for sample_col, sample_row in enumerate(sample_rows, start=3):
val = sample_row[field_index] if field_index < len(sample_row) else ""
ws.cell(row=current_row, column=sample_col,
value=str(val) if val is not None else "NULL")
current_row += 1
# 表与表之间空一行
current_row += 1
# ---------- 统一设置列宽 ----------
ws.column_dimensions["A"].width = 28
ws.column_dimensions["B"].width = 32
ws.column_dimensions["C"].width = 30
ws.column_dimensions["D"].width = 30
ws.column_dimensions["E"].width = 30
def main():
print(f"正在连接 MySQL {DB_CONFIG['host']}:{DB_CONFIG['port']} ...")
conn = get_connection()
cursor = conn.cursor()
print(f"{len(TARGET_TABLES)} 张表待处理")
tables_data = []
for i, table_name in enumerate(TARGET_TABLES, start=1):
print(f"[{i}/{len(TARGET_TABLES)}] 处理表: {table_name}")
table_comment = get_table_comment(cursor, table_name)
columns = get_columns_with_comments(cursor, table_name)
if not columns:
print(f" ⚠ 字段为空或表不存在: {table_name}")
else:
print(f" 字段数: {len(columns)}, 表注释: {table_comment or '(无)'}")
sample_rows = get_sample_rows(cursor, table_name)
tables_data.append((table_name, table_comment, columns, sample_rows))
cursor.close()
conn.close()
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "表结构数据"
write_all_tables_to_sheet(ws, tables_data)
wb.save(OUTPUT_FILE)
print(f"\n导出完成 -> {OUTPUT_FILE}")
if __name__ == "__main__":
main()
Binary file not shown.
-80
View File
@@ -1,80 +0,0 @@
medical_announcement_info
medical_banner
medical_check_package
medical_check_package_item
medical_conclusion
medical_defend_cancer_code
medical_depart_hospital
medical_diseases_dic
medical_diseases_dic_rel
medical_doctor_check_item
medical_doctor_sign
medical_emp_defend_cancer
medical_emp_occup_import
medical_emp_occupational
medical_health_check_statistics
medical_health_check_statistics_info
medical_hospital
medical_hospital_area
medical_hospital_doctor_check
medical_hospital_emp
medical_hospital_except_count
medical_hospital_except_date
medical_hospital_item
medical_hospital_item_rel
medical_hospital_user
medical_hospital_virtual
medical_info
medical_item
medical_item_cost
medical_item_mutex
medical_item_package
medical_item_package_model
medical_item_package_model_append
medical_item_package_model_append_sub
medical_item_package_model_sub
medical_item_package_sub
medical_item_syn
medical_limit_float
medical_limit_model
medical_model_float
medical_order_info
medical_order_queue
medical_package_check
medical_paper_question
medical_paper_question_item
medical_plan
medical_plan_user
medical_precheck_paper
medical_precheck_paper_questions
medical_record_model
medical_record_model_base
medical_record_model_config
medical_serious_result_item
medical_stat_year
medical_uni_item_class
medical_uni_item_class_office
medical_uni_item_class_sicks
medical_uni_item_hospital
medical_uni_item_info
medical_uni_item_risk_rel
medical_uni_item_unusual_rel
medical_user_defend_cancer_result
medical_user_diseases
medical_user_diseases_item
medical_user_exception
medical_user_exception_item
medical_user_form
medical_user_form_sub
medical_user_ill
medical_user_ill_sub
medical_user_image
medical_user_image_item
medical_user_limit
medical_user_paper
medical_user_paper_answer
medical_user_result
medical_user_result_ext
medical_user_result_item
medical_user_result_item_tmp_unmatch
medical_user_sign
-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.13 (rkutil)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-507
View File
@@ -1,507 +0,0 @@
-- 数据中心sql
DROP TABLE "DC_WATCH_DATA_ECG_20251231";
DROP TABLE "DC_WATCH_DATA_ECG_ITEM_20251231";
DROP TABLE "ONL_AUTH_DATA";
DROP TABLE "ONL_AUTH_PAGE";
DROP TABLE "ONL_AUTH_RELATION";
DROP TABLE "ONL_CGFORM_BUTTON";
DROP TABLE "ONL_CGFORM_ENHANCE_JAVA";
DROP TABLE "ONL_CGFORM_ENHANCE_JS";
DROP TABLE "ONL_CGFORM_ENHANCE_SQL";
DROP TABLE "ONL_CGFORM_FIELD";
DROP TABLE "ONL_CGFORM_HEAD";
DROP TABLE "ONL_CGFORM_INDEX";
DROP TABLE "ONL_CGREPORT_HEAD";
DROP TABLE "ONL_CGREPORT_ITEM";
DROP TABLE "ONL_CGREPORT_PARAM";
DROP TABLE "OSS_FILE";
DROP TABLE "SYS_CHECK_RULE";
DROP TABLE "SYS_COMMENT";
DROP TABLE "SYS_DATA_SOURCE";
DROP TABLE "SYS_FILES";
DROP TABLE "SYS_FORM_FILE";
DROP TABLE "SYS_PERMISSION_COPY1";
DROP TABLE "SYS_QUARTZ_JOB";
DROP TABLE "SYS_TABLE_WHITE_LIST";
DROP TABLE "SYS_TENANT";
DROP TABLE "SYS_TENANT_PACK";
DROP TABLE "SYS_TENANT_PACK_PERMS";
DROP TABLE "SYS_TENANT_PACK_USER";
DROP TABLE "SYS_THIRD_ACCOUNT";
DROP TABLE "SYS_THIRD_APP_CONFIG";
DROP TABLE "SYS_USER_AGENT";
DROP TABLE "SYS_USER_TENANT";
DROP TABLE "QRTZ_BLOB_TRIGGERS";
DROP TABLE "QRTZ_CALENDARS";
DROP TABLE "QRTZ_CRON_TRIGGERS";
DROP TABLE "QRTZ_FIRED_TRIGGERS";
DROP TABLE "QRTZ_JOB_DETAILS";
DROP TABLE "QRTZ_LOCKS";
DROP TABLE "QRTZ_PAUSED_TRIGGER_GRPS";
DROP TABLE "QRTZ_SCHEDULER_STATE";
DROP TABLE "QRTZ_SIMPLE_TRIGGERS";
DROP TABLE "QRTZ_SIMPROP_TRIGGERS";
DROP TABLE "QRTZ_TRIGGERS";
ALTER TABLE "DC_WATCH_DATA_COMMON" RENAME TO "QH_DAT_WATCH_SPO2";
ALTER TABLE "DC_WATCH_DATA_ECG" RENAME TO "QH_DAT_WATCH_ECG";
ALTER TABLE "DC_WATCH_DATA_ECG_ITEM" RENAME TO "QH_DAT_WATCH_ECG_ITEM";
ALTER TABLE "DC_WATCH_DATA_EXERCISE" RENAME TO "QH_DAT_WATCH_EXERCISE";
ALTER TABLE "DC_WATCH_DATA_GPS" RENAME TO "QH_DAT_WATCH_GPS";
ALTER TABLE "DC_WATCH_DATA_HEART_RATE" RENAME TO "QH_DAT_WATCH_HEART_RATE";
ALTER TABLE "DC_WATCH_DATA_LOG" RENAME TO "QH_DAT_WATCH_LOG";
ALTER TABLE "DC_WATCH_DATA_MONITOR" RENAME TO "QH_DAT_WATCH_MONITOR";
ALTER TABLE "DC_WATCH_DATA_MONITOR_HEART_RATE" RENAME TO "QH_DAT_WATCH_MONITOR_HR";
ALTER TABLE "DC_WATCH_DATA_MONITOR_SPO2" RENAME TO "QH_DAT_WATCH_MONITOR_SPO2";
ALTER TABLE "DC_WATCH_DATA_MONITOR_STRESS" RENAME TO "QH_DAT_WATCH_MONITOR_STRE";
ALTER TABLE "DC_WATCH_DATA_MONITOR_TEMPERATURE" RENAME TO "QH_DAT_WATCH_MONITOR_TEMP";
ALTER TABLE "DC_WATCH_DATA_SDC" RENAME TO "QH_DAT_WATCH_SDC";
ALTER TABLE "DC_WATCH_DATA_SDC_ITEM" RENAME TO "QH_DAT_WATCH_SDC_ITEM";
ALTER TABLE "DC_WATCH_DATA_SDC_JSON" RENAME TO "QH_DAT_WATCH_SDC_JSON";
ALTER TABLE "DC_WATCH_DATA_SLEEP" RENAME TO "QH_DAT_WATCH_SLEEP";
ALTER TABLE "DC_WATCH_DATA_SLEEP_NEW" RENAME TO "QH_DAT_WATCH_SLEEP_NEW";
ALTER TABLE "DC_WATCH_DATA_SLEEP_NEW_DAY" RENAME TO "QH_DAT_WATCH_SLEEP_NEWDAY";
ALTER TABLE "DC_WATCH_DATA_SLEEP_NEW_ERR" RENAME TO "QH_DAT_WATCH_SLEEP_NEWERR";
ALTER TABLE "DC_WATCH_DATA_SLEEP_NEW_MINUTE" RENAME TO "QH_DAT_WATCH_SLEEP_NEWMIN";
ALTER TABLE "DC_WATCH_DATA_SLEEP_WATCH5" RENAME TO "QH_DAT_WATCH5_SLEEP";
ALTER TABLE "DC_WATCH_DATA_SLEEP_WATCH5_DETAIL" RENAME TO "QH_DAT_WATCH5_SLEEP_DETA";
ALTER TABLE "DC_WATCH_DATA_STEP" RENAME TO "QH_DAT_WATCH_STEP";
ALTER TABLE "DC_WATCH_DATA_STEP_NEW" RENAME TO "QH_DAT_WATCH_STEP_NEW";
ALTER TABLE "DC_WATCH_DATA_STRESS" RENAME TO "QH_DAT_WATCH_STRESS";
ALTER TABLE "DC_WATCH_DATA_TASK" RENAME TO "QH_DAT_WATCH_TASK";
ALTER TABLE "DC_WATCH_DATA_TEMPERATURE" RENAME TO "QH_DAT_WATCH_TEMPERATURE";
ALTER TABLE "DC_WATCH_DATA_WORKOUT" RENAME TO "QH_DAT_WATCH_WORKOUT";
ALTER TABLE "DC_WATCH_DATA_WORKOUT_TRACE" RENAME TO "QH_DAT_WATCH_WORKOUT_TRAC";
ALTER TABLE "DC_WATCH_DEVICE" RENAME TO "QH_DAT_WATCH_DEVICE";
ALTER TABLE "DC_WATCH_DEVICE_SWITCH" RENAME TO "QH_DAT_WATCH_DEVICE_SWIT";
ALTER TABLE "DC_WATCH_DEVICE_VERSION_HIS" RENAME TO "QH_DAT_WATCH_VERSION_HIS";
ALTER TABLE "DC_WATCH_EME_MOBILE" RENAME TO "QH_DAT_WATCH_EME_MOBILE";
ALTER TABLE "DC_WATCH_ERROR_LOG" RENAME TO "QH_DAT_WATCH_ERROR_LOG";
ALTER TABLE "DC_WATCH_MQTT_LOG" RENAME TO "QH_DAT_WATCH_MQTT_LOG";
ALTER TABLE "DC_WATCH_NET_TYPE_LOG" RENAME TO "QH_DAT_WATCH_NET_TYPE_LOG";
ALTER TABLE "DC_WATCH_NOTIFY" RENAME TO "QH_DAT_WATCH_NOTIFY";
ALTER TABLE "DC_WATCH_NOTIFY_LOG" RENAME TO "QH_DAT_WATCH_NOTIFY_LOG";
ALTER TABLE "DC_WATCH_PERIOD" RENAME TO "QH_DAT_WATCH_PERIOD";
ALTER TABLE "DC_WATCH_PERIOD_PERSONAL" RENAME TO "QH_DAT_WATCH_PERIOD_PRI";
ALTER TABLE "DC_WATCH_SET_INFO" RENAME TO "QH_DAT_WATCH_SET_INFO";
ALTER TABLE "DC_WATCH_STAT_ALL" RENAME TO "QH_DAT_WATCH_STAT_ALL";
ALTER TABLE "DC_WATCH_STAT_MAX_ID" RENAME TO "QH_DAT_WATCH_STAT_MAX_ID";
ALTER TABLE "DC_WATCH_STAT_TODAY" RENAME TO "QH_DAT_WATCH_STAT_TODAY";
ALTER TABLE "DC_WATCH_TASK" RENAME TO "QH_DAT_WATCH_TASKS";
ALTER TABLE "DC_WATCH_TASK_CYCLE" RENAME TO "QH_DAT_WATCH_TASKS_CYCLE";
ALTER TABLE "DC_WATCH_TASK_PERSONAL" RENAME TO "QH_DAT_WATCH_TASKS_PRI";
ALTER TABLE "DC_WATCH_WARN_FLAG" RENAME TO "QH_DAT_WATCH_WARN_FLAG";
ALTER TABLE "DC_WATCH_WARN_PERSONAL" RENAME TO "QH_DAT_WATCH_WARN_PRI";
ALTER TABLE "SYS_ANNOUNCEMENT" RENAME TO "QH_SYW_ANNOUNCEMENT";
ALTER TABLE "SYS_ANNOUNCEMENT_SEND" RENAME TO "QH_SYW_ANNOUNCEMENT_SEND";
ALTER TABLE "SYS_CATEGORY" RENAME TO "QH_SYW_CATEGORY";
ALTER TABLE "SYS_DATA_LOG" RENAME TO "QH_SYW_DATA_LOG";
ALTER TABLE "SYS_DEPART" RENAME TO "QH_SYW_DEPART";
ALTER TABLE "SYS_DEPART_PERMISSION" RENAME TO "QH_SYW_DEPART_PERMISSION";
ALTER TABLE "SYS_DEPART_ROLE" RENAME TO "QH_SYW_DEPART_ROLE";
ALTER TABLE "SYS_DEPART_ROLE_PERMISSION" RENAME TO "QH_SYW_DEPART_ROLE_PERM";
ALTER TABLE "SYS_DEPART_ROLE_USER" RENAME TO "QH_SYW_DEPART_ROLE_USER";
ALTER TABLE "SYS_DICT" RENAME TO "QH_SYW_DICT";
ALTER TABLE "SYS_DICT_ITEM" RENAME TO "QH_SYW_DICT_ITEM";
ALTER TABLE "SYS_FILL_RULE" RENAME TO "QH_SYW_FILL_RULE";
ALTER TABLE "SYS_GATEWAY_ROUTE" RENAME TO "QH_SYW_GATEWAY_ROUTE";
ALTER TABLE "SYS_LOG" RENAME TO "QH_SYW_LOG";
ALTER TABLE "SYS_PERMISSION" RENAME TO "QH_SYW_PERMISSION";
ALTER TABLE "SYS_PERMISSION_DATA_RULE" RENAME TO "QH_SYW_PERMISSION_DRULE";
ALTER TABLE "SYS_POSITION" RENAME TO "QH_SYW_POSITION";
ALTER TABLE "SYS_ROLE" RENAME TO "QH_SYW_ROLE";
ALTER TABLE "SYS_ROLE_INDEX" RENAME TO "QH_SYW_ROLE_INDEX";
ALTER TABLE "SYS_ROLE_PERMISSION" RENAME TO "QH_SYW_ROLE_PERMISSION";
ALTER TABLE "SYS_SMS" RENAME TO "QH_SYW_SMS";
ALTER TABLE "SYS_SMS_TEMPLATE" RENAME TO "QH_SYW_SMS_TEMPLATE";
ALTER TABLE "SYS_USER" RENAME TO "QH_SYW_USER";
ALTER TABLE "SYS_USER_DEPART" RENAME TO "QH_SYW_USER_DEPART";
ALTER TABLE "SYS_USER_POSITION" RENAME TO "QH_SYW_USER_POSITION";
ALTER TABLE "SYS_USER_ROLE" RENAME TO "QH_SYW_USER_ROLE";
-- 处理索引信息
DROP INDEX "SYS_CATEGORY_IDX_SC_CODE";
CREATE INDEX "IDX_SYW_CATEGORY_CODE" ON "QH_SYW_CATEGORY"("CODE");
-- 删除并重建索引:SYS_ → SYW_
-- SYS_DATA_LOG_IDX_SDL_DATA_TABLE_ID (2列)
DROP INDEX "SYS_DATA_LOG_IDX_SDL_DATA_TABLE_ID";
CREATE INDEX "SYW_DATA_LOG_IDX_SDL_DATA_TABLE_ID"
ON "QH_SYW_DATA_LOG"("DATA_TABLE", "DATA_ID");
-- SYS_DEPART_IDX_SD_DEPART_ORDER
DROP INDEX "SYS_DEPART_IDX_SD_DEPART_ORDER";
CREATE INDEX "SYW_DEPART_IDX_SD_DEPART_ORDER"
ON "QH_SYW_DEPART"("DEPART_ORDER");
-- SYS_DEPART_IDX_SD_ORG_CODE
DROP INDEX "SYS_DEPART_IDX_SD_ORG_CODE";
CREATE INDEX "SYW_DEPART_IDX_SD_ORG_CODE"
ON "QH_SYW_DEPART"("ORG_CODE");
-- SYS_DEPART_IDX_SD_PARENT_ID
DROP INDEX "SYS_DEPART_IDX_SD_PARENT_ID";
CREATE INDEX "SYW_DEPART_IDX_SD_PARENT_ID"
ON "QH_SYW_DEPART"("PARENT_ID");
-- SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_PER_ID
DROP INDEX "SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_PER_ID";
CREATE INDEX "SYW_DEPART_ROLE_PERMISSION_IDX_SDRP_PER_ID"
ON "QH_SYW_DEPART_ROLE_PERM"("PERMISSION_ID");
-- SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_ID
DROP INDEX "SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_ID";
CREATE INDEX "SYW_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_ID"
ON "QH_SYW_DEPART_ROLE_PERM"("ROLE_ID");
-- SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_PER_ID (2列)
DROP INDEX "SYS_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_PER_ID";
CREATE INDEX "SYW_DEPART_ROLE_PERMISSION_IDX_SDRP_ROLE_PER_ID"
ON "QH_SYW_DEPART_ROLE_PERM"("ROLE_ID", "PERMISSION_ID");
-- SYS_DICT_ITEM_IDX_SDI_DICT_VAL (2列)
DROP INDEX "SYS_DICT_ITEM_IDX_SDI_DICT_VAL";
CREATE INDEX "SYW_DICT_ITEM_IDX_SDI_DICT_VAL"
ON "QH_SYW_DICT_ITEM"("DICT_ID", "ITEM_VALUE");
-- SYS_DICT_ITEM_IDX_SDI_ROLE_DICT_ID
DROP INDEX "SYS_DICT_ITEM_IDX_SDI_ROLE_DICT_ID";
CREATE INDEX "SYW_DICT_ITEM_IDX_SDI_ROLE_DICT_ID"
ON "QH_SYW_DICT_ITEM"("DICT_ID");
-- SYS_DICT_ITEM_IDX_SDI_ROLE_SORT_ORDER
DROP INDEX "SYS_DICT_ITEM_IDX_SDI_ROLE_SORT_ORDER";
CREATE INDEX "SYW_DICT_ITEM_IDX_SDI_ROLE_SORT_ORDER"
ON "QH_SYW_DICT_ITEM"("SORT_ORDER");
-- SYS_DICT_ITEM_IDX_SDI_STATUS
DROP INDEX "SYS_DICT_ITEM_IDX_SDI_STATUS";
CREATE INDEX "SYW_DICT_ITEM_IDX_SDI_STATUS"
ON "QH_SYW_DICT_ITEM"("STATUS");
-- SYS_LOG_IDX_SL_CREATE_TIME
DROP INDEX "SYS_LOG_IDX_SL_CREATE_TIME";
CREATE INDEX "SYW_LOG_IDX_SL_CREATE_TIME"
ON "QH_SYW_LOG"("CREATE_TIME");
-- SYS_LOG_IDX_SL_LOG_TYPE
DROP INDEX "SYS_LOG_IDX_SL_LOG_TYPE";
CREATE INDEX "SYW_LOG_IDX_SL_LOG_TYPE"
ON "QH_SYW_LOG"("LOG_TYPE");
-- SYS_LOG_IDX_SL_OPERATE_TYPE
DROP INDEX "SYS_LOG_IDX_SL_OPERATE_TYPE";
CREATE INDEX "SYW_LOG_IDX_SL_OPERATE_TYPE"
ON "QH_SYW_LOG"("OPERATE_TYPE");
-- SYS_LOG_IDX_SL_USERID
DROP INDEX "SYS_LOG_IDX_SL_USERID";
CREATE INDEX "SYW_LOG_IDX_SL_USERID"
ON "QH_SYW_LOG"("USERID");
-- SYS_PERMISSION_DATA_RULE_IDX_SPDR_PERMISSION_ID
DROP INDEX "SYS_PERMISSION_DATA_RULE_IDX_SPDR_PERMISSION_ID";
CREATE INDEX "SYW_PERMISSION_DATA_RULE_IDX_SPDR_PERMISSION_ID"
ON "QH_SYW_PERMISSION_DRULE"("PERMISSION_ID");
-- SYS_PERMISSION_INDEX_MENU_HIDDEN
DROP INDEX "SYS_PERMISSION_INDEX_MENU_HIDDEN";
CREATE INDEX "SYW_PERMISSION_INDEX_MENU_HIDDEN"
ON "QH_SYW_PERMISSION"("HIDDEN");
-- SYS_PERMISSION_INDEX_MENU_STATUS
DROP INDEX "SYS_PERMISSION_INDEX_MENU_STATUS";
CREATE INDEX "SYW_PERMISSION_INDEX_MENU_STATUS"
ON "QH_SYW_PERMISSION"("STATUS");
-- SYS_PERMISSION_INDEX_MENU_TYPE
DROP INDEX "SYS_PERMISSION_INDEX_MENU_TYPE";
CREATE INDEX "SYW_PERMISSION_INDEX_MENU_TYPE"
ON "QH_SYW_PERMISSION"("MENU_TYPE");
-- SYS_ROLE_IDX_SR_ROLE_CODE
DROP INDEX "SYS_ROLE_IDX_SR_ROLE_CODE";
CREATE INDEX "SYW_ROLE_IDX_SR_ROLE_CODE"
ON "QH_SYW_ROLE"("ROLE_CODE");
-- SYS_ROLE_PERMISSION_IDX_SRP_PERMISSION_ID
DROP INDEX "SYS_ROLE_PERMISSION_IDX_SRP_PERMISSION_ID";
CREATE INDEX "SYW_ROLE_PERMISSION_IDX_SRP_PERMISSION_ID"
ON "QH_SYW_ROLE_PERMISSION"("PERMISSION_ID");
-- SYS_ROLE_PERMISSION_IDX_SRP_ROLE_ID
DROP INDEX "SYS_ROLE_PERMISSION_IDX_SRP_ROLE_ID";
CREATE INDEX "SYW_ROLE_PERMISSION_IDX_SRP_ROLE_ID"
ON "QH_SYW_ROLE_PERMISSION"("ROLE_ID");
-- SYS_ROLE_PERMISSION_IDX_SRP_ROLE_PER_ID (2列)
DROP INDEX "SYS_ROLE_PERMISSION_IDX_SRP_ROLE_PER_ID";
CREATE INDEX "SYW_ROLE_PERMISSION_IDX_SRP_ROLE_PER_ID"
ON "QH_SYW_ROLE_PERMISSION"("ROLE_ID", "PERMISSION_ID");
-- SYS_SMS_IDX_SS_ES_RECEIVER
DROP INDEX "SYS_SMS_IDX_SS_ES_RECEIVER";
CREATE INDEX "SYW_SMS_IDX_SS_ES_RECEIVER"
ON "QH_SYW_SMS"("ES_RECEIVER");
-- SYS_SMS_IDX_SS_ES_SEND_STATUS
DROP INDEX "SYS_SMS_IDX_SS_ES_SEND_STATUS";
CREATE INDEX "SYW_SMS_IDX_SS_ES_SEND_STATUS"
ON "QH_SYW_SMS"("ES_SEND_STATUS");
-- SYS_SMS_IDX_SS_ES_SEND_TIME
DROP INDEX "SYS_SMS_IDX_SS_ES_SEND_TIME";
CREATE INDEX "SYW_SMS_IDX_SS_ES_SEND_TIME"
ON "QH_SYW_SMS"("ES_SEND_TIME");
-- SYS_SMS_IDX_SS_ES_TYPE
DROP INDEX "SYS_SMS_IDX_SS_ES_TYPE";
CREATE INDEX "SYW_SMS_IDX_SS_ES_TYPE"
ON "QH_SYW_SMS"("ES_TYPE");
-- SYS_USER_DEPART_IDX_SUD_DEP_ID
DROP INDEX "SYS_USER_DEPART_IDX_SUD_DEP_ID";
CREATE INDEX "SYW_USER_DEPART_IDX_SUD_DEP_ID"
ON "QH_SYW_USER_DEPART"("DEP_ID");
-- SYS_USER_DEPART_IDX_SUD_USER_DEP_ID (2列)
DROP INDEX "SYS_USER_DEPART_IDX_SUD_USER_DEP_ID";
CREATE INDEX "SYW_USER_DEPART_IDX_SUD_USER_DEP_ID"
ON "QH_SYW_USER_DEPART"("USER_ID", "DEP_ID");
-- SYS_USER_DEPART_IDX_SUD_USER_ID
DROP INDEX "SYS_USER_DEPART_IDX_SUD_USER_ID";
CREATE INDEX "SYW_USER_DEPART_IDX_SUD_USER_ID"
ON "QH_SYW_USER_DEPART"("USER_ID");
-- SYS_USER_IDX_SU_DEL_FLAG
DROP INDEX "SYS_USER_IDX_SU_DEL_FLAG";
CREATE INDEX "SYW_USER_IDX_SU_DEL_FLAG"
ON "QH_SYW_USER"("DEL_FLAG");
-- SYS_USER_IDX_SU_STATUS
DROP INDEX "SYS_USER_IDX_SU_STATUS";
CREATE INDEX "SYW_USER_IDX_SU_STATUS"
ON "QH_SYW_USER"("STATUS");
-- SYS_USER_IDX_SU_USERNAME
DROP INDEX "SYS_USER_IDX_SU_USERNAME";
CREATE INDEX "SYW_USER_IDX_SU_USERNAME"
ON "QH_SYW_USER"("USERNAME");
-- SYS_USER_POSITION_IDX_SUP_POSITION_ID
DROP INDEX "SYS_USER_POSITION_IDX_SUP_POSITION_ID";
CREATE INDEX "SYW_USER_POSITION_IDX_SUP_POSITION_ID"
ON "QH_SYW_USER_POSITION"("POSITION_ID");
-- SYS_USER_POSITION_IDX_SUP_USER_ID
DROP INDEX "SYS_USER_POSITION_IDX_SUP_USER_ID";
CREATE INDEX "SYW_USER_POSITION_IDX_SUP_USER_ID"
ON "QH_SYW_USER_POSITION"("USER_ID");
-- SYS_USER_POSITION_IDX_SUP_USER_POSITION_ID (2列)
DROP INDEX "SYS_USER_POSITION_IDX_SUP_USER_POSITION_ID";
CREATE INDEX "SYW_USER_POSITION_IDX_SUP_USER_POSITION_ID"
ON "QH_SYW_USER_POSITION"("USER_ID", "POSITION_ID");
-- SYS_USER_ROLE_IDX_SUR_ROLE_ID
DROP INDEX "SYS_USER_ROLE_IDX_SUR_ROLE_ID";
CREATE INDEX "SYW_USER_ROLE_IDX_SUR_ROLE_ID"
ON "QH_SYW_USER_ROLE"("ROLE_ID");
-- SYS_USER_ROLE_IDX_SUR_USER_ID
DROP INDEX "SYS_USER_ROLE_IDX_SUR_USER_ID";
CREATE INDEX "SYW_USER_ROLE_IDX_SUR_USER_ID"
ON "QH_SYW_USER_ROLE"("USER_ID");
-- SYS_USER_ROLE_IDX_SUR_USER_ROLE_ID (2列)
DROP INDEX "SYS_USER_ROLE_IDX_SUR_USER_ROLE_ID";
CREATE INDEX "SYW_USER_ROLE_IDX_SUR_USER_ROLE_ID"
ON "QH_SYW_USER_ROLE"("USER_ID", "ROLE_ID");
-- 其他约束
-- ========== 主键约束 (PRIMARY KEY) ==========
-- QH_SYW_ANNOUNCEMENT
ALTER TABLE "QH_SYW_ANNOUNCEMENT" DROP CONSTRAINT "SYS_ANNOUNCEMENT_PRIMARY";
ALTER TABLE "QH_SYW_ANNOUNCEMENT" ADD CONSTRAINT "SYW_ANNOUNCEMENT_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_CATEGORY
ALTER TABLE "QH_SYW_CATEGORY" DROP CONSTRAINT "SYS_CATEGORY_PRIMARY";
ALTER TABLE "QH_SYW_CATEGORY" ADD CONSTRAINT "SYW_CATEGORY_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DATA_LOG
ALTER TABLE "QH_SYW_DATA_LOG" DROP CONSTRAINT "SYS_DATA_LOG_PRIMARY";
ALTER TABLE "QH_SYW_DATA_LOG" ADD CONSTRAINT "SYW_DATA_LOG_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DEPART
ALTER TABLE "QH_SYW_DEPART" DROP CONSTRAINT "SYS_DEPART_PRIMARY";
ALTER TABLE "QH_SYW_DEPART" ADD CONSTRAINT "SYW_DEPART_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DEPART_PERMISSION
ALTER TABLE "QH_SYW_DEPART_PERMISSION" DROP CONSTRAINT "SYS_DEPART_PERMISSION_PRIMARY";
ALTER TABLE "QH_SYW_DEPART_PERMISSION" ADD CONSTRAINT "SYW_DEPART_PERMISSION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DEPART_ROLE
ALTER TABLE "QH_SYW_DEPART_ROLE" DROP CONSTRAINT "SYS_DEPART_ROLE_PRIMARY";
ALTER TABLE "QH_SYW_DEPART_ROLE" ADD CONSTRAINT "SYW_DEPART_ROLE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DEPART_ROLE_PERM
ALTER TABLE "QH_SYW_DEPART_ROLE_PERM" DROP CONSTRAINT "SYS_DEPART_ROLE_PERMISSION_PRIMARY";
ALTER TABLE "QH_SYW_DEPART_ROLE_PERM" ADD CONSTRAINT "SYW_DEPART_ROLE_PERMISSION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DEPART_ROLE_USER
ALTER TABLE "QH_SYW_DEPART_ROLE_USER" DROP CONSTRAINT "SYS_DEPART_ROLE_USER_PRIMARY";
ALTER TABLE "QH_SYW_DEPART_ROLE_USER" ADD CONSTRAINT "SYW_DEPART_ROLE_USER_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DICT
ALTER TABLE "QH_SYW_DICT" DROP CONSTRAINT "SYS_DICT_PRIMARY";
ALTER TABLE "QH_SYW_DICT" ADD CONSTRAINT "SYW_DICT_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_DICT_ITEM
ALTER TABLE "QH_SYW_DICT_ITEM" DROP CONSTRAINT "SYS_DICT_ITEM_PRIMARY";
ALTER TABLE "QH_SYW_DICT_ITEM" ADD CONSTRAINT "SYW_DICT_ITEM_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_FILL_RULE
ALTER TABLE "QH_SYW_FILL_RULE" DROP CONSTRAINT "SYS_FILL_RULE_PRIMARY";
ALTER TABLE "QH_SYW_FILL_RULE" ADD CONSTRAINT "SYW_FILL_RULE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_GATEWAY_ROUTE
ALTER TABLE "QH_SYW_GATEWAY_ROUTE" DROP CONSTRAINT "SYS_GATEWAY_ROUTE_PRIMARY";
ALTER TABLE "QH_SYW_GATEWAY_ROUTE" ADD CONSTRAINT "SYW_GATEWAY_ROUTE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_LOG
ALTER TABLE "QH_SYW_LOG" DROP CONSTRAINT "SYS_LOG_PRIMARY";
ALTER TABLE "QH_SYW_LOG" ADD CONSTRAINT "SYW_LOG_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_PERMISSION
ALTER TABLE "QH_SYW_PERMISSION" DROP CONSTRAINT "SYS_PERMISSION_PRIMARY";
ALTER TABLE "QH_SYW_PERMISSION" ADD CONSTRAINT "SYW_PERMISSION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_PERMISSION_DRULE
ALTER TABLE "QH_SYW_PERMISSION_DRULE" DROP CONSTRAINT "SYS_PERMISSION_DATA_RULE_PRIMARY";
ALTER TABLE "QH_SYW_PERMISSION_DRULE" ADD CONSTRAINT "SYW_PERMISSION_DATA_RULE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_POSITION
ALTER TABLE "QH_SYW_POSITION" DROP CONSTRAINT "SYS_POSITION_PRIMARY";
ALTER TABLE "QH_SYW_POSITION" ADD CONSTRAINT "SYW_POSITION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_ROLE
ALTER TABLE "QH_SYW_ROLE" DROP CONSTRAINT "SYS_ROLE_PRIMARY";
ALTER TABLE "QH_SYW_ROLE" ADD CONSTRAINT "SYW_ROLE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_ROLE_INDEX
ALTER TABLE "QH_SYW_ROLE_INDEX" DROP CONSTRAINT "SYS_ROLE_INDEX_PRIMARY";
ALTER TABLE "QH_SYW_ROLE_INDEX" ADD CONSTRAINT "SYW_ROLE_INDEX_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_ROLE_PERMISSION
ALTER TABLE "QH_SYW_ROLE_PERMISSION" DROP CONSTRAINT "SYS_ROLE_PERMISSION_PRIMARY";
ALTER TABLE "QH_SYW_ROLE_PERMISSION" ADD CONSTRAINT "SYW_ROLE_PERMISSION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_SMS
ALTER TABLE "QH_SYW_SMS" DROP CONSTRAINT "SYS_SMS_PRIMARY";
ALTER TABLE "QH_SYW_SMS" ADD CONSTRAINT "SYW_SMS_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_SMS_TEMPLATE
ALTER TABLE "QH_SYW_SMS_TEMPLATE" DROP CONSTRAINT "SYS_SMS_TEMPLATE_PRIMARY";
ALTER TABLE "QH_SYW_SMS_TEMPLATE" ADD CONSTRAINT "SYW_SMS_TEMPLATE_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_USER
ALTER TABLE "QH_SYW_USER" DROP CONSTRAINT "SYS_USER_PRIMARY";
ALTER TABLE "QH_SYW_USER" ADD CONSTRAINT "SYW_USER_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_USER_DEPART
ALTER TABLE "QH_SYW_USER_DEPART" DROP CONSTRAINT "SYS_USER_DEPART_PRIMARY";
ALTER TABLE "QH_SYW_USER_DEPART" ADD CONSTRAINT "SYW_USER_DEPART_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_USER_POSITION
ALTER TABLE "QH_SYW_USER_POSITION" DROP CONSTRAINT "SYS_USER_POSITION_PRIMARY";
ALTER TABLE "QH_SYW_USER_POSITION" ADD CONSTRAINT "SYW_USER_POSITION_PRIMARY" PRIMARY KEY ("ID");
-- QH_SYW_USER_ROLE
ALTER TABLE "QH_SYW_USER_ROLE" DROP CONSTRAINT "SYS_USER_ROLE_PRIMARY";
ALTER TABLE "QH_SYW_USER_ROLE" ADD CONSTRAINT "SYW_USER_ROLE_PRIMARY" PRIMARY KEY ("ID");
-- ========== 唯一约束 (UNIQUE) ==========
-- QH_SYW_CATEGORY (CODE)
ALTER TABLE "QH_SYW_CATEGORY" DROP CONSTRAINT "SYS_CATEGORY_INDEX_CODE";
ALTER TABLE "QH_SYW_CATEGORY" ADD CONSTRAINT "SYW_CATEGORY_INDEX_CODE" UNIQUE ("CODE");
-- QH_SYW_DEPART (ORG_CODE)
ALTER TABLE "QH_SYW_DEPART" DROP CONSTRAINT "SYS_DEPART_UNIQ_DEPART_ORG_CODE";
ALTER TABLE "QH_SYW_DEPART" ADD CONSTRAINT "SYW_DEPART_UNIQ_DEPART_ORG_CODE" UNIQUE ("ORG_CODE");
-- QH_SYW_DICT (DICT_CODE)
ALTER TABLE "QH_SYW_DICT" DROP CONSTRAINT "SYS_DICT_UK_SD_DICT_CODE";
ALTER TABLE "QH_SYW_DICT" ADD CONSTRAINT "SYW_DICT_UK_SD_DICT_CODE" UNIQUE ("DICT_CODE");
-- QH_SYW_FILL_RULE (RULE_CODE)
ALTER TABLE "QH_SYW_FILL_RULE" DROP CONSTRAINT "SYS_FILL_RULE_UK_SFR_RULE_CODE";
ALTER TABLE "QH_SYW_FILL_RULE" ADD CONSTRAINT "SYW_FILL_RULE_UK_SFR_RULE_CODE" UNIQUE ("RULE_CODE");
-- QH_SYW_POSITION (CODE)
ALTER TABLE "QH_SYW_POSITION" DROP CONSTRAINT "SYS_POSITION_UNIQ_CODE";
ALTER TABLE "QH_SYW_POSITION" ADD CONSTRAINT "SYW_POSITION_UNIQ_CODE" UNIQUE ("CODE");
-- QH_SYW_ROLE (ROLE_CODE)
ALTER TABLE "QH_SYW_ROLE" DROP CONSTRAINT "SYS_ROLE_UNIQ_SYS_ROLE_ROLE_CODE";
ALTER TABLE "QH_SYW_ROLE" ADD CONSTRAINT "SYW_ROLE_UNIQ_SYS_ROLE_ROLE_CODE" UNIQUE ("ROLE_CODE");
-- QH_SYW_SMS_TEMPLATE (TEMPLATE_CODE)
ALTER TABLE "QH_SYW_SMS_TEMPLATE" DROP CONSTRAINT "SYS_SMS_TEMPLATE_UK_SST_TEMPLATE_CODE";
ALTER TABLE "QH_SYW_SMS_TEMPLATE" ADD CONSTRAINT "SYW_SMS_TEMPLATE_UK_SST_TEMPLATE_CODE" UNIQUE ("TEMPLATE_CODE");
-- QH_SYW_USER (EMAIL)
ALTER TABLE "QH_SYW_USER" DROP CONSTRAINT "SYS_USER_UNIQ_SYS_USER_EMAIL";
ALTER TABLE "QH_SYW_USER" ADD CONSTRAINT "SYW_USER_UNIQ_SYS_USER_EMAIL" UNIQUE ("EMAIL");
-- QH_SYW_USER (PHONE)
ALTER TABLE "QH_SYW_USER" DROP CONSTRAINT "SYS_USER_UNIQ_SYS_USER_PHONE";
ALTER TABLE "QH_SYW_USER" ADD CONSTRAINT "SYW_USER_UNIQ_SYS_USER_PHONE" UNIQUE ("PHONE");
-- QH_SYW_USER (USERNAME)
ALTER TABLE "QH_SYW_USER" DROP CONSTRAINT "SYS_USER_UNIQ_SYS_USER_USERNAME";
ALTER TABLE "QH_SYW_USER" ADD CONSTRAINT "SYW_USER_UNIQ_SYS_USER_USERNAME" UNIQUE ("USERNAME");
-- QH_SYW_USER (WORK_NO)
ALTER TABLE "QH_SYW_USER" DROP CONSTRAINT "SYS_USER_UNIQ_SYS_USER_WORK_NO";
ALTER TABLE "QH_SYW_USER" ADD CONSTRAINT "SYW_USER_UNIQ_SYS_USER_WORK_NO" UNIQUE ("WORK_NO");
update QH_SYW_PERMISSION set IS_LEAF = '0' where id = '1783054127343742978';
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2030887284245504002', '190c2b43bec6a5f7a4194a85db67d96a', '查询角色用户', NULL, NULL, 0, NULL, NULL, 2, 'system:user:queryUserRole', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-09 14:03:55', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033422388611641346', '3f915b2769fc80648e92d04e84ca059d', '冻结', NULL, NULL, 0, NULL, NULL, 2, 'system:user:frozenBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-16 13:57:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033751527180857345', '45c966826eeff4c99b8f8ebfe74511fc', '添加部门', NULL, NULL, 0, NULL, NULL, 2, 'system:depart:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-17 11:45:24', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033785577039851521', '190c2b43bec6a5f7a4194a85db67d96a', '删除用户角色', NULL, NULL, 0, NULL, NULL, 2, 'system:user:deleteRole', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-17 14:00:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033793328256249857', '45c966826eeff4c99b8f8ebfe74511fc', '删除部门', NULL, NULL, 0, NULL, NULL, 2, 'system:depart:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-17 14:31:30', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033793432971243521', '45c966826eeff4c99b8f8ebfe74511fc', '修改部门', NULL, NULL, 0, NULL, NULL, 2, 'system:depart:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-17 14:31:55', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2033835702474895361', NULL, '测试', 'https://www.xjrmyy.com/#/index', 'https://www.xjrmyy.com/#/index', 1, '', NULL, 0, NULL, '0', 1, 0, 'ant-design:aim-outlined', 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-17 17:19:53', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, NULL, 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879007507951617', '1783054127343742978', '新增', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:25:36', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879630936715265', '1783054127343742978', '编辑', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:28:05', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879686771290114', '1783054127343742978', '删除', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:28:18', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879767675219970', '1783054127343742978', '批量删除', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:28:38', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879833274134529', '1783054127343742978', '导出', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:28:53', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
INSERT INTO "QH_SYW_PERMISSION" ("ID", "PARENT_ID", "NAME", "URL", "COMPONENT", "IS_ROUTE", "COMPONENT_NAME", "REDIRECT", "MENU_TYPE", "PERMS", "PERMS_TYPE", "SORT_NO", "ALWAYS_SHOW", "ICON", "IS_LEAF", "KEEP_ALIVE", "HIDDEN", "HIDE_TAB", "DESCRIPTION", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "DEL_FLAG", "RULE_FLAG", "STATUS", "INTERNAL_OR_EXTERNAL") VALUES ('2034879903734247425', '1783054127343742978', '导入', NULL, NULL, 0, NULL, NULL, 2, 'watch:dc_watch_device_version_his:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', TO_TIMESTAMP('2026-03-20 14:29:10', 'SYYYY-MM-DD HH24:MI:SS'), NULL, NULL, 0, 0, '1', 0);
CREATE TABLE `QH_WAT_VALID` (
`id` varchar(36) COLLATE utf8mb4_general_ci NOT NULL,
`watch_no` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工具编码',
`valid_flag` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '是否有效',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`),
KEY `qwv_valid_flag` (`valid_flag`),
KEY `qwv_watch_no` (`watch_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Binary file not shown.