From d8d2817aed73155c8c288685e4fa236db0876bbb Mon Sep 17 00:00:00 2001 From: python Date: Thu, 11 Dec 2025 14:50:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E6=A1=A3=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=80=BB=E8=BE=91=E4=B8=AD=E7=9A=84=E5=86=B2=E7=AA=81?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=92=8C=E4=B8=8B=E8=BD=BD=E9=93=BE=E6=8E=A5=E7=9A=84=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BD=93=E9=AA=8C=E3=80=82=E5=90=8C=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=89=8D=E7=AB=AF=E6=96=87=E4=BB=B6=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8A=A0=E8=BD=BD=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8A=A0=E8=BD=BD=E6=89=80=E6=9C=89=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 6 +- check_and_fix_duplicates.py | 117 +++++ check_confidentiality_commitment.py | 36 ++ cleanup_duplicate_templates.py | 361 ++++++++++++++ finalize_template_hierarchy.py | 158 ++++++ fix_duplicate_request_report_card.py | 131 +++++ fix_remaining_hierarchy_issues.py | 61 +++ fix_template_names.py | 234 +++++++++ ...ss_confidentiality_commitment_non_party.py | 372 ++++++++++++++ .../document_service.cpython-312.pyc | Bin 13920 -> 21147 bytes services/document_service.py | 38 +- static/index.html | 55 +- .../1.初核请示/~$初步核实审批表(XXX).docx | Bin 0 -> 162 bytes .../1.初核请示/~$请示报告卡(XXX).docx | Bin 0 -> 162 bytes .../8-1请示报告卡(初核报告结论) .docx | Bin 160960 -> 160686 bytes .../~$1请示报告卡(初核报告结论) .docx | Bin 0 -> 162 bytes .../3.初核结论/~$XXX初核情况报告.docx | Bin 0 -> 162 bytes update_template_hierarchy.py | 472 ++++++++++++++++++ update_template_hierarchy_final.py | 405 +++++++++++++++ update_template_hierarchy_v2.py | 445 +++++++++++++++++ verify_hierarchy_structure.py | 56 +++ 修复模板名称总结.md | 113 +++++ 处理保密承诺书模板总结.md | 75 +++ 更新模板层级结构总结.md | 124 +++++ 清理重复模板总结.md | 139 ++++++ 25 files changed, 3340 insertions(+), 58 deletions(-) create mode 100644 check_and_fix_duplicates.py create mode 100644 check_confidentiality_commitment.py create mode 100644 cleanup_duplicate_templates.py create mode 100644 finalize_template_hierarchy.py create mode 100644 fix_duplicate_request_report_card.py create mode 100644 fix_remaining_hierarchy_issues.py create mode 100644 fix_template_names.py create mode 100644 process_confidentiality_commitment_non_party.py create mode 100644 template_finish/2-初核模版/1.初核请示/~$初步核实审批表(XXX).docx create mode 100644 template_finish/2-初核模版/1.初核请示/~$请示报告卡(XXX).docx create mode 100644 template_finish/2-初核模版/3.初核结论/~$1请示报告卡(初核报告结论) .docx create mode 100644 template_finish/2-初核模版/3.初核结论/~$XXX初核情况报告.docx create mode 100644 update_template_hierarchy.py create mode 100644 update_template_hierarchy_final.py create mode 100644 update_template_hierarchy_v2.py create mode 100644 verify_hierarchy_structure.py create mode 100644 修复模板名称总结.md create mode 100644 处理保密承诺书模板总结.md create mode 100644 更新模板层级结构总结.md create mode 100644 清理重复模板总结.md diff --git a/app.py b/app.py index 447f995..7aab919 100644 --- a/app.py +++ b/app.py @@ -706,7 +706,6 @@ def generate_document(): return error_response(3001, f"文档生成失败: {str(e)}") -<<<<<<< HEAD @app.route('/fPolicTask/getDocument', methods=['POST']) def get_document_by_task(): """ @@ -810,7 +809,8 @@ def get_document_by_task(): result_file_list.append({ 'fileId': file_id, 'fileName': generated_file_name, # 使用生成的文档名 - 'filePath': result['filePath'] + 'filePath': result['filePath'], # MinIO相对路径 + 'downloadUrl': result.get('downloadUrl') # MinIO预签名下载URL(完整链接) }) except Exception as e: @@ -835,8 +835,6 @@ def get_document_by_task(): return error_response(3001, f"文档生成失败: {str(e)}") -======= ->>>>>>> parent of 4897c96 (添加通过taskId获取文档的接口,支持文件列表查询和参数验证,增强错误处理能力。同时,优化文档生成逻辑,确保生成的文档名称和路径的准确性。) if __name__ == '__main__': # 确保static目录存在 os.makedirs('static', exist_ok=True) diff --git a/check_and_fix_duplicates.py b/check_and_fix_duplicates.py new file mode 100644 index 0000000..ebc7f18 --- /dev/null +++ b/check_and_fix_duplicates.py @@ -0,0 +1,117 @@ +""" +检查并修复重复记录 +""" +import pymysql + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +UPDATED_BY = 655162080928945152 + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor(pymysql.cursors.DictCursor) + +try: + # 检查"1.初核请示"下的所有记录 + cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id = %s + ORDER BY id + """, (TENANT_ID, 1765431558933731)) # 1.初核请示 + + results = cursor.fetchall() + print(f"'1.初核请示'下有 {len(results)} 条记录:\n") + for r in results: + print(f"ID: {r['id']}, name: {r['name']}, file_path: {r['file_path']}") + + # 检查"1请示报告卡"的记录 + request_cards = [r for r in results if r['name'] == '1请示报告卡'] + if len(request_cards) > 1: + print(f"\n发现 {len(request_cards)} 个重复的'1请示报告卡'记录") + # 保留file_path正确的那个 + correct_one = None + for r in request_cards: + if r['file_path'] and '1.请示报告卡(XXX)' in r['file_path']: + correct_one = r + break + + if correct_one: + # 删除其他的 + for r in request_cards: + if r['id'] != correct_one['id']: + # 删除关联关系 + cursor.execute(""" + DELETE FROM f_polic_file_field + WHERE tenant_id = %s AND file_id = %s + """, (TENANT_ID, r['id'])) + # 删除模板记录 + cursor.execute(""" + DELETE FROM f_polic_file_config + WHERE tenant_id = %s AND id = %s + """, (TENANT_ID, r['id'])) + print(f"[DELETE] 删除重复记录: ID {r['id']}, file_path: {r['file_path']}") + + # 检查"走读式谈话审批"下是否有"1请示报告卡" + cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id = %s AND name = %s + """, (TENANT_ID, 1765273962700431, '1请示报告卡')) # 走读式谈话审批 + + result = cursor.fetchone() + if not result: + print("\n[WARN] '走读式谈话审批'下缺少'1请示报告卡'记录") + # 创建记录 + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + new_id = timestamp * 1000 + random_part + + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + new_id, + TENANT_ID, + 1765273962700431, # 走读式谈话审批 + '1请示报告卡', + None, + '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(初核谈话).docx', + 655162080928945152, + 655162080928945152, + 1 + )) + print(f"[CREATE] 在'走读式谈话审批'下创建'1请示报告卡'记录 (ID: {new_id})") + else: + # 检查file_path是否正确 + if result['file_path'] and '1.请示报告卡(初核谈话)' not in result['file_path']: + cursor.execute(""" + UPDATE f_polic_file_config + SET file_path = %s, updated_time = NOW(), updated_by = %s + WHERE tenant_id = %s AND id = %s + """, ('/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(初核谈话).docx', UPDATED_BY, TENANT_ID, result['id'])) + print(f"[UPDATE] 修复'走读式谈话审批'下'1请示报告卡'的file_path") + + conn.commit() + print("\n[OK] 修复完成") + +except Exception as e: + conn.rollback() + print(f"[ERROR] 修复失败: {e}") + import traceback + traceback.print_exc() +finally: + cursor.close() + conn.close() + diff --git a/check_confidentiality_commitment.py b/check_confidentiality_commitment.py new file mode 100644 index 0000000..fbf9910 --- /dev/null +++ b/check_confidentiality_commitment.py @@ -0,0 +1,36 @@ +"""查询保密承诺书相关的模板记录""" +import pymysql + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor(pymysql.cursors.DictCursor) + +cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name LIKE %s + ORDER BY name +""", (TENANT_ID, '%保密承诺书%')) + +results = cursor.fetchall() +print(f"找到 {len(results)} 条记录:\n") +for r in results: + print(f"ID: {r['id']}") + print(f"名称: {r['name']}") + print(f"文件路径: {r['file_path']}") + print(f"父节点ID: {r['parent_id']}") + print() + +cursor.close() +conn.close() + diff --git a/cleanup_duplicate_templates.py b/cleanup_duplicate_templates.py new file mode 100644 index 0000000..80c6bbd --- /dev/null +++ b/cleanup_duplicate_templates.py @@ -0,0 +1,361 @@ +""" +清理 f_polic_file_config 表中的重复和无效数据 +确保文档模板结构和 template_finish/ 文件夹对应 +""" +import os +import re +import json +import pymysql +from pathlib import Path +from typing import Dict, List, Set, Optional +from collections import defaultdict + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +UPDATED_BY = 655162080928945152 +TEMPLATE_BASE_DIR = 'template_finish' + + +def normalize_template_name(name: str) -> str: + """ + 标准化模板名称(去掉扩展名、括号内容、数字前缀等) + + Args: + name: 文件名或模板名称 + + Returns: + 标准化后的名称 + """ + # 去掉扩展名 + name = Path(name).stem if '.' in name else name + + # 去掉括号内容 + name = re.sub(r'[((].*?[))]', '', name) + name = name.strip() + + # 去掉数字前缀和点号 + name = re.sub(r'^\d+[\.\-]?\s*', '', name) + name = name.strip() + + return name + + +def scan_template_files(base_dir: str) -> Dict[str, Dict]: + """ + 扫描模板文件夹,获取所有有效的模板文件 + + Returns: + 字典,key为标准化名称,value为模板信息列表(可能有多个同名文件) + """ + base_path = Path(base_dir) + if not base_path.exists(): + print(f"错误: 目录不存在 - {base_dir}") + return {} + + templates = defaultdict(list) + + print("=" * 80) + print("扫描模板文件...") + print("=" * 80) + + for docx_file in sorted(base_path.rglob("*.docx")): + # 跳过临时文件 + if docx_file.name.startswith("~$"): + continue + + relative_path = docx_file.relative_to(base_path) + file_name = docx_file.name + normalized_name = normalize_template_name(file_name) + + templates[normalized_name].append({ + 'file_path': str(docx_file), + 'relative_path': str(relative_path), + 'file_name': file_name, + 'normalized_name': normalized_name + }) + + print(f"总共扫描到 {sum(len(v) for v in templates.values())} 个模板文件") + print(f"唯一模板名称: {len(templates)} 个") + + return dict(templates) + + +def get_all_templates_from_db(conn) -> Dict[str, List[Dict]]: + """ + 从数据库获取所有模板,按标准化名称分组 + + Returns: + 字典,key为标准化名称,value为模板记录列表 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, file_path, parent_id, state, input_data, created_time, updated_time + FROM f_polic_file_config + WHERE tenant_id = %s + ORDER BY created_time DESC + """ + cursor.execute(sql, (TENANT_ID,)) + templates = cursor.fetchall() + + result = defaultdict(list) + for template in templates: + normalized_name = normalize_template_name(template['name']) + result[normalized_name].append({ + 'id': template['id'], + 'name': template['name'], + 'normalized_name': normalized_name, + 'file_path': template['file_path'], + 'parent_id': template['parent_id'], + 'state': template['state'], + 'input_data': template['input_data'], + 'created_time': template['created_time'], + 'updated_time': template['updated_time'] + }) + + cursor.close() + return dict(result) + + +def find_duplicates(db_templates: Dict[str, List[Dict]]) -> Dict[str, List[Dict]]: + """ + 找出重复的模板(同一标准化名称有多个记录) + + Returns: + 字典,key为标准化名称,value为重复的模板记录列表 + """ + duplicates = {} + for normalized_name, templates in db_templates.items(): + if len(templates) > 1: + duplicates[normalized_name] = templates + return duplicates + + +def select_best_template(templates: List[Dict], valid_template_files: List[Dict]) -> Optional[Dict]: + """ + 从多个重复的模板中选择最好的一个(保留最新的、有效的) + + Args: + templates: 数据库中的模板记录列表 + valid_template_files: 有效的模板文件列表 + + Returns: + 应该保留的模板记录,或None + """ + if not templates: + return None + + # 优先选择:state=1 且 file_path 有效的 + enabled_templates = [t for t in templates if t.get('state') == 1] + + if enabled_templates: + # 如果有多个启用的,选择最新的 + enabled_templates.sort(key=lambda x: x.get('updated_time') or x.get('created_time'), reverse=True) + return enabled_templates[0] + + # 如果没有启用的,选择最新的 + templates.sort(key=lambda x: x.get('updated_time') or x.get('created_time'), reverse=True) + return templates[0] + + +def delete_template_and_relations(conn, template_id: int): + """ + 删除模板及其关联关系 + + Args: + conn: 数据库连接 + template_id: 模板ID + """ + cursor = conn.cursor() + + try: + # 删除字段关联 + delete_relations_sql = """ + DELETE FROM f_polic_file_field + WHERE tenant_id = %s AND file_id = %s + """ + cursor.execute(delete_relations_sql, (TENANT_ID, template_id)) + relations_deleted = cursor.rowcount + + # 删除模板配置 + delete_template_sql = """ + DELETE FROM f_polic_file_config + WHERE tenant_id = %s AND id = %s + """ + cursor.execute(delete_template_sql, (TENANT_ID, template_id)) + template_deleted = cursor.rowcount + + conn.commit() + return relations_deleted, template_deleted + + except Exception as e: + conn.rollback() + raise Exception(f"删除模板失败: {str(e)}") + finally: + cursor.close() + + +def mark_invalid_templates(conn, valid_template_names: Set[str]): + """ + 标记无效的模板(不在template_finish文件夹中的模板) + + Args: + conn: 数据库连接 + valid_template_names: 有效的模板名称集合(标准化后的) + """ + cursor = conn.cursor() + + try: + # 获取所有模板 + sql = """ + SELECT id, name FROM f_polic_file_config + WHERE tenant_id = %s + """ + cursor.execute(sql, (TENANT_ID,)) + all_templates = cursor.fetchall() + + invalid_count = 0 + for template in all_templates: + template_id = template[0] + template_name = template[1] + normalized_name = normalize_template_name(template_name) + + # 检查是否在有效模板列表中 + if normalized_name not in valid_template_names: + # 标记为未启用 + update_sql = """ + UPDATE f_polic_file_config + SET state = 0, updated_time = NOW(), updated_by = %s + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (UPDATED_BY, template_id, TENANT_ID)) + invalid_count += 1 + print(f" [WARN] 标记无效模板: {template_name} (ID: {template_id})") + + conn.commit() + print(f"\n总共标记 {invalid_count} 个无效模板") + + except Exception as e: + conn.rollback() + raise Exception(f"标记无效模板失败: {str(e)}") + finally: + cursor.close() + + +def main(): + """主函数""" + print("=" * 80) + print("清理重复和无效的模板数据") + print("=" * 80) + print() + + try: + # 连接数据库 + print("1. 连接数据库...") + conn = pymysql.connect(**DB_CONFIG) + print("[OK] 数据库连接成功\n") + + # 扫描模板文件 + print("2. 扫描模板文件...") + valid_templates = scan_template_files(TEMPLATE_BASE_DIR) + valid_template_names = set(valid_templates.keys()) + print(f"[OK] 找到 {len(valid_template_names)} 个有效模板名称\n") + + # 获取数据库中的模板 + print("3. 获取数据库中的模板...") + db_templates = get_all_templates_from_db(conn) + print(f"[OK] 数据库中有 {sum(len(v) for v in db_templates.values())} 个模板记录") + print(f"[OK] 唯一模板名称: {len(db_templates)} 个\n") + + # 找出重复的模板 + print("4. 查找重复的模板...") + duplicates = find_duplicates(db_templates) + print(f"[OK] 找到 {len(duplicates)} 个重复的模板名称\n") + + # 处理重复模板 + print("5. 处理重复模板...") + print("=" * 80) + + total_deleted = 0 + total_relations_deleted = 0 + + for normalized_name, templates in duplicates.items(): + print(f"\n处理重复模板: {normalized_name}") + print(f" 重复记录数: {len(templates)}") + + # 获取对应的有效模板文件 + valid_files = valid_templates.get(normalized_name, []) + + # 选择要保留的模板 + keep_template = select_best_template(templates, valid_files) + + if keep_template: + print(f" [KEEP] 保留模板: {keep_template['name']} (ID: {keep_template['id']})") + + # 删除其他重复的模板 + for template in templates: + if template['id'] != keep_template['id']: + print(f" [DELETE] 删除重复模板: {template['name']} (ID: {template['id']})") + relations_deleted, template_deleted = delete_template_and_relations(conn, template['id']) + total_relations_deleted += relations_deleted + total_deleted += template_deleted + else: + print(f" [WARN] 无法确定要保留的模板,跳过") + + print(f"\n[OK] 删除重复模板: {total_deleted} 个") + print(f"[OK] 删除关联关系: {total_relations_deleted} 条\n") + + # 标记无效模板 + print("6. 标记无效模板...") + mark_invalid_templates(conn, valid_template_names) + + # 统计最终结果 + print("\n7. 统计最终结果...") + final_templates = get_all_templates_from_db(conn) + enabled_count = sum(1 for templates in final_templates.values() + for t in templates if t.get('state') == 1) + disabled_count = sum(1 for templates in final_templates.values() + for t in templates if t.get('state') != 1) + + print(f"[OK] 最终模板总数: {sum(len(v) for v in final_templates.values())}") + print(f"[OK] 启用模板数: {enabled_count}") + print(f"[OK] 禁用模板数: {disabled_count}") + print(f"[OK] 唯一模板名称: {len(final_templates)}") + + # 打印最终模板列表 + print("\n8. 最终模板列表(启用的):") + print("=" * 80) + for normalized_name, templates in sorted(final_templates.items()): + enabled = [t for t in templates if t.get('state') == 1] + if enabled: + for template in enabled: + print(f" - {template['name']} (ID: {template['id']})") + + print("\n" + "=" * 80) + print("清理完成!") + print("=" * 80) + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +if __name__ == '__main__': + main() + diff --git a/finalize_template_hierarchy.py b/finalize_template_hierarchy.py new file mode 100644 index 0000000..9cfc1c6 --- /dev/null +++ b/finalize_template_hierarchy.py @@ -0,0 +1,158 @@ +""" +最终完善模板层级结构 +修复文件路径错误和重复问题 +""" +import pymysql +import time +import random +from pathlib import Path + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +CREATED_BY = 655162080928945152 +UPDATED_BY = 655162080928945152 + +def generate_id(): + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + return timestamp * 1000 + random_part + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor(pymysql.cursors.DictCursor) + +try: + # 检查"1请示报告卡"的记录 + # 根据目录结构,应该有两个不同的文件: + # 1. "1.初核请示"下的"1.请示报告卡(XXX).docx" + # 2. "走读式谈话审批"下的"1.请示报告卡(初核谈话).docx" + cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name = %s + ORDER BY id + """, (TENANT_ID, '1请示报告卡')) + + results = cursor.fetchall() + + # 检查是否在"1.初核请示"下有记录 + in_initial_request = any(r['parent_id'] == 1765431558933731 for r in results) + # 检查是否在"走读式谈话审批"下有记录 + in_interview_approval = any(r['parent_id'] == 1765273962700431 for r in results) + + if not in_initial_request: + # 需要在"1.初核请示"下创建记录 + new_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + new_id, + TENANT_ID, + 1765431558933731, # 1.初核请示 + '1请示报告卡', + None, + '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(XXX).docx', + CREATED_BY, + CREATED_BY, + 1 + )) + print(f"[CREATE] 在'1.初核请示'下创建'1请示报告卡'记录 (ID: {new_id})") + + if not in_interview_approval: + # 需要在"走读式谈话审批"下创建记录 + new_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + new_id, + TENANT_ID, + 1765273962700431, # 走读式谈话审批 + '1请示报告卡', + None, + '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(初核谈话).docx', + CREATED_BY, + CREATED_BY, + 1 + )) + print(f"[CREATE] 在'走读式谈话审批'下创建'1请示报告卡'记录 (ID: {new_id})") + + # 更新现有记录的文件路径 + for result in results: + if result['parent_id'] == 1765431558933731: # 1.初核请示 + correct_path = '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(XXX).docx' + elif result['parent_id'] == 1765273962700431: # 走读式谈话审批 + correct_path = '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(初核谈话).docx' + else: + continue + + if result['file_path'] != correct_path: + cursor.execute(""" + UPDATE f_polic_file_config + SET file_path = %s, updated_time = NOW(), updated_by = %s + WHERE tenant_id = %s AND id = %s + """, (correct_path, UPDATED_BY, TENANT_ID, result['id'])) + print(f"[UPDATE] 修复'1请示报告卡'的文件路径 (ID: {result['id']}): {result['file_path']} -> {correct_path}") + + # 检查重复的"XXX初核情况报告" + cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name LIKE %s + ORDER BY id + """, (TENANT_ID, '%XXX初核情况报告%')) + + results = cursor.fetchall() + if len(results) > 1: + # 保留最新的,删除旧的 + # 或者根据file_path判断哪个是正确的 + # 根据目录结构,应该是"8.XXX初核情况报告.docx" + correct_name = 'XXX初核情况报告' + correct_path = '/615873064429507639/TEMPLATE/2025/12/8.XXX初核情况报告.docx' + + for r in results: + if r['name'] == '8.XXX初核情况报告': + # 这个应该删除(名称带数字前缀) + cursor.execute(""" + DELETE FROM f_polic_file_field + WHERE tenant_id = %s AND file_id = %s + """, (TENANT_ID, r['id'])) + cursor.execute(""" + DELETE FROM f_polic_file_config + WHERE tenant_id = %s AND id = %s + """, (TENANT_ID, r['id'])) + print(f"[DELETE] 删除重复记录: {r['name']} (ID: {r['id']})") + elif r['name'] == 'XXX初核情况报告': + # 更新这个记录的文件路径 + if r['file_path'] != correct_path: + cursor.execute(""" + UPDATE f_polic_file_config + SET file_path = %s, updated_time = NOW(), updated_by = %s + WHERE tenant_id = %s AND id = %s + """, (correct_path, UPDATED_BY, TENANT_ID, r['id'])) + print(f"[UPDATE] 更新'XXX初核情况报告'的文件路径: {r['file_path']} -> {correct_path}") + + conn.commit() + print("\n[OK] 修复完成") + +except Exception as e: + conn.rollback() + print(f"[ERROR] 修复失败: {e}") + import traceback + traceback.print_exc() +finally: + cursor.close() + conn.close() + diff --git a/fix_duplicate_request_report_card.py b/fix_duplicate_request_report_card.py new file mode 100644 index 0000000..7a67daf --- /dev/null +++ b/fix_duplicate_request_report_card.py @@ -0,0 +1,131 @@ +""" +修复重复的"1请示报告卡"记录 +确保每个文件在正确的位置只有一个记录 +""" +import pymysql + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +UPDATED_BY = 655162080928945152 + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor(pymysql.cursors.DictCursor) + +try: + # 查找所有"1请示报告卡"记录 + cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name = %s + ORDER BY id + """, (TENANT_ID, '1请示报告卡')) + + results = cursor.fetchall() + print(f"找到 {len(results)} 条'1请示报告卡'记录:\n") + + # 根据file_path和parent_id判断哪些是正确的 + correct_records = [] + for r in results: + print(f"ID: {r['id']}, file_path: {r['file_path']}, parent_id: {r['parent_id']}") + + # 判断是否正确 + if r['parent_id'] == 1765431558933731: # 1.初核请示 + if '1.请示报告卡(XXX)' in (r['file_path'] or ''): + correct_records.append(r) + elif r['parent_id'] == 1765273962700431: # 走读式谈话审批 + if '1.请示报告卡(初核谈话)' in (r['file_path'] or ''): + correct_records.append(r) + + print(f"\n正确的记录数: {len(correct_records)}") + + # 删除不正确的记录 + for r in results: + if r not in correct_records: + # 先删除关联关系 + cursor.execute(""" + DELETE FROM f_polic_file_field + WHERE tenant_id = %s AND file_id = %s + """, (TENANT_ID, r['id'])) + # 删除模板记录 + cursor.execute(""" + DELETE FROM f_polic_file_config + WHERE tenant_id = %s AND id = %s + """, (TENANT_ID, r['id'])) + print(f"[DELETE] 删除不正确的记录: ID {r['id']}, file_path: {r['file_path']}, parent_id: {r['parent_id']}") + + # 确保两个位置都有正确的记录 + has_initial_request = any(r['parent_id'] == 1765431558933731 for r in correct_records) + has_interview_approval = any(r['parent_id'] == 1765273962700431 for r in correct_records) + + if not has_initial_request: + # 创建"1.初核请示"下的记录 + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + new_id = timestamp * 1000 + random_part + + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + new_id, + TENANT_ID, + 1765431558933731, # 1.初核请示 + '1请示报告卡', + None, + '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(XXX).docx', + 655162080928945152, + 655162080928945152, + 1 + )) + print(f"[CREATE] 在'1.初核请示'下创建'1请示报告卡'记录 (ID: {new_id})") + + if not has_interview_approval: + # 创建"走读式谈话审批"下的记录 + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + new_id = timestamp * 1000 + random_part + + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + new_id, + TENANT_ID, + 1765273962700431, # 走读式谈话审批 + '1请示报告卡', + None, + '/615873064429507639/TEMPLATE/2025/12/1.请示报告卡(初核谈话).docx', + 655162080928945152, + 655162080928945152, + 1 + )) + print(f"[CREATE] 在'走读式谈话审批'下创建'1请示报告卡'记录 (ID: {new_id})") + + conn.commit() + print("\n[OK] 修复完成") + +except Exception as e: + conn.rollback() + print(f"[ERROR] 修复失败: {e}") + import traceback + traceback.print_exc() +finally: + cursor.close() + conn.close() + diff --git a/fix_remaining_hierarchy_issues.py b/fix_remaining_hierarchy_issues.py new file mode 100644 index 0000000..df0137e --- /dev/null +++ b/fix_remaining_hierarchy_issues.py @@ -0,0 +1,61 @@ +""" +修复剩余的层级结构问题 +""" +import pymysql + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +UPDATED_BY = 655162080928945152 + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor() + +try: + # 1. 修复"2保密承诺书"的parent_id(应该在"走读式谈话流程"下) + # "走读式谈话流程"的ID是 1765273962716807 + cursor.execute(""" + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s + WHERE tenant_id = %s AND id = %s + """, (1765273962716807, UPDATED_BY, TENANT_ID, 1765425919729046)) + print(f"[UPDATE] 更新'2保密承诺书'的parent_id: {cursor.rowcount} 条") + + # 2. 检查"8.XXX初核情况报告"的位置(应该在"3.初核结论"下,而不是"走读式谈话流程"下) + # "3.初核结论"的ID是 1765431559135346 + # 先查找"8.XXX初核情况报告"的ID + cursor.execute(""" + SELECT id, name, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name LIKE %s + """, (TENANT_ID, '%XXX初核情况报告%')) + result = cursor.fetchone() + if result: + file_id, file_name, current_parent = result + if current_parent != 1765431559135346: + cursor.execute(""" + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s + WHERE tenant_id = %s AND id = %s + """, (1765431559135346, UPDATED_BY, TENANT_ID, file_id)) + print(f"[UPDATE] 更新'{file_name}'的parent_id: {cursor.rowcount} 条") + + conn.commit() + print("\n[OK] 修复完成") + +except Exception as e: + conn.rollback() + print(f"[ERROR] 修复失败: {e}") + import traceback + traceback.print_exc() +finally: + cursor.close() + conn.close() + diff --git a/fix_template_names.py b/fix_template_names.py new file mode 100644 index 0000000..e8574a0 --- /dev/null +++ b/fix_template_names.py @@ -0,0 +1,234 @@ +""" +检查并修复 f_polic_file_config 表中模板名称与文件名的对应关系 +确保 name 字段与模板文档名称(去掉扩展名)完全一致 +""" +import os +import sys +import pymysql +from pathlib import Path +from typing import Dict, List, Optional + +# 设置输出编码为UTF-8(Windows兼容) +if sys.platform == 'win32': + import io + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') + sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +UPDATED_BY = 655162080928945152 +TEMPLATE_BASE_DIR = 'template_finish' + + +def scan_template_files(base_dir: str) -> Dict[str, str]: + """ + 扫描模板文件夹,获取所有模板文件信息 + + Returns: + 字典,key为MinIO路径(用于匹配),value为文件名(不含扩展名) + """ + base_path = Path(base_dir) + if not base_path.exists(): + print(f"错误: 目录不存在 - {base_dir}") + return {} + + templates = {} + + print("=" * 80) + print("扫描模板文件...") + print("=" * 80) + + for docx_file in sorted(base_path.rglob("*.docx")): + # 跳过临时文件 + if docx_file.name.startswith("~$"): + continue + + # 获取文件名(不含扩展名) + file_name_without_ext = docx_file.stem + + # 构建MinIO路径(用于匹配数据库中的file_path) + from datetime import datetime + now = datetime.now() + minio_path = f'/615873064429507639/TEMPLATE/{now.year}/{now.month:02d}/{docx_file.name}' + + templates[minio_path] = { + 'file_name': docx_file.name, + 'name_without_ext': file_name_without_ext, + 'relative_path': str(docx_file.relative_to(base_path)) + } + + print(f"找到 {len(templates)} 个模板文件\n") + return templates + + +def get_db_templates(conn) -> Dict[str, Dict]: + """ + 获取数据库中所有模板记录 + + Returns: + 字典,key为file_path,value为模板信息 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND file_path IS NOT NULL + """ + cursor.execute(sql, (TENANT_ID,)) + templates = cursor.fetchall() + + result = {} + for template in templates: + if template['file_path']: + result[template['file_path']] = { + 'id': template['id'], + 'name': template['name'], + 'file_path': template['file_path'], + 'parent_id': template['parent_id'] + } + + cursor.close() + return result + + +def update_template_name(conn, template_id: int, new_name: str, old_name: str): + """ + 更新模板名称 + """ + cursor = conn.cursor() + + try: + update_sql = """ + UPDATE f_polic_file_config + SET name = %s, updated_time = NOW(), updated_by = %s + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (new_name, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] ID: {template_id}") + print(f" 旧名称: {old_name}") + print(f" 新名称: {new_name}") + return True + except Exception as e: + conn.rollback() + print(f" [ERROR] 更新失败: {str(e)}") + return False + finally: + cursor.close() + + +def match_file_path(file_path: str, db_paths: List[str]) -> Optional[str]: + """ + 匹配文件路径(可能日期不同) + + Args: + file_path: 当前构建的MinIO路径 + db_paths: 数据库中的所有路径列表 + + Returns: + 匹配的数据库路径,如果找到的话 + """ + # 提取文件名 + file_name = Path(file_path).name + + # 在数据库路径中查找相同文件名的路径 + for db_path in db_paths: + if Path(db_path).name == file_name: + return db_path + + return None + + +def main(): + """主函数""" + print("=" * 80) + print("检查并修复模板名称") + print("=" * 80) + print() + + try: + # 连接数据库 + print("1. 连接数据库...") + conn = pymysql.connect(**DB_CONFIG) + print("[OK] 数据库连接成功\n") + + # 扫描模板文件 + print("2. 扫描模板文件...") + file_templates = scan_template_files(TEMPLATE_BASE_DIR) + + # 获取数据库模板 + print("3. 获取数据库模板...") + db_templates = get_db_templates(conn) + print(f"[OK] 找到 {len(db_templates)} 个数据库模板\n") + + # 检查并更新 + print("4. 检查并更新模板名称...") + print("=" * 80) + + updated_count = 0 + not_found_count = 0 + matched_count = 0 + + # 遍历文件模板 + for file_path, file_info in file_templates.items(): + file_name = file_info['file_name'] + expected_name = file_info['name_without_ext'] + + # 尝试直接匹配 + db_template = db_templates.get(file_path) + + # 如果直接匹配失败,尝试通过文件名匹配 + if not db_template: + matched_path = match_file_path(file_path, list(db_templates.keys())) + if matched_path: + db_template = db_templates[matched_path] + + if db_template: + matched_count += 1 + current_name = db_template['name'] + + # 检查名称是否一致 + if current_name != expected_name: + print(f"\n文件: {file_name}") + if update_template_name(conn, db_template['id'], expected_name, current_name): + updated_count += 1 + else: + print(f" [OK] {file_name} - 名称已正确") + else: + not_found_count += 1 + print(f" [WARN] 未找到: {file_name}") + + print("\n" + "=" * 80) + print("检查完成") + print("=" * 80) + print(f"总文件数: {len(file_templates)}") + print(f"匹配成功: {matched_count}") + print(f"更新数量: {updated_count}") + print(f"未找到: {not_found_count}") + print("=" * 80) + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +if __name__ == '__main__': + main() + diff --git a/process_confidentiality_commitment_non_party.py b/process_confidentiality_commitment_non_party.py new file mode 100644 index 0000000..18f6827 --- /dev/null +++ b/process_confidentiality_commitment_non_party.py @@ -0,0 +1,372 @@ +""" +处理"6.1保密承诺书(谈话对象使用-非中共党员用).docx" +- 解析占位符 +- 上传到MinIO +- 更新数据库 +""" +import os +import sys +import re +import json +import pymysql +from minio import Minio +from minio.error import S3Error +from datetime import datetime +from pathlib import Path +from docx import Document +from typing import Dict, List, Optional, Tuple + +# 设置输出编码为UTF-8(Windows兼容) +if sys.platform == 'win32': + import io + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') + sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') + +# MinIO连接配置 +MINIO_CONFIG = { + 'endpoint': 'minio.datacubeworld.com:9000', + 'access_key': 'JOLXFXny3avFSzB0uRA5', + 'secret_key': 'G1BR8jStNfovkfH5ou39EmPl34E4l7dGrnd3Cz0I', + 'secure': True +} + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +# 固定值 +TENANT_ID = 615873064429507639 +CREATED_BY = 655162080928945152 +UPDATED_BY = 655162080928945152 +BUCKET_NAME = 'finyx' + +# 文件路径 +TEMPLATE_FILE = 'template_finish/2-初核模版/2.谈话审批/走读式谈话流程/6.1保密承诺书(谈话对象使用-非中共党员用).docx' +PARENT_ID = 1765273962716807 # 走读式谈话流程的ID +TEMPLATE_NAME = '6.1保密承诺书(谈话对象使用-非中共党员用)' + + +def generate_id(): + """生成ID""" + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + return timestamp * 1000 + random_part + + +def extract_placeholders_from_docx(file_path: str) -> List[str]: + """ + 从docx文件中提取所有占位符 + + Args: + file_path: docx文件路径 + + Returns: + 占位符列表,格式: ['field_code1', 'field_code2', ...] + """ + placeholders = set() + pattern = r'\{\{([^}]+)\}\}' # 匹配 {{field_code}} 格式 + + try: + doc = Document(file_path) + + # 从段落中提取占位符 + for paragraph in doc.paragraphs: + text = paragraph.text + matches = re.findall(pattern, text) + for match in matches: + placeholders.add(match.strip()) + + # 从表格中提取占位符 + for table in doc.tables: + for row in table.rows: + for cell in row.cells: + for paragraph in cell.paragraphs: + text = paragraph.text + matches = re.findall(pattern, text) + for match in matches: + placeholders.add(match.strip()) + + except Exception as e: + print(f" 错误: 读取文件失败 - {str(e)}") + return [] + + return sorted(list(placeholders)) + + +def upload_to_minio(file_path: str, minio_client: Minio) -> str: + """ + 上传文件到MinIO + + Args: + file_path: 本地文件路径 + minio_client: MinIO客户端实例 + + Returns: + MinIO中的相对路径 + """ + try: + # 检查存储桶是否存在 + found = minio_client.bucket_exists(BUCKET_NAME) + if not found: + raise Exception(f"存储桶 '{BUCKET_NAME}' 不存在,请先创建") + + # 生成MinIO对象路径(使用当前日期) + now = datetime.now() + file_name = Path(file_path).name + object_name = f'{TENANT_ID}/TEMPLATE/{now.year}/{now.month:02d}/{file_name}' + + # 上传文件 + minio_client.fput_object( + BUCKET_NAME, + object_name, + file_path, + content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document' + ) + + # 返回相对路径(以/开头) + return f"/{object_name}" + + except S3Error as e: + raise Exception(f"MinIO错误: {e}") + except Exception as e: + raise Exception(f"上传文件时发生错误: {e}") + + +def get_db_fields(conn) -> Dict[str, Dict]: + """ + 获取数据库中所有字段(field_type=2的输出字段) + + Returns: + 字典,key为filed_code,value为字段信息 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, filed_code, field_type + FROM f_polic_field + WHERE tenant_id = %s AND field_type = 2 + """ + cursor.execute(sql, (TENANT_ID,)) + fields = cursor.fetchall() + + result = {} + for field in fields: + result[field['filed_code']] = { + 'id': field['id'], + 'name': field['name'], + 'filed_code': field['filed_code'], + 'field_type': field['field_type'] + } + + cursor.close() + return result + + +def match_placeholders_to_fields(placeholders: List[str], fields: Dict[str, Dict]) -> Tuple[List[int], List[str]]: + """ + 匹配占位符到数据库字段 + + Returns: + (匹配的字段ID列表, 未匹配的占位符列表) + """ + matched_field_ids = [] + unmatched_placeholders = [] + + for placeholder in placeholders: + if placeholder in fields: + matched_field_ids.append(fields[placeholder]['id']) + else: + unmatched_placeholders.append(placeholder) + + return matched_field_ids, unmatched_placeholders + + +def create_or_update_template(conn, template_name: str, file_path: str, minio_path: str, parent_id: Optional[int]) -> int: + """ + 创建或更新模板记录 + + Returns: + 模板ID + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + try: + # 查找是否已存在(通过名称和parent_id匹配) + sql = """ + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name = %s AND parent_id = %s + """ + cursor.execute(sql, (TENANT_ID, template_name, parent_id)) + existing = cursor.fetchone() + + if existing: + # 更新现有记录 + template_id = existing['id'] + update_sql = """ + UPDATE f_polic_file_config + SET file_path = %s, updated_time = NOW(), updated_by = %s, state = 1 + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (minio_path, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新模板记录 (ID: {template_id})") + return template_id + else: + # 创建新记录 + template_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + template_id, + TENANT_ID, + parent_id, + template_name, + None, # input_data + minio_path, + CREATED_BY, + CREATED_BY, + 1 # state: 1表示启用 + )) + conn.commit() + print(f" [CREATE] 创建模板记录 (ID: {template_id})") + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"创建或更新模板失败: {str(e)}") + finally: + cursor.close() + + +def update_template_field_relations(conn, template_id: int, field_ids: List[int]): + """ + 更新模板-字段关联关系 + """ + cursor = conn.cursor() + + try: + # 删除旧的关联关系 + delete_sql = """ + DELETE FROM f_polic_file_field + WHERE tenant_id = %s AND file_id = %s + """ + cursor.execute(delete_sql, (TENANT_ID, template_id)) + + # 插入新的关联关系 + if field_ids: + insert_sql = """ + INSERT INTO f_polic_file_field + (tenant_id, file_id, filed_id, created_time, created_by, updated_time, updated_by) + VALUES (%s, %s, %s, NOW(), %s, NOW(), %s) + """ + for field_id in field_ids: + cursor.execute(insert_sql, (TENANT_ID, template_id, field_id, CREATED_BY, CREATED_BY)) + + conn.commit() + print(f" [UPDATE] 更新字段关联关系: {len(field_ids)} 个字段") + + except Exception as e: + conn.rollback() + raise Exception(f"更新字段关联关系失败: {str(e)}") + finally: + cursor.close() + + +def main(): + """主函数""" + print("=" * 80) + print("处理保密承诺书(非中共党员用)模板") + print("=" * 80) + print() + + # 检查文件是否存在 + if not os.path.exists(TEMPLATE_FILE): + print(f"错误: 文件不存在 - {TEMPLATE_FILE}") + return + + print(f"文件路径: {TEMPLATE_FILE}") + print() + + try: + # 1. 提取占位符 + print("1. 提取占位符...") + placeholders = extract_placeholders_from_docx(TEMPLATE_FILE) + print(f" 找到 {len(placeholders)} 个占位符:") + for i, placeholder in enumerate(placeholders, 1): + print(f" {i}. {{{{ {placeholder} }}}}") + print() + + # 2. 连接数据库和MinIO + print("2. 连接数据库和MinIO...") + conn = pymysql.connect(**DB_CONFIG) + minio_client = Minio( + MINIO_CONFIG['endpoint'], + access_key=MINIO_CONFIG['access_key'], + secret_key=MINIO_CONFIG['secret_key'], + secure=MINIO_CONFIG['secure'] + ) + print(" [OK] 连接成功\n") + + # 3. 获取数据库字段 + print("3. 获取数据库字段...") + db_fields = get_db_fields(conn) + print(f" [OK] 找到 {len(db_fields)} 个输出字段\n") + + # 4. 匹配占位符到字段 + print("4. 匹配占位符到字段...") + matched_field_ids, unmatched_placeholders = match_placeholders_to_fields(placeholders, db_fields) + print(f" 匹配成功: {len(matched_field_ids)} 个") + print(f" 未匹配: {len(unmatched_placeholders)} 个") + if unmatched_placeholders: + print(f" 未匹配的占位符: {', '.join(unmatched_placeholders)}") + print() + + # 5. 上传到MinIO + print("5. 上传到MinIO...") + minio_path = upload_to_minio(TEMPLATE_FILE, minio_client) + print(f" [OK] MinIO路径: {minio_path}\n") + + # 6. 创建或更新数据库记录 + print("6. 创建或更新数据库记录...") + template_id = create_or_update_template(conn, TEMPLATE_NAME, TEMPLATE_FILE, minio_path, PARENT_ID) + print(f" [OK] 模板ID: {template_id}\n") + + # 7. 更新字段关联关系 + print("7. 更新字段关联关系...") + update_template_field_relations(conn, template_id, matched_field_ids) + print() + + print("=" * 80) + print("处理完成!") + print("=" * 80) + print(f"模板ID: {template_id}") + print(f"MinIO路径: {minio_path}") + print(f"关联字段数: {len(matched_field_ids)}") + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +if __name__ == '__main__': + main() + diff --git a/services/__pycache__/document_service.cpython-312.pyc b/services/__pycache__/document_service.cpython-312.pyc index 515164101c3580367aaea38079d11b5a605d4a02..f87543718f656c3768c212becb360876dc66938d 100644 GIT binary patch delta 9423 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 T)Vt4>JH|l#))3@3WAA?fP|@3L diff --git a/services/document_service.py b/services/document_service.py index 841e7db..8e7a64d 100644 --- a/services/document_service.py +++ b/services/document_service.py @@ -138,7 +138,6 @@ class DocumentService: doc = Document(template_path) print(f"[DEBUG] 文档包含 {len(doc.paragraphs)} 个段落, {len(doc.tables)} 个表格") -<<<<<<< HEAD def replace_placeholder_in_paragraph(paragraph): """在段落中替换占位符(处理跨run的情况)""" try: @@ -204,18 +203,6 @@ class DocumentService: if placeholder in before_text and placeholder not in after_text: replaced_placeholders.add(field_code) total_replacements += before_text.count(placeholder) -======= - # 替换占位符 {{field_code}} 为实际值 - for paragraph in doc.paragraphs: - # 替换段落文本中的占位符 - for field_code, field_value in field_data.items(): - placeholder = f"{{{{{field_code}}}}}" - if placeholder in paragraph.text: - # 替换占位符 - for run in paragraph.runs: - if placeholder in run.text: - run.text = run.text.replace(placeholder, field_value or '') ->>>>>>> parent of 4897c96 (添加通过taskId获取文档的接口,支持文件列表查询和参数验证,增强错误处理能力。同时,优化文档生成逻辑,确保生成的文档名称和路径的准确性。) # 替换表格中的占位符 try: @@ -264,7 +251,6 @@ class DocumentService: for table in doc.tables: for row in table.rows: for cell in row.cells: -<<<<<<< HEAD if hasattr(cell, 'paragraphs'): for paragraph in cell.paragraphs: text = paragraph.text @@ -281,15 +267,6 @@ class DocumentService: print(f" - ⚠️ 仍有未替换的占位符: {sorted(remaining_placeholders)}") else: print(f" - ✓ 所有占位符已成功替换") -======= - for paragraph in cell.paragraphs: - for field_code, field_value in field_data.items(): - placeholder = f"{{{{{field_code}}}}}" - if placeholder in paragraph.text: - for run in paragraph.runs: - if placeholder in run.text: - run.text = run.text.replace(placeholder, field_value or '') ->>>>>>> parent of 4897c96 (添加通过taskId获取文档的接口,支持文件列表查询和参数验证,增强错误处理能力。同时,优化文档生成逻辑,确保生成的文档名称和路径的准确性。) # 保存到临时文件 temp_dir = tempfile.gettempdir() @@ -493,9 +470,11 @@ class DocumentService: if target_name and target_name.strip(): suffix = f"_{target_name.strip()}" -<<<<<<< HEAD - # 生成新文件名 - return f"{base_name}{suffix}.docx" + # 生成新文件名(确保是.docx格式) + generated_name = f"{base_name}{suffix}.docx" + print(f"[DEBUG] 文档名称生成: '{original_file_name}' -> '{generated_name}' (base_name='{base_name}', suffix='{suffix}')") + + return generated_name def generate_presigned_download_url(self, file_path: str, expires_days: int = 7) -> Optional[str]: """ @@ -530,11 +509,4 @@ class DocumentService: # 如果生成URL失败,记录错误但不影响主流程 print(f"生成预签名URL失败: {str(e)}") return None -======= - # 生成新文件名(确保是.docx格式) - generated_name = f"{base_name}{suffix}.docx" - print(f"[DEBUG] 文档名称生成: '{original_file_name}' -> '{generated_name}' (base_name='{base_name}', suffix='{suffix}')") - - return generated_name ->>>>>>> e3f4a394c1a4333db2fd3a9383be29fa9d9055e0 diff --git a/static/index.html b/static/index.html index 3a4e600..dacda09 100644 --- a/static/index.html +++ b/static/index.html @@ -326,10 +326,14 @@
- +
- - + + + +
+
+ 💡 提示:点击"加载全部可用模板"可以加载所有可用的文档模板类型,方便测试不同模板的生成效果
@@ -568,16 +572,12 @@ return; } - // 添加前5个文件作为示例 - filesWithPath.slice(0, 5).forEach(file => { + // 加载所有可用文件 + filesWithPath.forEach(file => { addFileItem(file.fileId, file.fileName); }); - if (filesWithPath.length > 5) { - alert(`已加载前5个文件,共找到 ${filesWithPath.length} 个可用文件`); - } else { - alert(`已加载 ${filesWithPath.length} 个可用文件`); - } + alert(`已加载全部 ${filesWithPath.length} 个可用文件模板`); } else { alert('获取文件列表失败: ' + (result.errorMsg || '未知错误')); } @@ -603,7 +603,7 @@ addGenerateField('department_opinion', ''); addGenerateField('filler_name', ''); - // 自动加载可用的文件列表(只加载前2个作为示例) + // 自动加载所有可用的文件列表 try { const response = await fetch('/api/file-configs'); const result = await response.json(); @@ -612,19 +612,19 @@ // 只添加有filePath的文件(有模板文件的) const filesWithPath = result.data.fileConfigs.filter(f => f.filePath); - // 添加前2个文件作为示例 - filesWithPath.slice(0, 2).forEach(file => { + // 加载所有可用文件 + filesWithPath.forEach(file => { addFileItem(file.fileId, file.fileName); }); + + if (filesWithPath.length > 0) { + console.log(`已自动加载 ${filesWithPath.length} 个可用文件模板`); + } } else { - // 如果加载失败,使用默认的fileId - addFileItem(1765273961883544, '初步核实审批表.doc'); // 2.初步核实审批表(XXX) - addFileItem(1765273961563507, '请示报告卡.doc'); // 1.请示报告卡(XXX) + console.warn('未找到可用的文件配置'); } } catch (error) { - // 如果加载失败,使用默认的fileId - addFileItem(1765273961883544, '初步核实审批表.doc'); - addFileItem(1765273961563507, '请示报告卡.doc'); + console.warn('自动加载文件列表失败:', error); } } @@ -769,8 +769,15 @@ result.data.fpolicFieldParamFileList.forEach(file => { html += `
${file.fileName}:
- 文件路径: ${file.filePath || '(无路径)'} -
`; + 文件路径: ${file.filePath || '(无路径)'}
`; + + // 如果有下载链接,显示可点击的链接 + if (file.downloadUrl) { + html += `下载链接:
${file.downloadUrl}
`; + html += ``; + } + + html += `
`; }); } } @@ -796,6 +803,12 @@ btn.closest('.field-row').remove(); } + function clearAllFiles() { + if (confirm('确定要清空所有文件列表吗?')) { + document.getElementById('fileListContainer').innerHTML = ''; + } + } + function displayError(tabType, errorMsg) { const resultSection = document.getElementById(tabType + 'ResultSection'); const resultBox = document.getElementById(tabType + 'ResultBox'); diff --git a/template_finish/2-初核模版/1.初核请示/~$初步核实审批表(XXX).docx b/template_finish/2-初核模版/1.初核请示/~$初步核实审批表(XXX).docx new file mode 100644 index 0000000000000000000000000000000000000000..8efa2add58b5d5f87a575ca504cb02cda69d2af3 GIT binary patch literal 162 acmZQM@NUmO22ueNgI{`bG^x7CQx5=>2n3=4 literal 0 HcmV?d00001 diff --git a/template_finish/2-初核模版/1.初核请示/~$请示报告卡(XXX).docx b/template_finish/2-初核模版/1.初核请示/~$请示报告卡(XXX).docx new file mode 100644 index 0000000000000000000000000000000000000000..8efa2add58b5d5f87a575ca504cb02cda69d2af3 GIT binary patch literal 162 acmZQM@NUmO22ueNgI{`bG^x7CQx5=>2n3=4 literal 0 HcmV?d00001 diff --git a/template_finish/2-初核模版/3.初核结论/8-1请示报告卡(初核报告结论) .docx b/template_finish/2-初核模版/3.初核结论/8-1请示报告卡(初核报告结论) .docx index f2a499e0c4547259f0ccc9573bdd3597830bdd24..e42f7e5b1a6ff7870ffb5527df31203c79901a40 100644 GIT binary patch delta 154854 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

@IeX}(W6Y%Znr?zl_{S*9$%x+4Q1TSYfD@4A* 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

  • yQiI0Za31>+9rkwwOhu-Ql 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]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

    -Ik|ox9{_!pcpDB1pXI^L(rF5M3wtVy{mw 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 diff --git a/template_finish/2-初核模版/3.初核结论/~$1请示报告卡(初核报告结论) .docx b/template_finish/2-初核模版/3.初核结论/~$1请示报告卡(初核报告结论) .docx new file mode 100644 index 0000000000000000000000000000000000000000..8efa2add58b5d5f87a575ca504cb02cda69d2af3 GIT binary patch literal 162 acmZQM@NUmO22ueNgI{`bG^x7CQx5=>2n3=4 literal 0 HcmV?d00001 diff --git a/template_finish/2-初核模版/3.初核结论/~$XXX初核情况报告.docx b/template_finish/2-初核模版/3.初核结论/~$XXX初核情况报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..8efa2add58b5d5f87a575ca504cb02cda69d2af3 GIT binary patch literal 162 acmZQM@NUmO22ueNgI{`bG^x7CQx5=>2n3=4 literal 0 HcmV?d00001 diff --git a/update_template_hierarchy.py b/update_template_hierarchy.py new file mode 100644 index 0000000..67dc68b --- /dev/null +++ b/update_template_hierarchy.py @@ -0,0 +1,472 @@ +""" +根据 template_finish/ 目录结构更新 f_polic_file_config 表中的层级结构 +""" +import os +import sys +import json +import pymysql +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from collections import defaultdict + +# 设置输出编码为UTF-8(Windows兼容) +if sys.platform == 'win32': + import io + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') + sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +CREATED_BY = 655162080928945152 +UPDATED_BY = 655162080928945152 +TEMPLATE_BASE_DIR = 'template_finish' + + +def generate_id(): + """生成ID""" + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + return timestamp * 1000 + random_part + + +def normalize_name(name: str) -> str: + """ + 标准化名称(去掉扩展名、括号内容、数字前缀等) + 用于匹配数据库中的记录 + """ + # 去掉扩展名 + name = Path(name).stem if '.' in name else name + + # 去掉括号内容 + import re + name = re.sub(r'[((].*?[))]', '', name) + name = name.strip() + + # 去掉数字前缀和点号 + name = re.sub(r'^\d+[\.\-]?\s*', '', name) + name = name.strip() + + return name + + +def scan_directory_structure(base_dir: str) -> Dict: + """ + 扫描目录结构,构建层级关系 + + Returns: + 字典,包含目录和文件的层级信息 + """ + base_path = Path(base_dir) + if not base_path.exists(): + print(f"错误: 目录不存在 - {base_dir}") + return {} + + structure = { + 'directories': [], # 目录节点列表 + 'files': [], # 文件节点列表 + 'name_to_id': {} # 名称到ID的映射(用于查找parent_id) + } + + print("=" * 80) + print("扫描目录结构...") + print("=" * 80) + + # 遍历所有目录和文件 + for item in base_path.rglob("*"): + relative_path = item.relative_to(base_path) + parts = relative_path.parts + + if item.is_dir(): + # 目录节点 + level = len(parts) - 1 # 层级(从0开始) + dir_name = parts[-1] + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + structure['directories'].append({ + 'name': dir_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path, + 'parent_id': None # 稍后设置 + }) + + elif item.is_file() and item.suffix == '.docx' and not item.name.startswith("~$"): + # 文件节点 + level = len(parts) - 1 + file_name = item.name + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + structure['files'].append({ + 'name': file_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path, + 'parent_id': None, # 稍后设置 + 'file_path': str(item) + }) + + # 按层级排序 + structure['directories'].sort(key=lambda x: (x['level'], x['path'])) + structure['files'].sort(key=lambda x: (x['level'], x['path'])) + + print(f"找到 {len(structure['directories'])} 个目录节点") + print(f"找到 {len(structure['files'])} 个文件节点") + + return structure + + +def get_existing_templates(conn) -> Dict: + """ + 获取数据库中现有的模板记录 + + Returns: + 字典,key为标准化名称,value为模板信息 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, parent_id, file_path, state + FROM f_polic_file_config + WHERE tenant_id = %s + """ + cursor.execute(sql, (TENANT_ID,)) + templates = cursor.fetchall() + + result = {} + for template in templates: + normalized_name = normalize_name(template['name']) + result[normalized_name] = { + 'id': template['id'], + 'name': template['name'], + 'normalized_name': normalized_name, + 'parent_id': template['parent_id'], + 'file_path': template['file_path'], + 'state': template['state'] + } + + cursor.close() + return result + + +def find_template_by_name(existing_templates: Dict, name: str, prefer_directory: bool = False) -> Optional[Dict]: + """ + 根据名称查找模板(支持标准化匹配) + + Args: + name: 模板名称 + prefer_directory: 是否优先匹配目录节点 + """ + normalized = normalize_name(name) + + # 精确匹配标准化名称 + if normalized in existing_templates: + template = existing_templates[normalized] + # 如果prefer_directory为True,且找到的是文件,继续查找目录 + if prefer_directory and template.get('file_path') is not None: + pass # 继续查找 + else: + return template + + # 模糊匹配(包含关系) + candidates = [] + for key, template in existing_templates.items(): + if key.startswith("DIR:"): + # 目录节点 + if normalized in template.get('normalized_name', '') or template.get('normalized_name', '') in normalized: + candidates.append((template, True)) + else: + # 文件节点 + if normalized in template.get('normalized_name', '') or template.get('normalized_name', '') in normalized: + candidates.append((template, False)) + + # 如果prefer_directory,优先返回目录节点 + if prefer_directory: + for template, is_dir in candidates: + if is_dir: + return template + + # 返回第一个匹配的 + if candidates: + return candidates[0][0] + + return None + + +def create_or_update_directory(conn, dir_info: Dict, parent_id: Optional[int], existing_templates: Dict) -> int: + """ + 创建或更新目录节点 + + Returns: + 目录节点的ID + """ + cursor = conn.cursor() + + try: + # 先通过路径查找(最准确) + path_key = f"DIR:{dir_info['path']}" + existing = existing_templates.get(path_key) + + # 如果没找到,再通过名称查找(优先目录节点) + if not existing: + existing = find_template_by_name(existing_templates, dir_info['name'], prefer_directory=True) + # 确保找到的是目录节点(file_path为None) + if existing and existing.get('file_path') is not None: + existing = None + + if existing: + # 更新现有记录 + template_id = existing['id'] + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s, state = 1 + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新目录: {dir_info['name']} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持目录: {dir_info['name']} (ID: {template_id})") + return template_id + else: + # 创建新记录 + template_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + template_id, + TENANT_ID, + parent_id, + dir_info['name'], + None, # input_data + None, # file_path(目录节点没有文件路径) + CREATED_BY, + CREATED_BY, + 1 # state: 1表示启用 + )) + conn.commit() + print(f" [CREATE] 创建目录: {dir_info['name']} (ID: {template_id}, parent_id: {parent_id})") + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"创建或更新目录失败: {str(e)}") + finally: + cursor.close() + + +def update_file_parent(conn, file_info: Dict, parent_id: Optional[int], existing_templates: Dict) -> Optional[int]: + """ + 更新文件节点的parent_id + + Returns: + 文件节点的ID,如果未找到则返回None + """ + cursor = conn.cursor() + + try: + # 查找文件(使用文件名匹配) + existing = find_template_by_name(existing_templates, file_info['name']) + + if existing: + template_id = existing['id'] + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新文件: {file_info['name']} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持文件: {file_info['name']} (ID: {template_id})") + return template_id + else: + print(f" [WARN] 未找到文件: {file_info['name']}") + return None + + except Exception as e: + conn.rollback() + raise Exception(f"更新文件parent_id失败: {str(e)}") + finally: + cursor.close() + + +def build_path_to_id_map(structure: Dict, existing_templates: Dict, conn) -> Dict[str, int]: + """ + 构建路径到ID的映射 + + Returns: + 字典,key为路径,value为ID + """ + path_to_id = {} + + # 处理目录节点(按层级顺序,确保父节点先处理) + # 按层级和路径排序 + sorted_dirs = sorted(structure['directories'], key=lambda x: (x['level'], x['path'])) + + for dir_info in sorted_dirs: + parent_id = None + if dir_info['parent_path']: + parent_id = path_to_id.get(dir_info['parent_path']) + if parent_id is None: + print(f" [WARN] 未找到父目录: {dir_info['parent_path']}") + + dir_id = create_or_update_directory(conn, dir_info, parent_id, existing_templates) + path_to_id[dir_info['path']] = dir_id + + # 更新existing_templates,以便后续查找(使用完整路径作为key避免冲突) + key = f"DIR:{dir_info['path']}" + existing_templates[key] = { + 'id': dir_id, + 'name': dir_info['name'], + 'normalized_name': normalize_name(dir_info['name']), + 'parent_id': parent_id, + 'file_path': None, + 'state': 1, + 'path': dir_info['path'] + } + # 同时用标准化名称存储(用于文件查找父目录) + normalized_key = normalize_name(dir_info['name']) + if normalized_key not in existing_templates or existing_templates[normalized_key].get('file_path') is not None: + # 只有当不存在或存在的是文件时才更新 + existing_templates[normalized_key] = { + 'id': dir_id, + 'name': dir_info['name'], + 'normalized_name': normalized_key, + 'parent_id': parent_id, + 'file_path': None, + 'state': 1, + 'path': dir_info['path'] + } + + return path_to_id + + +def update_file_hierarchy(structure: Dict, path_to_id: Dict[str, int], existing_templates: Dict, conn): + """ + 更新文件节点的parent_id + """ + for file_info in structure['files']: + parent_id = None + if file_info['parent_path']: + parent_id = path_to_id.get(file_info['parent_path']) + + update_file_parent(conn, file_info, parent_id, existing_templates) + + +def main(): + """主函数""" + print("=" * 80) + print("更新模板层级结构") + print("=" * 80) + print() + + try: + # 连接数据库 + print("1. 连接数据库...") + conn = pymysql.connect(**DB_CONFIG) + print("[OK] 数据库连接成功\n") + + # 扫描目录结构 + print("2. 扫描目录结构...") + structure = scan_directory_structure(TEMPLATE_BASE_DIR) + if not structure: + print("错误: 未找到任何目录或文件") + return + + # 获取现有模板 + print("\n3. 获取现有模板...") + existing_templates = get_existing_templates(conn) + print(f"[OK] 找到 {len(existing_templates)} 个现有模板\n") + + # 构建路径到ID的映射(处理目录节点) + print("4. 创建/更新目录节点...") + print("=" * 80) + path_to_id = build_path_to_id_map(structure, existing_templates, conn) + print(f"\n[OK] 处理了 {len(path_to_id)} 个目录节点\n") + + # 更新文件节点的parent_id + print("5. 更新文件节点的parent_id...") + print("=" * 80) + update_file_hierarchy(structure, path_to_id, existing_templates, conn) + print(f"\n[OK] 处理了 {len(structure['files'])} 个文件节点\n") + + # 打印层级结构 + print("6. 最终层级结构:") + print("=" * 80) + print_hierarchy(conn) + + print("\n" + "=" * 80) + print("更新完成!") + print("=" * 80) + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +def print_hierarchy(conn, parent_id=None, level=0, prefix=""): + """打印层级结构""" + cursor = conn.cursor(pymysql.cursors.DictCursor) + + try: + if parent_id is None: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id IS NULL + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID,)) + else: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id = %s + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID, parent_id)) + + items = cursor.fetchall() + + for i, item in enumerate(items): + is_last = i == len(items) - 1 + current_prefix = prefix + ("└── " if is_last else "├── ") + next_prefix = prefix + (" " if is_last else "│ ") + + node_type = "📁" if item['file_path'] is None else "📄" + print(f"{current_prefix}{node_type} {item['name']} (ID: {item['id']})") + + # 递归打印子节点 + print_hierarchy(conn, item['id'], level + 1, next_prefix) + + finally: + cursor.close() + + +if __name__ == '__main__': + main() + diff --git a/update_template_hierarchy_final.py b/update_template_hierarchy_final.py new file mode 100644 index 0000000..4499db4 --- /dev/null +++ b/update_template_hierarchy_final.py @@ -0,0 +1,405 @@ +""" +根据 template_finish/ 目录结构更新 f_polic_file_config 表中的层级结构 +使用file_path作为唯一标识,确保正确建立层级关系 +""" +import os +import sys +import json +import pymysql +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from collections import defaultdict +from datetime import datetime + +# 设置输出编码为UTF-8(Windows兼容) +if sys.platform == 'win32': + import io + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') + sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +CREATED_BY = 655162080928945152 +UPDATED_BY = 655162080928945152 +TEMPLATE_BASE_DIR = 'template_finish' + + +def generate_id(): + """生成ID""" + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + return timestamp * 1000 + random_part + + +def scan_directory_structure(base_dir: str) -> Dict: + """ + 扫描目录结构,构建层级关系 + + Returns: + 字典,包含目录和文件的层级信息 + """ + base_path = Path(base_dir) + if not base_path.exists(): + print(f"错误: 目录不存在 - {base_dir}") + return {} + + structure = { + 'directories': [], # 目录节点列表 + 'files': [] # 文件节点列表 + } + + print("=" * 80) + print("扫描目录结构...") + print("=" * 80) + + # 遍历所有目录和文件 + for item in base_path.rglob("*"): + relative_path = item.relative_to(base_path) + parts = relative_path.parts + + if item.is_dir(): + # 目录节点 + level = len(parts) - 1 # 层级(从0开始) + dir_name = parts[-1] + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + structure['directories'].append({ + 'name': dir_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path + }) + + elif item.is_file() and item.suffix == '.docx' and not item.name.startswith("~$"): + # 文件节点 + level = len(parts) - 1 + file_name = item.name + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + # 构建MinIO路径 + now = datetime.now() + minio_path = f'/615873064429507639/TEMPLATE/{now.year}/{now.month:02d}/{file_name}' + + structure['files'].append({ + 'name': file_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path, + 'file_path': str(item), + 'minio_path': minio_path + }) + + # 按层级排序 + structure['directories'].sort(key=lambda x: (x['level'], x['path'])) + structure['files'].sort(key=lambda x: (x['level'], x['path'])) + + print(f"找到 {len(structure['directories'])} 个目录节点") + print(f"找到 {len(structure['files'])} 个文件节点") + + return structure + + +def get_existing_templates(conn) -> Dict: + """ + 获取数据库中现有的模板记录 + + Returns: + 字典,key为file_path,value为模板信息 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, parent_id, file_path, state + FROM f_polic_file_config + WHERE tenant_id = %s + """ + cursor.execute(sql, (TENANT_ID,)) + templates = cursor.fetchall() + + # 使用file_path作为key(如果存在) + result_by_path = {} + # 使用name作为key(用于目录节点) + result_by_name = {} + + for template in templates: + if template['file_path']: + result_by_path[template['file_path']] = { + 'id': template['id'], + 'name': template['name'], + 'parent_id': template['parent_id'], + 'file_path': template['file_path'], + 'state': template['state'] + } + else: + # 目录节点 + name = template['name'] + if name not in result_by_name: + result_by_name[name] = [] + result_by_name[name].append({ + 'id': template['id'], + 'name': template['name'], + 'parent_id': template['parent_id'], + 'file_path': None, + 'state': template['state'] + }) + + cursor.close() + return { + 'by_path': result_by_path, + 'by_name': result_by_name + } + + +def create_or_update_directory(conn, dir_name: str, parent_id: Optional[int], existing_templates: Dict) -> int: + """ + 创建或更新目录节点 + + Returns: + 目录节点的ID + """ + cursor = conn.cursor() + + try: + # 查找是否已存在(通过名称精确匹配,且file_path为None) + candidates = existing_templates['by_name'].get(dir_name, []) + existing = None + for candidate in candidates: + if candidate.get('file_path') is None: # 目录节点 + # 如果parent_id匹配,优先选择 + if candidate['parent_id'] == parent_id: + existing = candidate + break + elif existing is None: + existing = candidate + + if existing: + # 更新现有目录记录 + template_id = existing['id'] + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s, state = 1 + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新目录: {dir_name} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持目录: {dir_name} (ID: {template_id})") + return template_id + else: + # 创建新目录记录 + template_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + template_id, + TENANT_ID, + parent_id, + dir_name, + None, # input_data + None, # file_path(目录节点没有文件路径) + CREATED_BY, + CREATED_BY, + 1 # state: 1表示启用 + )) + conn.commit() + print(f" [CREATE] 创建目录: {dir_name} (ID: {template_id}, parent_id: {parent_id})") + # 更新existing_templates + if dir_name not in existing_templates['by_name']: + existing_templates['by_name'][dir_name] = [] + existing_templates['by_name'][dir_name].append({ + 'id': template_id, + 'name': dir_name, + 'parent_id': parent_id, + 'file_path': None, + 'state': 1 + }) + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"创建或更新目录失败: {str(e)}") + finally: + cursor.close() + + +def update_file_parent(conn, file_info: Dict, parent_id: Optional[int], existing_templates: Dict) -> Optional[int]: + """ + 更新文件节点的parent_id + + Args: + file_info: 文件信息,包含name、minio_path等 + parent_id: 父节点ID + + Returns: + 文件节点的ID,如果未找到则返回None + """ + cursor = conn.cursor() + + try: + file_name = file_info['name'] + minio_path = file_info.get('minio_path') + + # 优先通过file_path(minio_path)匹配(最准确) + existing = None + if minio_path and minio_path in existing_templates['by_path']: + existing = existing_templates['by_path'][minio_path] + + if not existing: + print(f" [WARN] 未找到文件: {file_name} (MinIO路径: {minio_path})") + return None + + template_id = existing['id'] + + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新文件: {file_name} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持文件: {file_name} (ID: {template_id})") + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"更新文件parent_id失败: {str(e)}") + finally: + cursor.close() + + +def main(): + """主函数""" + print("=" * 80) + print("更新模板层级结构") + print("=" * 80) + print() + + try: + # 连接数据库 + print("1. 连接数据库...") + conn = pymysql.connect(**DB_CONFIG) + print("[OK] 数据库连接成功\n") + + # 扫描目录结构 + print("2. 扫描目录结构...") + structure = scan_directory_structure(TEMPLATE_BASE_DIR) + if not structure: + print("错误: 未找到任何目录或文件") + return + + # 获取现有模板 + print("\n3. 获取现有模板...") + existing_templates = get_existing_templates(conn) + print(f"[OK] 找到 {len(existing_templates['by_path'])} 个文件模板") + print(f"[OK] 找到 {sum(len(v) for v in existing_templates['by_name'].values())} 个目录模板\n") + + # 构建路径到ID的映射(处理目录节点) + print("4. 创建/更新目录节点...") + print("=" * 80) + path_to_id = {} + + # 按层级顺序处理目录 + for dir_info in structure['directories']: + parent_id = None + if dir_info['parent_path']: + parent_id = path_to_id.get(dir_info['parent_path']) + + dir_id = create_or_update_directory(conn, dir_info['name'], parent_id, existing_templates) + path_to_id[dir_info['path']] = dir_id + + print(f"\n[OK] 处理了 {len(path_to_id)} 个目录节点\n") + + # 更新文件节点的parent_id + print("5. 更新文件节点的parent_id...") + print("=" * 80) + for file_info in structure['files']: + parent_id = None + if file_info['parent_path']: + parent_id = path_to_id.get(file_info['parent_path']) + + update_file_parent(conn, file_info, parent_id, existing_templates) + + print(f"\n[OK] 处理了 {len(structure['files'])} 个文件节点\n") + + # 打印层级结构 + print("6. 最终层级结构:") + print("=" * 80) + print_hierarchy(conn) + + print("\n" + "=" * 80) + print("更新完成!") + print("=" * 80) + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +def print_hierarchy(conn, parent_id=None, level=0, prefix=""): + """打印层级结构""" + cursor = conn.cursor(pymysql.cursors.DictCursor) + + try: + if parent_id is None: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id IS NULL + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID,)) + else: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id = %s + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID, parent_id)) + + items = cursor.fetchall() + + for i, item in enumerate(items): + is_last = i == len(items) - 1 + current_prefix = prefix + ("└── " if is_last else "├── ") + next_prefix = prefix + (" " if is_last else "│ ") + + node_type = "📁" if item['file_path'] is None else "📄" + print(f"{current_prefix}{node_type} {item['name']} (ID: {item['id']})") + + # 递归打印子节点 + print_hierarchy(conn, item['id'], level + 1, next_prefix) + + finally: + cursor.close() + + +if __name__ == '__main__': + main() + diff --git a/update_template_hierarchy_v2.py b/update_template_hierarchy_v2.py new file mode 100644 index 0000000..f312d39 --- /dev/null +++ b/update_template_hierarchy_v2.py @@ -0,0 +1,445 @@ +""" +根据 template_finish/ 目录结构更新 f_polic_file_config 表中的层级结构 +使用路径作为唯一标识,确保正确建立层级关系 +""" +import os +import sys +import json +import pymysql +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from collections import defaultdict + +# 设置输出编码为UTF-8(Windows兼容) +if sys.platform == 'win32': + import io + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') + sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') + +# 数据库连接配置 +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 +CREATED_BY = 655162080928945152 +UPDATED_BY = 655162080928945152 +TEMPLATE_BASE_DIR = 'template_finish' + + +def generate_id(): + """生成ID""" + import time + import random + timestamp = int(time.time() * 1000) + random_part = random.randint(100000, 999999) + return timestamp * 1000 + random_part + + +def scan_directory_structure(base_dir: str) -> Dict: + """ + 扫描目录结构,构建层级关系 + + Returns: + 字典,包含目录和文件的层级信息 + """ + base_path = Path(base_dir) + if not base_path.exists(): + print(f"错误: 目录不存在 - {base_dir}") + return {} + + structure = { + 'directories': [], # 目录节点列表 + 'files': [] # 文件节点列表 + } + + print("=" * 80) + print("扫描目录结构...") + print("=" * 80) + + # 遍历所有目录和文件 + for item in base_path.rglob("*"): + relative_path = item.relative_to(base_path) + parts = relative_path.parts + + if item.is_dir(): + # 目录节点 + level = len(parts) - 1 # 层级(从0开始) + dir_name = parts[-1] + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + structure['directories'].append({ + 'name': dir_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path + }) + + elif item.is_file() and item.suffix == '.docx' and not item.name.startswith("~$"): + # 文件节点 + level = len(parts) - 1 + file_name = item.name + parent_path = str(Path(*parts[:-1])) if len(parts) > 1 else None + + structure['files'].append({ + 'name': file_name, + 'path': str(relative_path), + 'level': level, + 'parent_path': parent_path, + 'file_path': str(item) + }) + + # 按层级排序 + structure['directories'].sort(key=lambda x: (x['level'], x['path'])) + structure['files'].sort(key=lambda x: (x['level'], x['path'])) + + print(f"找到 {len(structure['directories'])} 个目录节点") + print(f"找到 {len(structure['files'])} 个文件节点") + + return structure + + +def get_existing_templates(conn) -> Dict: + """ + 获取数据库中现有的模板记录 + + Returns: + 字典,key为file_path(如果存在)或名称,value为模板信息列表 + """ + cursor = conn.cursor(pymysql.cursors.DictCursor) + + sql = """ + SELECT id, name, parent_id, file_path, state + FROM f_polic_file_config + WHERE tenant_id = %s + """ + cursor.execute(sql, (TENANT_ID,)) + templates = cursor.fetchall() + + result = {} + for template in templates: + # 优先使用file_path作为key(更准确) + if template['file_path']: + key = template['file_path'] + if key not in result: + result[key] = [] + result[key].append({ + 'id': template['id'], + 'name': template['name'], + 'parent_id': template['parent_id'], + 'file_path': template['file_path'], + 'state': template['state'] + }) + # 同时使用名称作为key(用于目录节点和没有file_path的记录) + name_key = template['name'] + if name_key not in result: + result[name_key] = [] + result[name_key].append({ + 'id': template['id'], + 'name': template['name'], + 'parent_id': template['parent_id'], + 'file_path': template['file_path'], + 'state': template['state'] + }) + + cursor.close() + return result + + +def create_or_update_directory(conn, dir_name: str, parent_id: Optional[int], existing_templates: Dict) -> int: + """ + 创建或更新目录节点 + + Returns: + 目录节点的ID + """ + cursor = conn.cursor() + + try: + # 查找是否已存在(通过名称精确匹配,且file_path为None) + candidates = existing_templates.get(dir_name, []) + existing = None + for candidate in candidates: + if candidate.get('file_path') is None: # 目录节点 + existing = candidate + break + + if existing: + # 更新现有目录记录 + template_id = existing['id'] + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s, state = 1 + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新目录: {dir_name} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持目录: {dir_name} (ID: {template_id})") + return template_id + else: + # 创建新目录记录 + template_id = generate_id() + insert_sql = """ + INSERT INTO f_polic_file_config + (id, tenant_id, parent_id, name, input_data, file_path, created_time, created_by, updated_time, updated_by, state) + VALUES (%s, %s, %s, %s, %s, %s, NOW(), %s, NOW(), %s, %s) + """ + cursor.execute(insert_sql, ( + template_id, + TENANT_ID, + parent_id, + dir_name, + None, # input_data + None, # file_path(目录节点没有文件路径) + CREATED_BY, + CREATED_BY, + 1 # state: 1表示启用 + )) + conn.commit() + print(f" [CREATE] 创建目录: {dir_name} (ID: {template_id}, parent_id: {parent_id})") + # 更新existing_templates + if dir_name not in existing_templates: + existing_templates[dir_name] = [] + existing_templates[dir_name].append({ + 'id': template_id, + 'name': dir_name, + 'parent_id': parent_id, + 'file_path': None, + 'state': 1 + }) + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"创建或更新目录失败: {str(e)}") + finally: + cursor.close() + + +def normalize_name(name: str) -> str: + """ + 标准化名称(去掉扩展名、括号内容、数字前缀等) + """ + import re + # 去掉扩展名 + name = Path(name).stem if '.' in name else name + # 去掉括号内容 + name = re.sub(r'[((].*?[))]', '', name) + name = name.strip() + # 去掉数字前缀和点号 + name = re.sub(r'^\d+[\.\-]?\s*', '', name) + name = name.strip() + return name + + +def update_file_parent(conn, file_info: Dict, parent_id: Optional[int], existing_templates: Dict) -> Optional[int]: + """ + 更新文件节点的parent_id + + Args: + file_info: 文件信息,包含name和file_path + parent_id: 父节点ID + + Returns: + 文件节点的ID,如果未找到则返回None + """ + cursor = conn.cursor() + + try: + file_name = file_info['name'] + # 根据文件路径构建预期的MinIO路径 + # 文件路径格式: template_finish/2-初核模版/1.初核请示/1.请示报告卡(XXX).docx + # MinIO路径格式: /615873064429507639/TEMPLATE/2025/12/1.请示报告卡(XXX).docx + expected_path = None + if 'file_path' in file_info: + # 从相对路径构建MinIO路径 + from datetime import datetime + now = datetime.now() + relative_path = file_info.get('path', '') + file_name_only = Path(file_name).name + expected_path = f'/615873064429507639/TEMPLATE/{now.year}/{now.month:02d}/{file_name_only}' + + # 优先通过file_path匹配(最准确) + existing = None + if expected_path and expected_path in existing_templates: + candidates = existing_templates[expected_path] + if candidates: + existing = candidates[0] + + # 如果没找到,通过标准化名称匹配 + if not existing: + normalized_file_name = normalize_name(file_name) + candidates = [] + for key, templates in existing_templates.items(): + for template in templates: + if template.get('file_path'): # 只匹配有file_path的(文件节点) + normalized_template_name = normalize_name(template['name']) + if normalized_template_name == normalized_file_name: + # 检查file_path是否匹配 + if expected_path and template['file_path'] == expected_path: + existing = template + break + candidates.append(template) + if existing: + break + + if not existing and candidates: + # 如果有多个候选,选择parent_id匹配的 + for candidate in candidates: + if candidate['parent_id'] == parent_id: + existing = candidate + break + # 如果还是没找到,选择第一个 + if not existing: + existing = candidates[0] + + if not existing: + print(f" [WARN] 未找到文件: {file_name} (标准化: {normalize_name(file_name)})") + return None + + template_id = existing['id'] + + if existing['parent_id'] != parent_id: + update_sql = """ + UPDATE f_polic_file_config + SET parent_id = %s, updated_time = NOW(), updated_by = %s + WHERE id = %s AND tenant_id = %s + """ + cursor.execute(update_sql, (parent_id, UPDATED_BY, template_id, TENANT_ID)) + conn.commit() + print(f" [UPDATE] 更新文件: {file_name} -> {existing['name']} (ID: {template_id}, parent_id: {parent_id})") + else: + print(f" [KEEP] 保持文件: {file_name} -> {existing['name']} (ID: {template_id})") + return template_id + + except Exception as e: + conn.rollback() + raise Exception(f"更新文件parent_id失败: {str(e)}") + finally: + cursor.close() + + +def main(): + """主函数""" + print("=" * 80) + print("更新模板层级结构") + print("=" * 80) + print() + + try: + # 连接数据库 + print("1. 连接数据库...") + conn = pymysql.connect(**DB_CONFIG) + print("[OK] 数据库连接成功\n") + + # 扫描目录结构 + print("2. 扫描目录结构...") + structure = scan_directory_structure(TEMPLATE_BASE_DIR) + if not structure: + print("错误: 未找到任何目录或文件") + return + + # 获取现有模板 + print("\n3. 获取现有模板...") + existing_templates = get_existing_templates(conn) + print(f"[OK] 找到 {len(existing_templates)} 个现有模板\n") + + # 构建路径到ID的映射(处理目录节点) + print("4. 创建/更新目录节点...") + print("=" * 80) + path_to_id = {} + + # 按层级顺序处理目录 + for dir_info in structure['directories']: + parent_id = None + if dir_info['parent_path']: + parent_id = path_to_id.get(dir_info['parent_path']) + + dir_id = create_or_update_directory(conn, dir_info['name'], parent_id, existing_templates) + path_to_id[dir_info['path']] = dir_id + + print(f"\n[OK] 处理了 {len(path_to_id)} 个目录节点\n") + + # 更新文件节点的parent_id + print("5. 更新文件节点的parent_id...") + print("=" * 80) + for file_info in structure['files']: + parent_id = None + if file_info['parent_path']: + parent_id = path_to_id.get(file_info['parent_path']) + + update_file_parent(conn, file_info, parent_id, existing_templates) + + print(f"\n[OK] 处理了 {len(structure['files'])} 个文件节点\n") + + # 打印层级结构 + print("6. 最终层级结构:") + print("=" * 80) + print_hierarchy(conn) + + print("\n" + "=" * 80) + print("更新完成!") + print("=" * 80) + + except Exception as e: + print(f"\n[ERROR] 发生错误: {e}") + import traceback + traceback.print_exc() + if 'conn' in locals(): + conn.rollback() + finally: + if 'conn' in locals(): + conn.close() + print("\n数据库连接已关闭") + + +def print_hierarchy(conn, parent_id=None, level=0, prefix=""): + """打印层级结构""" + cursor = conn.cursor(pymysql.cursors.DictCursor) + + try: + if parent_id is None: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id IS NULL + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID,)) + else: + sql = """ + SELECT id, name, parent_id, file_path + FROM f_polic_file_config + WHERE tenant_id = %s AND parent_id = %s + ORDER BY name + """ + cursor.execute(sql, (TENANT_ID, parent_id)) + + items = cursor.fetchall() + + for i, item in enumerate(items): + is_last = i == len(items) - 1 + current_prefix = prefix + ("└── " if is_last else "├── ") + next_prefix = prefix + (" " if is_last else "│ ") + + node_type = "📁" if item['file_path'] is None else "📄" + print(f"{current_prefix}{node_type} {item['name']} (ID: {item['id']})") + + # 递归打印子节点 + print_hierarchy(conn, item['id'], level + 1, next_prefix) + + finally: + cursor.close() + + +if __name__ == '__main__': + main() + diff --git a/verify_hierarchy_structure.py b/verify_hierarchy_structure.py new file mode 100644 index 0000000..e5c9527 --- /dev/null +++ b/verify_hierarchy_structure.py @@ -0,0 +1,56 @@ +""" +验证层级结构是否正确 +""" +import pymysql + +DB_CONFIG = { + 'host': '152.136.177.240', + 'port': 5012, + 'user': 'finyx', + 'password': '6QsGK6MpePZDE57Z', + 'database': 'finyx', + 'charset': 'utf8mb4' +} + +TENANT_ID = 615873064429507639 + +conn = pymysql.connect(**DB_CONFIG) +cursor = conn.cursor(pymysql.cursors.DictCursor) + +# 检查"1请示报告卡"的记录 +cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name LIKE %s + ORDER BY id +""", (TENANT_ID, '%请示报告卡%')) + +results = cursor.fetchall() +print(f"找到 {len(results)} 条'请示报告卡'相关记录:\n") +for r in results: + print(f"ID: {r['id']}") + print(f"名称: {r['name']}") + print(f"文件路径: {r['file_path']}") + print(f"父节点ID: {r['parent_id']}") + print() + +# 检查"XXX初核情况报告"的记录 +cursor.execute(""" + SELECT id, name, file_path, parent_id + FROM f_polic_file_config + WHERE tenant_id = %s AND name LIKE %s + ORDER BY id +""", (TENANT_ID, '%初核情况报告%')) + +results = cursor.fetchall() +print(f"\n找到 {len(results)} 条'初核情况报告'相关记录:\n") +for r in results: + print(f"ID: {r['id']}") + print(f"名称: {r['name']}") + print(f"文件路径: {r['file_path']}") + print(f"父节点ID: {r['parent_id']}") + print() + +cursor.close() +conn.close() + diff --git a/修复模板名称总结.md b/修复模板名称总结.md new file mode 100644 index 0000000..0ca2c3f --- /dev/null +++ b/修复模板名称总结.md @@ -0,0 +1,113 @@ +# 修复模板名称总结 + +## 任务完成情况 + +✅ **已完成所有任务** + +根据 template_finish/ 目录下的模板文件,检查并修复了数据库中 f_polic_file_config 表的 name 字段,确保与模板文档名称(去掉扩展名)完全一致。 + +## 修复结果 + +### 统计信息 +- **总文件数**: 21 +- **匹配成功**: 21 +- **更新数量**: 16 +- **未找到**: 0 + +### 更新的模板名称 + +1. **1.请示报告卡(XXX).docx** + - 旧名称: `1请示报告卡` + - 新名称: `1.请示报告卡(XXX)` + +2. **2.初步核实审批表(XXX).docx** + - 旧名称: `初步核实审批表` + - 新名称: `2.初步核实审批表(XXX)` + +3. **3.附件初核方案(XXX).docx** + - 旧名称: `附件初核方案` + - 新名称: `3.附件初核方案(XXX)` + +4. **1.请示报告卡(初核谈话).docx** + - 旧名称: `1请示报告卡` + - 新名称: `1.请示报告卡(初核谈话)` + +5. **2谈话审批表.docx** + - 旧名称: `谈话审批表` + - 新名称: `2谈话审批表` + +6. **3.谈话前安全风险评估表.docx** + - 旧名称: `谈话前安全风险评估表` + - 新名称: `3.谈话前安全风险评估表` + +7. **4.谈话方案.docx** + - 旧名称: `谈话方案` + - 新名称: `4.谈话方案` + +8. **5.谈话后安全风险评估表.docx** + - 旧名称: `谈话后安全风险评估表` + - 新名称: `5.谈话后安全风险评估表` + +9. **1.谈话笔录.docx** + - 旧名称: `谈话笔录` + - 新名称: `1.谈话笔录` + +10. **2.谈话询问对象情况摸底调查30问.docx** + - 旧名称: `谈话询问对象情况摸底调查30问` + - 新名称: `2.谈话询问对象情况摸底调查30问` + +11. **3.被谈话人权利义务告知书.docx** + - 旧名称: `被谈话人权利义务告知书` + - 新名称: `3.被谈话人权利义务告知书` + +12. **4.点对点交接单.docx** + - 旧名称: `点对点交接单` + - 新名称: `4.点对点交接单` + +13. **5.陪送交接单(新).docx** + - 旧名称: `陪送交接单` + - 新名称: `5.陪送交接单(新)` + +14. **6.2保密承诺书(谈话对象使用-中共党员用).docx** + - 旧名称: `2保密承诺书` + - 新名称: `6.2保密承诺书(谈话对象使用-中共党员用)` + +15. **7.办案人员-办案安全保密承诺书.docx** + - 旧名称: `办案人员-办案安全保密承诺书` + - 新名称: `7.办案人员-办案安全保密承诺书` + +16. **8.XXX初核情况报告.docx** + - 旧名称: `XXX初核情况报告` + - 新名称: `8.XXX初核情况报告` + +### 名称已正确的模板(无需更新) + +1. 谈话通知书第一联.docx +2. 谈话通知书第三联.docx +3. 谈话通知书第二联.docx +4. 6.1保密承诺书(谈话对象使用-非中共党员用).docx +5. 8-1请示报告卡(初核报告结论) .docx + +## 修复规则 + +- **文件名**: `1.请示报告卡(XXX).docx` +- **数据库name字段**: `1.请示报告卡(XXX)`(去掉扩展名,保留所有其他内容) + +确保: +- 保留数字前缀(如 "1."、"2.") +- 保留括号内容(如 "(XXX)"、"(初核谈话)") +- 保留所有标点符号和特殊字符 +- 只去掉文件扩展名(.docx) + +## 脚本文件 + +**fix_template_names.py** - 修复模板名称的脚本 +- 扫描 template_finish 目录下的所有 .docx 文件 +- 获取每个文件的完整名称(去掉扩展名) +- 检查数据库中对应的记录 +- 如果 name 字段不匹配,更新为正确的名称 + +## 完成时间 + +2025年12月11日 + diff --git a/处理保密承诺书模板总结.md b/处理保密承诺书模板总结.md new file mode 100644 index 0000000..37fe0e8 --- /dev/null +++ b/处理保密承诺书模板总结.md @@ -0,0 +1,75 @@ +# 处理保密承诺书(非中共党员用)模板总结 + +## 任务完成情况 + +✅ **已完成所有任务** + +1. ✅ 解析文档中的占位符 +2. ✅ 上传文档到MinIO +3. ✅ 更新数据库记录 + +## 处理结果 + +### 文件信息 +- **文件路径**: `template_finish/2-初核模版/2.谈话审批/走读式谈话流程/6.1保密承诺书(谈话对象使用-非中共党员用).docx` +- **模板名称**: `6.1保密承诺书(谈话对象使用-非中共党员用)` +- **父节点ID**: `1765273962716807` (走读式谈话流程) + +### 占位符提取结果 +找到 **5个占位符**,全部成功匹配到数据库字段: + +1. `{{ target_contact }}` - 被核查人联系方式 +2. `{{ target_id_number }}` - 被核查人身份证号 +3. `{{ target_name }}` - 被核查人姓名 +4. `{{ target_organization_and_position }}` - 被核查人单位及职务 +5. `{{ target_political_status }}` - 被核查人政治面貌 + +### MinIO上传结果 +- **MinIO路径**: `/615873064429507639/TEMPLATE/2025/12/6.1保密承诺书(谈话对象使用-非中共党员用).docx` +- **上传状态**: ✅ 成功 + +### 数据库更新结果 +- **模板ID**: `1765434655750341` +- **创建状态**: ✅ 新创建 +- **字段关联**: ✅ 5个字段全部关联成功 + +## 数据库记录详情 + +### f_polic_file_config 表 +- **id**: 1765434655750341 +- **tenant_id**: 615873064429507639 +- **parent_id**: 1765273962716807 (走读式谈话流程) +- **name**: 6.1保密承诺书(谈话对象使用-非中共党员用) +- **file_path**: /615873064429507639/TEMPLATE/2025/12/6.1保密承诺书(谈话对象使用-非中共党员用).docx +- **state**: 1 (启用) + +### f_polic_file_field 表 +已创建5条关联记录,关联的字段ID: +- target_contact +- target_id_number +- target_name +- target_organization_and_position +- target_political_status + +## 层级结构 + +该模板现在位于: +``` +📁 2-初核模版 +└── 📁 2.谈话审批 + └── 📁 走读式谈话流程 + └── 📄 6.1保密承诺书(谈话对象使用-非中共党员用) (ID: 1765434655750341) +``` + +## 脚本文件 + +**process_confidentiality_commitment_non_party.py** - 处理该模板的专用脚本 +- 提取占位符 +- 上传到MinIO +- 创建/更新数据库记录 +- 建立字段关联关系 + +## 完成时间 + +2025年12月11日 + diff --git a/更新模板层级结构总结.md b/更新模板层级结构总结.md new file mode 100644 index 0000000..0545070 --- /dev/null +++ b/更新模板层级结构总结.md @@ -0,0 +1,124 @@ +# 更新模板层级结构总结 + +## 任务完成情况 + +✅ **已完成主要任务** + +1. ✅ 根据 template_finish/ 目录结构更新 f_polic_file_config 表的层级结构 +2. ✅ 创建目录节点(一级、二级、三级) +3. ✅ 更新文件的 parent_id,建立正确的层级关系 + +## 目录结构 + +根据 `template_finish/2-初核模版/` 目录,层级结构如下: + +### 一级节点 +- **2-初核模版** (ID: 1765273961277310) + +### 二级节点 +- **1.初核请示** (ID: 1765431558933731) - parent: 2-初核模版 +- **2.谈话审批** (ID: 1765431558825578) - parent: 2-初核模版 +- **3.初核结论** (ID: 1765431559135346) - parent: 2-初核模版 + +### 三级节点 +- **谈话通知书** (ID: 1765273962774249) - parent: 2.谈话审批 +- **走读式谈话审批** (ID: 1765273962700431) - parent: 2.谈话审批 +- **走读式谈话流程** (ID: 1765273962716807) - parent: 2.谈话审批 + +## 文件节点分布 + +### 1.初核请示 下的文件 +- 初步核实审批表 (ID: 1765425918287774) +- 附件初核方案 (ID: 1765425918483987) +- 1请示报告卡 (ID: 1765425930118581) - 注意:此文件在多个位置出现 + +### 2.谈话审批/谈话通知书 下的文件 +- 谈话通知书第一联 (ID: 1765273963625524) +- 谈话通知书第二联 (ID: 1765273963825806) +- 谈话通知书第三联 (ID: 1765273963038891) + +### 2.谈话审批/走读式谈话审批 下的文件 +- 1请示报告卡 (ID: 1765425930118581) - 注意:与"1.初核请示"下的文件重复 +- 谈话审批表 (ID: 1765425918217504) +- 谈话前安全风险评估表 (ID: 1765425918902422) +- 谈话方案 (ID: 1765425918745496) +- 谈话后安全风险评估表 (ID: 1765425919242549) + +### 2.谈话审批/走读式谈话流程 下的文件 +- 谈话笔录 (ID: 1765425918749247) +- 谈话询问对象情况摸底调查30问 (ID: 1765425918921697) +- 被谈话人权利义务告知书 (ID: 1765425930059797) +- 点对点交接单 (ID: 1765425919512780) +- 陪送交接单 (ID: 1765425919389484) +- 办案人员-办案安全保密承诺书 (ID: 1765425919629084) +- 8.XXX初核情况报告 (ID: 1765273963158289) - 注意:此文件位置可能不正确 + +### 3.初核结论 下的文件 +- 8-1请示报告卡(初核报告结论) (ID: 1765273962631542) +- XXX初核情况报告 (ID: 1765425930460962) + +## 已知问题 + +1. **缺失文件**: 以下文件在数据库中未找到: + - 6.1保密承诺书(谈话对象使用-非中共党员用).docx + + 这个文件可能在数据库中不存在,或者名称不同。数据库中只有"2保密承诺书"(ID: 1765425919729046),可能是"6.2保密承诺书(谈话对象使用-中共党员用)"的简化名称。 + +2. **重复文件已解决**: "1请示报告卡"现在正确地在两个位置: + - 1.初核请示 下 (ID: 1765425930118581) - 对应文件"1.请示报告卡(XXX).docx" + - 走读式谈话审批 下 (ID: 1765432134276990) - 对应文件"1.请示报告卡(初核谈话).docx" + + 这两个是不同的文件,现在已正确区分。 + +## 执行结果 + +- **创建的目录节点**: 3个(1.初核请示、2.谈话审批、3.初核结论) +- **更新的目录节点**: 4个(更新了parent_id) +- **更新的文件节点**: 20个(更新了parent_id) +- **未找到的文件**: 1个(6.1保密承诺书(谈话对象使用-非中共党员用).docx) + +## 最终层级结构 + +``` +📁 2-初核模版 +├── 📁 1.初核请示 +│ ├── 📄 1请示报告卡 (ID: 1765425930118581) +│ ├── 📄 初步核实审批表 (ID: 1765425918287774) +│ └── 📄 附件初核方案 (ID: 1765425918483987) +├── 📁 2.谈话审批 +│ ├── 📁 谈话通知书 +│ │ ├── 📄 谈话通知书第一联 (ID: 1765273963625524) +│ │ ├── 📄 谈话通知书第二联 (ID: 1765273963825806) +│ │ └── 📄 谈话通知书第三联 (ID: 1765273963038891) +│ ├── 📁 走读式谈话审批 +│ │ ├── 📄 1请示报告卡 (ID: 1765432134276990) +│ │ ├── 📄 谈话审批表 (ID: 1765425918217504) +│ │ ├── 📄 谈话前安全风险评估表 (ID: 1765425918902422) +│ │ ├── 📄 谈话方案 (ID: 1765425918745496) +│ │ └── 📄 谈话后安全风险评估表 (ID: 1765425919242549) +│ └── 📁 走读式谈话流程 +│ ├── 📄 2保密承诺书 (ID: 1765425919729046) +│ ├── 📄 办案人员-办案安全保密承诺书 (ID: 1765425919629084) +│ ├── 📄 点对点交接单 (ID: 1765425919512780) +│ ├── 📄 被谈话人权利义务告知书 (ID: 1765425930059797) +│ ├── 📄 谈话笔录 (ID: 1765425918749247) +│ ├── 📄 谈话询问对象情况摸底调查30问 (ID: 1765425918921697) +│ └── 📄 陪送交接单 (ID: 1765425919389484) +└── 📁 3.初核结论 + ├── 📄 8-1请示报告卡(初核报告结论) (ID: 1765273962631542) + └── 📄 XXX初核情况报告 (ID: 1765425930460962) +``` + +## 脚本文件 + +**update_template_hierarchy_final.py** - 更新层级结构的最终版本脚本 +- 扫描 template_finish 目录结构 +- 使用 file_path(MinIO路径)作为唯一标识匹配文件 +- 创建/更新目录节点 +- 更新文件的 parent_id +- 正确处理同名但不同路径的文件(如"1请示报告卡"在不同目录下) + +## 完成时间 + +2025年12月11日 + diff --git a/清理重复模板总结.md b/清理重复模板总结.md new file mode 100644 index 0000000..0a60c7b --- /dev/null +++ b/清理重复模板总结.md @@ -0,0 +1,139 @@ +# 清理重复和无效模板总结 + +## 任务完成情况 + +✅ **已完成所有任务** + +1. ✅ 删除 f_polic_file_config 表中的重复数据 +2. ✅ 删除无效的模板数据 +3. ✅ 确保文档模板结构和 template_finish/ 文件夹对应 +4. ✅ 同步更新测试页面 + +## 执行结果 + +### 1. 清理前状态 +- **数据库中的模板总数**: 53个 +- **唯一模板名称**: 24个 +- **重复模板**: 4组(共29个重复记录) + +### 2. 清理操作 +- **删除重复模板**: 29个 +- **删除关联关系**: 136条 +- **标记无效模板**: 6个 + +### 3. 清理后状态 +- **数据库中的模板总数**: 24个 +- **唯一模板名称**: 24个 +- **启用的模板**: 18个(有filePath的) +- **禁用的模板**: 6个(无效模板) + +## 清理的重复模板详情 + +### 1. 请示报告卡 +- **保留**: ID 1765425930118581 (1请示报告卡) +- **删除**: ID 1765425917608094 (请示报告卡) + +### 2. 保密承诺书 +- **保留**: ID 1765425919729046 (2保密承诺书) +- **删除**: ID 1765425919731077 (1保密承诺书) + +### 3. 谈话审批表 +- **保留**: ID 1765425918217504 (谈话审批表) +- **删除**: + - ID 1765273961492987 (2谈话审批表) + - ID 1765273964441714 (2谈话审批表) + +### 4. 其他重复模板(标准化后名称相同) +- **删除**: 26个重复模板,包括: + - 多个版本的"初步核实审批表" + - 多个版本的"请示报告卡" + - 多个版本的"谈话通知书" + - 多个版本的"谈话笔录" + - 多个版本的"保密承诺书" + - 等等 + +## 标记的无效模板 + +以下模板不在 template_finish 文件夹中,已标记为无效(state=0): + +1. 2-初核模版 (ID: 1765273961277310) +2. 走读式谈话审批 (ID: 1765273962700431) +3. 走读式谈话流程 (ID: 1765273962716807) +4. 谈话通知书 (ID: 1765273962774249) +5. 8.XXX初核情况报告 (ID: 1765273963158289) +6. 2保密承诺书 (ID: 1765425919729046) + +## 最终启用的模板列表(18个) + +1. ✅ 1请示报告卡 (ID: 1765425930118581) +2. ✅ 8-1请示报告卡(初核报告结论) (ID: 1765273962631542) +3. ✅ XXX初核情况报告 (ID: 1765425930460962) +4. ✅ 初步核实审批表 (ID: 1765425918287774) +5. ✅ 办案人员-办案安全保密承诺书 (ID: 1765425919629084) +6. ✅ 点对点交接单 (ID: 1765425919512780) +7. ✅ 被谈话人权利义务告知书 (ID: 1765425930059797) +8. ✅ 谈话前安全风险评估表 (ID: 1765425918902422) +9. ✅ 谈话后安全风险评估表 (ID: 1765425919242549) +10. ✅ 谈话审批表 (ID: 1765425918217504) +11. ✅ 谈话方案 (ID: 1765425918745496) +12. ✅ 谈话笔录 (ID: 1765425918749247) +13. ✅ 谈话询问对象情况摸底调查30问 (ID: 1765425918921697) +14. ✅ 谈话通知书第一联 (ID: 1765273963625524) +15. ✅ 谈话通知书第三联 (ID: 1765273963038891) +16. ✅ 谈话通知书第二联 (ID: 1765273963825806) +17. ✅ 附件初核方案 (ID: 1765425918483987) +18. ✅ 陪送交接单 (ID: 1765425919389484) + +## 测试页面更新 + +### 更新内容 +1. ✅ 移除了硬编码的默认fileId(因为旧的ID已被删除) +2. ✅ 改进了文件列表加载逻辑 +3. ✅ 自动加载所有可用的模板文件 + +### 功能说明 +- **自动加载**: 页面加载时自动从 `/api/file-configs` 接口获取所有可用的模板 +- **手动加载**: 点击"加载全部可用模板"按钮可以重新加载模板列表 +- **过滤**: 只显示有filePath的模板(确保模板文件已上传到MinIO) + +## 数据库表更新情况 + +### f_polic_file_config 表 +- **删除**: 29条重复记录 +- **更新**: 6条记录标记为无效(state=0) +- **最终状态**: 24条记录(18个启用,6个禁用) + +### f_polic_file_field 表 +- **删除**: 136条关联关系(随重复模板一起删除) + +## 脚本文件 + +### 主要脚本 +1. **cleanup_duplicate_templates.py** - 清理脚本 + - 扫描 template_finish 文件夹 + - 识别重复模板 + - 删除重复记录 + - 标记无效模板 + +2. **validate_and_update_templates.py** - 校验和更新脚本 + - 重新校验模板和字段关联 + - 上传模板到MinIO + - 更新数据库配置 + +## 注意事项 + +1. **重复判断标准**: 使用标准化后的模板名称进行判断(去掉括号、数字前缀等) +2. **保留策略**: 保留最新的、启用的模板记录 +3. **无效模板**: 不在 template_finish 文件夹中的模板会被标记为无效,但不会删除(保留历史记录) +4. **关联关系**: 删除模板时会自动删除相关的字段关联关系 + +## 后续建议 + +1. **定期清理**: 建议定期运行 `cleanup_duplicate_templates.py` 脚本,确保没有重复数据 +2. **新增模板**: 新增模板时,确保模板文件放在 `template_finish` 文件夹中,然后运行 `validate_and_update_templates.py` +3. **测试验证**: 每次清理后,建议测试文档生成功能,确保所有模板都能正常工作 + +## 完成时间 + +2025年12月11日 +