From 66dc1ae2a9b21f7b513f7f0fd02d7e0cd1453117 Mon Sep 17 00:00:00 2001 From: zhenggm Date: Thu, 21 Jul 2022 10:25:38 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BE=9D=E8=B5=96=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/web/design/db/ModelCatalogTreeHandler.java | 14 +++++++----- .../bpm/web/design/db/ModelCatalogTreeHelper.java | 16 ++++++++----- .../bpm/web/design/db/ModelProjectCache.java | 26 ++++++++++++++++++++++ .../bpm/web/design/db/ModelTableComboHandler.java | 8 +++++-- 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHandler.java index dd3a940..4d7d5df 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHandler.java @@ -56,15 +56,19 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler @Override protected List filterData() { + Set setId = ModelProjectCache.getInstance().getDependsPrjIds(prj_id); + if (setId.isEmpty()) return new ArrayList<>(); + String sqlPrjId = CommUtil.getSqlInIds(setId); + EntityDao dao = DbEngine.getInstance().findDao(ModelCatalog.ENTITY_NAME); String text = "%" + params.readString("text") + "%"; - List list = dao.queryWhere(" mc_prj_id=? and (mc_name like ? or mc_code like ?) order by mc_name", prj_id, text, text); + List list = dao.queryWhere(" mc_prj_id in (" + sqlPrjId + ") and (mc_name like ? or mc_code like ?) order by mc_name", text, text); List listRet = new ArrayList<>(list); switch (type) { case TYPE_TABLE: EntityDao tabledao = DbEngine.getInstance().findDao(ModelTable.class); - List l = tabledao.queryWhere(" tb_prj_id=? and (tb_name like ? or tb_title like ?) order by tb_name", prj_id, text, text); + List l = tabledao.queryWhere(" tb_prj_id in (" + sqlPrjId + ") and (tb_name like ? or tb_title like ?) order by tb_name", text, text); listRet.addAll(l); break; case TYPE_PAGE: @@ -74,13 +78,13 @@ public class ModelCatalogTreeHandler extends AbstractTreeHandler List lf; switch (type) { case TYPE_PAGE: - lf = formdao.queryWhere(" mf_prj_id=? and mf_type<>? and (mf_name like ? or mf_title like ?) order by tb_name", prj_id, SwEnum.FormType.WIDGET.value, text, text); + lf = formdao.queryWhere(" mf_prj_id in (" + sqlPrjId + ") and mf_type<>? and (mf_name like ? or mf_title like ?) order by tb_name", SwEnum.FormType.WIDGET.value, text, text); break; case TYPE_WIDGET: - lf = formdao.queryWhere(" mf_prj_id=? and mf_type=? and (mf_name like ? or mf_title like ?) order by tb_name", prj_id, SwEnum.FormType.WIDGET.value, text, text); + lf = formdao.queryWhere(" mf_prj_id in (" + sqlPrjId + ") and mf_type=? and (mf_name like ? or mf_title like ?) order by tb_name", SwEnum.FormType.WIDGET.value, text, text); break; default: - lf = formdao.queryWhere(" mf_prj_id=? and (mf_name like ? or mf_title like ?) order by tb_name", prj_id, text, text); + lf = formdao.queryWhere(" mf_prj_id in (" + sqlPrjId + ") and (mf_name like ? or mf_title like ?) order by tb_name", text, text); } listRet.addAll(lf); } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHelper.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHelper.java index e8acff9..debb085 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHelper.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelCatalogTreeHelper.java @@ -4,10 +4,7 @@ import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.db.vo.ModelCatalog; import cc.smtweb.framework.core.mvc.service.TreeHelper; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; +import java.util.*; /** * Created by Akmm at 2022/3/25 10:47 @@ -24,9 +21,16 @@ public class ModelCatalogTreeHelper extends TreeHelper { if (id > 0) { return getChildren(id, comparator); } - Collection set = cache.getListByKey(CACHE_KEY, prj_id + SwConsts.SPLIT_CHAR + SwConsts.DEF_ROOT_ID); + Set setId = ModelProjectCache.getInstance().getDependsPrjIds(prj_id); + if (setId.isEmpty()) return new ArrayList<>(); + Set set = new HashSet<>(); - List list = set == null ? new ArrayList<>() : new ArrayList<>(set); + for (long prjId: setId) { + Collection st = cache.getListByKey(CACHE_KEY, prjId + SwConsts.SPLIT_CHAR + SwConsts.DEF_ROOT_ID); + if (st != null) set.addAll(st); + } + + List list = new ArrayList<>(set); if (comparator != null) list.sort(comparator); return list; diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelProjectCache.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelProjectCache.java index 0ba5e4a..cece0c4 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelProjectCache.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelProjectCache.java @@ -6,8 +6,12 @@ import cc.smtweb.framework.core.cache.CacheManager; import cc.smtweb.framework.core.db.DbEngine; import cc.smtweb.framework.core.db.EntityDao; import cc.smtweb.framework.core.db.vo.ModelProject; +import cc.smtweb.framework.core.util.NumberUtil; +import org.apache.commons.lang3.StringUtils; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Created by Akmm at 2022/1/12 18:34 @@ -45,4 +49,26 @@ public class ModelProjectCache extends AbstractCache { ModelProject bean = getByModule(module); return bean !=null ? String.valueOf(bean.getId()): ""; } + + //找当前项目及其依赖项目的id集合,递归 + public Set getDependsPrjIds(long id) { + Set set = new HashSet<>(); + addPrjId(set, id); + return set; + } + + //递归增加 + private void addPrjId(Set set, long id) { + if (set.contains(id)) return; + ModelProject bean = get(id); + if (bean == null) return; + set.add(id); + if (StringUtils.isEmpty(bean.getDepends())) return; + String[] dps = bean.getDepends().split(","); + for (String s: dps) { + s = s.trim(); + if (StringUtils.isEmpty(s)) return; + addPrjId(set, NumberUtil.getLongIgnoreErr(s)); + } + } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableComboHandler.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableComboHandler.java index b4b574f..6a97e5f 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableComboHandler.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/design/db/ModelTableComboHandler.java @@ -2,8 +2,10 @@ package cc.smtweb.system.bpm.web.design.db; import cc.smtweb.framework.core.db.vo.ModelTable; import cc.smtweb.framework.core.mvc.service.DefaultComboHandler; +import cc.smtweb.framework.core.util.CommUtil; import java.util.List; +import java.util.Set; /** * Created by Akmm at 2022/3/22 19:25 @@ -18,8 +20,10 @@ public class ModelTableComboHandler extends DefaultComboHandler { super.buildCondition(sql, args); long prj_id = params.readLong("prj_id"); if (prj_id > 0) { - sql.append(" and tb_prj_id=?"); - args.add(prj_id); + Set setId = ModelProjectCache.getInstance().getDependsPrjIds(prj_id); + if (!setId.isEmpty()) { + sql.append(" and tb_prj_id in (").append(CommUtil.getSqlInIds(setId)).append(")"); + } } long db_id = params.readLong("db_id");