From 614c277daeba917b02056dc799e62e651ee4f3f7 Mon Sep 17 00:00:00 2001 From: Voge1imkafig <2390349500@qq.com> Date: Mon, 7 Jul 2025 18:05:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E4=BB=B6=E3=80=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=88=97=E8=A1=A8=E6=8B=89=E5=8F=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Generate_Report.py | 56 +++++++++----- tools/API.py | 4 +- tools/Get_Json.py | 81 +++++++++++++++++++-- tools/__pycache__/API.cpython-313.pyc | Bin 331 -> 457 bytes tools/__pycache__/Get_Json.cpython-313.pyc | Bin 3044 -> 3684 bytes tools/__pycache__/defines.cpython-313.pyc | Bin 6314 -> 4911 bytes tools/defines.py | 46 +++--------- 7 files changed, 126 insertions(+), 61 deletions(-) diff --git a/Generate_Report.py b/Generate_Report.py index 6bb666f..561fb8d 100644 --- a/Generate_Report.py +++ b/Generate_Report.py @@ -15,7 +15,10 @@ from tools.get_pictures import ( get_picture_nums,find_image,collect_defect_data ) -from tools.Get_Json import get_project_info,get_jizu_info,get_jizu_shigong_info,get_weather +from tools.Get_Json import (get_project_info,get_jizu_info, + get_jizu_shigong_info,get_weather, + get_picture) + import asyncio @@ -121,11 +124,11 @@ 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(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(base_info['turbine_id']) - print(shigong_data) + shigong_data = get_jizu_shigong_info(turbine_id) try: fengchang_name = project_data['farmName'] Yi_company = project_data['inspectionUnit'] @@ -140,30 +143,49 @@ async def generate_report(base_info, baogao_info): except Exception as e: print(f"数据库的项目-机组基本信息获取失败:{e}") return - + try: baogao_date = datetime.datetime.now().strftime("%Y年%m月%d日 %H:%M") #现在的时间 - #数据库拉取信息 - 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"]) #天气 #前端信息 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'] + if muban_dir == "" or shengcheng_dir == "": + print("未配置模板/生成路径,请检查配置") + return + if_waibu = baogao_info["if_waibu"] + if_neibu = baogao_info["if_neibu"] + 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'] + + dianxing_type = baogao_info['dianxing_enum'] + + + #数据库拉取信息 + 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"]) #天气 + picture_data = get_picture(turbine_id) + + + date_year_month = get_year_month(baogao_date) + project_number = baogao_info['jizu_type'] baogao_type = baogao_info['baogao_type'] - if muban_dir == "" or shengcheng_dir == "": - print("未配置图片/生成路径/总图片路径,请检查配置") - return - - date_year_month = get_year_month(baogao_date) - Jiancha_renyuan = baogao_info['jiancha_renyuan'] shebei_peizhi = baogao_info['shebei_peizhi'] shigong_fangan = baogao_info['shigong_fangan'] diff --git a/tools/API.py b/tools/API.py index e56987e..7e4a6f3 100644 --- a/tools/API.py +++ b/tools/API.py @@ -2,4 +2,6 @@ DTURL = "http://pms.dtyx.net:9158" GETPROJECTINFO = "/project/detail/{projectId}" GETJIZUINFO = "/turbine/detail/{turbineId}" GETSHIGONGINFO = "/t-construction/list" -GETWEATHERINFO = "/weather-type/{weatherCode}" \ No newline at end of file +GETWEATHERINFO = "/weather-type/{weatherCode}" +GETPICTURELIST = "/image/list" +GETPARTLIST = "/part/list" \ No newline at end of file diff --git a/tools/Get_Json.py b/tools/Get_Json.py index cdbcdd5..594e888 100644 --- a/tools/Get_Json.py +++ b/tools/Get_Json.py @@ -2,7 +2,7 @@ import requests import json from tools.API import * -def get_data(url, data_type="data", params=None): +def get_data(url : str, data_type : str = "data", params : dict = None ) -> dict: headers = { "content_type": "application/x-www-form-urlencoded" } @@ -11,7 +11,7 @@ def get_data(url, data_type="data", params=None): if response.status_code == 200: data = json.loads(response.text) print(f"获取到数据:{data}") - return data.get(data_type) + return data[data_type] else: print(f"请求数据失败,状态码:{response.status_code}") return None @@ -19,15 +19,15 @@ def get_data(url, data_type="data", params=None): print(f"请求数据失败,异常:{e}") return None -def get_project_info(projectId): +def get_project_info(projectId : str) -> dict: projecturl = DTURL + GETPROJECTINFO.format(projectId=projectId) return get_data(projecturl, "data") -def get_jizu_info(turbineId): +def get_jizu_info(turbineId : str) -> dict: jizuurl = DTURL + GETJIZUINFO.format(turbineId=turbineId) return get_data(jizuurl, "data") -def get_jizu_shigong_info(turbineId): +def get_jizu_shigong_info(turbineId : str) -> dict: jizuurl = DTURL + GETSHIGONGINFO params = { "rows": { @@ -37,6 +37,73 @@ def get_jizu_shigong_info(turbineId): result = get_data(jizuurl, "rows", params) return result[0] if result else None -def get_weather(weatherid): +def get_weather(weatherid : str) -> dict: weatherurl = DTURL + GETWEATHERINFO.format(weatherCode=weatherid) - return get_data(weatherurl, "data") \ No newline at end of file + return get_data(weatherurl, "data") + +def get_part_list(turbineId : str) -> dict: + parturl = DTURL + GETPARTLIST + params = { + "turbineId" : turbineId + } + result = get_data(parturl, params = params) + result = [item["partId"] for item in result] + print(f"获取到部件{result}") + return result + + + +def get_picture(turbineId : str): + """获取对应机组所有图片 + + Args: + turbineId (str): 机组ID + Return: + list: 包含所有图片信息的列表(按部件分list) + [ + [ + { + "imageId": "字符串", + "imageName": "字符串", + "imagePath": "字符串", + "partId": "字符串", + "partName": "字符串", + "imageResolution": "字符串", + "focalDistance": "字符串/None", + "shootingTime": "字符串/None", + "cameraManufacturer": "字符串/None", + "cameraModel": "字符串/None", + "weather": "字符串/None", + "weatherLabel": "字符串/None", + "humidness": "数值/None", + "temperature": "字符串/None", + "windLevel": "数值/None", + "shootingMethod": "字符串/None", + "shootingMethodLabel": "字符串/None", + "shootingDistance": "数值/None", + "collectorName": "字符串/None", + "imageType": "None", + "imageTypeLabel": "None", + "audioList": "None", + "gps": "字符串/None" + }, + ... + ], + [ + { + // 相同结构的字典对象 + }, + ... + ] + ] + """ + picturerul = DTURL + GETPICTURELIST + part_list = get_part_list(turbineId) + result = [] + for part_id in part_list: + params = { + "partId" : part_id, + } + result.append(get_data(picturerul, params = params)) + return result + \ No newline at end of file diff --git a/tools/__pycache__/API.cpython-313.pyc b/tools/__pycache__/API.cpython-313.pyc index 6b62e376f332a0ab7135d1720b14e967fa92ad02..275947e3f56185b363d206ac25251986aa7d2867 100644 GIT binary patch delta 212 zcmX@jbds6xGcPX}0}#{}WoL*mPUMqNQvmX&G6XXeF$6OfF$OagF$FUhF$c30u>`Xg zu?Djhv8A(Xa!ho{vaFKUFHcP@$w)2IEvYO>)vt!~obyvsYpb~RGjkKuQ}uH)i%Y7w z^a~P;O2BMCP4}SZxx0phyE=w=xCVLpx%q?n0iMnwp+T-bp1~ovxPkHkjzJ+H n&cuiITs%N`F#>V1#$+un+a diff --git a/tools/__pycache__/Get_Json.cpython-313.pyc b/tools/__pycache__/Get_Json.cpython-313.pyc index 85385b1bdd87ad0fa60c55c5f0371610fe2b80e3..ab1f69d87254eb6721e0f770ad5979897fcc605e 100644 GIT binary patch literal 3684 zcmcguU2qfE6~3!ot^Q?f3E55x2*!Ywf^kD|umkBh{=)`rS8GwGcB@gPwJc+=l)EcT zcv8|yYSJ`uGogrtBCnylpFlB_TUPTvqT~icbHIva+HIA(_z!| zCO?t957 zl&p)X2#rjux=3X$O_eB*x}_!p#s3Fw9J@RxnOZr8-%Li!8YF0{3@d|erX->M}-fb#utdt6V(PTwq20y(ul1fb_q7f~TRQ8}cY|MKC7O)Mv4BapOvsU# zOjU~Jx&H-p={o4{y?u4%onNlZURphSY4zv7{qp+z>8;5A-PP60uNl0R-(0@;`%k{S z{?^?$udHTXy_2nO2DdHsr+(URy9@U$Jk7go)`{KBz`uy~wXV+}^va>et-I3FB8w3AVDj@*7&_U!ITV-Ot{z?p?0&{HJIJ!M|0s{u`aX z&NlL=O%2$$*&JpAV#GmLdxiY6!JsMa5gmaq+TjLWeI9E6{g z;E@)BG}X@S2Cl-5qOn;ELHzD3&1)h79x?)L1PR>;T|m&y-6Nsk5#8O_Gcp_;8tCa7 z=^yMJ(nW-4L}SJdnAi;6UOFy-R>c+lep(Mi-+-$|Y| zW@AgCv1Oq#-`J9G>?+iDWd@cVp1FaXxaioK7j`}XRifJFH06aR>W2xB2g8p*@^~;9E|S-2~rqWSaP9 z14?(4_U(eKxei5Wx9|6KjvVR<{tuA84fodVrJ0Xn$$>^I$!IHRqT9+ystTue7EV2d z+MY+k=?O@B1D1L+k`PDLC^}vznc7W=9uGMtsHQzcH64N!lk7I|Gi*8vHIsw*i2~36 zTJn*E5WoJ>4Dn4c*AJf}jFW(QkYVT|R{{{!C6Eo%HE_bpvv>a|^LIYI5)jtna=0@% za-?4xVIfKJjSQICI=TfH09zU_Q2->mkkI656$1hxS;8a>Rn!enB~*<*57J%msS(%xdZ@_VNhfkEV%Y$djA^Ov*>EQ=*xNM_P?cE^ksVUuGVG2HanE<&F;_J zn{Ei(mmIa3qyPGcnYh2hBI0A$i-PV=Oh@8!SWTvBR1Ry&@OVOr=}vfpPbDIXQJuMB zFg%rjK*3@yiqTYVST3=rAq#^i_)w_I09A$49w=BsW)C?830kp0X0U*ttsya3c`nKu zL6KIjg30ki=>4@4>nNl^^!2EttQ`{9q;WnVr2h<(k^^5~So!E@yY61UcK`gW81KUYlF}=>0njpRtM6RxPh=9OUlhPvKNms_RT%)?Hy|U#Cm=!p$huuuxiyYq@c_ zzYCtx9tKJTlP*HRCo8ckgxZX3xgY1ZW7mOt_EaJYx0h)e3iLHVGUPHahZ8XdW)pJ>Wyr%iQdfUrbD?%8B!&%}vWdkF&6)lsS52n(mgifumfKG6 z+zcSQ&OR#^MPjRY$92Z_-bD6v!S}*ntOvfb5$`6*x@PP36NYDBMZ+l@0ufd!=K1=TDpiSxTl6RlhwP6UDzffO5RfdyJX X7K8=qk2W^U2SWypPkxOecCG&cWdUn@ literal 3044 zcmeH}TTB#J7{|}-Tz1)6mdoPOl`3dSWm`cKsult@fUqtinjN>XU0O1-!$o0cduCR! zPuTcinqI7_iq@ptq$c&n(x$1j)dYDm>C0>+!HhgKX#stbNK6|0((ladu!~~jqYpjF zeCNzL-?`5Df4^DI&vzq8-*@&6{OCgHPx4|XN2ah`3x%^tKmxTFVJoLF1@Df%j-8GQ zB+%;-rUeEpBd}oEek#b_C*8Y(ltI1LOJ#;4nG+rwp57Gy9U6n9r^gxG3XAbq>3&0!10YNj6l8a=cto+UtV;OtybN z+Js^y_V`XDmcbdYPmSe{va9=*!>5wjX0|_*_fdVQi7rQdRFEg%B`<-MBT}yxjvJm{ zMb;!)>(P!Uq{o}YL}F;LSJVa-dE039$jC@_pMr<0lXysydzH8pzd{+#0ZEKYSiOG> zR+fY%p?jZQoB#aW{Hcli-~6)p)z!s|Cl}66EPQ(P!S#y<6Bjk{5jkYb%W`={x>-*1 z-~Mp#r^^qnf3o=T&kJKG7E>pn+oPABZlAyY(fs5jGzNKt-F+|`=`_5dwu1*E`#aiN z4~Dzi_Zu8pt*99;EParaR82MLen~TURTH(O+Cz3=Fh^8HHrOFWjH?EtNu!#9I@iR0OlIbYfN#xsp6ciPu@%5{hL z&GO}GzC2ZTn}2oAS9-qTOvCuV*TWZvZ~L~M+CAqf(o42YFy9^1i+9X;cHZ%oj&ol$ z>YnnyJVmEFQ-Kt(zurDIIva|mLovO*TQ7cZ#`8Y7{XNH*EF%X@=*mCs8GmPdufAp1 z6g8>p-qsn{?zsZrKT9k$KVBwVNj3XheCX!RGO*J=cgvgf^oF9AI(oW}h4TN=;f0J2 zS`r@~l%;SSlgo`s*v2HrViHJK3x46!uZzE(%oV&T3{3Qn^NArrHOS)v$P6Cj+7W&? zO0G5ixHC;Vomollya1aHxTE1 zA}-RwQdT9@k)ds6d3|3Vo%L6x{Z$k7y1z>IH>JHzW1(j&%bE7ozYxm8<*<#lwUc-z zSu^|uf)aiT0PQHMrJzg$OG(5rQ)Gpzb`3&=rBPa7>uH&ZGHcOR;7pqC0Gh6_HnPIi z+>xOF8kDt(2W%s^!c2nGq*^XbS%D^c5nLJ7WPS5Yrn=W&-D)mXW`t9`D>R~ zX^8v}nHowGf6L)NXqhCTc1^D=Gu@U12{DB|;n4oBkg3Aw6`<4H5`Kj&jF1p-A?67M zl1O2(u)>nyx)lkk1B3mF+;2%S2!2)YsK0{&$bl5)w72p}@wrf5!5vTOcn~;O>|UZ7 zFE`e{(J~zF}+XJI}hu{ zy)&NpGmzIdB~A&tH$3C&$RbZA-{C^@`j$d;^NljF(}nJq?ez5eqLx~Ex|W49L^AWp zNu)FK%s+yf<^y4q`27x1$#J44yqNuy5;4b3l XQ0YTQAyx9Q63lYtI;sS31&@CL>yW-l diff --git a/tools/__pycache__/defines.cpython-313.pyc b/tools/__pycache__/defines.cpython-313.pyc index 27a98fe044230d5516e19d0be78f01031f66c27d..3bbad019e10dff13f6dd1bf5ab734b4ca0169722 100644 GIT binary patch delta 968 zcmYk4OHUI~6vyvvXIff1eLp|}1qxcREhs7vA0QOvA)==$h*(=FWdclfXhUO6y3)8Z z6RU{{@e8o!8l4K`% ziO*J7NgjiL|Ld?CA7kn>8^SY9VDr;NEt zol9ewZb!8@q4L`tu4=*;q59HUFIaxOeer#3tMbPCL5PUzU}eGg)Y68(of@wE@(t0R zO2j|!t_3`u;Fzqu^8YPoP~vY%Ha?mNVP;C{ACp7{*3up_eHHv#hKZ<{g@|s=%dA}6 ziRjm4R?oGAh(2wWNnAUL=+Oq4i)%O6{mjF)7kjn?-OR_0pNKBa&jMTriCE?)#7zTV z(aRdSZo=KRJ)NwXn>Hd!&$FzZ>o5@mj0mAt*1>Izh(WXsK^Et>535?1^>aOdhs08F iLSTd3k5cT_N-ROqZ4)1xrXr+!#5Wg1^6fof_V0~e0ReXdH)N1RymD-1ocGZ^JHVt?Su^OB}rplLKS~Nik zp+O9I?yA}fn3Bq$VV)ILd3_E#VC}(62zBaDdI8(m%?&b0V|;tR>8~o zyaKD?RpnU&YYqDSyq$-2PzLK^18js%V1RNkLWLpIo(3iivl2F=uPv|@@iisDZLl5r z>+lBR4%msf%L%*jwFmYh?t?cG--7*!Rq!_A0cG1e3cd^Pq2_%!h+K*KN6MO_88?^RxWYw@4w!$ZH0zSnR_Izf@EI;_7nFh^1SInx> z&c(&LBEKX1thKhuVHeCNt@bz<*EiM+ zwz^sdiYD`nqsC%WXkJr8ljXGe1$+M?&1z@nDQmOC+;sk|(429ga+7h}EAd6AtQK2s zy~TXe(j+*FurEwTQw0f4RG4VLyTVAXjh1dV7>)7l8cRc+r9rWq7nm!@YTT3@_L8^W4F4%~88Ui0f>^ z3ra^m`cyrTk?!O-w-KdVF6F4iOn+j!mtMP`2#4_~Db^`X4Tv`*s)>4_V-xPD*YDDa zAL+HpL}ZwDKcE9X+T9~MZ*|hP7Rfb~h|JJ_PqN2HT7MuN(~bP4-QZ_8~NpT0?Xoh9ue2L0UaX*va?1#J+CP z<3_K+AIAXma(&Z68cTN0L`#n58r`L42K+ zXHYE#N5yD3*)zprad*=05OI%S#EI#!Gci4yyo4oS%g?iUFhgSZ#E74ad8qe05)7dW z42@l+3;jq)Xp*h^+@uxzxqI$jc`nnjM_4m*)5SVrYLt5X;_z*(oD}QBQ0e_qayh^< z4o#Aa;~0VHj7%hAW0-@8ozWelLv9Qr8TgUjzro7hbLaWa_Df>;7OQII|5lY<^8UO3 zQrFGf_g0|?rN&#F^F_wnM+06OcuZy<5`VjzExkWXrl;qcs`p#9A=P5BNXqo_oG&f5 zy3>Mnet_hrM%d|wT1%6)!4}U+X_#qay)~Y5UO0<$&WwZ3X{*E4xbD2rT<1Rt z#TL)S6=h*wvxp5u^I3aCt(GuU*qm-~bIJ^T*8 ztUr;fDwy^dgX8`aIe$9OAjN<0T%$If&f>IRHF-XhtVJegaN5Pb z8hHWZ3ps7BFJI1NJd4wo1oGu<#`UOwlD9_AVM0DLDv=8qFXXfZPYO56iPE#tI0w;(TPd<7mTbDH8+@=7MIh(pz)VenqO{xsnyTW=l5C7Vn%buKIQH^4XHo x*}`?RMeApa%4Q4K%9^yL2Y5N-1zeb3togl>ZGXZQ$ota9kLLZ%Yrewz{RJtHM1lYS diff --git a/tools/defines.py b/tools/defines.py index 9d1d3b0..ae59823 100644 --- a/tools/defines.py +++ b/tools/defines.py @@ -15,17 +15,20 @@ DEFAULT_BAOGAO_INFO = { #目录 - 'picture_dir': "", #图片存放地址 为了报告美观,希望总的汇总图片数量为3的倍数 'shengcheng_dir': "", #报告生成的路径 'muban_dir': "", #文档模板存放路径 - 'total_picture_dir': "", #用于生成略缩图的路径 + + "dianxing_enum" : "TYPICAL", + "quexian_enum" : "DEFECT", + "waibu_enum" : "out_work", + "neibu_enum" : "in_work", + "fanglei_enum" : "lightning-protection-work", + "if_waibu" : True, + "if_neibu" : True, + "if_fanglei" : True, 'key_words': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化 - #当前检查报告基本内容 - 'jizu_type': 'H3-08#', #检查的机组编号 - 'jiancha_date': '2021年12月10日 9.00', #检查叶片日期 注意空格分开 小时分钟间隔为. - 'baogao_date': '2021年12月10日 9.00', #生成报告时间 注意空格分开 - 'baogao_type': "风力发电机组叶片检查报告", #报告类型 + #检查方案 'beizhu': '无', 'renyuan_peizhi': '''2人;主检飞手1人,副检抄表1人 @@ -45,35 +48,6 @@ DEFAULT_BAOGAO_INFO = { 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': '张三', - #检查信息 - 'waibu_jiancha': 'True', #是否包含外部检查 - 'neibu_jiancha': 'True', #是否包含内部检查 - 'fanglei_jiancha': 'True', #是否包含防雷检查 #注:防雷检测占不存放缺陷图 - 'jiancha_location': '叶片外部外观', #检查内容文字 - 'jiancha_fangshi': '作业无人机近距离外观检查', #检查方式文字 - 'yepian_changjia': '株洲时代新材料科技股份有限公司', #叶片厂家信息 - #报告处理信息 - 'yezhu_renyuan': '李四', #业主(人员) - 'changjia_renyuan': '王五', #厂家(人员) - 'date_process': '生成报告人员', #数据处理人员 吴总希望获取前端用户执行生成人员为这个人 - 'baogao_bianzhi': '生成报告人员', #报告编制人员 吴总希望获取前端用户执行生成人员为这个人 - 'baogao_shenghe': '待填写(人员)', #报告审核人员 - 'shenghe_date': '待填写(日期)', #报告审核日期 - #检查情况汇总表(文字信息) 前端根据是否包含对应部分检查自行确定检查内容,这里默认全部包含 - 'Y1_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面 -2.叶片内部导雷卡、腹板、透光、人孔盖版、叶根盖板... -3.轮毂至塔基导通、内部导线线阻、外部导线线阻...''', - 'Y2_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面 -2.叶片内部导雷卡、腹板、透光、人孔盖版、叶根盖板... -3.轮毂至塔基导通、内部导线线阻、外部导线线阻...''', - 'Y3_jiancha_neirong': '''1.叶片前缘、后缘、PS面、SS面 -2.叶片内部导雷卡、腹板、透光、人孔盖版、叶根盖板... -3.轮毂至塔基导通、内部导线线阻、外部导线线阻...''', - #报告总结 - 'baogao_zongjie': '''1、因海上风电叶片运行环境恶劣、空气盐碱度高,叶片前缘合模缝区域及PS面(迎风面)涂层易受腐蚀,建议定期观察维护。 -2、经无人机近距离外观检查发现H3-08#机位Y200220AF叶片PS面距叶根20m处发现一处裂纹,损伤长度轴向3m,该缺陷经我方判定为严重缺陷,建议尽快结安排对该机组停机并结合其他检查手段(如人工打磨)进一步勘查并决定维修处置方案,防止风险进一步升级。 -3、经无人机近距离外观检查未发现H3-08#机位Y200249AF、Y200250AF叶片有明显影响机组正常运行的外部缺陷。 -''', #报告总结文字 } DEFAULT_BASE_INFO = { #项目基本信息