DEFAULT_BASE_INFO = { #项目基本信息 "turbine_id" : None, } DEFAULT_BAOGAO_INFO = { #目录 'shengcheng_dir': "", #报告生成的路径 "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': '缺,损,裂,脱,污', #关键字,用于汇总图的名字包含缺陷时标红,匹配逻辑为正则匹配单个字则为红 后续可优化 "shigong_fangan" : None, 'jiancha_renyuan': '张三', "check_date" : None, } 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人" from docx.oxml.ns import qn from docx.shared import Pt class TEMPLATE_HEADER: class JINFENG_HEADER: ENUM = 'JF' PIC_DIR = './muban/jf_header.png' PARA =' Q/GW 3LC-FJFW21-2022-BY14' QN = qn('w:eastAsia') FONT = 'Arial' PT = Pt(9) class FANGLEI: TYPICAL_LIST = [ "防雷导通测试\n叶尖至塔基测试阻值({Resistance} mΩ)", "防雷导通测试\n叶尖与无人吊篮平台接触良好", "防雷导通测试\n叶尖至塔基检测导线线组值" ] class WAIBU: TYPICAL_LIST = [ "外观检查(迎、背风面是否有漆面脱落、裂纹等)", "外观检查(前、后缘;如前缘漆面脱落、合模缝开裂等)", "叶片防雨环检查", "叶尖接闪器、排水孔检查,如接闪器损伤、雷击熔融;流水孔堵塞", ] class NEIBU: TYPICAL_LIST = [ "叶片铭牌", "根部检查(挡板、盖板检查是否损坏、金属件是否丢失等)", "避雷系统检查(避雷线是否断裂、雷电记录卡是否缺失等)", "前后缘检查(前缘粘接及补强是否有开裂、裂纹)", "上下蒙皮检查(蒙皮是否有褶皱、发白、折痕、分层、裂纹等)", "腹板检查(腹板是否变形、偏移,腹板粘接是否开裂、裂纹等)", ] class DT_HEADER: ENUM = 'DT' PIC_DIR = './muban/dt_header.png' PARA = '' QN = qn('w:eastAsia') FONT = '宋体(中文正文)' PT = Pt(9) MUBAN_DIR = 'muban' JF_HEIGHT = 297 JF_WIDTH = 210 JF_L_MARGIN = 20 JF_R_MARGIN = 20 JF_T_MARGIN = 10 JF_B_MARGIN = 10 JINFENG_COMPANY = "金风科技股份有限公司" #json表格样式宏定义 STYLE_CONFIG = { "alignment": "center", "font": { "name": "宋体", "size": 8, "bold": False, }, "border": { "top": {"style": "single", "size": "4", "color": "000000"}, "bottom": {"style": "single", "size": "4", "color": "000000"}, "left": {"style": "single", "size": "4", "color": "000000"}, "right": {"style": "single", "size": "4", "color": "000000"} }, "shading": { "color": "FFFFFF" } } TITLE_STYLE_CONFIG = { "alignment": "center", "font": { "name": "宋体", "size": 9, "bold": False, }, "border": { "top": {"style": "single", "size": "4", "color": "000000"}, "bottom": {"style": "single", "size": "4", "color": "000000"}, "left": {"style": "single", "size": "4", "color": "000000"}, "right": {"style": "single", "size": "4", "color": "000000"} }, "shading": { "color": "FFFFFF" } } DEFECT_TABLE_TITLE = '叶片故障信息表' DEFECT_TABLE = ['机组号', '叶片编号', '损伤名称', '损坏描述', '面积/S', '备注'] USE_TOOL_TABLE_TITLE = '使用工器具记录' USE_TOOL_TABLE = ['序号', '工器具名称', '型号规格', '数量', '用途', '备注'] class USE_TOOL_ENUM: class OUT: LIST = [ ["无人机", "大疆 M30", "1", "叶片外观检查观测"] ] class LIGHT: LIST = [ ["智能无人悬吊系统", "DT01", "1", "叶片导通测试"], ["检测导线", "/", "3", "叶片导通测试"], ["电阻仪", "S1950", "1", "叶片导通测试"] ] class IN: LIST = [ ["头灯", "/", "2", "轮毂叶片内照明"], ["含氧量检测仪", "/", "1", "叶片内部环境检测"], ["活动扳手", "17-19", "2", "拆卸·禁锢盖板螺栓"], ["手机", "/", "2", "拍照记录"], ["叶片内部爬壁机器人", "DT02", "1", "拍照记录"] ] from enum import Enum from docx.shared import RGBColor class DocxColors(Enum): """常用颜色枚举""" BLACK = RGBColor(0, 0, 0) WHITE = RGBColor(255, 255, 255) RED = RGBColor(255, 0, 0) GREEN = RGBColor(0, 255, 0) BLUE = RGBColor(0, 0, 255) YELLOW = RGBColor(255, 255, 0) PURPLE = RGBColor(128, 0, 128) ORANGE = RGBColor(255, 165, 0) GRAY = RGBColor(128, 128, 128) DARK_RED = RGBColor(139, 0, 0) DARK_GREEN = RGBColor(0, 100, 0) DARK_BLUE = RGBColor(0, 0, 139) LIGHT_BLUE = RGBColor(173, 216, 230) PINK = RGBColor(255, 192, 203) BROWN = RGBColor(165, 42, 42) # 微软Office常用颜色 MS_BLUE = RGBColor(46, 116, 181) MS_ORANGE = RGBColor(247, 150, 70) MS_GREEN = RGBColor(80, 175, 74) MS_RED = RGBColor(217, 83, 79) MS_GRAY = RGBColor(166, 166, 166) # 获取颜色值 @property def rgb(self): return self.value HEADING_1_CONFIG = { "alignment": "left", "font" : { "name" : "宋体", "size" : Pt(11), "bold" : True, "color" : DocxColors.BLACK.rgb }, } HEADING_2_CONFIG = { "alignment": "left", "font" : { "name" : "宋体", "size" : Pt(10), "bold" : True, "color" : DocxColors.BLACK.rgb }, } HEADING_3_CONFIG = { "alignment": "left", "font" : { "name" : "宋体", "size" : Pt(9), "bold" : True, "color" : DocxColors.BLACK.rgb }, }