From d9a2724c011bfbb7d74032a6b225b920c0edad61 Mon Sep 17 00:00:00 2001 From: zhuibobo Date: Fri, 17 Jul 2026 07:38:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/数据权限控制/gen_tree.py | 64 ++++++++++++++++++ doc/数据权限控制/run.bat | 2 + doc/部署说明/img.png | Bin 0 -> 2926 bytes doc/部署说明/img_1.png | Bin 0 -> 794 bytes doc/部署说明/img_2.png | Bin 0 -> 794 bytes .../src/main/java/org/dromara/Main.java | 17 +++++ 6 files changed, 83 insertions(+) create mode 100644 doc/数据权限控制/gen_tree.py create mode 100644 doc/数据权限控制/run.bat create mode 100644 doc/部署说明/img.png create mode 100644 doc/部署说明/img_1.png create mode 100644 doc/部署说明/img_2.png create mode 100644 zdxt-modules/zdxt-enforcement-code-common/src/main/java/org/dromara/Main.java diff --git a/doc/数据权限控制/gen_tree.py b/doc/数据权限控制/gen_tree.py new file mode 100644 index 00000000..ad709e0a --- /dev/null +++ b/doc/数据权限控制/gen_tree.py @@ -0,0 +1,64 @@ +import csv +import io + +# Read file +with open(r'D:\EnforcementCodeProject\CodeV2\EnforcementCode-2.0\doc\数据权限控制\原始数据.csv', 'r', encoding='utf-8') as f: + content = f.read() + +# Parse paths from CSV, store vir_id and vir_zone for each path endpoint +path_info = {} # path -> (vir_id, vir_zone) +reader = csv.reader(io.StringIO(content)) +for row in reader: + if len(row) >= 8: + path = row[6].strip() + vir_id = row[0].strip() + vir_zone = row[4].strip() + if path and path.startswith('深圳市'): + path_info[path] = (vir_id, vir_zone) + +# Build tree - store children as ordered dict +tree = {} +for path in sorted(path_info.keys()): + parts = path.split('/') + node = tree + for part in parts: + if part not in node: + node[part] = {} + node = node[part] + +# Build a lookup: full_path -> (vir_id, vir_zone) for each node +# We need to map each node in the tree to its path to find info +node_info = {} # tuple of path parts -> (vir_id, vir_zone) +for path, info in path_info.items(): + parts = tuple(path.split('/')) + node_info[parts] = info + +# Generate ASCII tree +lines = [] + +def render_tree(node, prefix='', is_root=True, path_parts=()): + keys = sorted(node.keys()) + for i, key in enumerate(keys): + is_last_item = (i == len(keys) - 1) + current_path = path_parts + (key,) + # Get info suffix + info = node_info.get(current_path) + suffix = f'({info[0]})({info[1]})' if info else '' + + if is_root: + lines.append(key + suffix) + render_tree(node[key], '', False, current_path) + else: + connector = '└── ' if is_last_item else '├── ' + lines.append(prefix + connector + key + suffix) + extension = ' ' if is_last_item else '│ ' + render_tree(node[key], prefix + extension, False, current_path) + +render_tree(tree) + +# Write output +output = '# 树型执法单位\n\n```\n' + '\n'.join(lines) + '\n```\n' +with open(r'D:\EnforcementCodeProject\CodeV2\EnforcementCode-2.0\doc\数据权限控制\树型执法单位.md', 'w', encoding='utf-8') as f: + f.write(output) + +print(f'Done! Total paths: {len(path_info)}, Total lines: {len(lines)}') diff --git a/doc/数据权限控制/run.bat b/doc/数据权限控制/run.bat new file mode 100644 index 00000000..5099557d --- /dev/null +++ b/doc/数据权限控制/run.bat @@ -0,0 +1,2 @@ +@echo off +python "D:\EnforcementCodeProject\CodeV2\EnforcementCode-2.0\doc\数据权限控制\gen_tree.py" diff --git a/doc/部署说明/img.png b/doc/部署说明/img.png new file mode 100644 index 0000000000000000000000000000000000000000..adcff0ded55b0fe43109714c1859ac3e1973e850 GIT binary patch literal 2926 zcmeH{`&ZI;7{@o~=ZG5Flfub^Yx9qyr_NOs{)So~ zfyz&vBg7-|g?9I%o<&!0#f5IFq?q3j%WdBef3D9Cd@>H?F^6;GfH2|pok>%2TVZR^ z^Njv+%nCDR_EQ{4q_AaIaoQkuLEsM_%strN-D#qp9~}V! zpa0Y3l~>zmMk4k=vV|w=Ak(2-CTE-R3whSmpu0tHb_cq`+N}7y3zDn!4TB5iPQwY$ zS%0itY*5YDY3%?uir!yEhkddu=ww7T(SJ3i-(=KfVrXyz0G!v&74(IBXzyWljF>dd zK*HYzXxs+u+i;z>fTqTuP*xF|o6kcR>CW)xHPhSW6|R8W`-Yl|tXx0?dlKC#{n z549IDlJG}qn)D+D08E4|9;=c(;CeyI=r-#Y(2R@=p#)i^3p9Keaal)BFxEl*77D%C zT^dBKyiXq5>3hv2fwGo-FhEy+DpfNoRkElXDi9MFF@_w57xXiS)iDjv!{X>fvPrqs z8t7P91>c5Olf!Rw*WmR;YXN3`mlLJLZO$1?lz0szV3+GEm(0oxTG+X}Q)V6ts(w-L z+F=_2Xx^TBieH#i3sGU*f!!M3`EEzMxtu@8IY^LK7cnA};*w0>w_kju7@Fd}I4 zyVB;4Eb^;YpZZtc&K1lvz(mrp^sx+$OS&U#-Ib^;D=n7N5}dq6J!p&Vhv@2Ltxi-p zqMv(-mNG*?g*Oi_y{s=@=!peF5z!-ifZ`jl>0Rh38U-~TXTuFLtBKnBZfTU>rO80r z5uosIHa^Pu_Ku|d5I3=#f2Bh5`8M#WQv)c-8`dfvGeV9rS96HNtBk$yS z7gZteXEU*1eYloDVt_6tmrxn6m0hA(x7(WK~E{VtF$8+Y#5!XGciADXl*ywof* zlmg-I+L5f98FavGVyHG28_7&1U2u8Z%2n~Y-N3tJM&C2D5@__~Y{TJE%9OjpS1#@8 z)9WNmD?qyqotoA3usb80$tVtM0WTg@w=n%Y6-&BxK-WmPTz!VvKd=&um<<-6@w#z` zM$UepOr4gG@61=5S-p;wfnU2?oCOHj9fuU~d-l3ogFJ6zQpUDd?M)aCY05qw*FoyQ z7MMq>SHpN??y`>0TZqO;pH3V1mc+SfQlD{;b`0$sN8_Y(kPZlAYx(@71P*B?@t3eX z1pHV&*N7>lr_5CJsrt5(E;WpCidF$3X}(zM*jYY4JYCX4ctl-ohU4C16~PQe2*?X* ziVPQ%OXq_mo?=EK|UrYvpHM6P7QQj^$(RV{o(~Ut;DintVOVL{`<`e`Q=<@ u6ad^q(WC^+l`+AMOq-9Dx=(9w3&H}{f;!)LyN2aI5WGKZANR-O7ybvnJ@*O# literal 0 HcmV?d00001 diff --git a/doc/部署说明/img_1.png b/doc/部署说明/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..513a62ad467d61bf5b20370be49035ecc94e591f GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0y~yV4A_ez*xk=1QfZKV*4B@@X*u6F{C2y?Lk9Epx~he oU;T60>K6c+qhK@yhCv8CFmzOBU`!BSCIIq`r>mdKI;Vst0Hl@_=Kufz literal 0 HcmV?d00001 diff --git a/doc/部署说明/img_2.png b/doc/部署说明/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..513a62ad467d61bf5b20370be49035ecc94e591f GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0y~yV4A_ez*xk=1QfZKV*4B@@X*u6F{C2y?Lk9Epx~he oU;T60>K6c+qhK@yhCv8CFmzOBU`!BSCIIq`r>mdKI;Vst0Hl@_=Kufz literal 0 HcmV?d00001 diff --git a/zdxt-modules/zdxt-enforcement-code-common/src/main/java/org/dromara/Main.java b/zdxt-modules/zdxt-enforcement-code-common/src/main/java/org/dromara/Main.java new file mode 100644 index 00000000..7a72da2c --- /dev/null +++ b/zdxt-modules/zdxt-enforcement-code-common/src/main/java/org/dromara/Main.java @@ -0,0 +1,17 @@ +package org.dromara; + +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + //TIP Press with your caret at the highlighted text + // to see how IntelliJ IDEA suggests fixing it. + System.out.printf("Hello and welcome!"); + + for (int i = 1; i <= 5; i++) { + //TIP Press to start debugging your code. We have set one breakpoint + // for you, but you can always add more by pressing . + System.out.println("i = " + i); + } + } +} \ No newline at end of file