Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r20106 -r20481 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 20106) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 20481) @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.forgon.directory.model.CssdHandleTousses; @@ -57,7 +58,7 @@ /** * 根据关键字进行模糊查询科室.. * @param simpleSpell 检索关键字 - * @param related related如果等于“true”,就只查询一级供应室以及所有配置可以申请器械包的科室,否则查全部科室 + * @param related related如果等于“true”,就只查询SupplyRoomConfig已经配置的科室,否则查全部科室 * @return */ public List searchOrgUnitBySpellOrWbCode(String simpleSpell, @@ -171,13 +172,20 @@ */ public CssdServiceDepts getCssdServiceDepts(String applyDepartCode, String type); + /** + * 根据关键字搜索科室(注意:不是一二级供应室用户,就只能看到自己直属的科室). + * @param keyWord 关键字 + * @param justSearchApplyDepatment 是否是搜索申请科室 + * @return + */ + public List> searchApplyDepartmentByKeyWord(String keyWord); /** * 根据科室名称查找"科室编码"和"科室名称",(可以支持 "名称的汉字","名称的拼音码","名称的五笔码"这三种格式的模糊查询) * @param orgUnitName:科室的名称 * @return */ - public List searchOrgUnitCodingAndNameByName(String orgUnitName); + public JSONArray searchOrgUnitCodingAndNameByName(String orgUnitName); /** * 根据部门的编号找出对应的部门名字 Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r20106 -r20481 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 20106) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 20481) @@ -921,12 +921,6 @@ return companyList; } - /** - * 根据关键字进行模糊查询科室.. - * @param simpleSpell 检索关键字 - * @param related related如果等于“true”,就只查询一级供应室以及所有配置可以申请器械包的科室,否则查全部科室 - * @return - */ @SuppressWarnings("unchecked") @Override public List searchOrgUnitBySpellOrWbCode(String simpleSpell, @@ -1249,9 +1243,80 @@ } @Override - public List searchOrgUnitCodingAndNameByName( - String orgUnitName) { + public List> searchApplyDepartmentByKeyWord( + String keyWord) { + return searchOrgUnitByKeyWord(keyWord, true); + } + + + /** + * 根据关键字搜索科室,不是一二级供应室用户,就只能看到自己直属的科室. + * @param keyWord 关键字 + * @param justSearchApplyDepatment 是否是搜索申请科室 + * @return + */ + private List> searchOrgUnitByKeyWord(String keyWord, boolean justSearchApplyDepatment) { + LoginUserData loginUser = AcegiHelper.getLoginUser(); + + String searchSql = getOrgUnitSearchSql(keyWord); + + //1、是否只查申请科室 + String applyDepatmentSql = ""; + if (justSearchApplyDepatment) { + applyDepatmentSql = " and po.orgUnitCoding in(select orgUnitCoding from SupplyRoomConfig where supplyRoomType=3) "; + } + + //2、不是一二级供应室用户,就只能看到自己直属的科室 + String belongDepartmentSql = ""; + if (objectDao.countBySql(String.format("select count(*) from SupplyRoomConfig where supplyRoomType in(1,2) and orgUnitCoding='%s'", loginUser.getCurrentOrgUnitCode())) <= 0) { + String orgUnitCodesWhereUserBelong = loginUser.getOrgUnitCodesWhereUserBelong(); + belongDepartmentSql = SqlUtils.get_InSql("po.orgUnitCoding", StringTools.split(orgUnitCodesWhereUserBelong, ",")); + } + + String sql = String.format("select po.name,po.orgUnitCoding from OrgUnit po where po.id<>0 %s %s %s", searchSql, applyDepatmentSql, belongDepartmentSql); + + ResultSet result = objectDao.executeSql(sql); + List> list = new ArrayList>(); + try { + while(result.next()){ + Map map = new HashMap(); + map.put("departmentName", StringTools.defaultString(result.getString("name"))); + map.put("departmentCode", StringTools.defaultString(result.getString("orgUnitCoding"))); + list.add(map); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + return list; + } + /** + * 获取模糊查询科室的sql语句. + * @param keyWord 搜索关键字 + * @return + */ + private String getOrgUnitSearchSql(String keyWord) { + keyWord = StringTools.defaultString(keyWord).toUpperCase(); + String searchSql = ""; + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(keyWord); + if (keyWord.trim().length() > 0) { + if (m.find()) { + searchSql += " and po.name like '%" + keyWord + "%'"; + } else { + searchSql += SqlUtils.getSearchSQL(AcegiHelper.getLoginUser().getSearchMode(), keyWord); + } + } + return searchSql; + } + + + @Override + public JSONArray searchOrgUnitCodingAndNameByName(String orgUnitName) { + JSONArray jsonArr = new JSONArray(); + orgUnitName = StringTools.defaultString(orgUnitName); orgUnitName = orgUnitName.toUpperCase(); String likeSql = "".equals(orgUnitName) ? "" : @@ -1267,21 +1332,19 @@ ; ResultSet result = objectDao.executeSql(sql); - List orgUnitList = new ArrayList(); try { while(result.next()){ - OrgUnit orgUnit = new OrgUnit(); - orgUnit.setOrgUnitCoding(result.getString("orgUnitCoding")); - orgUnit.setName(result.getString("orgUnitName")); - orgUnitList.add(orgUnit); + JSONArray tempArr = new JSONArray(); + tempArr.add(StringTools.defaultString(result.getString("orgUnitCoding"))); + tempArr.add(StringTools.defaultString(result.getString("orgUnitName"))); + jsonArr.add(tempArr); } } catch (SQLException e) { e.printStackTrace(); }finally { DatabaseUtil.closeResultSetAndStatement(result); } - - return orgUnitList; + return jsonArr; } @Override Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java =================================================================== diff -u -r18022 -r20481 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 18022) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 20481) @@ -34,6 +34,7 @@ import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.PageUtil; import com.forgon.tools.util.StrutsUtils; import com.forgon.treenode.ext.model.ExtTreeNode; import com.forgon.treenode.model.THTreeNode; @@ -360,28 +361,22 @@ iniInfo(); } + @Override public void prepare() throws Exception { } + @Override public OrgUnit getModel() { return orgUnit; } /** - * 根据科室名称获取科室名称和科室编码 - * chenjiaru 2016-09-10 + * 根据关键字获取科室名称和科室编码 */ public void getOrgUnitCodingAndNameByName() { String orgUnitName = StrutsParamUtils.getPraramValue("orgUnit", ""); - List orgUnitList = orgUnitManager.searchOrgUnitCodingAndNameByName(orgUnitName); - JSONArray jSONArray = new JSONArray(); - for (OrgUnit orgUnit : orgUnitList) { - JSONArray jSONArrayTemp = new JSONArray(); - jSONArrayTemp.add(orgUnit.getOrgUnitCoding()); - jSONArrayTemp.add(orgUnit.getName()); - jSONArray.add(jSONArrayTemp); - } + JSONArray jSONArray = orgUnitManager.searchOrgUnitCodingAndNameByName(orgUnitName); StrutsResponseUtils.output(jSONArray); } @@ -419,4 +414,15 @@ StrutsResponseUtils.output(jsonObject); } } + + /** + * 根据关键字搜索科室,不是一二级供应室用户,就只能看到自己直属的科室. + * return [totalCount:"结果条数",data:[{departmentName:"科室名称",departmentCode:"科室编码"},{},{}...]] + */ + public void searchApplyDepartmentByKeyWord() { + String spell = StrutsParamUtils.getPraramValue("spell", ""); + List> list = orgUnitManager.searchApplyDepartmentByKeyWord(spell); + PageUtil.outPutResult(PageUtil.getPagePara(), list); + } + } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentapptemplate/departmentAppTemplateForm.js =================================================================== diff -u -r20440 -r20481 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentapptemplate/departmentAppTemplateForm.js (.../departmentAppTemplateForm.js) (revision 20440) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentapptemplate/departmentAppTemplateForm.js (.../departmentAppTemplateForm.js) (revision 20481) @@ -273,15 +273,15 @@ var departJsonStore = new Ext.data.Store({ pageSize: 100, proxy : new Ext.data.HttpProxy({ - url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + url : WWWROOT + '/systemmanage/orgUnit/searchApplyDepartmentByKeyWord.do', method : 'POST' }), reader : new Ext.data.JsonReader({ root : 'data', totalProperty : 'totalCount' },[ - {name : 'id',mapping : 'id'}, - {name : 'name',mapping : 'name'} + {name : 'id',mapping : 'departmentCode'}, + {name : 'name',mapping : 'departmentName'} ] ) }); @@ -479,13 +479,13 @@ iconCls : 'icon_systemset', handler : function() { Ext.Ajax.request({ - url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + url : WWWROOT + '/systemmanage/orgUnit/searchApplyDepartmentByKeyWord.do', success : function(response, options) { var result = Ext.decode(response.responseText); var lenth = result.data.length; for(var index = 0;index < lenth;index++){ - var name = result.data[index].name; - var departId = result.data[index].id; + var name = result.data[index].departmentName; + var departId = result.data[index].departmentCode; var b = isRepeat('configGrid',departId); if(b){ showResult('科室:['+name+'] 已存在!'); Index: ssts-web/src/main/resources/strtus_oa.xml =================================================================== diff -u -r17621 -r20481 --- ssts-web/src/main/resources/strtus_oa.xml (.../strtus_oa.xml) (revision 17621) +++ ssts-web/src/main/resources/strtus_oa.xml (.../strtus_oa.xml) (revision 20481) @@ -33,6 +33,7 @@ +