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);
+
}