金风第一次提交
This commit is contained in:
parent
379354958a
commit
5928fbd402
|
@ -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 - 已清理资源
|
||||||
|
|
|
@ -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.
|
@ -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.
Binary file not shown.
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue