获取了部件/图片的结构化信息
This commit is contained in:
parent
44a797c59b
commit
e28007f5b0
|
@ -16,10 +16,16 @@ from tools.get_pictures import (
|
||||||
process_picture_data
|
process_picture_data
|
||||||
)
|
)
|
||||||
|
|
||||||
from tools.Get_Json import (get_project_info,get_jizu_info,
|
from tools.Get_Json import (
|
||||||
get_jizu_shigong_info,get_weather,
|
get_project_info,get_jizu_info,
|
||||||
get_picture)
|
get_jizu_shigong_info,get_weather,
|
||||||
|
get_part_picture
|
||||||
|
)
|
||||||
|
|
||||||
|
from tools.dataproccess import (
|
||||||
|
caculate_work_days,add_dynamic_table,
|
||||||
|
get_year_month,merge_info,
|
||||||
|
)
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
@ -29,91 +35,6 @@ from tools.defines import *
|
||||||
import os, re, datetime
|
import os, re, datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
async def add_dynamic_table(output_doc, output_dir, table_num, TABLES, JIANCHA_XIANGQING_DIR, PICTURES, row, col, i, FLAG, xuhao):
|
|
||||||
"""创建动态表
|
|
||||||
|
|
||||||
Args:
|
|
||||||
output_doc (Document): 文档对象
|
|
||||||
output_dir (str): 输出目录
|
|
||||||
table_num (int): 表格序号
|
|
||||||
TABLES (list): 表格数据
|
|
||||||
JIANCHA_XIANGQING_DIR (str): 检查详情表目录
|
|
||||||
PICTURES (dict): 图片数据字典,键为表索引,值为图片路径列表
|
|
||||||
row (int): 行数
|
|
||||||
col (int): 列数
|
|
||||||
i (int): 表格序号
|
|
||||||
FLAG: 其他标志
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
tuple: (i, table_num) 更新后的表格序号和表格数量
|
|
||||||
"""
|
|
||||||
for table_idx, Table in enumerate(TABLES):
|
|
||||||
print(Table)
|
|
||||||
output_doc, message = await add_table_to_document(output_dir, JIANCHA_XIANGQING_DIR, row, col, i, Table, FLAG)
|
|
||||||
print(message)
|
|
||||||
|
|
||||||
# 获取当前表格对应的图片
|
|
||||||
current_table_pictures = PICTURES.get(table_idx, [])
|
|
||||||
print(f"开始处理图片列表: {current_table_pictures}")
|
|
||||||
|
|
||||||
for picturedir in current_table_pictures:
|
|
||||||
try:
|
|
||||||
print(f"添加 {picturedir} {type(picturedir)}到表格{table_idx}")
|
|
||||||
resize_and_reduce_quality(picturedir, picturedir)
|
|
||||||
await add_picture_to_table(output_doc, output_dir, 4, 0, picturedir, i, 4.7232)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"添加图片失败:{e}")
|
|
||||||
|
|
||||||
print(await search_and_replace(output_dir, 'tupian_xuhao', f'{xuhao}'))
|
|
||||||
table_num += 1
|
|
||||||
i += 1
|
|
||||||
xuhao += 1
|
|
||||||
return i, table_num, xuhao
|
|
||||||
|
|
||||||
def get_year_month(date):
|
|
||||||
"""根据格式化date字符串获取年月 'date': '二〇二一年十二月十日 9:00'
|
|
||||||
|
|
||||||
Args: date (str): 日期字符串
|
|
||||||
|
|
||||||
Returns: 年月字符串 '二〇二一年十二月'
|
|
||||||
"""
|
|
||||||
unit_map = {'1' : '一', '2' : '二', '3' : '三', '4' : '四', '5' : '五', '6' : '六', '7' : '七', '8' : '八', '9' : '九', '0' : '〇'}
|
|
||||||
unit_map_month = {1 : '一', 2 : '二', 3 : '三', 4 : '四', 5 : '五', 6 : '六', 7 : '七', 8 : '八', 9 : '九', 10 : '十', 11 : '十一', 12 : '十二'}
|
|
||||||
year = date.split('年')[0]
|
|
||||||
month = date.split('年')[1].split('月')[0]
|
|
||||||
year = ''.join([unit_map[i] for i in year])
|
|
||||||
month = unit_map_month[int(month)]
|
|
||||||
return f"{year}年{month}月"
|
|
||||||
|
|
||||||
def merge_info(frontend_info, default_info):
|
|
||||||
"""
|
|
||||||
合并前端传入的 info 和默认 info
|
|
||||||
规则:如果前端传入的值为空(None 或空字符串),则使用默认值
|
|
||||||
|
|
||||||
Args:
|
|
||||||
frontend_info: 前端传入的字典
|
|
||||||
default_info: 默认的完整字典
|
|
||||||
Returns:
|
|
||||||
合并后的完整字典
|
|
||||||
"""
|
|
||||||
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
|
|
||||||
|
|
||||||
return merged_info
|
|
||||||
|
|
||||||
|
|
||||||
async def generate_report(base_info, baogao_info):
|
async def generate_report(base_info, baogao_info):
|
||||||
#获取模板编号、模板名称
|
#获取模板编号、模板名称
|
||||||
num_to_chinese = {1 : '一', 2 : '二', 3 : '三', 4 : '四', 5 : '五', 6 : '六', 7 : '七', 8 : '八', 9 : '九', 10 : '十', 11 : '十一', 12 : '十二'}
|
num_to_chinese = {1 : '一', 2 : '二', 3 : '三', 4 : '四', 5 : '五', 6 : '六', 7 : '七', 8 : '八', 9 : '九', 10 : '十', 11 : '十一', 12 : '十二'}
|
||||||
|
@ -130,6 +51,7 @@ async def generate_report(base_info, baogao_info):
|
||||||
jizu_data = get_jizu_info(turbine_id)
|
jizu_data = get_jizu_info(turbine_id)
|
||||||
project_data = get_project_info(jizu_data['projectId'])
|
project_data = get_project_info(jizu_data['projectId'])
|
||||||
shigong_data = get_jizu_shigong_info(turbine_id)
|
shigong_data = get_jizu_shigong_info(turbine_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
fengchang_name = project_data['farmName']
|
fengchang_name = project_data['farmName']
|
||||||
Yi_company = project_data['inspectionUnit']
|
Yi_company = project_data['inspectionUnit']
|
||||||
|
@ -141,13 +63,18 @@ async def generate_report(base_info, baogao_info):
|
||||||
jia_phone = project_data['clientPhone']
|
jia_phone = project_data['clientPhone']
|
||||||
jizu_num = project_data['scale']
|
jizu_num = project_data['scale']
|
||||||
jizu_xinghao = project_data['turbineModel']
|
jizu_xinghao = project_data['turbineModel']
|
||||||
|
project_name = project_data['projectName']
|
||||||
|
jizu_bianhao = jizu_data["turbineName"]
|
||||||
|
start_date = project_data['startDate']
|
||||||
|
end_date = project_data['endDate']
|
||||||
|
gongqi = caculate_work_days(start_date, end_date)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"数据库的项目-机组基本信息获取失败:{e}")
|
print(f"数据库的项目-机组基本信息获取失败:{e}")
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
baogao_date = datetime.datetime.now().strftime("%Y年%m月%d日 %H:%M") #现在的时间
|
baogao_date = datetime.datetime.now().strftime("%Y年%m月%d日 %H:%M") #现在的时间
|
||||||
|
date_year_month = get_year_month(baogao_date)
|
||||||
|
|
||||||
#前端信息
|
#前端信息
|
||||||
baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO)
|
baogao_info = merge_info(baogao_info, DEFAULT_BAOGAO_INFO)
|
||||||
|
@ -160,14 +87,6 @@ async def generate_report(base_info, baogao_info):
|
||||||
if_waibu = baogao_info["if_waibu"]
|
if_waibu = baogao_info["if_waibu"]
|
||||||
if_neibu = baogao_info["if_neibu"]
|
if_neibu = baogao_info["if_neibu"]
|
||||||
if_fanglei = baogao_info["if_fanglei"]
|
if_fanglei = baogao_info["if_fanglei"]
|
||||||
image_source_to_find = []
|
|
||||||
#获取对应枚举字段
|
|
||||||
if if_waibu:
|
|
||||||
image_source_to_find.append(baogao_info['waibu_enum'])
|
|
||||||
if if_neibu:
|
|
||||||
image_source_to_find.append(baogao_info['neibu_enum'])
|
|
||||||
if if_fanglei:
|
|
||||||
image_source_to_find.append(baogao_info['fanglei_enum'])
|
|
||||||
|
|
||||||
quexian_type = baogao_info['quexian_enum']
|
quexian_type = baogao_info['quexian_enum']
|
||||||
|
|
||||||
|
@ -176,58 +95,100 @@ async def generate_report(base_info, baogao_info):
|
||||||
|
|
||||||
#数据库拉取信息
|
#数据库拉取信息
|
||||||
Jiancha_date = shigong_data["startTime"].replace("T", " ") #检查日期
|
Jiancha_date = shigong_data["startTime"].replace("T", " ") #检查日期
|
||||||
image_count = shigong_data['imageCount'] #从施工方案获取的图片数量,待定
|
image_count = shigong_data['imageCount'] #从施工方案获取的图片数量,待定!!!
|
||||||
temperature = shigong_data['temperature'] #温度
|
temperature = shigong_data['temperature'] #温度
|
||||||
wind_speed = shigong_data['windSpeed'] #风速
|
wind_speed = shigong_data['windSpeed'] #风速
|
||||||
weather = get_weather(shigong_data["weatherCode"]) #天气
|
weather = get_weather(shigong_data["weatherCode"]) #天气 不从此接口获取,待定!!!
|
||||||
#拉取图片数据
|
|
||||||
picture_data = get_picture(turbine_id)
|
#拉取部件、图片数据
|
||||||
|
part_data, picture_data = get_part_picture(turbine_id)
|
||||||
|
|
||||||
|
#获取叶片信息
|
||||||
|
print(part_data)
|
||||||
|
Yepians = []
|
||||||
|
yepian_to_find = ["叶片1","叶片2","叶片3"]
|
||||||
|
#依次获取叶片1,2,3的信息(未考虑多个同叶片的信息情况,正常情况下不会发生)
|
||||||
|
for name in yepian_to_find:
|
||||||
|
# 找到第一个匹配的部件并添加到列表中
|
||||||
|
for part in part_data:
|
||||||
|
if part['partName'] == name:
|
||||||
|
Yepians.append(part)
|
||||||
|
print(Yepians)
|
||||||
|
print(f"找到叶片号{[yepian["partCode"] for yepian in Yepians]}")
|
||||||
|
Y_Code = [yepian["partCode"] for yepian in Yepians]
|
||||||
|
|
||||||
|
image_source_to_find = []
|
||||||
|
baogao_label = []
|
||||||
|
renyuan_peizhi = []
|
||||||
|
gongzuo_neirong = []
|
||||||
|
shigong_fangan = []
|
||||||
|
shebei_peizhi = []
|
||||||
|
beizhu = []
|
||||||
|
jiancha = []
|
||||||
|
neirong = []
|
||||||
|
#获取对应枚举字段
|
||||||
|
if if_waibu:
|
||||||
|
baogao_label.append("外观")
|
||||||
|
image_source_to_find.append(baogao_info['waibu_enum'])
|
||||||
|
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)
|
||||||
|
shebei_peizhi.append(SHIGONG_FANGAN_ENUM.WAIBU.SHEBEI_PEIZHI)
|
||||||
|
shigong_fangan.append(SHIGONG_FANGAN_ENUM.WAIBU.SHIGONG_FANGAN)
|
||||||
|
else:
|
||||||
|
pass #待添加如果从平台传入枚举,但目前没必要,如果这种枚举标准信息库有更好的优化则可以实现
|
||||||
|
jiancha.append("无人机近距离外观检查")
|
||||||
|
neirong.append(f"、".join(Y_Code) + "三支叶片的前缘、后缘、迎风面、背风面。")
|
||||||
|
if if_neibu:
|
||||||
|
baogao_label.append("内部")
|
||||||
|
image_source_to_find.append(baogao_info['neibu_enum'])
|
||||||
|
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)
|
||||||
|
shigong_fangan.append(SHIGONG_FANGAN_ENUM.NEIBU.SHIGONG_FANGAN)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
jiancha.append("人工内部拍摄")
|
||||||
|
neirong.append(f"、".join(Y_Code) + "三支叶片的内部导雷卡、腹板、透光、人孔盖版、叶根盖板...")
|
||||||
|
if if_fanglei:
|
||||||
|
baogao_label.append("防雷")
|
||||||
|
image_source_to_find.append(baogao_info['fanglei_enum'])
|
||||||
|
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)
|
||||||
|
shigong_fangan.append(SHIGONG_FANGAN_ENUM.FANGLEI.YEPIAN.SHIGONG_FANGAN)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
jiancha.append("人工防雷")
|
||||||
|
neirong.append(f"轮毂至塔基导通、内部导线线阻、外部导线线阻...")
|
||||||
|
|
||||||
#获取缺陷图列表和典型图列表
|
#获取缺陷图列表和典型图列表
|
||||||
defect_pictures, typical_pictures = process_picture_data(picture_data, image_source_to_find)
|
defect_pictures, typical_pictures = process_picture_data(picture_data, image_source_to_find, quexian_type, dianxing_type)
|
||||||
#处理图片数据
|
print(f"\n\n\n缺陷图片列表:{defect_pictures}\n\n\n典型图片列表:{typical_pictures}\n\n\n")
|
||||||
|
|
||||||
|
#处理图片数据待完成,图片绑定施工后
|
||||||
|
defect_pictures_id = [pic for pic in defect_pictures]
|
||||||
|
|
||||||
|
|
||||||
date_year_month = get_year_month(baogao_date)
|
baogao_bianzhi = baogao_info["userName"]
|
||||||
|
baogao_shenghe = baogao_info["baogaoCheck"]
|
||||||
project_number = baogao_info['jizu_type']
|
|
||||||
baogao_type = baogao_info['baogao_type']
|
|
||||||
Jiancha_renyuan = baogao_info['jiancha_renyuan']
|
|
||||||
shebei_peizhi = baogao_info['shebei_peizhi']
|
|
||||||
shigong_fangan = baogao_info['shigong_fangan']
|
|
||||||
renyuan_peizhi = baogao_info['renyuan_peizhi']
|
|
||||||
gongzuo_neirong = baogao_info['gongzuo_neirong']
|
|
||||||
beizhu = baogao_info['beizhu']
|
|
||||||
|
|
||||||
Jiancha_location = baogao_info['jiancha_location']
|
|
||||||
Jiancha_fangshi = baogao_info['jiancha_fangshi']
|
|
||||||
Changjia = baogao_info['yepian_changjia']
|
|
||||||
|
|
||||||
yezhu_renyuan = baogao_info['yezhu_renyuan']
|
|
||||||
changjia_renyuan = baogao_info['changjia_renyuan']
|
|
||||||
data_process = baogao_info['date_process']
|
|
||||||
baogao_bianzhi = baogao_info['baogao_bianzhi']
|
|
||||||
baogao_shenghe = baogao_info['baogao_shenghe']
|
|
||||||
shenghe_date = baogao_info['shenghe_date']
|
|
||||||
|
|
||||||
Y1_jiancha = baogao_info['Y1_jiancha_neirong']
|
|
||||||
Y2_jiancha = baogao_info['Y2_jiancha_neirong']
|
|
||||||
Y3_jiancha = baogao_info['Y3_jiancha_neirong']
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"报告基本信息获取失败:{e}")
|
print(f"报告基本信息获取失败:{e}")
|
||||||
return
|
return
|
||||||
|
|
||||||
normal_picture_num = 0
|
normal_picture_num = 0
|
||||||
Y1 = "t"
|
|
||||||
Y2 = "t"
|
|
||||||
Y3 = "t"
|
|
||||||
|
|
||||||
output_doc = None
|
output_doc = None
|
||||||
head_num = 1
|
head_num = 1
|
||||||
###封面创建###
|
###封面创建###
|
||||||
cover_dirs = [os.path.join(muban_dir,"fengmian1.docx"),os.path.join(muban_dir,"fengmian.jpg"),os.path.join(muban_dir,"fengmian2.docx")]
|
cover_dirs = [os.path.join(muban_dir,"fengmian1.docx"),os.path.join(muban_dir,"fengmian.jpg"),os.path.join(muban_dir,"fengmian2.docx")]
|
||||||
#输出目录
|
#输出目录
|
||||||
output_dir = os.path.normpath(f"{shengcheng_dir}/{fengchang_name}项目{baogao_type}{project_number}{baogao_date.split(' ')[0]}版.docx")
|
baogao_name = "叶片" + "、".join(baogao_label)
|
||||||
|
output_dir = os.path.normpath(f"{shengcheng_dir}/{project_name}项目{baogao_name}{jizu_bianhao}{baogao_date.split(' ')[0]}版.docx")
|
||||||
|
|
||||||
version = 1
|
version = 1
|
||||||
while os.path.exists(output_dir):
|
while os.path.exists(output_dir):
|
||||||
|
@ -237,19 +198,7 @@ async def generate_report(base_info, baogao_info):
|
||||||
output_dir = output_dir.replace("版",f"版{version}")
|
output_dir = output_dir.replace("版",f"版{version}")
|
||||||
version += 1
|
version += 1
|
||||||
|
|
||||||
ifwaibu = baogao_info['waibu_jiancha']
|
mianzhe_shengming = f"本报告仅涵盖{'、'.join(baogao_label)}检测内容"
|
||||||
ifneibu = baogao_info['neibu_jiancha']
|
|
||||||
iffanglei = baogao_info['fanglei_jiancha']
|
|
||||||
parts = []
|
|
||||||
if ifwaibu:
|
|
||||||
parts.append("叶片外观")
|
|
||||||
if ifneibu:
|
|
||||||
parts.append("叶片内部")
|
|
||||||
if iffanglei:
|
|
||||||
parts.append("叶片防雷")
|
|
||||||
if not parts:
|
|
||||||
print("前端未指定检查内容")
|
|
||||||
mianzhe_shengming = f"本报告仅涵盖{'、'.join(parts)}检测内容"
|
|
||||||
|
|
||||||
#创建文档、添加封面
|
#创建文档、添加封面
|
||||||
print(await create_document(output_dir))
|
print(await create_document(output_dir))
|
||||||
|
@ -259,12 +208,12 @@ async def generate_report(base_info, baogao_info):
|
||||||
print("封面创建成功")
|
print("封面创建成功")
|
||||||
|
|
||||||
#更改文档信息
|
#更改文档信息
|
||||||
print(await search_and_replace(output_dir, TITLE_OF_REPORT, project_number))
|
print(await search_and_replace(output_dir, TITLE_OF_REPORT, jizu_bianhao))
|
||||||
print(await search_and_replace(output_dir, baogao_name1, baogao_type))
|
print(await search_and_replace(output_dir, baogao_name1, baogao_name))
|
||||||
print(await search_and_replace(output_dir, baogao_name2, baogao_type))
|
print(await search_and_replace(output_dir, baogao_name2, baogao_name))
|
||||||
print(await search_and_replace(output_dir, company_name_yi, Yi_company))
|
print(await search_and_replace(output_dir, company_name_yi, Yi_company))
|
||||||
print(await search_and_replace(output_dir, cover_project, fengchang_name))
|
print(await search_and_replace(output_dir, cover_project, fengchang_name))
|
||||||
print(await search_and_replace(output_dir, cover_encode, project_number))
|
print(await search_and_replace(output_dir, cover_encode, jizu_bianhao))
|
||||||
print(await search_and_replace(output_dir, cover_date, date_year_month))
|
print(await search_and_replace(output_dir, cover_date, date_year_month))
|
||||||
print(await search_and_replace(output_dir, 'bianzhi', baogao_bianzhi))
|
print(await search_and_replace(output_dir, 'bianzhi', baogao_bianzhi))
|
||||||
print(await search_and_replace(output_dir, 'shenghe', baogao_shenghe))
|
print(await search_and_replace(output_dir, 'shenghe', baogao_shenghe))
|
||||||
|
@ -279,20 +228,22 @@ async def generate_report(base_info, baogao_info):
|
||||||
company_name_jia = Jia_company
|
company_name_jia = Jia_company
|
||||||
fuzeren = yi_fuzeren
|
fuzeren = yi_fuzeren
|
||||||
phone_fuzeren = yi_phone
|
phone_fuzeren = yi_phone
|
||||||
jizu_bianhao = project_number
|
|
||||||
xiangmuguige = jizu_num
|
xiangmuguige = jizu_num
|
||||||
Yi_company = Yi_company
|
Yi_company = Yi_company
|
||||||
XIANGMU_GAIKUO = list(list("" for i in range(5)) for j in range(5))
|
XIANGMU_GAIKUO = list(list("" for i in range(6)) for j in range(5))
|
||||||
XIANGMU_GAIKUO[0][1] = fengchang_name
|
XIANGMU_GAIKUO[0][1] = fengchang_name
|
||||||
#XIANGMU_GAIKUO[0][3]=XIANGMU_GAIKUO[0][4] = "盐城市滨海县"
|
#XIANGMU_GAIKUO[0][3]=XIANGMU_GAIKUO[0][4] = "盐城市滨海县"
|
||||||
XIANGMU_GAIKUO[0][3] = project_location
|
XIANGMU_GAIKUO[0][4] = project_location
|
||||||
#XIANGMU_GAIKUO[1][1]=XIANGMU_GAIKUO[2,1]=XIANGMU_GAIKUO[3,1] = "国家电投集团滨海风力发电有限公司"
|
#XIANGMU_GAIKUO[1][1]=XIANGMU_GAIKUO[2,1]=XIANGMU_GAIKUO[3,1] = "国家电投集团滨海风力发电有限公司"
|
||||||
XIANGMU_GAIKUO[1][1] = company_name_jia
|
XIANGMU_GAIKUO[1][1] = company_name_jia
|
||||||
XIANGMU_GAIKUO[1][3] = Yi_company
|
XIANGMU_GAIKUO[1][4] = Yi_company
|
||||||
XIANGMU_GAIKUO[2][3] = fuzeren
|
XIANGMU_GAIKUO[2][1] = jia_fuzeren
|
||||||
XIANGMU_GAIKUO[3][4] = phone_fuzeren
|
XIANGMU_GAIKUO[2][4] = fuzeren
|
||||||
|
XIANGMU_GAIKUO[3][2] = jia_phone
|
||||||
|
XIANGMU_GAIKUO[3][5] = phone_fuzeren
|
||||||
XIANGMU_GAIKUO[4][1] = jizu_xinghao
|
XIANGMU_GAIKUO[4][1] = jizu_xinghao
|
||||||
XIANGMU_GAIKUO[4][4] = xiangmuguige
|
XIANGMU_GAIKUO[4][3] = xiangmuguige
|
||||||
|
XIANGMU_GAIKUO[4][5] = gongqi
|
||||||
print("建立表结构完毕,开始插入模板")
|
print("建立表结构完毕,开始插入模板")
|
||||||
#添加项目概况表
|
#添加项目概况表
|
||||||
print(f"输出路径:{output_dir},模板路径:{XIANG_MU_GAI_KUANG},插入数据:{XIANGMU_GAIKUO}")
|
print(f"输出路径:{output_dir},模板路径:{XIANG_MU_GAI_KUANG},插入数据:{XIANGMU_GAIKUO}")
|
||||||
|
@ -306,10 +257,10 @@ async def generate_report(base_info, baogao_info):
|
||||||
#检查方案描述
|
#检查方案描述
|
||||||
FANGAN_JIANCHA_DIR = os.path.join(muban_dir,"checkmethod.docx")
|
FANGAN_JIANCHA_DIR = os.path.join(muban_dir,"checkmethod.docx")
|
||||||
list_to_replace = {
|
list_to_replace = {
|
||||||
'renyuan_peizhi' : renyuan_peizhi,
|
'renyuan_peizhi' : "\n".join(renyuan_peizhi),
|
||||||
'shebei_peizhi' : shebei_peizhi,
|
'shebei_peizhi' : "\n".join(shebei_peizhi),
|
||||||
'shigong_fangan' : shigong_fangan,
|
'shigong_fangan' : "\n".join(shigong_fangan),
|
||||||
'gongzuo_neirong' : gongzuo_neirong,
|
'gongzuo_neirong' : "\n".join(gongzuo_neirong),
|
||||||
'beizhu' : beizhu,
|
'beizhu' : beizhu,
|
||||||
'num' : num_to_chinese[head_num],
|
'num' : num_to_chinese[head_num],
|
||||||
}
|
}
|
||||||
|
@ -318,30 +269,19 @@ async def generate_report(base_info, baogao_info):
|
||||||
total_table_num += 1
|
total_table_num += 1
|
||||||
head_num += 1
|
head_num += 1
|
||||||
|
|
||||||
jiancha = []
|
|
||||||
neirong = []
|
|
||||||
if ifwaibu:
|
|
||||||
jiancha.append("无人机外部高精度飞行")
|
|
||||||
neirong.append(f"{Y1}、{Y2}、{Y3}三支叶片的前缘、后缘、迎风面、背风面。")
|
|
||||||
if ifneibu:
|
|
||||||
jiancha.append("人工内部拍摄")
|
|
||||||
neirong.append(f"{Y1}、{Y2}、{Y3}三支叶片的内部导雷卡、腹板、透光、人孔盖版、叶根盖板...")
|
|
||||||
if iffanglei:
|
|
||||||
jiancha.append("人工防雷")
|
|
||||||
neirong.append(f"轮毂至塔基导通、内部导线线阻、外部导线线阻...")
|
|
||||||
|
|
||||||
JIANCHA_XINGXI_DIR = os.path.join(muban_dir,"checkinfo.docx")
|
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 = list(list("" for i in range(4)) for j in range(9))
|
||||||
JIANCHA_XINGXI[0][1] = Jiancha_renyuan
|
JIANCHA_XINGXI[0][1] = ""
|
||||||
JIANCHA_XINGXI[1][1] = Jiancha_date.split(' ')[0]
|
JIANCHA_XINGXI[1][1] = Jiancha_date.split(' ')[0]
|
||||||
JIANCHA_XINGXI[1][3] = project_number
|
JIANCHA_XINGXI[1][3] = jizu_bianhao
|
||||||
JIANCHA_XINGXI[2][1] = Jiancha_location
|
JIANCHA_XINGXI[2][1] = "风力发电机组" + baogao_name
|
||||||
JIANCHA_XINGXI[2][3] = Jiancha_fangshi
|
JIANCHA_XINGXI[2][3] = "、".join(jiancha)
|
||||||
JIANCHA_XINGXI[3][2] = Changjia
|
JIANCHA_XINGXI[3][2] = ""#需要使用查看叶片详情接口获取,待完成
|
||||||
JIANCHA_XINGXI[4][1] = '机组编号:' + project_number + '机组'
|
JIANCHA_XINGXI[4][1] = '机组编号:' + jizu_bianhao+ '机组'
|
||||||
JIANCHA_XINGXI[5][1] = Y1
|
JIANCHA_XINGXI[5][1] = Y_Code[0]
|
||||||
JIANCHA_XINGXI[6][1] = Y2
|
JIANCHA_XINGXI[6][1] = Y_Code[1] if len(Y_Code) > 1 else ""
|
||||||
JIANCHA_XINGXI[7][1] = Y3
|
JIANCHA_XINGXI[7][1] = Y_Code[2] if len(Y_Code) > 2 else ""
|
||||||
JIANCHA_XINGXI[8][0] = "本次" + "、".join(_ for _ in jiancha) + f"检查,采集叶片图片{normal_picture_num}张,内容覆盖" + ";".join(_ for _ in neirong)
|
JIANCHA_XINGXI[8][0] = "本次" + "、".join(_ for _ in jiancha) + f"检查,采集叶片图片{normal_picture_num}张,内容覆盖" + ";".join(_ for _ in neirong)
|
||||||
# if total_picture_dir == "":
|
# if total_picture_dir == "":
|
||||||
# Thumbnail_Picture = await make_Thumbnail(Picture_dir, Picture_dir)#添加图片
|
# Thumbnail_Picture = await make_Thumbnail(Picture_dir, Picture_dir)#添加图片
|
||||||
|
@ -540,6 +480,44 @@ def main():
|
||||||
json_data2 = {
|
json_data2 = {
|
||||||
'shengcheng_dir': r".\output",
|
'shengcheng_dir': r".\output",
|
||||||
'muban_dir': r".\muban",
|
'muban_dir': r".\muban",
|
||||||
|
# "shigong_fangan_enum" : { #可能放入标准信息库?但不论如何,修改了这个枚举的话,报告生成逻辑也要修改,待优化!
|
||||||
|
# "SHIGONG_FANGAN_ENUM": {
|
||||||
|
# "WAIBU": {
|
||||||
|
# "GONGZUO_NEIRONG": "无人机叶片外观巡检",
|
||||||
|
# "RENYUAN_PEIZHI": "1人;主检飞手1人",
|
||||||
|
# "SHEBEI_PEIZHI": "1、大疆无人机1台(M350rtk,M300rtk,M30T,M30,精灵4PRO)2、大疆精灵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人"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# },
|
||||||
}
|
}
|
||||||
asyncio.run(generate_report(json_data1,json_data2))
|
asyncio.run(generate_report(json_data1,json_data2))
|
||||||
print('文档生成完毕')
|
print('文档生成完毕')
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -47,18 +47,19 @@ def get_part_list(turbineId : str) -> dict:
|
||||||
"turbineId" : turbineId
|
"turbineId" : turbineId
|
||||||
}
|
}
|
||||||
result = get_data(parturl, params = params)
|
result = get_data(parturl, params = params)
|
||||||
result = [item["partId"] for item in result]
|
|
||||||
print(f"获取到部件{result}")
|
print(f"获取到部件{result}")
|
||||||
return result
|
return result, [item["partId"] for item in result]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_picture(turbineId : str) -> list[dict]:
|
def get_part_picture(turbineId : str) -> tuple[list[dict], list[dict]]:
|
||||||
"""获取对应机组所有图片
|
"""获取对应机组所有图片
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
turbineId (str): 机组ID
|
turbineId (str): 机组ID
|
||||||
Return:
|
Return:
|
||||||
|
list: 包含所有对应机组的部件信息的列表
|
||||||
|
|
||||||
list: 包含所有图片信息的列表(按部件分list)
|
list: 包含所有图片信息的列表(按部件分list)
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -90,7 +91,7 @@ def get_picture(turbineId : str) -> list[dict]:
|
||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
picturerul = DTURL + GETPICTURELIST
|
picturerul = DTURL + GETPICTURELIST
|
||||||
part_list = get_part_list(turbineId)
|
part_data, part_list = get_part_list(turbineId)
|
||||||
result = []
|
result = []
|
||||||
for part_id in part_list:
|
for part_id in part_list:
|
||||||
params = {
|
params = {
|
||||||
|
@ -99,7 +100,7 @@ def get_picture(turbineId : str) -> list[dict]:
|
||||||
for images in get_data(picturerul, params = params):
|
for images in get_data(picturerul, params = params):
|
||||||
result.append(images)
|
result.append(images)
|
||||||
print(f"图片数据获取成功:{result}")
|
print(f"图片数据获取成功:{result}")
|
||||||
return result
|
return part_data, result
|
||||||
|
|
||||||
def find_defect_record(defect_pictures : list[dict]):
|
def find_defect_record(defect_pictures : list[dict]):
|
||||||
"""查找缺陷图片的缺陷记录
|
"""查找缺陷图片的缺陷记录
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,106 @@
|
||||||
|
from tools.content_tools import add_picture_to_table
|
||||||
|
from tools.document_tools import add_table_to_document,search_and_replace
|
||||||
|
from tools.get_pictures import resize_and_reduce_quality
|
||||||
|
|
||||||
|
def caculate_work_days(start_date : str, end_date : str) -> str:
|
||||||
|
"""根据起止日期计算工期
|
||||||
|
|
||||||
|
Args:
|
||||||
|
start_date (str): 格式: yyyy-mm-ddThh:mm:ss
|
||||||
|
end_date (str): 格式: yyyy-mm-ddThh:mm:ss
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 计算出来的总工期,单位为天
|
||||||
|
"""
|
||||||
|
import datetime
|
||||||
|
if start_date == None or end_date == None:
|
||||||
|
return f"开始时间{start_date} ---- 结束时间{end_date} 日期格式错误"
|
||||||
|
|
||||||
|
start_date = datetime.datetime.strptime(start_date, '%Y-%m-%dT%H:%M:%S')
|
||||||
|
end_date = datetime.datetime.strptime(end_date, '%Y-%m-%dT%H:%M:%S')
|
||||||
|
|
||||||
|
return (end_date - start_date).days
|
||||||
|
|
||||||
|
async def add_dynamic_table(output_doc, output_dir, table_num, TABLES, JIANCHA_XIANGQING_DIR, PICTURES, row, col, i, FLAG, xuhao):
|
||||||
|
"""创建动态表
|
||||||
|
|
||||||
|
Args:
|
||||||
|
output_doc (Document): 文档对象
|
||||||
|
output_dir (str): 输出目录
|
||||||
|
table_num (int): 表格序号
|
||||||
|
TABLES (list): 表格数据
|
||||||
|
JIANCHA_XIANGQING_DIR (str): 检查详情表目录
|
||||||
|
PICTURES (dict): 图片数据字典,键为表索引,值为图片路径列表
|
||||||
|
row (int): 行数
|
||||||
|
col (int): 列数
|
||||||
|
i (int): 表格序号
|
||||||
|
FLAG: 其他标志
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
tuple: (i, table_num) 更新后的表格序号和表格数量
|
||||||
|
"""
|
||||||
|
for table_idx, Table in enumerate(TABLES):
|
||||||
|
print(Table)
|
||||||
|
output_doc, message = await add_table_to_document(output_dir, JIANCHA_XIANGQING_DIR, row, col, i, Table, FLAG)
|
||||||
|
print(message)
|
||||||
|
|
||||||
|
# 获取当前表格对应的图片
|
||||||
|
current_table_pictures = PICTURES.get(table_idx, [])
|
||||||
|
print(f"开始处理图片列表: {current_table_pictures}")
|
||||||
|
|
||||||
|
for picturedir in current_table_pictures:
|
||||||
|
try:
|
||||||
|
print(f"添加 {picturedir} {type(picturedir)}到表格{table_idx}")
|
||||||
|
resize_and_reduce_quality(picturedir, picturedir)
|
||||||
|
await add_picture_to_table(output_doc, output_dir, 4, 0, picturedir, i, 4.7232)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"添加图片失败:{e}")
|
||||||
|
|
||||||
|
print(await search_and_replace(output_dir, 'tupian_xuhao', f'{xuhao}'))
|
||||||
|
table_num += 1
|
||||||
|
i += 1
|
||||||
|
xuhao += 1
|
||||||
|
return i, table_num, xuhao
|
||||||
|
|
||||||
|
def get_year_month(date):
|
||||||
|
"""根据格式化date字符串获取年月 'date': '二〇二一年十二月十日 9:00'
|
||||||
|
|
||||||
|
Args: date (str): 日期字符串
|
||||||
|
|
||||||
|
Returns: 年月字符串 '二〇二一年十二月'
|
||||||
|
"""
|
||||||
|
unit_map = {'1' : '一', '2' : '二', '3' : '三', '4' : '四', '5' : '五', '6' : '六', '7' : '七', '8' : '八', '9' : '九', '0' : '〇'}
|
||||||
|
unit_map_month = {1 : '一', 2 : '二', 3 : '三', 4 : '四', 5 : '五', 6 : '六', 7 : '七', 8 : '八', 9 : '九', 10 : '十', 11 : '十一', 12 : '十二'}
|
||||||
|
year = date.split('年')[0]
|
||||||
|
month = date.split('年')[1].split('月')[0]
|
||||||
|
year = ''.join([unit_map[i] for i in year])
|
||||||
|
month = unit_map_month[int(month)]
|
||||||
|
return f"{year}年{month}月"
|
||||||
|
|
||||||
|
def merge_info(frontend_info, default_info):
|
||||||
|
"""
|
||||||
|
合并前端传入的 info 和默认 info
|
||||||
|
规则:如果前端传入的值为空(None 或空字符串),则使用默认值
|
||||||
|
|
||||||
|
Args:
|
||||||
|
frontend_info: 前端传入的字典
|
||||||
|
default_info: 默认的完整字典
|
||||||
|
Returns:
|
||||||
|
合并后的完整字典
|
||||||
|
"""
|
||||||
|
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
|
||||||
|
|
||||||
|
return merged_info
|
|
@ -26,30 +26,49 @@ DEFAULT_BAOGAO_INFO = {
|
||||||
"if_waibu" : True,
|
"if_waibu" : True,
|
||||||
"if_neibu" : True,
|
"if_neibu" : True,
|
||||||
"if_fanglei" : True,
|
"if_fanglei" : True,
|
||||||
|
"userName" : "admin",
|
||||||
|
"baogaoCheck" : "未审核",
|
||||||
'key_words': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化
|
'key_words': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化
|
||||||
|
|
||||||
#检查方案
|
"shigong_fangan" : "None",
|
||||||
'beizhu': '无',
|
|
||||||
'renyuan_peizhi': '''2人;主检飞手1人,副检抄表1人
|
|
||||||
3人,轮毂机舱作业1人,揽风绳作业1人,无人设备操作员及抄表1人
|
|
||||||
1人;抄表人员1人,检测人员1人,监护1人。
|
|
||||||
1人;主检飞手1人
|
|
||||||
2人;轮毂作业检查2人''',
|
|
||||||
'gongzuo_neirong': '''无人机叶片防雷导通测
|
|
||||||
无人吊篮叶片导通测试(含机舱设备、)
|
|
||||||
风机基础、办公楼、变电站防雷接地检测及浪涌保护器测试
|
|
||||||
无人机叶片外观巡检
|
|
||||||
叶片内部检查''',
|
|
||||||
'shigong_fangan': '无',
|
|
||||||
'shebei_peizhi': '''1四轴电阻无人机1套,电子微欧计1台,视频记录手机1台
|
|
||||||
无人吊篮系统1套(爬绳器+接触平台)、电子微欧计1套,视频记录手机1台,对讲机2台
|
|
||||||
接地电阻测试仪1套、SPD测试仪1套、对讲机2个、
|
|
||||||
1、大疆无人机1台(M350rtk,M300rtk,M30T,M30,精灵4PRO)2、大疆精灵4PRO+索尼A7R2机身+索尼200-600mm镜头/适马150-600mm镜头
|
|
||||||
1、人工检查:照明设备2套,视频记录手机2台,含氧量监测仪1台,电动扳手2套,卷尺1个。2、爬壁机器人检查:无人作业校车+视频图传1套,照明设备2套,含氧量监测仪1台,电动扳手2套,卷尺1个。''',
|
|
||||||
'jiancha_renyuan': '张三',
|
'jiancha_renyuan': '张三',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class JIANCHA_ENUM :
|
||||||
|
class WAIBU:
|
||||||
|
PART = "无人机外部高精度飞行"
|
||||||
|
#NEIRONG =
|
||||||
|
|
||||||
|
class SHIGONG_FANGAN_ENUM :
|
||||||
|
class WAIBU:
|
||||||
|
GONGZUO_NEIRONG = "无人机叶片外观巡检"
|
||||||
|
RENYUAN_PEIZHI = "1人;主检飞手1人"
|
||||||
|
SHEBEI_PEIZHI = "1、大疆无人机1台(M350rtk,M300rtk,M30T,M30,精灵4PRO)2、大疆精灵4PRO+索尼A7R2机身+索尼200-600mm镜头/适马150-600mm镜头"
|
||||||
|
SHIGONG_FANGAN = ""
|
||||||
|
class NEIBU:
|
||||||
|
GONGZUO_NEIRONG = "叶片内部检查"
|
||||||
|
RENYUAN_PEIZHI = "2人;轮毂作业检查2人"
|
||||||
|
SHEBEI_PEIZHI = "1、人工检查:照明设备2套,视频记录手机2台,含氧量监测仪1台,电动扳手2套,卷尺1个。2、爬壁机器人检查:无人作业校车+视频图传1套,照明设备2套,含氧量监测仪1台,电动扳手2套,卷尺1个。"
|
||||||
|
SHIGONG_FANGAN = ""
|
||||||
|
class FANGLEI:
|
||||||
|
class YEPIAN:
|
||||||
|
GONGZUO_NEIRONG = "无人机叶片防雷导通测试"
|
||||||
|
RENYUAN_PEIZHI = "2人;主检飞手1人,副检抄表1人"
|
||||||
|
SHEBEI_PEIZHI = "1四轴电阻无人机1套,电子微欧计1台,视频记录手机1台"
|
||||||
|
SHIGONG_FANGAN = ""
|
||||||
|
class DIAOLAN:
|
||||||
|
GONGZUO_NEIRONG = "无人吊篮叶片导通测试(含机舱设备、)"
|
||||||
|
RENYUAN_PEIZHI = "3人,轮毂机舱作业1人,揽风绳作业1人,无人设备操作员及抄表1人"
|
||||||
|
SHEBEI_PEIZHI = "无人吊篮系统1套(爬绳器+接触平台)、电子微欧计1套,视频记录手机1台,对讲机2台"
|
||||||
|
SHIGONG_FANGAN = ""
|
||||||
|
class SHESHI:
|
||||||
|
GONGZUO_NEIRONG = "风机基础、办公楼、变电站防雷接地检测及浪涌保护器测试"
|
||||||
|
RENYUAN_PEIZHI = "1人;抄表人员1人,检测人员1人,监护1人。"
|
||||||
|
SHEBEI_PEIZHI = "接地电阻测试仪1套、SPD测试仪1套、对讲机2个、"
|
||||||
|
SHIGONG_FANGAN = ""
|
||||||
|
FEISHOURENYUAN_PEIZHI = "1人;主检飞手1人"
|
||||||
|
LUNGUZUOYERENYUAN_PEIZHI = "2人;轮毂作业检查2人"
|
||||||
|
|
||||||
DEFAULT_BASE_INFO = { #项目基本信息
|
DEFAULT_BASE_INFO = { #项目基本信息
|
||||||
#项目概况
|
#项目概况
|
||||||
'jituan_jianxie': '甲方集团',
|
'jituan_jianxie': '甲方集团',
|
||||||
|
@ -83,15 +102,15 @@ oneproject = {
|
||||||
"auditorId": "ca37c4337df8673a5c045b6c25acf74a",
|
"auditorId": "ca37c4337df8673a5c045b6c25acf74a",
|
||||||
"qualityOfficerId": "862e027910c2562d2b67d88ec33d77ba",
|
"qualityOfficerId": "862e027910c2562d2b67d88ec33d77ba",
|
||||||
"projectManagerId": "fbaa9e0aecf2ce287138c38a4b654085",
|
"projectManagerId": "fbaa9e0aecf2ce287138c38a4b654085",
|
||||||
"constructionTeamLeaderId": None,
|
"constructionTeamLeaderId": "",
|
||||||
"status": 0,
|
"status": 0,
|
||||||
"startDate": None,
|
"startDate": "",
|
||||||
"endDate": None,
|
"endDate": "",
|
||||||
"constructorName": None,
|
"constructorName": "",
|
||||||
"auditorName": "李四",
|
"auditorName": "李四",
|
||||||
"qualityOfficerName": "辛奇",
|
"qualityOfficerName": "辛奇",
|
||||||
"projectManagerName": "张三",
|
"projectManagerName": "张三",
|
||||||
"constructionTeamLeaderName": None,
|
"constructionTeamLeaderName": "",
|
||||||
"statusLabel": "待施工"
|
"statusLabel": "待施工"
|
||||||
},
|
},
|
||||||
"msg": "",
|
"msg": "",
|
||||||
|
@ -147,4 +166,3 @@ yepian = {
|
||||||
"code": 200,
|
"code": 200,
|
||||||
"success": True
|
"success": True
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,8 +246,8 @@ def process_picture_data(picture_data : list[dict],
|
||||||
dianxing_type (str): 典型类型枚举值
|
dianxing_type (str): 典型类型枚举值
|
||||||
Returns:
|
Returns:
|
||||||
tuple(
|
tuple(
|
||||||
defct_pictures, 缺陷图列表
|
defct_pictures, 缺陷图列表
|
||||||
dianxing_pictures 典型图列表
|
dianxing_pictures 典型图列表
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
#过滤目标来源的图片数据
|
#过滤目标来源的图片数据
|
||||||
|
|
Loading…
Reference in New Issue