From e78fc52df8516da7f4eeb31c833c615d2388a381 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Wed, 1 Jun 2022 10:27:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smtweb/framework/core/db/jdbc/JdbcEngine.java | 1 + .../web/design/table/ModelCatalogTreeHandler.java | 45 +++++++++++++++++++++- .../bpm/web/engine/dynPage/DynPageHelper.java | 2 +- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/jdbc/JdbcEngine.java b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/jdbc/JdbcEngine.java index 4993eae..8d1c38c 100644 --- a/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/jdbc/JdbcEngine.java +++ b/smtweb-framework/sw-framework-core/src/main/java/cc/smtweb/framework/core/db/jdbc/JdbcEngine.java @@ -437,6 +437,7 @@ public class JdbcEngine { List list = queryN(sql, params, type); if (list != null && !list.isEmpty()) { + if (list.size() > 1) throw new SwException("您调用的查询单个对象的方法,结果却查出了多条!"); return list.get(0); } diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java index bc3e567..5f4bc6d 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/design/table/ModelCatalogTreeHandler.java @@ -32,6 +32,7 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler private long prj_id;//所属项目 private int type;//查询类型:0-目录;1-表定义;2-页面定义 + private boolean exc_empty;//排除空目录,type非目录时有效 private ModelCatalogTreeHelper mcTreeHelper = null; @@ -40,6 +41,7 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler super.init(params, us); type = params.readInt("type"); prj_id = params.readLong("prj_id"); + exc_empty = params.readBool("exc_empty"); mcTreeHelper = (ModelCatalogTreeHelper) TreeHelper.getTreeHelper(ModelCatalog.ENTITY_NAME, ModelCatalogTreeHelper.class); } @@ -84,8 +86,12 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler @Override protected List getChildren(long id) { List list = mcTreeHelper.getChildren(id, prj_id, (o1, o2) -> CommUtil.chineseCompare(o1.getName(), o2.getName())); - - List listRet = new ArrayList<>(list); + List listRet; + if (type != TYPE_CATALOG && exc_empty) {//排除空目录 + listRet = cleanEmpty(list); + } else { + listRet = new ArrayList<>(list); + } switch (type) { case TYPE_TABLE: @@ -99,6 +105,41 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler return listRet; } + /** + * 去掉没有叶子的空目录 + * @param list + * @return + */ + private List cleanEmpty(List list) { + if (list.isEmpty()) return new ArrayList<>(list); + List lret = new ArrayList<>(); + for (ModelCatalog mc: list) { + if (hasChildren(mc)) lret.add(mc); + } + return lret; + } + + //递归判断,目录是否有儿子 + private boolean hasChildren(ModelCatalog mc) { + List listRet = new ArrayList<>(); + switch (type) { + case TYPE_TABLE: + addTableChildren(listRet, mc.getId()); + break; + case TYPE_PAGE: + case TYPE_WIDGET: + case TYPE_FORM: + addPageChildren(listRet, mc.getId(), type); + } + if (!listRet.isEmpty()) return true; + List list = mcTreeHelper.getChildren(mc.getId(), prj_id, null); + if (list == null || list.isEmpty()) return false; + for (ModelCatalog c: list) { + if (hasChildren(c)) return true; + } + return false; + } + //增加表 private void addTableChildren(List listRet, long mcid) { Collection set = ModelTableCache.getInstance().getTablesByMc(mcid, (o1, o2) -> CommUtil.chineseCompare(o1.getName(), o2.getName())); diff --git a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java index ca07c9a..dd3d74c 100644 --- a/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java +++ b/smtweb-system/sw-system-bpm/src/main/java/cc/smtweb/system/bpm/web/engine/dynPage/DynPageHelper.java @@ -35,7 +35,7 @@ public class DynPageHelper { public static SwMap createBean(PageDataset dataSet) { //主表 ModelTable masterTable = ModelTableCache.getInstance().get(dataSet.masterTable); - EntityDao dao = DbEngine.getInstance().findDao(masterTable.getTableName()); + EntityDao dao = DbEngine.getInstance().findDao(masterTable.getName()); try { DefaultEntity bean = dao.createBean(); return bean.getData();