Index: ssts-web/src/main/resources/strtus_oa.xml =================================================================== diff -u -r32300 -r33595 --- ssts-web/src/main/resources/strtus_oa.xml (.../strtus_oa.xml) (revision 32300) +++ ssts-web/src/main/resources/strtus_oa.xml (.../strtus_oa.xml) (revision 33595) @@ -29,6 +29,7 @@ + Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r32550 -r33595 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 32550) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 33595) @@ -2250,4 +2250,35 @@ } return arr; } + + + @Override + public List searchOrgUnitAndParentBySpellOrWbCode(String simpleSpell, String related) { + List result = new ArrayList(); + List searchOrgUnitList = this.searchOrgUnitBySpellOrWbCode(simpleSpell, related); + if(CollectionUtils.isNotEmpty(searchOrgUnitList) && StringUtils.isNotBlank(simpleSpell)){ + for (OrgUnit orgUnit : searchOrgUnitList) { + if(!result.contains(orgUnit)){ + result.add(orgUnit); + } + getParentOrgUnit(orgUnit, result); + } + } + return result; + } + + /** + * 查找某个科室的所有上级科室(包含“组织机构”) + * @param orgUnit + * @param result + */ + private void getParentOrgUnit(OrgUnit orgUnit, List result) { + while(orgUnit.getParent() != null){ + orgUnit = (OrgUnit) orgUnit.getParent(); + if(!result.contains(orgUnit)){ + result.add(orgUnit); + } + } + } + } Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java =================================================================== diff -u -r29550 -r33595 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 29550) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 33595) @@ -550,4 +550,57 @@ StrutsResponseUtils.output(jsonObject); } + /** + * 根据关键字进行模糊查询科室,同时返回该科室的上级节点 + */ + public void searchOrgUnitAndParentBySpellOrWbCode(){ + String spell = StrutsParamUtils.getPraramValue("spell", ""); + JSONObject result = new JSONObject(); + result.put("code", 0); + result.put("msg", "操作成功"); + JSONArray data = new JSONArray(); + List orgUnitList = new ArrayList(); + if(StringUtils.isNotBlank(spell)){ + orgUnitList = orgUnitManager.searchOrgUnitAndParentBySpellOrWbCode(spell, "false"); + }else{ + orgUnitList = orgUnitManager.findAllOrgUnit(); + } + JSONObject root = new JSONObject(); + root.put("id", 0); + root.put("title", "组织机构"); + root.put("checkArr", "0"); + root.put("parentId", -1); + root.put("disabled", false); + data.add(root); + if(CollectionUtils.isNotEmpty(orgUnitList)){ + for (OrgUnit orgUnit : orgUnitList) { + + if(StringUtils.equals(orgUnit.getName(), "组织机构")){ + continue; + } + + JSONObject json = new JSONObject(); + json.put("id", orgUnit.getId()); + json.put("title", orgUnit.getName()); + json.put("checkArr", "0"); + OrgUnit parent = (OrgUnit) orgUnit.getParent(); + json.put("parentId", -1); + if(parent != null){ + json.put("parentId", parent.getId()); + } + json.put("disabled", OrgUnit.STATUS_DISABLED.equals(orgUnit.getStatus())); + //前台显示控件需要的参数 + JSONObject basicData = new JSONObject(); + basicData.put("spelling", orgUnit.getSpelling()); + basicData.put("WbCode", orgUnit.getWbCode()); + basicData.put("departCode", orgUnit.getOrgUnitCoding()); + basicData.put("departId", orgUnit.getId()); + json.put("basicData", basicData); + data.add(json); + } + } + result.put("data", data); + StrutsResponseUtils.output(result); + } + } Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r32229 -r33595 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 32229) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 33595) @@ -279,4 +279,13 @@ * @return */ public Map getCurrentOrgUintMapByName(Set orgUintNames); + + /** + * 根据关键字进行模糊查询科室,同时返回该科室的上级节点 + * @param spell 检索关键字 + * @param related related如果等于“true”,就只查询SupplyRoomConfig已经配置的科室,否则查全部科室 + * @return + */ + public List searchOrgUnitAndParentBySpellOrWbCode(String spell, String related); + }