diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/DeptDataRightTreeWork.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/DeptDataRightTreeWork.java index fe61b4f..bdf913a 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/DeptDataRightTreeWork.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/DeptDataRightTreeWork.java @@ -6,11 +6,13 @@ import cc.smtweb.system.bpm.web.common.BpmConst; import cc.smtweb.system.bpm.web.sys.user.dataRightGroup.IDataRightTreeWorker; import cc.smtweb.system.bpm.web.sys.user.dept.Dept; import cc.smtweb.system.bpm.web.sys.user.dept.DeptCache; +import cc.smtweb.system.bpm.web.sys.user.party.Party; import cc.smtweb.system.bpm.web.sys.user.party.PartyCache; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * @Author yaoq @@ -32,21 +34,41 @@ public class DeptDataRightTreeWork implements IDataRightTreeWorker { List list = new ArrayList<>(); list.add(buildExtraValue(BpmConst.DataRight.ALL_DEPT, "所有部门")); list.add(buildExtraValue(BpmConst.DataRight.CUR_VALUE, "所属部门")); + Set partys = filterParty(PartyCache.getInstance().getTopSet()); + if (CommUtil.isEmpty(partys)) return list; + partys.forEach(party -> { + list.add(buildExtraValue(party.getId(), party.getName())); + }); return list; } @Override public List getChildren(long id) { List list = new ArrayList<>(); - list.addAll(getExtraValues()); - Collection depts = DeptCache.getInstance().getAll(); - if (CommUtil.isEmpty(depts)) return list; - depts.forEach(dept -> { - list.add(buildExtraValue(dept.getId(), dept.getName())); + if (id <= 0) { + list.addAll(getExtraValues()); + return list; + } + Set depts = DeptCache.getInstance().getByP(String.valueOf(id)); + if (!CommUtil.isEmpty(depts)) { + depts.forEach(dept -> { + list.add(buildExtraValue(dept.getId(), dept.getName())); + }); + } + Set partys = filterParty(PartyCache.getInstance().getChildren(id)); + if (CommUtil.isEmpty(partys)) return list; + partys.forEach(party -> { + list.add(buildExtraValue(party.getId(), party.getName())); }); return list; } + private Set filterParty(Set partySet) { + if (CommUtil.isEmpty(partySet)) return partySet; + return partySet.stream().filter((party) -> + !CommUtil.isEmpty(DeptCache.getInstance().getAllByPartyEx(party.getId()))).collect(Collectors.toSet()); + } + @Override public String getText(long value) { if (BpmConst.DataRight.CUR_VALUE == value) return "所属部门"; diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/PartyDataRightTreeWork.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/PartyDataRightTreeWork.java index a9c1c88..f24dbb6 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/PartyDataRightTreeWork.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dataRightGroup/impl/PartyDataRightTreeWork.java @@ -35,11 +35,13 @@ public class PartyDataRightTreeWork implements IDataRightTreeWorker { @Override public List getChildren(long id) { + List list = new ArrayList<>(); long key = id; - if (key <= 0) key = -1; + if (key <= 0) { + key = -1; + list.addAll(getExtraValues()); + } Set partys = PartyCache.getInstance().getChildren(key); - List list = new ArrayList<>(); - list.addAll(getExtraValues()); if (CommUtil.isEmpty(partys)) return list; partys.forEach(party -> { list.add(buildExtraValue(party.getId(), party.getName())); diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dept/DeptCache.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dept/DeptCache.java index a8221d9..12926c2 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dept/DeptCache.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/dept/DeptCache.java @@ -3,7 +3,11 @@ package cc.smtweb.system.bpm.web.sys.user.dept; import cc.smtweb.framework.core.annotation.SwCache; import cc.smtweb.framework.core.cache.AbstractEntityCache; import cc.smtweb.framework.core.cache.CacheManager; +import cc.smtweb.framework.core.util.CommUtil; +import cc.smtweb.system.bpm.web.sys.user.party.Party; +import cc.smtweb.system.bpm.web.sys.user.party.PartyCache; +import java.util.HashSet; import java.util.Set; /** @@ -37,4 +41,29 @@ public class DeptCache extends AbstractEntityCache { public final Set getByP(String key) { return getListByKey(mk_p, key); } + + public final String getNameById(Long id) { + Dept dept = get(id); + if (dept == null) return ""; + return dept.getName(); + } + + /** + * @Author yaoq + * @Date 2022/9/22 17:08 + * @Params + * @Return java.util.Set + * @Description 根据单位获取,该单位级下级单位所有部门集合 + */ + public final Set getAllByPartyEx(long party_id) { + Set set = getByP(String.valueOf(party_id)); + if (set == null) set = new HashSet<>(); + Set child = PartyCache.getInstance().getAllChildren(party_id); + for (Party party : child) { + Set depts = getByP(String.valueOf(party.getId())); + if (CommUtil.isEmpty(depts)) continue; + set.addAll(depts); + } + return set; + } } diff --git a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/party/PartyCache.java b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/party/PartyCache.java index 9ae69fd..cf9098a 100644 --- a/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/party/PartyCache.java +++ b/smtweb-framework/bpm/src/main/java/cc/smtweb/system/bpm/web/sys/user/party/PartyCache.java @@ -5,6 +5,7 @@ import cc.smtweb.framework.core.cache.AbstractEntityCache; import cc.smtweb.framework.core.cache.CacheManager; import cc.smtweb.framework.core.util.CommUtil; +import java.util.HashSet; import java.util.Set; /** @@ -32,6 +33,21 @@ public class PartyCache extends AbstractEntityCache { return getListByKey(mk_pr, String.valueOf(key)); } + public final Set getAllChildren(Long key) { + Set set = new HashSet<>(); + buildChildren(key, set); + return set; + } + + private final void buildChildren(Long key, Set set) { + Set child = getChildren(key); + if (CommUtil.isEmpty(child)) return; + set.addAll(child); + for (Party party : child) { + buildChildren(party.getId(), set); + } + } + //获取顶级集合 public final Set getTopSet() { return getChildren(-1L);