Index: ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js =================================================================== diff -u -r27943 -r28073 --- ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 27943) +++ ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 28073) @@ -1062,11 +1062,13 @@ //外来器械包的store var foreignTousseJsonStore = new Ext4.data.Store({ + pageSize : 12, proxy : { type : 'ajax', url : WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getForeignTousseDefinitionNames.do', reader : { type : 'json', + totalProperty : 'totalCount', root : 'data' }, extraParams : { @@ -1244,10 +1246,11 @@ minChars : 0, valueField : 'id', displayField : 'name', - width : 220, - listConfig: {width : 220}, + width : 240, + listConfig: {width : 240}, matchFieldWidth: false, store : foreignTousseJsonStore, + pageSize : 12, lazyInit : true, triggerAction : 'all', hideTrigger : false, Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SearchTousseDefinitionParams.java =================================================================== diff -u -r15049 -r28073 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SearchTousseDefinitionParams.java (.../SearchTousseDefinitionParams.java) (revision 15049) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SearchTousseDefinitionParams.java (.../SearchTousseDefinitionParams.java) (revision 28073) @@ -3,6 +3,9 @@ */ package com.forgon.disinfectsystem.tousse.toussedefinition.service; +import com.forgon.entity.PageEntity; + + /** * @author jeffli 2016年9月9日 下午3:18:35 * @@ -15,5 +18,6 @@ public String supplierName; public boolean showDisableGoods = false; public boolean showForeignTousseAncestorDefinition = false; + public PageEntity pageEntity; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r28021 -r28073 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 28021) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 28073) @@ -89,6 +89,7 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.dto.TousseDefinitionParameterDto; import com.forgon.disinfectsystem.tousse.videomanager.service.VideoFileManager; import com.forgon.disinfectsystem.vo.TousseItemVo; +import com.forgon.entity.PageEntity; import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; @@ -867,6 +868,118 @@ return searchTousseDefinition(params); } + /** + * 分页查询外来器械包定义 + * @param searchString + * @param tousseType + * @param handlerDepartCodes + * @param supplierName + * @param showDisableGoods + * @param showForeignTousseAncestorDefinition + * @param useAssetsBelong + * @param pageEntity + * @return + */ + public List searchForeignTousseDefinitions(String searchString, + String tousseType, String handlerDepartCodes, String supplierName, + boolean showDisableGoods, + boolean showForeignTousseAncestorDefinition, boolean useAssetsBelong, PageEntity pageEntity) { + searchString = SqlUtils.filterIllegalCharachers(searchString); + + String sql = createQuerySQL(searchString); + + if (TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tousseType)) {// 外来器械包 + // 外来器械包 + sql += " and po.tousseType = '" + + TousseDefinition.PACKAGE_TYPE_FOREIGN + "'"; + // 如果当前登录用户为外来器械供应商的申请人员时,只查询该申请人员关联的供应商下的外来器械包或未配置申请人员的供应商的外来器械包 + List supplierNameList = supplierManager.getSupplierNameListByTypeAndUserCode(Supplier.SUPPLIER_TYPE_RENTTOUSSE, AcegiHelper.getLoginUser().getUserName()); + if(CollectionUtils.isNotEmpty(supplierNameList)){ + sql += " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("supplierName", supplierNameList); + } + } + + if (StringUtils.isNotBlank(handlerDepartCodes)) { + String handlerDepartCodeSql = null; + for (String handlerDepartCode : handlerDepartCodes.split(";")) { + if (handlerDepartCodeSql == null) { + handlerDepartCodeSql = " and (po.handlerDepartCode = '" + + handlerDepartCode + "'"; + } else { + handlerDepartCodeSql += " or po.handlerDepartCode = '" + + handlerDepartCode + "'"; + } + } + sql += handlerDepartCodeSql + ")"; + } + if(StringUtils.isNotBlank(supplierName)){ + sql += String.format(" and po.supplierName='%s'", supplierName); + } + + if(showForeignTousseAncestorDefinition){ + sql += " and po.forDisplay != 0 "; + // 查询外来器械申请单创建的包定义 + } else { + if(!showDisableGoods){ + //用祖先id的话,有些旧数据祖先id是自己,就没办法停用了。 + sql += String.format(" and po.name not in(select distinct t.name from TousseDefinition t where t.tousseType = '%s' and t.forDisplay = 1 and t.isDisable = '%s') ", + TousseDefinition.PACKAGE_TYPE_FOREIGN,Constants.STR_YES); + } + } + + sql = getWhereSqlForAssetsBelong(useAssetsBelong, sql); + + // 防止把同名但是祖先包id不同的外来器械包定义被过滤掉 + sql += " group by po.name, po.ancestorID "; + + sql += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; + + // 只查询最近一次申请单生成的外来器械包定义或者外来器械包定义祖先包 + sql = " select max(po.id) from TousseDefinition po " + sql; + + List idList = new ArrayList(); + ResultSet rs = null; + + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + idList.add(rs.getLong(1)); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + if(idList == null || idList.size() == 0){ + return null; + } + + // 分页,如果没做分页,最多显示32767条记录 + int fromIndex = 0; + int toIndex = idList.size() > SqlUtils.IN_LIST_TOTAL_AMOUNT ? SqlUtils.IN_LIST_TOTAL_AMOUNT : idList.size(); + if(pageEntity != null){ + int size = idList.size(); + int start = pageEntity.getStart(); + int limit = pageEntity.getLimit(); + fromIndex = start; + toIndex = (start + limit) > size ? size : (start + limit); + pageEntity.setCount(size); + } + // 在查询出来的id中,截取分页需要显示的id + List tempIdList = idList.subList(fromIndex, toIndex); + + String sql2 = String.format(" where 1=1 and %s ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tempIdList)); + + sql2 += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; + + @SuppressWarnings("unchecked") + List tousseDefinitions = objectDao.findBySql( + TousseDefinition.class.getSimpleName(), sql2); + + return tousseDefinitions; + } + @Override @SuppressWarnings("unchecked") public JSONObject searchTousseDefinition(SearchTousseDefinitionParams params) { @@ -877,19 +990,28 @@ String supplierName = params.supplierName; boolean showDisableGoods = params.showDisableGoods; boolean showForeignTousseAncestorDefinition = params.showForeignTousseAncestorDefinition; + PageEntity pageEntity = params.pageEntity; JSONObject json = null; - List tousseDefinitions = searchTousseDefinitions(searchString, tousseType, - handlerDepartCodes, supplierName, showDisableGoods,showForeignTousseAncestorDefinition,false); + List tousseDefinitions = null; + if(TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tousseType)){ + tousseDefinitions = searchForeignTousseDefinitions(searchString, tousseType, + handlerDepartCodes, supplierName, showDisableGoods,showForeignTousseAncestorDefinition,false,pageEntity); + } else { + tousseDefinitions = searchTousseDefinitions(searchString, tousseType, + handlerDepartCodes, supplierName, showDisableGoods,showForeignTousseAncestorDefinition,false); + } List> mapList = new ArrayList>(); + Map tdNameMap = new HashMap(); // CSSDSYY-15 外来器械申请单页面新增加字段(外来器械申请时显示最近一次申请的包定义时,需要从祖先包获取灭菌方法、灭菌温度等新增字段) Map idToAncestorMap = new HashMap(); if(!showForeignTousseAncestorDefinition){ - List ancestorIdList = new ArrayList(); + Set ancestorIdSet = new HashSet(); for (TousseDefinition td : tousseDefinitions) { - ancestorIdList.add(td.getAncestorID()); + ancestorIdSet.add(td.getAncestorID()); } + List ancestorIdList = new ArrayList(ancestorIdSet); List ancestorTd = objectDao.findByIds(TousseDefinition.class.getName(), ancestorIdList); for (TousseDefinition td : ancestorTd) { idToAncestorMap.put(td.getId(), td); @@ -898,21 +1020,15 @@ for (TousseDefinition tousseDefinition : tousseDefinitions) { String displayName = tousseDefinition.getName(); - boolean isDisplayNameExist = false; - for (Map map : mapList) { - //某某医院发现包名称为null的情况 - if(map.get("displayName") == null){ - continue; - } - if (StringUtils.equals(map.get("displayName").toString(), - displayName)) { - isDisplayNameExist = true; - break; - } - } - if (isDisplayNameExist) { + Long ancestorID = tousseDefinition.getAncestorID(); + + if (tdNameMap.get(displayName + ancestorID.toString()) != null) { continue; } + + if(displayName != null){ + tdNameMap.put(displayName + ancestorID.toString(), displayName); + } String isThereIdCard = null; boolean isThereIDCard = isThereIDCard(tousseDefinition); @@ -923,6 +1039,7 @@ } Map temp = new HashMap(); temp.put("id", tousseDefinition.getId()); + temp.put("ancestorID", tousseDefinition.getAncestorID()); temp.put("name", tousseDefinition.getName()); temp.put("displayName", displayName); temp.put("isCleanedEntirely", @@ -964,7 +1081,7 @@ mapList.add(temp); } Map map = new HashMap(); - map.put("totalCount", tousseDefinitions.size()); + map.put("totalCount", pageEntity.getCount()); map.put("data", mapList); json = JSONObject.fromObject(map); return json; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r27975 -r28073 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 27975) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 28073) @@ -1112,6 +1112,7 @@ params.handlerDepartCodes = null; params.supplierName = supplierName; params.showDisableGoods = false; + params.pageEntity = PageUtil.getPagePara(); //外来器械申请时显示原始包定义还是显示最近一次申请的包定义 if("true".equals(isShowForeignTousseAncestorDefinitionForApply)){ params.showForeignTousseAncestorDefinition = true; @@ -1125,12 +1126,13 @@ for (int i = 0 ; i < array.size() ; i++) { JSONObject obj = array.optJSONObject(i); String tousseName = obj.optString("name"); + String ancestorID = obj.optString("ancestorID"); int index = tousseName.lastIndexOf("_"); if(index != -1){ tousseName = tousseName.substring(0,index); obj.put("name", tousseName); } - map.put(tousseName,obj); + map.put(tousseName + ancestorID,obj); } } JSONObject obj = new JSONObject(); @@ -1139,7 +1141,7 @@ for (String tousseName : map.keySet()) { data.add(map.get(tousseName)); } - obj.put("totalCount", data.size()); + obj.put("totalCount", params.pageEntity.getCount()); obj.put("data", data); StrutsResponseUtils.output(obj);