增加打包的额外参数,获取了典型、缺陷图,和对应的缺陷记录

This commit is contained in:
Voge1imkafig 2025-07-22 16:39:17 +08:00
parent 7e9d362d98
commit a62e3afddc
45 changed files with 24627 additions and 172 deletions

View File

@ -13,13 +13,15 @@ from tools.content_tools import (
from tools.get_pictures import (
make_Thumbnail,resize_and_reduce_quality,
get_picture_nums,find_image,collect_defect_data,
process_picture_data
process_picture_data,get_records_with_pic
)
from tools.Get_Json import (
get_project_info,get_jizu_info,
get_jizu_shigong_info,get_weather,
get_part_picture,get_yepian_xiangqing
get_part_picture,get_yepian_xiangqing,
check_pic_url,get_full_picture_url,
get_defect_record_list
)
from tools.dataproccess import (
@ -46,13 +48,17 @@ async def generate_report(base_info, baogao_info):
cover_date = "time"
TITLE_OF_REPORT = "companyencode"
jiegou_xuhao = 'num'
turbine_id = base_info['turbine_id']
jizu_data = get_jizu_info(turbine_id)
project_data = get_project_info(jizu_data['projectId'])
shigong_data = get_jizu_shigong_info(turbine_id)
print(f"获取到参数:基本信息:{base_info}\n\n报告信息:{baogao_info}")
try:
base_info = merge_info(base_info, DEFAULT_BASE_INFO)
turbine_id = base_info['turbine_id']
jizu_data = get_jizu_info(turbine_id)
project_data = get_project_info(jizu_data['projectId'])
shigong_data = get_jizu_shigong_info(turbine_id)
fengchang_name = project_data['farmName']
Yi_company = project_data['inspectionUnit']
yi_fuzeren = project_data['inspectionContact']
@ -67,6 +73,7 @@ async def generate_report(base_info, baogao_info):
jizu_bianhao = jizu_data["turbineName"]
start_date = project_data['startDate']
end_date = project_data['endDate']
cover_url = project_data['coverUrl']
gongqi = caculate_work_days(start_date, end_date)
except Exception as e:
print(f"数据库的项目-机组基本信息获取失败:{e}")
@ -78,13 +85,15 @@ async def generate_report(base_info, baogao_info):
#前端信息
baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO)
key_words= re.compile('|'.join(map(re.escape, baogao_info['key_words'].split(','))))
shengcheng_dir = baogao_info['shengcheng_dir']
muban_dir = baogao_info['muban_dir']
key_words= re.compile('|'.join(map(re.escape, baogao_info['key_words'].split(',')))) #关键字
shengcheng_dir = baogao_info['shengcheng_dir'] #路径
muban_dir = baogao_info['muban_dir'] #路径
if muban_dir == "" or shengcheng_dir == "":
print("未配置模板/生成路径,请检查配置")
return
if_waibu = baogao_info["if_waibu"]
if_waibu = baogao_info["if_waibu"]
if_neibu = baogao_info["if_neibu"]
if_fanglei = baogao_info["if_fanglei"]
@ -94,12 +103,23 @@ async def generate_report(base_info, baogao_info):
other_type = baogao_info["other_enum"]
jiancha_renyuan = baogao_info['jiancha_renyuan'] #检查人员,目前是从命令行参数获取,需要完善
check_date = baogao_info['check_date']
if check_date == None:
check_date = "未获取"
baogao_bianzhi = baogao_info["userName"]
baogao_shenghe = baogao_info["baogaoCheck"]
Jiancha_date = baogao_info["check_date"]
data_processor = baogao_info["data_processor"]
coverurl = baogao_info["coverurl"]
#数据库拉取信息
Jiancha_date = shigong_data["startTime"].replace("T", " ") #检查日期
image_count = shigong_data['imageCount'] #从施工方案获取的图片数量,待定!!!
temperature = shigong_data['temperature'] #温度
wind_speed = shigong_data['windSpeed'] #风速
weather = get_weather(shigong_data["weatherCode"]) #天气 不从此接口获取,待定!!!
# Jiancha_date = shigong_data["startTime"].replace("T", " ") #检查日期
# image_count = shigong_data['imageCount'] #从施工方案获取的图片数量,待定!!!
# temperature = shigong_data['temperature'] #温度
# wind_speed = shigong_data['windSpeed'] #风速
# weather = get_weather(shigong_data["weatherCode"]) #天气 不从此接口获取,待定!!!
#拉取部件、图片数据
part_data, picture_data = get_part_picture(turbine_id)
@ -133,7 +153,7 @@ async def generate_report(base_info, baogao_info):
if if_waibu:
baogao_label.append("外观")
image_source_to_find.append(baogao_info['waibu_enum'])
if baogao_info["shigong_fangan"] == "None":
if baogao_info["shigong_fangan"] == None:
print("未传入施工方案,使用已有枚举")
renyuan_peizhi.append(SHIGONG_FANGAN_ENUM.WAIBU.RENYUAN_PEIZHI)
gongzuo_neirong.append(SHIGONG_FANGAN_ENUM.WAIBU.GONGZUO_NEIRONG)
@ -142,11 +162,11 @@ async def generate_report(base_info, baogao_info):
else:
pass #待添加如果从平台传入枚举,但目前没必要,如果这种枚举标准信息库有更好的优化则可以实现
jiancha.append("无人机近距离外观检查")
neirong.append(f"".join(Y_Code) + f"{len(Y_Code)}支叶片的前缘、后缘、迎风面、背风面。")
neirong.append(f"".join(Y_Code) + f"{len(Y_Code)}支叶片的前缘、后缘、迎风面、背风面。")
if if_neibu:
baogao_label.append("内部")
image_source_to_find.append(baogao_info['neibu_enum'])
if baogao_info["shigong_fangan"] == "None":
if baogao_info["shigong_fangan"] == None:
renyuan_peizhi.append(SHIGONG_FANGAN_ENUM.NEIBU.RENYUAN_PEIZHI)
gongzuo_neirong.append(SHIGONG_FANGAN_ENUM.NEIBU.GONGZUO_NEIRONG)
shebei_peizhi.append(SHIGONG_FANGAN_ENUM.NEIBU.SHEBEI_PEIZHI)
@ -154,11 +174,11 @@ async def generate_report(base_info, baogao_info):
else:
pass
jiancha.append("人工内部拍摄")
neirong.append(f"".join(Y_Code) + f"{len(Y_Code)}支叶片的内部导雷卡、腹板、透光、人孔盖版、叶根盖板...")
neirong.append(f"".join(Y_Code) + f"{len(Y_Code)}支叶片的内部导雷卡、腹板、透光、人孔盖版、叶根盖板...")
if if_fanglei:
baogao_label.append("防雷")
image_source_to_find.append(baogao_info['fanglei_enum'])
if baogao_info["shigong_fangan"] == "None":
if baogao_info["shigong_fangan"] == None:
renyuan_peizhi.append(SHIGONG_FANGAN_ENUM.FANGLEI.YEPIAN.RENYUAN_PEIZHI)
gongzuo_neirong.append(SHIGONG_FANGAN_ENUM.FANGLEI.YEPIAN.GONGZUO_NEIRONG)
shebei_peizhi.append(SHIGONG_FANGAN_ENUM.FANGLEI.YEPIAN.SHEBEI_PEIZHI)
@ -174,13 +194,13 @@ async def generate_report(base_info, baogao_info):
quexian_type, dianxing_type, other_type)
print(f"\n\n\n缺陷图片列表:{defect_pictures}\n\n\n典型图片列表:{typical_pictures}\n\n\n")
#处理图片数据待完成,图片绑定施工后
#获取过滤后所有缺陷图的id
defect_pictures_id = [pic for pic in defect_pictures]
baogao_bianzhi = baogao_info["userName"]
baogao_shenghe = baogao_info["baogaoCheck"]
#获取所有缺陷记录
defect_records = get_defect_record_list()
#获取缺陷记录中对应图片的记录
defect_records_with_pic, error_pic_with_no_record = get_records_with_pic(defect_records, defect_pictures_id)
print(f"对应缺陷图的缺陷记录列表:{defect_records_with_pic}\n 没有缺陷记录但是是缺陷图片的列表:{error_pic_with_no_record}")
except Exception as e:
print(f"报告基本信息获取失败:{e}")
return
@ -206,7 +226,12 @@ async def generate_report(base_info, baogao_info):
#创建文档、添加封面
print(await create_document(output_dir))
print(add_documents(output_dir, cover_dirs[0]))
print(await add_picture(output_dir, cover_dirs[1]))
if check_pic_url(coverurl): #手动导入封面图片测试用
print(await add_picture(output_dir, get_full_picture_url(coverurl), width = 6.41, height = 4))
elif check_pic_url(cover_url):
print(await add_picture(output_dir, get_full_picture_url(cover_url), width = 6.41, height = 4))
else:
print(await add_picture(output_dir, cover_dirs[1]))
print(add_documents(output_dir, cover_dirs[2]))
print("封面创建成功")
@ -235,9 +260,7 @@ async def generate_report(base_info, baogao_info):
Yi_company = Yi_company
XIANGMU_GAIKUO = list(list("" for i in range(6)) for j in range(5))
XIANGMU_GAIKUO[0][1] = fengchang_name
#XIANGMU_GAIKUO[0][3]=XIANGMU_GAIKUO[0][4] = "盐城市滨海县"
XIANGMU_GAIKUO[0][4] = project_location
#XIANGMU_GAIKUO[1][1]=XIANGMU_GAIKUO[2,1]=XIANGMU_GAIKUO[3,1] = "国家电投集团滨海风力发电有限公司"
XIANGMU_GAIKUO[1][1] = company_name_jia
XIANGMU_GAIKUO[1][4] = Yi_company
XIANGMU_GAIKUO[2][1] = jia_fuzeren
@ -275,8 +298,11 @@ async def generate_report(base_info, baogao_info):
JIANCHA_XINGXI_DIR = os.path.join(muban_dir,"checkinfo.docx")
JIANCHA_XINGXI = list(list("" for i in range(4)) for j in range(9))
JIANCHA_XINGXI[0][1] = ""#检查人员,需要完善
JIANCHA_XINGXI[1][1] = Jiancha_date.split(' ')[0]
JIANCHA_XINGXI[0][1] = jiancha_renyuan
try:
JIANCHA_XINGXI[1][1] = Jiancha_date.split('T')[0]
except:
JIANCHA_XINGXI[1][1] = "格式不对或无数据"
JIANCHA_XINGXI[1][3] = jizu_bianhao
JIANCHA_XINGXI[2][1] = "风力发电机组" + baogao_name
JIANCHA_XINGXI[2][3] = "".join(jiancha)
@ -296,16 +322,22 @@ async def generate_report(base_info, baogao_info):
# 添加成果递交表
CHENGGUO_DIJIAO_DIR = os.path.join(muban_dir,"chengguo_sub.docx")
CHENGGUO_DIJIAO = list(list("" for i in range(4)) for j in range(6))
CHENGGUO_DIJIAO[0][1] = "" #Jiancha_renyuan
CHENGGUO_DIJIAO[0][1] = jiancha_renyuan
CHENGGUO_DIJIAO[1][1] = jia_fuzeren
CHENGGUO_DIJIAO[2][1] = Jiancha_date.split(' ')[0]
CHENGGUO_DIJIAO[3][1] = "" #data_process
try:
CHENGGUO_DIJIAO[2][1] = Jiancha_date.split('T')[0]
except:
CHENGGUO_DIJIAO[2][1] = "格式不对或无数据"
CHENGGUO_DIJIAO[3][1] = data_processor
CHENGGUO_DIJIAO[4][1] = baogao_bianzhi
CHENGGUO_DIJIAO[5][1] = baogao_shenghe
CHENGGUO_DIJIAO[2][3] = Jiancha_date.split(' ')[1]
try:
CHENGGUO_DIJIAO[2][3] = Jiancha_date.split('T')[1]
except:
CHENGGUO_DIJIAO[2][3] = "格式不对或无数据"
CHENGGUO_DIJIAO[3][3] = baogao_date.split(' ')[0]
CHENGGUO_DIJIAO[4][3] = baogao_date.split(' ')[0]
CHENGGUO_DIJIAO[5][3] = "" #shenghe_date.split(' ')[0]
CHENGGUO_DIJIAO[5][3] = "未审核"
output_doc, message = await add_table_to_document(output_dir, CHENGGUO_DIJIAO_DIR,5,5,total_table_num,CHENGGUO_DIJIAO,True,0.04)
print(message)
@ -319,16 +351,19 @@ async def generate_report(base_info, baogao_info):
#获取缺陷信息
"""
需要获取
Y1Y2Y3叶片的缺陷数量缺陷字典{图片名图片路径}
Y1Y2Y3叶片的缺陷数量缺陷字典{描述图片路径}
和数据库连接需要的新增异常处理
目前逻辑为找到图片后找缺陷类型的图片通过图片id查找对应缺陷记录
如果没有找到要返回对应异常即已选出标注缺陷图但未填写对应缺陷信息的异常返回
最后将无异常的图片入队缺陷字典同数量有异常的图片再另存
"""
Y1_quexian_num, Y1_quexian_dict = 0, {}
Y2_quexian_num, Y2_quexian_dict = 0, {}
Y3_quexian_num, Y3_quexian_dict = 0, {}
Y1_quexian_dict = {}
Y2_quexian_dict = {}
Y3_quexian_dict = {}
Y1_quexian_num = Y1_quexian_dict.keys()
Y2_quexian_num = Y2_quexian_dict.keys()
Y3_quexian_num = Y3_quexian_dict.keys()
weak_num_Y1 = f"{Y_Code[0] if len(Y_Code) > 0 else ''}叶片共发现缺陷{Y1_quexian_num}"
weak_num_Y2 = f"{Y_Code[1] if len(Y_Code) > 1 else ''}叶片共发现缺陷{Y2_quexian_num}"
weak_num_Y3 = f"{Y_Code[2] if len(Y_Code) > 2 else ''}叶片共发现缺陷{Y3_quexian_num}"
@ -343,12 +378,12 @@ async def generate_report(base_info, baogao_info):
JIANCHA_HUIZONG[1][0] = weak_num_Y1
JIANCHA_HUIZONG[2][0] = weak_num_Y2
JIANCHA_HUIZONG[3][0] = weak_num_Y3
JIANCHA_HUIZONG[1][1] = ""#Y1_jiancha
JIANCHA_HUIZONG[2][1] = ""#Y2_jiancha
JIANCHA_HUIZONG[3][1] = ""#Y3_jiancha
JIANCHA_HUIZONG[1][2] = "/n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y1_quexian_dict.items())]) if Y1_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
JIANCHA_HUIZONG[2][2] = "/n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y2_quexian_dict.items())]) if Y2_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
JIANCHA_HUIZONG[3][2] = "/n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y3_quexian_dict.items())]) if Y3_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
JIANCHA_HUIZONG[1][1] = "\n".join(neirong)
JIANCHA_HUIZONG[2][1] = "\n".join(neirong)
JIANCHA_HUIZONG[3][1] = "\n".join(neirong)
JIANCHA_HUIZONG[1][2] = "\n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y1_quexian_dict.items())]) if Y1_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
JIANCHA_HUIZONG[2][2] = "\n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y2_quexian_dict.items())]) if Y2_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
JIANCHA_HUIZONG[3][2] = "\n".join([f"{i+1}.{name}" for i, (name, path) in enumerate(Y3_quexian_dict.items())]) if Y3_quexian_num else '未发现明显影响风力发电机组正常运行的缺陷'
output_doc, message = await add_table_to_document(output_dir, JIANCHA_HUIZONG_DIR,4,3,total_table_num,JIANCHA_HUIZONG,False,ALIGMENT='LEFT')
print(message)
print(await search_and_replace(output_dir, jiegou_xuhao, num_to_chinese[head_num]))
@ -473,53 +508,113 @@ async def generate_report(base_info, baogao_info):
print(await search_and_replace(output_dir, 'baogao_date', baogao_date.split(' ')[0]))
print(await search_and_replace(output_dir, jiegou_xuhao, num_to_chinese[head_num]))
import argparse
def parse_arguments():
parser = argparse.ArgumentParser(description='报告生成工具')
# 设置默认值
default_json1 = {
"turbine_id": "183463dbf40d9278549a76b82b175dd9",
}
default_json2 = {
'shengcheng_dir': r"",
'muban_dir': r"",
"dianxing_enum" : "TYPICAL", # 典型图的枚举值
"quexian_enum" : "DEFECT", # 缺陷图的枚举值
"other_enum" : "OTHER", # 其他图的枚举值
"waibu_enum" : "out-work",
"neibu_enum" : "in-work",
"fanglei_enum" : "lightning-protection-work",
"if_waibu" : True,
"if_neibu" : True,
"if_fanglei" : True,
"userName" : "admin",
"baogaoCheck" : "未审核",
'key_words': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化
"data_processor" : "未获取",
"shigong_fangan" : None,
'jiancha_renyuan': '未获取',
"check_date" : None,
"coverurl" : None,
}
parser.add_argument('--turbine_id', '--id', dest='turbine_id', default=default_json1['turbine_id'],
help='''风机ID默认为测试项目"183463dbf40d9278549a76b82b175dd9"
用于获取机组关联的所有静态信息与图片''')
parser.add_argument('--output_dir', '--out', dest='output_dir', default=default_json2['shengcheng_dir'],
help='输出目录,必填项')
parser.add_argument('--template_dir', '--tpl', dest='template_dir', default=default_json2['muban_dir'],
help='模板目录,必填项,用于获取模板文件,模板文件在同目录下的muban文件夹')
parser.add_argument('--data_processor', '--dp', dest='data_processor', default=default_json2['data_processor'],
help='数据处理人')
parser.add_argument('--jiancha_renyuan', '--jc', dest='jiancha_renyuan', default=default_json2['jiancha_renyuan'],
help='检查人')
parser.add_argument('--check_date', '--cdate', dest='check_date', default=default_json2['check_date'],
help='检查日期,格式为YYYY-MM-DD HH:MM:SS')
parser.add_argument('--username', '--user', dest='username', default=default_json2['userName'],
help='报告生成人,默认为admin')
parser.add_argument('--if_waibu', '--waibu', dest='if_waibu', default=default_json2['if_waibu'],
help='报告是否包含外部检测,默认为True')
parser.add_argument('--if_neibu', '--neibu', dest='if_neibu', default=default_json2['if_neibu'],
help='报告是否包含内部检测,默认为True')
parser.add_argument('--if_fanglei', '--fanglei', dest='if_fanglei', default=default_json2['if_fanglei'],
help='报告是否包含防雷检测,默认为True')
parser.add_argument('--reportchecker', '--rc', dest='baogaoCheck', default=default_json2['baogaoCheck'],
help='报告审核状态,默认为未审核')
parser.add_argument('--dianxing_enum', '--dx', dest='dianxing_enum', default=default_json2['dianxing_enum'],
help='典型图的枚举值,默认为TYPICAL')
parser.add_argument('--quexian_enum', '--qx', dest='quexian_enum', default=default_json2['quexian_enum'],
help='缺陷图的枚举值,默认为DEFECT')
parser.add_argument('--other_enum', '--other', dest='other_enum', default=default_json2['other_enum'],
help='其他图的枚举值,默认为OTHER')
parser.add_argument('--waibu_enum', '--wb', dest='waibu_enum', default=default_json2['waibu_enum'],
help='外部检测的枚举值,默认为out_work')
parser.add_argument('--neibu_enum', '--nb', dest='neibu_enum', default=default_json2['neibu_enum'],
help='内部检测的枚举值,默认为in_work')
parser.add_argument('--fanglei_enum', '--fb', dest='fanglei_enum', default=default_json2['fanglei_enum'],
help='防雷检测的枚举值,默认为lightning-protection-work')
parser.add_argument('--keywords', '--kw', dest='keywords', default=default_json2['key_words'],
help='关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化')
parser.add_argument('--coverurl', default=default_json2['coverurl'], help='封面图片url,指定coverurl则不使用模板中的封面图片')
return parser.parse_args()
def main():
args = parse_arguments()
json_data1 = {
"turbine_id" : "183463dbf40d9278549a76b82b175dd9",
"turbine_id": args.turbine_id,
}
json_data2 = {
'shengcheng_dir': r".\output",
'muban_dir': r".\muban",
# "shigong_fangan_enum" : { #可能放入标准信息库?但不论如何,修改了这个枚举的话,报告生成逻辑也要修改,待优化!
# "SHIGONG_FANGAN_ENUM": {
# "WAIBU": {
# "GONGZUO_NEIRONG": "无人机叶片外观巡检",
# "RENYUAN_PEIZHI": "1人主检飞手1人",
# "SHEBEI_PEIZHI": "1、大疆无人机1台M350rtkM300rtkM30TM30精灵4PRO2、大疆精灵4PRO+索尼A7R2机身+索尼200-600mm镜头/适马150-600mm镜头",
# "SHIGONG_FANGAN": None
# },
# "NEIBU": {
# "GONGZUO_NEIRONG": "叶片内部检查",
# "RENYUAN_PEIZHI": "2人轮毂作业检查2人",
# "SHEBEI_PEIZHI": "1、人工检查照明设备2套视频记录手机2台含氧量监测仪1台电动扳手2套卷尺1个。2、爬壁机器人检查无人作业校车+视频图传1套照明设备2套含氧量监测仪1台电动扳手2套卷尺1个。",
# "SHIGONG_FANGAN": None
# },
# "FANGLEI": {
# "YEPIAN": {
# "GONGZUO_NEIRONG": "无人机叶片防雷导通测试",
# "RENYUAN_PEIZHI": "2人主检飞手1人副检抄表1人",
# "SHEBEI_PEIZHI": "1四轴电阻无人机1套电子微欧计1台视频记录手机1台",
# "SHIGONG_FANGAN": None
# },
# "DIAOLAN": {
# "GONGZUO_NEIRONG": "无人吊篮叶片导通测试(含机舱设备、)",
# "RENYUAN_PEIZHI": "3人轮毂机舱作业1人揽风绳作业1人无人设备操作员及抄表1人",
# "SHEBEI_PEIZHI": "无人吊篮系统1套爬绳器+接触平台、电子微欧计1套视频记录手机1台对讲机2台",
# "SHIGONG_FANGAN": None
# },
# "SHESHI": {
# "GONGZUO_NEIRONG": "风机基础、办公楼、变电站防雷接地检测及浪涌保护器测试",
# "RENYUAN_PEIZHI": "1人抄表人员1人检测人员1人监护1人。",
# "SHEBEI_PEIZHI": "接地电阻测试仪1套、SPD测试仪1套、对讲机2个、",
# "SHIGONG_FANGAN": None
# },
# "FEISHOURENYUAN_PEIZHI": "1人主检飞手1人",
# "LUNGUZUOYERENYUAN_PEIZHI": "2人轮毂作业检查2人"
# }
# }
# },
'shengcheng_dir': args.output_dir,
'muban_dir': args.template_dir,
"dianxing_enum" : args.dianxing_enum, # 典型图的枚举值
"quexian_enum" : args.quexian_enum, # 缺陷图的枚举值
"other_enum" : args.other_enum, # 其他图的枚举值
"waibu_enum" : args.waibu_enum,
"neibu_enum" : args.neibu_enum,
"fanglei_enum" : args.fanglei_enum,
"if_waibu" : args.if_waibu,
"if_neibu" : args.if_neibu,
"if_fanglei" : args.if_fanglei,
"userName" : args.username,
"baogaoCheck" : args.baogaoCheck,
'key_words': args.keywords, #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化
"shigong_fangan" : None,
'jiancha_renyuan': args.jiancha_renyuan,
"check_date" : args.check_date,
"data_processor" : args.data_processor,
"coverurl" : args.coverurl,
}
asyncio.run(generate_report(json_data1,json_data2))
json_data2['shengcheng_dir'] = r"/home/dtyx/桌面/yhh/Report_Generate_Server/output"
json_data2['muban_dir'] = r"/home/dtyx/桌面/yhh/Report_Generate_Server/muban"
asyncio.run(generate_report(json_data1, json_data2))
print('文档生成完毕')
if __name__ == '__main__':
main()

42
build.spec Normal file
View File

@ -0,0 +1,42 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['Generate_Report.py'], # 替换为你的脚本文件名
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='report_generator', # 可执行文件名称
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True, # 显示控制台窗口
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

1798
build/build/Analysis-00.toc Normal file

File diff suppressed because it is too large Load Diff

366
build/build/EXE-00.toc Normal file
View File

@ -0,0 +1,366 @@
('/home/dtyx/桌面/yhh/Report_Generate_Server/dist/report_generator',
True,
False,
False,
None,
None,
False,
False,
None,
True,
False,
None,
None,
None,
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/report_generator.pkg',
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/PYZ-00.pyz',
'PYZ'),
('struct',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod03_ctypes.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py',
'PYSOURCE'),
('Generate_Report',
'/home/dtyx/桌面/yhh/Report_Generate_Server/Generate_Report.py',
'PYSOURCE'),
('libpython3.10.so.1.0',
'/lib/x86_64-linux-gnu/libpython3.10.so.1.0',
'BINARY'),
('lib-dynload/_posixshmem.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_posixshmem.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_multiprocessing.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_multiprocessing.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/termios.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/termios.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_ssl.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_ssl.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_hashlib.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_hashlib.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_contextvars.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_contextvars.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_decimal.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_decimal.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/resource.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/resource.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_lzma.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_lzma.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_bz2.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_bz2.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_opcode.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_opcode.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/mmap.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/mmap.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_ctypes.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_ctypes.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_queue.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_queue.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_multibytecodec.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_multibytecodec.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_jp.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_jp.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_kr.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_kr.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_iso2022.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_iso2022.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_cn.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_cn.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_tw.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_tw.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_hk.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_hk.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/etree.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/etree.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/_elementpath.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/_elementpath.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/sax.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/sax.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/objectify.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/objectify.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/html/diff.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/html/diff.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/html/_difflib.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/html/_difflib.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/readline.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/builder.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/builder.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_json.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_json.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('charset_normalizer/md.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_webp.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_avif.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_avif.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imaging.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
('libcrypto.so.3', '/lib/x86_64-linux-gnu/libcrypto.so.3', 'BINARY'),
('libssl.so.3', '/lib/x86_64-linux-gnu/libssl.so.3', 'BINARY'),
('libmpdec.so.3', '/lib/x86_64-linux-gnu/libmpdec.so.3', 'BINARY'),
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
('libffi.so.8', '/lib/x86_64-linux-gnu/libffi.so.8', 'BINARY'),
('libreadline.so.8', '/lib/x86_64-linux-gnu/libreadline.so.8', 'BINARY'),
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
('pillow.libs/libwebp-5f0275c0.so.7.1.10',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebp-5f0275c0.so.7.1.10',
'BINARY'),
('pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'BINARY'),
('pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'BINARY'),
('pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'BINARY'),
('libgcc_s.so.1', '/lib/x86_64-linux-gnu/libgcc_s.so.1', 'BINARY'),
('pillow.libs/libavif-01e67780.so.16.3.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libavif-01e67780.so.16.3.0',
'BINARY'),
('libstdc++.so.6', '/lib/x86_64-linux-gnu/libstdc++.so.6', 'BINARY'),
('pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'BINARY'),
('pillow.libs/liblzma-64b7ab39.so.5.8.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/liblzma-64b7ab39.so.5.8.1',
'BINARY'),
('pillow.libs/libxcb-64009ff3.so.1.1.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libxcb-64009ff3.so.1.1.0',
'BINARY'),
('pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'BINARY'),
('pillow.libs/libXau-154567c4.so.6.0.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libXau-154567c4.so.6.0.0',
'BINARY'),
('pillow.libs/libopenjp2-56811f71.so.2.5.3',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libopenjp2-56811f71.so.2.5.3',
'BINARY'),
('pillow.libs/libtiff-13a02c81.so.6.1.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libtiff-13a02c81.so.6.1.0',
'BINARY'),
('lxml/isoschematron/resources/rng/iso-schematron.rng',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng',
'DATA'),
('lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl',
'DATA'),
('docx/templates/default-docx-template/docProps/app.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/app.xml',
'DATA'),
('docx/templates/default-docx-template/word/fontTable.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/fontTable.xml',
'DATA'),
('docx/templates/default-footer.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-footer.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/_rels/item1.xml.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels',
'DATA'),
('docx/templates/default-comments.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-comments.xml',
'DATA'),
('docx/templates/default.docx',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default.docx',
'DATA'),
('docx/templates/default-docx-template/docProps/core.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/core.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/itemProps1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/itemProps1.xml',
'DATA'),
('docx/templates/default-docx-template/word/theme/theme1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/theme/theme1.xml',
'DATA'),
('docx/templates/default-docx-template/word/stylesWithEffects.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/stylesWithEffects.xml',
'DATA'),
('docx/templates/default-docx-template/word/_rels/document.xml.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/_rels/document.xml.rels',
'DATA'),
('docx/templates/default-docx-template/word/webSettings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/webSettings.xml',
'DATA'),
('docx/templates/default-docx-template/docProps/thumbnail.jpeg',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/thumbnail.jpeg',
'DATA'),
('docx/templates/default-header.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-header.xml',
'DATA'),
('docx/templates/default-settings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-settings.xml',
'DATA'),
('docx/py.typed',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/py.typed',
'DATA'),
('docx/templates/default-docx-template/[Content_Types].xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/[Content_Types].xml',
'DATA'),
('docx/templates/default-docx-template/word/settings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/settings.xml',
'DATA'),
('docx/templates/default-docx-template/word/styles.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/styles.xml',
'DATA'),
('docx/templates/default-docx-template/word/numbering.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/numbering.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/item1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/item1.xml',
'DATA'),
('docx/templates/default-docx-template/word/document.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/document.xml',
'DATA'),
('docx/templates/default-styles.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-styles.xml',
'DATA'),
('docx/templates/default-docx-template/_rels/.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/_rels/.rels',
'DATA'),
('certifi/cacert.pem',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/certifi/cacert.pem',
'DATA'),
('certifi/py.typed',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/certifi/py.typed',
'DATA'),
('base_library.zip',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/base_library.zip',
'DATA'),
('libwebp-5f0275c0.so.7.1.10',
'pillow.libs/libwebp-5f0275c0.so.7.1.10',
'SYMLINK'),
('libwebpdemux-efaed568.so.2.0.16',
'pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'SYMLINK'),
('libwebpmux-6f2b1ad9.so.3.1.1',
'pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'SYMLINK'),
('libsharpyuv-60a7c00b.so.0.1.1',
'pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'SYMLINK'),
('libavif-01e67780.so.16.3.0',
'pillow.libs/libavif-01e67780.so.16.3.0',
'SYMLINK'),
('liblcms2-cc10e42f.so.2.0.17',
'pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'SYMLINK'),
('liblzma-64b7ab39.so.5.8.1',
'pillow.libs/liblzma-64b7ab39.so.5.8.1',
'SYMLINK'),
('libxcb-64009ff3.so.1.1.0',
'pillow.libs/libxcb-64009ff3.so.1.1.0',
'SYMLINK'),
('libjpeg-8a13c6e0.so.62.4.0',
'pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'SYMLINK'),
('libXau-154567c4.so.6.0.0',
'pillow.libs/libXau-154567c4.so.6.0.0',
'SYMLINK'),
('libopenjp2-56811f71.so.2.5.3',
'pillow.libs/libopenjp2-56811f71.so.2.5.3',
'SYMLINK'),
('libtiff-13a02c81.so.6.1.0',
'pillow.libs/libtiff-13a02c81.so.6.1.0',
'SYMLINK')],
[],
False,
False,
1753166039,
[('run',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/bootloader/Linux-64bit-intel/run',
'EXECUTABLE')],
'/lib/x86_64-linux-gnu/libpython3.10.so.1.0')

361
build/build/PKG-00.toc Normal file
View File

@ -0,0 +1,361 @@
('/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/report_generator.pkg',
{'BINARY': True,
'DATA': True,
'EXECUTABLE': True,
'EXTENSION': True,
'PYMODULE': True,
'PYSOURCE': True,
'PYZ': False,
'SPLASH': True,
'SYMLINK': False},
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/PYZ-00.pyz',
'PYZ'),
('struct',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/localpycs/pyimod03_ctypes.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py',
'PYSOURCE'),
('Generate_Report',
'/home/dtyx/桌面/yhh/Report_Generate_Server/Generate_Report.py',
'PYSOURCE'),
('libpython3.10.so.1.0',
'/lib/x86_64-linux-gnu/libpython3.10.so.1.0',
'BINARY'),
('lib-dynload/_posixshmem.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_posixshmem.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_multiprocessing.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_multiprocessing.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/termios.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/termios.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_ssl.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_ssl.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_hashlib.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_hashlib.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_contextvars.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_contextvars.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_decimal.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_decimal.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/resource.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/resource.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_lzma.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_lzma.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_bz2.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_bz2.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_opcode.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_opcode.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/mmap.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/mmap.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_ctypes.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_ctypes.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_queue.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_queue.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_multibytecodec.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_multibytecodec.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_jp.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_jp.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_kr.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_kr.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_iso2022.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_iso2022.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_cn.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_cn.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_tw.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_tw.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_codecs_hk.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_codecs_hk.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/etree.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/etree.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/_elementpath.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/_elementpath.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/sax.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/sax.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/objectify.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/objectify.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/html/diff.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/html/diff.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/html/_difflib.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/html/_difflib.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/readline.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/readline.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lxml/builder.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/builder.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_asyncio.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('lib-dynload/_json.cpython-310-x86_64-linux-gnu.so',
'/usr/lib/python3.10/lib-dynload/_json.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('charset_normalizer/md.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_webp.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_avif.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_avif.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('PIL/_imaging.cpython-310-x86_64-linux-gnu.so',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so',
'EXTENSION'),
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
('libcrypto.so.3', '/lib/x86_64-linux-gnu/libcrypto.so.3', 'BINARY'),
('libssl.so.3', '/lib/x86_64-linux-gnu/libssl.so.3', 'BINARY'),
('libmpdec.so.3', '/lib/x86_64-linux-gnu/libmpdec.so.3', 'BINARY'),
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
('libffi.so.8', '/lib/x86_64-linux-gnu/libffi.so.8', 'BINARY'),
('libreadline.so.8', '/lib/x86_64-linux-gnu/libreadline.so.8', 'BINARY'),
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
('pillow.libs/libwebp-5f0275c0.so.7.1.10',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebp-5f0275c0.so.7.1.10',
'BINARY'),
('pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'BINARY'),
('pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'BINARY'),
('pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'BINARY'),
('libgcc_s.so.1', '/lib/x86_64-linux-gnu/libgcc_s.so.1', 'BINARY'),
('pillow.libs/libavif-01e67780.so.16.3.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libavif-01e67780.so.16.3.0',
'BINARY'),
('libstdc++.so.6', '/lib/x86_64-linux-gnu/libstdc++.so.6', 'BINARY'),
('pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'BINARY'),
('pillow.libs/liblzma-64b7ab39.so.5.8.1',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/liblzma-64b7ab39.so.5.8.1',
'BINARY'),
('pillow.libs/libxcb-64009ff3.so.1.1.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libxcb-64009ff3.so.1.1.0',
'BINARY'),
('pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'BINARY'),
('pillow.libs/libXau-154567c4.so.6.0.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libXau-154567c4.so.6.0.0',
'BINARY'),
('pillow.libs/libopenjp2-56811f71.so.2.5.3',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libopenjp2-56811f71.so.2.5.3',
'BINARY'),
('pillow.libs/libtiff-13a02c81.so.6.1.0',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/pillow.libs/libtiff-13a02c81.so.6.1.0',
'BINARY'),
('lxml/isoschematron/resources/rng/iso-schematron.rng',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng',
'DATA'),
('lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl',
'DATA'),
('lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl',
'DATA'),
('docx/templates/default-docx-template/docProps/app.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/app.xml',
'DATA'),
('docx/templates/default-docx-template/word/fontTable.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/fontTable.xml',
'DATA'),
('docx/templates/default-footer.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-footer.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/_rels/item1.xml.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels',
'DATA'),
('docx/templates/default-comments.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-comments.xml',
'DATA'),
('docx/templates/default.docx',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default.docx',
'DATA'),
('docx/templates/default-docx-template/docProps/core.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/core.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/itemProps1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/itemProps1.xml',
'DATA'),
('docx/templates/default-docx-template/word/theme/theme1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/theme/theme1.xml',
'DATA'),
('docx/templates/default-docx-template/word/stylesWithEffects.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/stylesWithEffects.xml',
'DATA'),
('docx/templates/default-docx-template/word/_rels/document.xml.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/_rels/document.xml.rels',
'DATA'),
('docx/templates/default-docx-template/word/webSettings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/webSettings.xml',
'DATA'),
('docx/templates/default-docx-template/docProps/thumbnail.jpeg',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/docProps/thumbnail.jpeg',
'DATA'),
('docx/templates/default-header.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-header.xml',
'DATA'),
('docx/templates/default-settings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-settings.xml',
'DATA'),
('docx/py.typed',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/py.typed',
'DATA'),
('docx/templates/default-docx-template/[Content_Types].xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/[Content_Types].xml',
'DATA'),
('docx/templates/default-docx-template/word/settings.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/settings.xml',
'DATA'),
('docx/templates/default-docx-template/word/styles.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/styles.xml',
'DATA'),
('docx/templates/default-docx-template/word/numbering.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/numbering.xml',
'DATA'),
('docx/templates/default-docx-template/customXml/item1.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/customXml/item1.xml',
'DATA'),
('docx/templates/default-docx-template/word/document.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/word/document.xml',
'DATA'),
('docx/templates/default-styles.xml',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-styles.xml',
'DATA'),
('docx/templates/default-docx-template/_rels/.rels',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/docx/templates/default-docx-template/_rels/.rels',
'DATA'),
('certifi/cacert.pem',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/certifi/cacert.pem',
'DATA'),
('certifi/py.typed',
'/home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/certifi/py.typed',
'DATA'),
('base_library.zip',
'/home/dtyx/桌面/yhh/Report_Generate_Server/build/build/base_library.zip',
'DATA'),
('libwebp-5f0275c0.so.7.1.10',
'pillow.libs/libwebp-5f0275c0.so.7.1.10',
'SYMLINK'),
('libwebpdemux-efaed568.so.2.0.16',
'pillow.libs/libwebpdemux-efaed568.so.2.0.16',
'SYMLINK'),
('libwebpmux-6f2b1ad9.so.3.1.1',
'pillow.libs/libwebpmux-6f2b1ad9.so.3.1.1',
'SYMLINK'),
('libsharpyuv-60a7c00b.so.0.1.1',
'pillow.libs/libsharpyuv-60a7c00b.so.0.1.1',
'SYMLINK'),
('libavif-01e67780.so.16.3.0',
'pillow.libs/libavif-01e67780.so.16.3.0',
'SYMLINK'),
('liblcms2-cc10e42f.so.2.0.17',
'pillow.libs/liblcms2-cc10e42f.so.2.0.17',
'SYMLINK'),
('liblzma-64b7ab39.so.5.8.1',
'pillow.libs/liblzma-64b7ab39.so.5.8.1',
'SYMLINK'),
('libxcb-64009ff3.so.1.1.0',
'pillow.libs/libxcb-64009ff3.so.1.1.0',
'SYMLINK'),
('libjpeg-8a13c6e0.so.62.4.0',
'pillow.libs/libjpeg-8a13c6e0.so.62.4.0',
'SYMLINK'),
('libXau-154567c4.so.6.0.0',
'pillow.libs/libXau-154567c4.so.6.0.0',
'SYMLINK'),
('libopenjp2-56811f71.so.2.5.3',
'pillow.libs/libopenjp2-56811f71.so.2.5.3',
'SYMLINK'),
('libtiff-13a02c81.so.6.1.0',
'pillow.libs/libtiff-13a02c81.so.6.1.0',
'SYMLINK')],
'libpython3.10.so.1.0',
False,
False,
False,
[],
None,
None,
None)

BIN
build/build/PYZ-00.pyz Normal file

Binary file not shown.

1197
build/build/PYZ-00.toc Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,75 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _winapi - imported by encodings (delayed, conditional, optional), ntpath (optional), subprocess (optional), multiprocessing.connection (optional), multiprocessing.spawn (delayed, conditional), multiprocessing.reduction (conditional), multiprocessing.shared_memory (conditional), multiprocessing.heap (conditional), multiprocessing.popen_spawn_win32 (top-level), asyncio.windows_events (top-level), asyncio.windows_utils (top-level), mimetypes (optional)
missing module named msvcrt - imported by subprocess (optional), multiprocessing.spawn (delayed, conditional), multiprocessing.popen_spawn_win32 (top-level), asyncio.windows_events (top-level), asyncio.windows_utils (top-level), getpass (optional)
missing module named urllib.urlopen - imported by urllib (delayed, optional), lxml.html (delayed, optional)
missing module named urllib.urlencode - imported by urllib (delayed, optional), lxml.html (delayed, optional)
missing module named winreg - imported by importlib._bootstrap_external (conditional), mimetypes (optional), urllib.request (delayed, conditional, optional), requests.utils (delayed, conditional, optional), platform (delayed, optional)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named pep517 - imported by importlib.metadata (delayed)
missing module named nt - imported by os (delayed, conditional, optional), ntpath (optional), importlib._bootstrap_external (conditional), shutil (conditional), ctypes (delayed, conditional)
missing module named org - imported by pickle (optional)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named pyimod02_importers - imported by /home/dtyx/桌面/yhh/Report_Generate_Server/.venv/lib/python3.10/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py (delayed)
missing module named annotationlib - imported by typing_extensions (conditional)
missing module named htmlentitydefs - imported by lxml.html.soupparser (optional)
missing module named BeautifulSoup - imported by lxml.html.soupparser (optional)
missing module named bs4 - imported by lxml.html.soupparser (optional)
missing module named urlparse - imported by lxml.ElementInclude (optional), lxml.html.html5parser (optional)
missing module named urllib2 - imported by lxml.ElementInclude (optional), lxml.html.html5parser (optional)
missing module named 'html5lib.treebuilders' - imported by lxml.html.html5parser (top-level)
missing module named html5lib - imported by lxml.html._html5builder (top-level), lxml.html.html5parser (top-level)
missing module named 'cython.cimports' - imported by lxml.html.diff (optional)
missing module named cython - imported by lxml.html.diff (optional), lxml.html._difflib (optional)
missing module named lxml_html_clean - imported by lxml.html.clean (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional)
missing module named cssselect - imported by lxml.cssselect (optional)
missing module named _overlapped - imported by asyncio.windows_events (top-level)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
missing module named simplejson - imported by requests.compat (conditional, optional)
missing module named dummy_threading - imported by requests.cookies (optional)
missing module named zstandard - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named compression - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named 'h2.events' - imported by urllib3.http2.connection (top-level)
missing module named 'h2.connection' - imported by urllib3.http2.connection (top-level)
missing module named h2 - imported by urllib3.http2.connection (top-level)
missing module named brotli - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named brotlicffi - imported by urllib3.util.request (optional), urllib3.response (optional)
missing module named socks - imported by urllib3.contrib.socks (optional)
missing module named 'typing.io' - imported by importlib.resources (top-level)
missing module named cryptography - imported by urllib3.contrib.pyopenssl (top-level), requests (conditional, optional)
missing module named 'OpenSSL.crypto' - imported by urllib3.contrib.pyopenssl (delayed, conditional)
missing module named 'cryptography.x509' - imported by urllib3.contrib.pyopenssl (delayed, optional)
missing module named OpenSSL - imported by urllib3.contrib.pyopenssl (top-level)
missing module named chardet - imported by requests (optional)
missing module named 'pyodide.ffi' - imported by urllib3.contrib.emscripten.fetch (delayed, optional)
missing module named pyodide - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named js - imported by urllib3.contrib.emscripten.fetch (top-level)
missing module named olefile - imported by PIL.FpxImagePlugin (top-level), PIL.MicImagePlugin (top-level)
missing module named numpy - imported by PIL._typing (conditional, optional)
missing module named defusedxml - imported by PIL.Image (optional)

20445
build/build/xref-build.html Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

BIN
dist/report_generator vendored Executable file

Binary file not shown.

BIN
report_generator Executable file

Binary file not shown.

View File

@ -41,6 +41,10 @@ def get_weather(weatherid : str) -> dict:
weatherurl = DTURL + GETWEATHERINFO.format(weatherCode=weatherid)
return get_data(weatherurl, "data")
def get_defect_record_list() -> list[dict]:
url = DTURL + "/defect/list"
return get_data(url)
def get_part_list(turbineId : str) -> dict:
parturl = DTURL + GETPARTLIST
params = {
@ -50,16 +54,12 @@ def get_part_list(turbineId : str) -> dict:
print(f"获取到部件{result}")
return result, [item["partId"] for item in result]
def get_part_picture(turbineId : str) -> tuple[list[dict], list[dict]]:
"""获取对应机组所有图片
Args:
turbineId (str): 机组ID
Return:
list: 包含所有对应机组的部件信息的列表
list: 包含所有图片信息的列表(按部件分list)
[
{
@ -112,4 +112,48 @@ def find_defect_record(defect_pictures : list[dict]):
Args:
defect_pictures (list[dict]): 缺陷图列表
"""
for pic in defect_pictures:
pic_id = pic["imageId"]
def get_full_picture_url(pic_url : str) -> str:
"""获取完整的图片URL
Args:
pic_url (str): 图片URL
Returns:
str: 完整的图片URL
"""
return DTURL + pic_url
def check_pic_url(pic_url: str, timeout: int = 5) -> bool:
"""检查图片URL是否有效
仅验证了头部和Content-Type
Args:
pic_url: 图片URL
timeout: 请求超时时间
Returns:
bool: True 如果是有效图片否则 False
"""
print(f"检查图片URL{pic_url}")
pic_url = get_full_picture_url(pic_url)
if pic_url is None:
return False
try:
# 发起HEAD请求更快仅获取头部信息
response = requests.head(pic_url, timeout=timeout, allow_redirects=True)
if response.status_code != 200:
print(f"请求图片失败,状态码:{response.status_code}")
return False
# 检查Content-Type是否是图片类型
content_type = response.headers.get("Content-Type", "").lower()
if not content_type.startswith("image/"):
print(f"图片类型错误:{content_type}")
return False
return True
except Exception as e:
print(f"请求图片失败, 未知错误{e}")
return False

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -393,63 +393,79 @@ async def add_picture_to_table(target_doc: Document, target_filename: str, row:
except Exception as e:
return f"Failed to add picture to table: {str(e)}"
async def add_picture(filename: str, image_path: str, width: Optional[float] = None) -> str:
"""添加一个图片到文档中
import requests
from io import BytesIO
from PIL import Image
async def add_picture(filename: str, image_path: str, width: Optional[float] = None, height: Optional[float] = None) -> str:
"""添加一个图片到文档中(支持本地路径或 URL
Args:
filename: 文档路径
image_path: 图片路径
width: 图片大小
image_path: 图片路径本地路径或 URL
width: 图片大小英寸
"""
filename = ensure_docx_extension(filename)
# Validate document existence
# 检查文档是否存在
if not os.path.exists(filename):
return f"Document {filename} does not exist"
# Get absolute paths for better diagnostics
abs_filename = os.path.abspath(filename)
abs_image_path = os.path.abspath(image_path)
# Validate image existence with improved error message
if not os.path.exists(abs_image_path):
return f"Image file not found: {abs_image_path}"
# Check image file size
try:
image_size = os.path.getsize(abs_image_path) / 1024 # Size in KB
if image_size <= 0:
return f"Image file appears to be empty: {abs_image_path} (0 KB)"
except Exception as size_error:
return f"Error checking image file: {str(size_error)}"
# Check if file is writeable
is_writeable, error_message = check_file_writeable(abs_filename)
if not is_writeable:
return f"Cannot modify document: {error_message}. Consider creating a copy first or creating a new document."
is_url = image_path.startswith(("http://", "https://"))
try:
doc = Document(abs_filename)
# Additional diagnostic info
diagnostic = f"Attempting to add image ({abs_image_path}, {image_size:.2f} KB) to document ({abs_filename})"
try:
if width:
doc.add_picture(abs_image_path, width=Inches(width))
else:
doc.add_picture(abs_image_path)
doc.save(abs_filename)
return f"Picture {image_path} added to {filename}"
except Exception as inner_error:
# More detailed error for the specific operation
error_type = type(inner_error).__name__
error_msg = str(inner_error)
return f"Failed to add picture: {error_type} - {error_msg or 'No error details available'}\nDiagnostic info: {diagnostic}"
# 处理 URL 图片
if is_url:
try:
response = requests.get(image_path, timeout=10)
response.raise_for_status() # 检查请求是否成功
image_bytes = BytesIO(response.content)
# 验证图片有效性(可选)
Image.open(image_bytes).verify()
image_bytes.seek(0) # 重置指针
# 添加到文档
if width:
doc.add_picture(image_bytes, width=Inches(width), height=Inches(height))
else:
doc.add_picture(image_bytes)
doc.save(abs_filename)
return f"Picture from URL {image_path} added to {filename}"
except Exception as url_error:
return f"Failed to download/add URL image: {str(url_error)}"
# 处理本地图片
else:
abs_image_path = os.path.abspath(image_path)
if not os.path.exists(abs_image_path):
return f"Image file not found: {abs_image_path}"
# 检查文件大小和可读性(原逻辑)
try:
image_size = os.path.getsize(abs_image_path) / 1024
if image_size <= 0:
return f"Image file is empty: {abs_image_path}"
except Exception as size_error:
return f"Error checking image file: {str(size_error)}"
# 添加到文档
try:
if width:
doc.add_picture(abs_image_path, width=Inches(width), height=Inches(height))
else:
doc.add_picture(abs_image_path)
doc.save(abs_filename)
return f"Picture {image_path} added to {filename}"
except Exception as inner_error:
return f"Failed to add picture: {str(inner_error)}"
except Exception as outer_error:
# Fallback error handling
error_type = type(outer_error).__name__
error_msg = str(outer_error)
return f"Document processing error: {error_type} - {error_msg or 'No error details available'}"
return f"Document processing error: {str(outer_error)}"
async def add_page_break(filename: str) -> str:

View File

@ -80,7 +80,7 @@ def get_year_month(date):
def merge_info(frontend_info, default_info):
"""
合并前端传入的 info 和默认 info
规则如果前端传入的值为空None 或空字符串则使用默认值
新规则以default_info为基础字典用frontend_info完全覆写取两者的并集
Args:
frontend_info: 前端传入的字典
@ -90,17 +90,10 @@ def merge_info(frontend_info, default_info):
"""
if not isinstance(frontend_info, dict) or frontend_info is None:
return default_info.copy()
merged_info = {}
for key, default_value in default_info.items():
# 获取前端传入的值
frontend_value = frontend_info.get(key)
# 判断前端值是否为空None 或空字符串)
if frontend_value is None or frontend_value == "":
merged_info[key] = default_value
else:
merged_info[key] = frontend_value
# 先复制默认字典
merged_info = default_info.copy()
# 用前端字典完全覆写
merged_info.update(frontend_info)
return merged_info

View File

@ -13,6 +13,9 @@
缺陷例轮毂至塔基未导通 #即标明未导通即可
"""
DEFAULT_BASE_INFO = { #项目基本信息
"turbine_id" : None,
}
DEFAULT_BAOGAO_INFO = {
#目录
'shengcheng_dir': "", #报告生成的路径
@ -31,8 +34,9 @@ DEFAULT_BAOGAO_INFO = {
"baogaoCheck" : "未审核",
'key_words': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化
"shigong_fangan" : "None",
"shigong_fangan" : None,
'jiancha_renyuan': '张三',
"check_date" : None,
}
class JIANCHA_ENUM :
@ -69,20 +73,6 @@ class SHIGONG_FANGAN_ENUM :
SHIGONG_FANGAN = ""
FEISHOURENYUAN_PEIZHI = "1人主检飞手1人"
LUNGUZUOYERENYUAN_PEIZHI = "2人轮毂作业检查2人"
DEFAULT_BASE_INFO = { #项目基本信息
#项目概况
'jituan_jianxie': '甲方集团',
'jia_Company': '甲方公司名',
'jizu_num': '项目规格(台)',
'fengchang_name': '风场名称',
'fengchang_location': '风场位置',
'jizu_xinghao': '机组型号', #机组的型号
#乙方信息
'yi_Company': '乙方公司名',
'fuzeren': '甲方负责人(吴明洲)',
'phone_fuzeren': '联系电话18807109269 ',
}
oneproject = {
"status": 200,
"data": {

View File

@ -238,7 +238,7 @@ def process_picture_data(picture_data : list[dict],
quexian_type : str,
dianxing_type : str,
other_type : str
) -> tuple[list[str], list[str]]:
) -> tuple[list[dict], list[dict], list[dict], int]:
"""处理从数据库获取的图片数据
Args:
@ -255,11 +255,44 @@ def process_picture_data(picture_data : list[dict],
total_num 总图片数量
)
"""
#过滤目标来源的图片数据
picture_data = [pic for pic in picture_data if pic['imageSource'] in image_source_to_find]
#分别择出缺陷图和典型图
return ([pic for pic in picture_data if pic['imageType'] == quexian_type],
[pic for pic in picture_data if pic['imageType'] == dianxing_type],
[pic for pic in picture_data if pic['imageType'] == other_type],
len(picture_data))
print(f"image_source_to_find: {image_source_to_find}, quexian_type: {quexian_type}, dianxing_type: {dianxing_type}, other_type: {other_type}")
# 过滤目标来源的图片数据
filtered_picture_data = [pic for pic in picture_data if pic['imageSource'] in image_source_to_find]
print(f"过滤来源后的图片数据数量: {len(filtered_picture_data)}")
# 分别择出缺陷图和典型图
defct_pictures = [pic for pic in filtered_picture_data if pic['imageType'] == quexian_type]
dianxing_pictures = [pic for pic in filtered_picture_data if pic['imageType'] == dianxing_type]
other_pictures = [pic for pic in filtered_picture_data if pic['imageType'] == other_type]
# 计算总图片数量
total_num = len(filtered_picture_data)
# 打印数据信息
print(f"总图片数量: {total_num}")
print(f"缺陷图数量: {len(defct_pictures)}")
print(f"典型图数量: {len(dianxing_pictures)}")
print(f"其他图数量: {len(other_pictures)}")
return defct_pictures, dianxing_pictures, other_pictures, total_num
def get_records_with_pic(records : list[dict], pic_id : list[str]) -> tuple[list[dict], list[dict]]:
"""获取指定图片ID的记录
Args:
records (list[dict]): 记录列表
pic_id (list[str]): 图片ID列表
Returns:
tuple(
records_with_pic , 包含指定图片ID的记录列表记录为键图片ID为值
error_pic, 是缺陷图但找不到对应图片的记录列表记录为键图片ID为值
)
"""
records_with_pic = {}
error_pic = {}
for record in records:
if record['picId'] in pic_id:
records_with_pic[record] = record['picId']
else:
error_pic[record] = record['picId']
return records_with_pic, error_pic

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
无图片版.zip Normal file

Binary file not shown.