Index: ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManagerImpl.java =================================================================== diff -u -r39008 -r39021 --- ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManagerImpl.java (.../ProblemManagerImpl.java) (revision 39008) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManagerImpl.java (.../ProblemManagerImpl.java) (revision 39021) @@ -13,6 +13,8 @@ import java.util.Date; import java.util.List; import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -31,6 +33,7 @@ import com.forgon.Constants; import com.forgon.attachfile.model.AttachFile; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUserRelation; import com.forgon.directory.service.OrgUnitManager; @@ -627,5 +630,77 @@ } } } + + @SuppressWarnings("unchecked") + @Override + public List searchProblemNotifyOrgUnitByKeyWord(String currentOrgUnitCode, String simpleSpell, boolean showDisableOrgUnit) { + if(StringUtils.isBlank(currentOrgUnitCode)){ + throw new SystemException("当前登录科室不能为空!"); + } + List allOrgUnitList = new ArrayList(); + if(!supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnitCode)){ + SupplyRoomConfig firstSupplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + OrgUnit firstSupplyRoomOrg = orgUnitManager.getByCode(firstSupplyRoomConfig.getOrgUnitCoding()); + if(firstSupplyRoomOrg != null){ + allOrgUnitList.add(firstSupplyRoomOrg); + } + } + String cssdServiceDeptsSql = getCssdServiceDeptsSql(currentOrgUnitCode); + simpleSpell = simpleSpell.toUpperCase(); + String sql = " where 1=1 "; + if(StringUtils.isNotBlank(cssdServiceDeptsSql)){ + sql += cssdServiceDeptsSql; + } + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(simpleSpell); + String searchMode = AcegiHelper.getLoginUser().getSearchMode(); + if (simpleSpell.trim().length() > 0) { + if (m.find()) { + sql += " and po.name like '%" + simpleSpell + "%'"; + } else { + sql += SqlUtils.getSearchSQL(searchMode, simpleSpell); + } + } + if (!showDisableOrgUnit) { + sql = sql + " and ( po.status is null or po.status = " + OrgUnit.STATUS_ENSABLED + " ) "; + } + + sql += " and po.id != 0 "; + List orgUnitList = objectDao.findBySql(OrgUnit.class.getSimpleName() , sql); + if(CollectionUtils.isNotEmpty(orgUnitList)){ + allOrgUnitList.addAll(orgUnitList); + } + return allOrgUnitList; + } + + /** + * 问题反馈通知科室的下拉框: + * 一级供应室:所有满足条件的科室 + * 二级供应室:一级供应室、所有在【供应室服务临床科室配置】中设置的当前科室服务的未停用的临床科室; + * 临床科室:一级供应室、在【供应室服务临床科室配置】中设置的为当前临床科室服务的所有未停用的二级供应室的值; + * @param currentOrgUnitCode + * @return + */ + private String getCssdServiceDeptsSql(String currentOrgUnitCode) { + if(supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnitCode)){ + return ""; + } + + SupplyRoomConfig firstSupplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + StringBuffer sql = new StringBuffer(); + sql.append(" and (po.orgUnitCoding in (select csd.clinicOrgUnitCode from "); + sql.append(CssdServiceDepts.class.getSimpleName()); + sql.append(" csd where csd.cssdOrgUnitCode = '"); + sql.append(currentOrgUnitCode); + sql.append("')"); + if(firstSupplyRoomConfig != null && StringUtils.isNotBlank(firstSupplyRoomConfig.getOrgUnitCoding())){ + sql.append(" and po.orgUnitCoding <> '"); + sql.append(firstSupplyRoomConfig.getOrgUnitCoding()); + sql.append("' "); + } + sql.append(")"); + return sql.toString(); + } + } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManager.java =================================================================== diff -u -r36252 -r39021 --- ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManager.java (.../ProblemManager.java) (revision 36252) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/service/ProblemManager.java (.../ProblemManager.java) (revision 39021) @@ -4,6 +4,7 @@ import java.io.OutputStream; import java.util.List; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.problemreportmanager.problemreport.model.Problem; public interface ProblemManager { @@ -56,5 +57,19 @@ */ public void uploadAttachFile(String objectID, String objectType, File[] uploadFiles, String[] uploadFilesFileName); + + /** + * 问题反馈通知科室的下拉框: + * 一级供应室:所有满足条件的科室 + * 二级供应室:一级供应室、所有在【供应室服务临床科室配置】中设置的当前科室服务的未停用的临床科室; + * 临床科室:一级供应室、在【供应室服务临床科室配置】中设置的为当前临床科室服务的所有未停用的二级供应室的值; + * @param currentOrgUnitCode 当前登录科室编码 + * @param spell 关键字 + * @param showDisableOrgUnit 是否显示停用科室 + * @return + */ + public List searchProblemNotifyOrgUnitByKeyWord( + String currentOrgUnitCode, String spell, boolean showDisableOrgUnit); + } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/action/ProblemAction.java =================================================================== diff -u -r36258 -r39021 --- ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/action/ProblemAction.java (.../ProblemAction.java) (revision 36258) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/problemreportmanager/problemreport/action/ProblemAction.java (.../ProblemAction.java) (revision 39021) @@ -247,6 +247,38 @@ StrutsResponseUtils.output(json); } + /** + * 问题反馈通知科室的下拉框:BJDWLJZQJY-4 + * 一级供应室:所有满足条件的科室 + * 二级供应室:一级供应室、所有在【供应室服务临床科室配置】中设置的当前科室服务的未停用的临床科室; + * 临床科室:一级供应室、在【供应室服务临床科室配置】中设置的为当前临床科室服务的所有未停用的二级供应室的值; + */ + public void searchProblemNotifyOrgUnitByKeyWord(){ + JSONObject result = JSONUtil.buildJsonObject(true); + try { + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + String spell = StrutsParamUtils.getPraramValue("spell", ""); + // 设置是否显示停用科室(默认可以显示) + boolean showDisableOrgUnit = Boolean.valueOf(StrutsParamUtils.getPraramValue("showDisableOrgUnit", "true")); + List orgUnitList = problemManager.searchProblemNotifyOrgUnitByKeyWord(currentOrgUnitCode, spell, showDisableOrgUnit); + if(CollectionUtils.isNotEmpty(orgUnitList)){ + JSONArray data = new JSONArray(); + for (OrgUnit orgUnit : orgUnitList) { + JSONObject obj = new JSONObject(); + obj.put("id", orgUnit.getId()); + obj.put("departmentName", orgUnit.getName()); + obj.put("departmentCode", orgUnit.getOrgUnitCoding()); + data.add(obj); + } + result = JSONUtil.buildJsonObject(true, data); + } + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + StrutsResponseUtils.output(result); + } + @Override public void prepare() throws Exception { iniInfo();