From 51208f7295f4df053957941eff1531627766b2f3 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 24 Jun 2026 09:18:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20codes=E6=94=AF=E6=8C=81dbname=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=AE=9E=E7=8E=B0=E8=B7=A8=E5=BA=93JOIN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - construct_get_data_sql: 两个路径都支持c.dbname前缀 - get_code_desc: params中dbname优先用c.dbname - models/*.json codes中添加dbname字段即可跨库引用 --- xls2ddl/xls2crud.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xls2ddl/xls2crud.py b/xls2ddl/xls2crud.py index 78e70b2..9956059 100644 --- a/xls2ddl/xls2crud.py +++ b/xls2ddl/xls2crud.py @@ -163,8 +163,9 @@ def get_code_desc(field: dict, desc: dict) -> dict: d.uitype = 'code' d.valueField = d.name d.textField = d.name + '_text' + dbname_val = "{{get_module_dbname('" + getattr(c, 'dbname', desc.modulename) + "')}}" d.params = { - 'dbname':"{{get_module_dbname('" + desc.modulename + "')}}", + 'dbname':dbname_val, 'table':c.table, 'tblvalue':c.valuefield, 'tbltext':c.textfield, @@ -223,11 +224,12 @@ def construct_get_data_sql(desc: dict) -> str: param_field = "${" + desc.relation.param_field + "}$" for code in desc.codes: if code.field == desc.relation.outter_field: + code_tbl = f"{code.dbname}.{code.table}" if getattr(code, 'dbname', None) else code.table return f"""select '$[{desc.relation.param_field}]$' as {desc.relation.param_field}, case when b.{desc.relation.param_field} is NULL then 0 else 1 end has_{desc.relation.param_field}, a.{code.valuefield} as {code.field}, a.{code.textfield} as {code.field}_text -from {code.table} a left join +from {code_tbl} a left join (select * from {desc.tblsql or desc.tblname} where {desc.relation.param_field} ={param_field}) b on a.{code.valuefield} = b.{code.field} """ @@ -239,8 +241,9 @@ from {code.table} a left join cond = '1 = 1' if c.cond: cond = c.cond + code_tbl = f"{c.dbname}.{c.table}" if getattr(c, 'dbname', None) else c.table csql = f"""(select {c.valuefield} as {c.field}, - {c.textfield} as {c.field}_text from {c.table} where {cond})""" + {c.textfield} as {c.field}_text from {code_tbl} where {cond})""" infos.append([f'{shortname}.{c.field}_text', f"{csql} {shortname} on a.{c.field} = {shortname}.{c.field}"]) bt = f'(select * from {desc.summary[0].name} where 1=1' + " [[filterstr]]) a" infos.insert(0, ['a.*', bt])