From 6a43b0b79f2dada8a16d448d7a75b22a34690aa9 Mon Sep 17 00:00:00 2001 From: yinzijian Date: Wed, 10 Jun 2026 18:27:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=AF=94=E6=8A=A5=E5=91=8A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A04.2=E9=85=8D=E6=97=B6=E6=96=B9=E6=A1=88=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yinzijian --- tool/compare_report.docx | Bin 22073 -> 35002 bytes tool/compare_report.py | 60 +++++++++++++++++++++++++++++++++++---- tool/screen.py | 2 +- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/tool/compare_report.docx b/tool/compare_report.docx index 5dd8ccc886dea158828b3087649be0a63e32b20b..9696a0a9b5f1f27495779d0f791f064be49cff1c 100644 GIT binary patch delta 24711 zcmagDV{{;0&@h-}g2}|TZ6_1kwr$(!*tU&HCbl!NZF6GV*?Hb?cfZ~Jv*&c*Q&oLV z)vdZ+y46+*+MWOw&j$W8XIm$uXMD|YDRo{ax-%1es!B}yBJ-@ z*YI((br3TSNxWl>Nn#WjRi!&{#P3!;v%rR2V$y6-lgtjoXxt6l+U^~qj2VJ%42X+& z!)Kp5!6HiKSYg6>Yr4-0V#agU%Op_@3)*Q_dS57TA(c)H+$j^*G{!s8HUK{y^}u?p-HjF<27 zv#bovgx|j9hTJbJ1Fu{!JpHkuCqqj1@Te+db6K>+Wan|7b-C_{H#j z_IIC1RlQQYpMPb3>&|hQR3l~CLXi~*B%o+CtTum4Wi#YnvajzvbY%M?9XX=QQ;62- zm&qqZgA$TNy_*Dg%z%$5yxO<2$@G9INPh!I1pxv14iYA}Cop)vR%w+q4T=wR$@Md$ zhPab%5#8plNCGOFlJOv}g~-T)gzV$pwj@Rr^|JHbU?ku6;54u>4R$R-dbQ(=Eh)j6 z^z!zv@ZYu^?5SAHLD!1gBIB=+4*d7pBo=9f%0^f4h=w&v!N;8-khB5>y>Bk%MqtLA z;fA>w1lCcbl@pQ+I>To+)&c<|n`c~77QMd;DL*HhOq!`5U@@Zg>#=tHAi@I#7e?wyaZ{cLf3cCeeHT;J#`1 zn}6iP<)MO+osjloes}4ATdvd@u90uCM_8U3-j}{Oi#^LQnOKoz>$d!11fccsZ~Ja- zggv*+K_pkbeFY1r!RqFbeuhKxt`XRhZGh~x_k@aST`BQcWV)Fuf9Rw?!~DNbKpmQp zfC?0(!Sb6MC^Xo_dxtp!2*^s(F*plwKGI=6B@-9Q4v>=$8^7Qh)QvC+AcJ#~a{hbU zz(JA0J+pM}AL*2IH)YvZO_FpQT~@M5oisjN)l~uA#raCl>(LI%`>lFbn8arj*6s$5 zTMZt0bU`0iW-r$lo1?9faVLJgXG7$Mq*=Ccu{@sl&nJAFxQ2HwlME=h0btdUl^?6> z*2lNABWqHf_O^k0G;{EJmsyg8KWzNoisN>kBkN&`Ct}GDeVSYO;jtGjQ9kj7+{iIDyn_m+06{XlD$uo5E9zHO zFQR%yLQAt?XN=IpMl-?+J0OX1#+uPU`z=eP;MnH?%5iq$`H#gfg$+D~jcUwKdix&( z!`{z%OK~^3Rl`abI$DBe1pzAtwuXZZ2C1**j4VI>m#$ph+DC6mz4ng$X1Clrx*BxN z-4E-|o6VYTKIwf_e#CTI_`UB@%P9fqfzEcrP(@)o8Br#m!E_(8>45n=bC<;5lFmN< z>BOJYofma^lR-PkI_TKpU>0XDML%K0u16!k=AWVO8r~JrpI^h||MJpvPCHfg4)+pc zUhw(UM(HX7P4rb!@R4O!A5i=dH93(dkTDclKl!m_FZ*;t>gxZ>=k20$W0m97?5Wlo z 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 Z2xgWYJfp!2^P3%vrb&m88~D1x{{#NINkaet delta 11680 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 diff --git a/tool/compare_report.py b/tool/compare_report.py index ac7615e..e9b312e 100644 --- a/tool/compare_report.py +++ b/tool/compare_report.py @@ -348,9 +348,8 @@ class DocDocumentContrastCtx: case 'part4': if self.tpl_paragraph[part_key]['visible'] == 0: continue - i += 1 table_sort = 0 - table_sort += 1 + i += 1 table_data = [] context[part_key] = table_data context['part4_key'] = str(i) @@ -365,9 +364,36 @@ class DocDocumentContrastCtx: if self.tpl_paragraph[part_key]['part4_2'] == 1: item_data = { 'part_name': self.tpl_paragraph_map['part4_2'], - 'part_n': 'part4_1', - 'data': [], + 'part_n': 'part4_2', + 'table_1': [], + 'table_1_sort': 1, + 'table_2': [], + 'max': 0 } + #优化前 + for item_table_value in self.tpl_data['part4_2'].table1: + item_table_data = { + 'title': item_table_value.item1, + 'cycle': item_table_value.item2, + 'stage': item_table_value.table1, + 'stage_time': item_table_value.table2, + } + max_len = len(item_table_value.table1) + if max_len > item_data['max']: + item_data['max'] = max_len + item_data['table_1'].append(item_table_data) + #优化后 + for item_table_value in self.tpl_data['part4_2'].table2: + item_table_data = { + 'title': item_table_value.item1, + 'cycle': item_table_value.item2, + 'stage': item_table_value.table1, + 'stage_time': item_table_value.table2, + } + max_len = len(item_table_value.table1) + if max_len > item_data['max']: + item_data['max'] = max_len + item_data['table_2'].append(item_table_data) table_data.append(item_data) case 'part5': if self.tpl_paragraph[part_key]['visible'] == 0: @@ -428,6 +454,7 @@ class DocDocumentContrastCtx: # set_font(para, para.text, '仿宋_GB2312', 30,font_color=(255, 0, 0), bg_color='FFFF00') # for para in self.doc.paragraphs: # set_font(para, para.text, '仿宋', 14) + # print(context['part4']) # self.doc.save(self.get_static_file_path() + f"/{file_name}.docx") # return f"/api/phase_template_download?nodeid={self.nodeid}&type=report&file_name={file_name}" @@ -471,7 +498,7 @@ def doc_demo_contrast(): doc1.tpl_paragraph['part5']['visible'] = 1 doc1.title = '清盛大道与龙江路交叉口' #自动截图 - doc1.cut_image = 1 #开启 + doc1.cut_image = 0 #开启 doc1.area_id = 530101 doc1.crossid = "CR_10264777_2509810" doc1.cross_name = "玉峰路与陈家营路交叉口" @@ -561,7 +588,28 @@ def doc_demo_contrast(): doc1.tpl_data['part3_1'].table = [detail1, detail2] #==========4优化方案============= - + item_table1 = PartDetail() + item_table1.item1 = '06:30-07:30' + item_table1.item2 = '46' + item_table1.table1 = ['西直左', '西直行', '北直行', '东直行', '南北直行'] + item_table1.table2 = ['30', '20', '11', '12', '13', '24', '3','4','5','6','7','8','16','17','18'] + item_table2 = PartDetail() + item_table2.item1 = '07:30-09:30' + item_table2.item2 = '38' + item_table2.table1 = ['西直左', '西直行', '北直行', '东直行'] + item_table2.table2 = ['30', '20', '11', '12', '13', '24', '3','4','5','6','7','9'] + item_table3 = PartDetail() + item_table3.item1 = '06:30-07:30' + item_table3.item2 = '129' + item_table3.table1 = ['西直左', '西直行', '北直行', '东直行'] + item_table3.table2 = ['3', '4', '5', '6', '7', '8', '9','10','11','12','13','14'] + item_table4 = PartDetail() + item_table4.item1 = '07:30-09:30' + item_table4.item2 = '138' + item_table4.table1 = ['西直左', '西直行', '北直行', '东直行'] + item_table4.table2 = ['1', '2', '3', '4', '5', '6', '7','8','9','10','11','12'] + doc1.tpl_data['part4_2'].table1 = [item_table1, item_table2] #优化前 + doc1.tpl_data['part4_2'].table2 = [item_table3, item_table4] #优化后 #==========5优化后效果对比========== detail5_1_1 = PartDetail() detail5_1_1.detail = '路口服务水平由?级提升为?级,提升?个等级;' diff --git a/tool/screen.py b/tool/screen.py index cf49129..10ce31a 100644 --- a/tool/screen.py +++ b/tool/screen.py @@ -985,7 +985,7 @@ if __name__ == '__main__': attrs = [] attrs.append(CutReportImgColumn( crossid='CR_10264777_2509810', - cross_name='玉峰路与陈家营路交叉口', + cross_name='104国道与178县道交叉口', time_list=[['2026-05-01', '2026-05-04'],['2026-05-06', '2026-05-09']], tp_name='02:00-03:00', walk=1,