金风第一次提交

This commit is contained in:
Voge1imkafig 2025-07-08 10:44:37 +08:00
parent 379354958a
commit 5928fbd402
11 changed files with 125 additions and 73 deletions

View File

@ -14,3 +14,51 @@ Traceback (most recent call last):
File "<COMObject <unknown>>", line 5, in Open File "<COMObject <unknown>>", line 5, in Open
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None) pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None)
2025-07-02 16:01:03,620 - INFO - 已清理资源 2025-07-02 16:01:03,620 - INFO - 已清理资源
2025-07-02 16:26:09,587 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\jingfeng_1.docx
2025-07-02 16:26:09,620 - ERROR - 文档合并失败: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None)
Traceback (most recent call last):
File "c:\Users\VogelimKafig\Desktop\金风模板\tools\win32_total_copy.py", line 43, in merge_documents
doc1 = self.word_app.Documents.Open(str(doc1_path))
File "<COMObject <unknown>>", line 5, in Open
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None)
2025-07-02 16:26:09,657 - INFO - 已清理资源
2025-07-02 16:26:31,385 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\jingfeng_1.docx
2025-07-02 16:26:31,418 - ERROR - 文档合并失败: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None)
Traceback (most recent call last):
File "c:\Users\VogelimKafig\Desktop\金风模板\tools\win32_total_copy.py", line 43, in merge_documents
doc1 = self.word_app.Documents.Open(str(doc1_path))
File "<COMObject <unknown>>", line 5, in Open
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None)
2025-07-02 16:26:31,453 - INFO - 已清理资源
2025-07-02 16:29:09,985 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-02 16:29:10,139 - INFO - 已打开第一个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx
2025-07-02 16:29:10,229 - INFO - 已打开第二个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-02 16:29:10,297 - INFO - 已插入第二个文档内容
2025-07-02 16:29:10,391 - INFO - 已合并页眉页脚
2025-07-02 16:29:10,422 - INFO - 已修复所有页眉边框线
2025-07-02 16:29:10,479 - INFO - 已保存合并文档: C:\Users\VogelimKafig\Desktop\金风模板\output\H3-08#_2021年12月10日.docx
2025-07-02 16:29:10,584 - INFO - 已清理资源
2025-07-03 10:08:06,210 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:08:06,505 - INFO - 已打开第一个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx
2025-07-03 10:08:06,644 - INFO - 已打开第二个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:08:06,799 - INFO - 已插入第二个文档内容
2025-07-03 10:08:06,878 - INFO - 已合并页眉页脚
2025-07-03 10:08:06,908 - INFO - 已修复所有页眉边框线
2025-07-03 10:08:06,980 - INFO - 已保存合并文档: C:\Users\VogelimKafig\Desktop\金风模板\output\H3-08#_2021年12月10日_1.docx
2025-07-03 10:08:07,183 - INFO - 已清理资源
2025-07-03 10:10:10,389 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:10:10,530 - INFO - 已打开第一个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx
2025-07-03 10:10:10,599 - INFO - 已打开第二个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:10:10,655 - INFO - 已插入第二个文档内容
2025-07-03 10:10:10,734 - INFO - 已合并页眉页脚
2025-07-03 10:10:10,761 - INFO - 已修复所有页眉边框线
2025-07-03 10:10:10,817 - INFO - 已保存合并文档: C:\Users\VogelimKafig\Desktop\金风模板\output\H3-08#_2021年12月10日_2.docx
2025-07-03 10:10:10,916 - INFO - 已清理资源
2025-07-03 10:11:17,472 - INFO - 开始合并文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx 和 C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:11:17,610 - INFO - 已打开第一个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\empty.docx
2025-07-03 10:11:17,677 - INFO - 已打开第二个文档: C:\Users\VogelimKafig\Desktop\金风模板\source\muban\jingfeng_1.docx
2025-07-03 10:11:17,729 - INFO - 已插入第二个文档内容
2025-07-03 10:11:17,819 - INFO - 已合并页眉页脚
2025-07-03 10:11:17,843 - INFO - 已修复所有页眉边框线
2025-07-03 10:11:17,898 - INFO - 已保存合并文档: C:\Users\VogelimKafig\Desktop\金风模板\output\H3-08#_2021年12月10日_3.docx
2025-07-03 10:11:17,996 - INFO - 已清理资源

View File

@ -3,34 +3,9 @@ import os, logging
from docx import Document from docx import Document
from tools.json_process import merge_info from tools.json_process import merge_info
from tools.docx_tools import search_and_replace from tools.docx_tools import search_and_replace
from source.defines import *
def main(base_info, baogao_info): def main(base_info, baogao_info):
DEFAULT_BASE_INFO = { #项目基本信息
#目录
'picture_dir': "", #图片存放地址
'shengcheng_dir': os.getcwd(), #工作路径(报告生成的路径、报告模板存放的路径)
'muban_dir': os.getcwd(), #文档模板存放路径
#项目概况
'jituan_jianxie': '甲方集团',
'jia_company_name': '甲方公司名',
'kehu_company_name': '客户名称',
'kehu_fuzeren': '客户负责人',
'kehu_phone': '18xxxxxxxxxx',
'shigong_company_name': '施工单位',
'jizu_num': '项目规格(台)',
'zhengji_changjia': '整机厂家',
'yepian_changjia': '叶片厂家', #叶片厂家信息
'fengchang_name': '风场名称',
'fengchang_location': '风场位置',
'shigong_date': '施工日期(开始~结束)',
'jizu_type': '机组型号',
'yepian_type': '叶片型号',
'jiancha_fangshi': '作业无人机近距离外观检查',
#乙方信息
'yi_Company': '乙方公司名',
'fuzeren': '甲方负责人',
'phone_fuzeren': '188xxxxxxxx',
}
try: try:
base_info = merge_info(base_info, DEFAULT_BASE_INFO) base_info = merge_info(base_info, DEFAULT_BASE_INFO)
logger = logging.getLogger(base_info['shengcheng_dir'] + __name__) logger = logging.getLogger(base_info['shengcheng_dir'] + __name__)
@ -60,44 +35,6 @@ def main(base_info, baogao_info):
logger.error(f"获取项目基本信息失败:{e}") logger.error(f"获取项目基本信息失败:{e}")
return return
DEFAULT_BAOGAO_INFO = {
#当前检查报告基本内容
'jizu_bianhao': 'H3-08#', #检查的机组编号
'baogao_date': '2021年12月10日',
#检查方案
'jiancha_renyuan': '张三,李四,王五', #检查人员
#检查信息
'waibu_jiancha': 'True', #是否包含外部检查
'neibu_jiancha': 'True', #是否包含内部检查
'fanglei_jiancha': 'True', #是否包含防雷检查 #注:防雷检测占不存放缺陷图
'jiancha_location': '叶片外部外观', #检查内容文字
'jiancha_fangshi': '作业无人机近距离外观检查', #检查方式文字
#报告处理信息
'yezhu_renyuan': '李四', #业主(人员)
'changjia_renyuan': '王五', #厂家(人员)
'date_process': '生成报告人员', #数据处理人员 吴总希望获取前端用户执行生成人员为这个人
'baogao_bianzhi': '生成报告人员', #报告编制人员 吴总希望获取前端用户执行生成人员为这个人
'baogao_shenghe': '待填写(人员)', #报告审核人员
'shenghe_date': '待填写(日期)', #报告审核日期
#检查情况汇总表(文字信息) 前端根据是否包含对应部分检查自行确定检查内容,这里默认全部包含
'Y1_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
'Y2_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
'Y3_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
#报告总结
'baogao_zongjie': '''1、因海上风电叶片运行环境恶劣、空气盐碱度高叶片前缘合模缝区域及PS面迎风面涂层易受腐蚀建议定期观察维护。
2经无人机近距离外观检查发现H3-08#机位Y200220AF叶片PS面距叶根20m处发现一处裂纹损伤长度轴向3m该缺陷经我方判定为严重缺陷建议尽快结安排对该机组停机并结合其他检查手段如人工打磨进一步勘查并决定维修处置方案防止风险进一步升级。
3经无人机近距离外观检查未发现H3-08#机位Y200249AF、Y200250AF叶片有明显影响机组正常运行的外部缺陷。
''', #报告总结文字
'pizhun_renyuan': '王五' #批准人
}
try: try:
baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO) baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO)
jizu_bianhao = baogao_info['jizu_bianhao'] jizu_bianhao = baogao_info['jizu_bianhao']
@ -119,10 +56,9 @@ def main(base_info, baogao_info):
'shenghe_renyuan': baogao_shenghe, 'shenghe_renyuan': baogao_shenghe,
'pizhun_renyuan': pizhun_renyuan, 'pizhun_renyuan': pizhun_renyuan,
'bianzhi_riqi': baogao_date, 'bianzhi_riqi': baogao_date,
'jia_company_name1' : jia_company_name, 'jia_company_name' : jia_company_name,
'fengchang_name1' : fengchang_name, 'fengchang_name' : fengchang_name,
'jizu_hao1' : jizu_bianhao, 'jizu_hao' : jizu_bianhao,
'fengchang_name2' : fengchang_name,
'fengchang_location' : fengchang_location, 'fengchang_location' : fengchang_location,
'kehu_company' : kehu_company_name, 'kehu_company' : kehu_company_name,
'xiangmuguige' : jizu_num, 'xiangmuguige' : jizu_num,
@ -141,16 +77,21 @@ def main(base_info, baogao_info):
} }
output_filename = os.path.join(shengcheng_dir, f"{jizu_bianhao}_{baogao_date}.docx") output_filename = os.path.join(shengcheng_dir, f"{jizu_bianhao}_{baogao_date}.docx")
# 合并并替换
merger = WordDocumentMerger() merger = WordDocumentMerger()
try: try:
merger.merge_documents(os.path.join(muban_dir, f"empty.docx"), os.path.join(muban_dir, 'jingfeng_1.docx'), output_filename) output_filename = merger.merge_documents(os.path.join(muban_dir, "empty.docx"), os.path.join(muban_dir, 'jingfeng_1.docx'), output_filename)
for find_text, replace_text in list_to_replace.items(): for find_text, replace_text in list_to_replace.items():
print(search_and_replace(output_filename, find_text, replace_text)) print(search_and_replace(output_filename, find_text, replace_text))
except Exception as e: except Exception as e:
logger.error(f"合并文档失败:{e}") logger.error(f"合并文档失败:{e}")
return return
#=======开始添加缺陷文字列表========
#获取缺陷信息
if __name__ == '__main__': if __name__ == '__main__':
# 配置日志 # 配置日志
@ -166,4 +107,4 @@ if __name__ == '__main__':
"muban_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\source\muban", "muban_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\source\muban",
"shengcheng_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\output" "shengcheng_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\output"
} }
main(None, None) main(base_info, None)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

63
source/defines.py Normal file
View File

@ -0,0 +1,63 @@
DEFAULT_BAOGAO_INFO = {
#当前检查报告基本内容
'jizu_bianhao': 'H3-08#', #检查的机组编号
'baogao_date': '2021年12月10日',
#检查方案
'jiancha_renyuan': '张三,李四,王五', #检查人员
#检查信息
'waibu_jiancha': 'True', #是否包含外部检查
'neibu_jiancha': 'True', #是否包含内部检查
'fanglei_jiancha': 'True', #是否包含防雷检查 #注:防雷检测占不存放缺陷图
'jiancha_location': '叶片外部外观', #检查内容文字
'jiancha_fangshi': '作业无人机近距离外观检查', #检查方式文字
#报告处理信息
'yezhu_renyuan': '李四', #业主(人员)
'changjia_renyuan': '王五', #厂家(人员)
'date_process': '生成报告人员', #数据处理人员 吴总希望获取前端用户执行生成人员为这个人
'baogao_bianzhi': '生成报告人员', #报告编制人员 吴总希望获取前端用户执行生成人员为这个人
'baogao_shenghe': '待填写(人员)', #报告审核人员
'shenghe_date': '待填写(日期)', #报告审核日期
#检查情况汇总表(文字信息) 前端根据是否包含对应部分检查自行确定检查内容,这里默认全部包含
'Y1_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
'Y2_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
'Y3_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面
2.叶片内部导雷卡腹板透光人孔盖版叶根盖板...
3.轮毂至塔基导通内部导线线阻外部导线线阻...''',
#报告总结
'baogao_zongjie': '''1、因海上风电叶片运行环境恶劣、空气盐碱度高叶片前缘合模缝区域及PS面迎风面涂层易受腐蚀建议定期观察维护。
2经无人机近距离外观检查发现H3-08#机位Y200220AF叶片PS面距叶根20m处发现一处裂纹损伤长度轴向3m该缺陷经我方判定为严重缺陷建议尽快结安排对该机组停机并结合其他检查手段如人工打磨进一步勘查并决定维修处置方案防止风险进一步升级。
3经无人机近距离外观检查未发现H3-08#机位Y200249AF、Y200250AF叶片有明显影响机组正常运行的外部缺陷。
''', #报告总结文字
'pizhun_renyuan': '王五' #批准人
}
DEFAULT_BASE_INFO = { #项目基本信息
#目录
'picture_dir': "", #图片存放地址
'shengcheng_dir': "", #工作路径(报告生成的路径、报告模板存放的路径)
'muban_dir': "", #文档模板存放路径
#项目概况
'jituan_jianxie': '甲方集团',
'jia_company_name': '甲方公司名',
'kehu_company_name': '客户名称',
'kehu_fuzeren': '客户负责人',
'kehu_phone': '18xxxxxxxxxx',
'shigong_company_name': '施工单位',
'jizu_num': '项目规格(台)',
'zhengji_changjia': '整机厂家',
'yepian_changjia': '叶片厂家', #叶片厂家信息
'fengchang_name': '风场名称',
'fengchang_location': '风场位置',
'shigong_date': '施工日期(开始~结束)',
'jizu_type': '机组型号',
'yepian_type': '叶片型号',
'jiancha_fangshi': '作业无人机近距离外观检查',
#乙方信息
'yi_Company': '乙方公司名',
'fuzeren': '甲方负责人',
'phone_fuzeren': '188xxxxxxxx',
}

Binary file not shown.

View File

@ -55,10 +55,10 @@ class WordDocumentMerger:
output_path = self._ensure_unique_filename(output_path) output_path = self._ensure_unique_filename(output_path)
doc1.SaveAs(str(output_path)) doc1.SaveAs(str(output_path))
logger.info(f"已保存合并文档: {output_path}") logger.info(f"已保存合并文档: {output_path}")
return True return output_path
except Exception as e: except Exception as e:
logger.error(f"文档合并失败: {str(e)}", exc_info=True) logger.error(f"文档合并失败: {str(e)}", exc_info=True)
return False return None
finally: finally:
self._cleanup(doc1, doc2) self._cleanup(doc1, doc2)