JinFeng_Report_Generate/generate_jingfeng.py

110 lines
4.3 KiB
Python

from tools.win32_total_copy import WordDocumentMerger
import os, logging
from docx import Document
from tools.json_process import merge_info
from tools.docx_tools import search_and_replace
from source.defines import *
def main(base_info, baogao_info):
try:
base_info = merge_info(base_info, DEFAULT_BASE_INFO)
logger = logging.getLogger(base_info['shengcheng_dir'] + __name__)
picture_dir = base_info['picture_dir']
shengcheng_dir = base_info['shengcheng_dir']
muban_dir = base_info['muban_dir']
jituan_jianxie = base_info['jituan_jianxie']
jia_company_name = base_info['jia_company_name']
kehu_company_name = base_info['kehu_company_name']
kehu_fuzeren = base_info['kehu_fuzeren']
kehu_phone = base_info['kehu_phone']
shigong_company_name = base_info['shigong_company_name']
jizu_num = base_info['jizu_num']
zhengji_changjia = base_info['zhengji_changjia']
yepian_changjia = base_info['yepian_changjia']
fengchang_name = base_info['fengchang_name']
fengchang_location = base_info['fengchang_location']
shigong_date = base_info['shigong_date']
jizu_type = base_info['jizu_type']
yepian_type = base_info['yepian_type']
jiancha_fangshi = base_info['jiancha_fangshi']
yi_Company = base_info['yi_Company']
fuzeren = base_info['fuzeren']
phone_fuzeren = base_info['phone_fuzeren']
except Exception as e:
logger.error(f"获取项目基本信息失败:{e}")
return
try:
baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO)
jizu_bianhao = baogao_info['jizu_bianhao']
baogao_date = baogao_info['baogao_date']
jiancha_fangshi = baogao_info['jiancha_fangshi']
bianzhi_renyuan = baogao_info['baogao_bianzhi']
baogao_shenghe = baogao_info['baogao_shenghe']
pizhun_renyuan = baogao_info['pizhun_renyuan']
jiancha_renyuan = baogao_info['jiancha_renyuan']
except Exception as e:
logger.error(f"获取报告基本信息失败:{e}")
return
list_to_replace = {
'jia_company_name' : jia_company_name,
'fengchang_name' : fengchang_name,
'jizu_hao' : jizu_bianhao,
'bianzhi_renyuan': bianzhi_renyuan,
'shenghe_renyuan': baogao_shenghe,
'pizhun_renyuan': pizhun_renyuan,
'bianzhi_riqi': baogao_date,
'jia_company_name' : jia_company_name,
'fengchang_name' : fengchang_name,
'jizu_hao' : jizu_bianhao,
'fengchang_location' : fengchang_location,
'kehu_company' : kehu_company_name,
'xiangmuguige' : jizu_num,
'kehu_fuzeren' : kehu_fuzeren,
'yezhu_phone' : kehu_phone,
'shigong_company' : shigong_company_name,
'shigong_date' : shigong_date,
'shigong_fuzeren' : fuzeren,
'shigong_phone' : phone_fuzeren,
'zhengji_changjia' : zhengji_changjia,
'yepian_changjia' : yepian_changjia,
'jizu_type' : jizu_type,
'yepian_type' : yepian_type,
'jiancha_fangshi' : jiancha_fangshi,
'jiancha_renyuan' : jiancha_renyuan
}
output_filename = os.path.join(shengcheng_dir, f"{jizu_bianhao}_{baogao_date}.docx")
# 合并并替换
merger = WordDocumentMerger()
try:
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():
print(search_and_replace(output_filename, find_text, replace_text))
except Exception as e:
logger.error(f"合并文档失败:{e}")
return
#=======开始添加缺陷文字列表========
#获取缺陷信息
if __name__ == '__main__':
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('docx_merge_win32com.log'),
logging.StreamHandler()
]
)
base_info = {
"muban_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\source\muban",
"shengcheng_dir" : r"C:\Users\VogelimKafig\Desktop\金风模板\output"
}
main(base_info, None)