Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r16154 -r16164 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 16154) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 16164) @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -192,7 +193,7 @@ * @param orgUnit * @return */ - public List getCssdHandleTousseDefinitionList(OrgUnit cssdOrgUnit,String spell,int start,int limit,JSONObject retObj); + public List getCssdHandleTousseDefinitionList(OrgUnit cssdOrgUnit,String spell,int start,int limit,Set predicates,JSONObject retObj); /** * 新建或修改科室处理器械包配置 Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionHelper.java =================================================================== diff -u -r15582 -r16164 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionHelper.java (.../TousseDefinitionHelper.java) (revision 15582) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionHelper.java (.../TousseDefinitionHelper.java) (revision 16164) @@ -83,6 +83,32 @@ } return map; } + + public Map filterResultByTousseType2(String tousseType, TousseDefinition tousseDefinition) { + Map map = null; + Double price = tousseDefinition.getPrice(); + //如果类型为消毒物品,则只保留类型为消毒物品的数据 + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)) { + price = tousseDefinitionManager.getDisinfectGoodsPrice(tousseDefinition); + map = this.setReturnResult(tousseDefinition, price); + } + //如果类型为敷料包,则只保留类型为敷料包的数据 + else if (TousseDefinition.PACKAGE_TYPE_DRESSING.equals(tousseType)) { + map = this.setReturnResult(tousseDefinition, price); + } + //如果类型为组合申请单或者器械包申请单,则保留类型为器械包,消毒物品,敷料包(组合申请单后面会添加一次性物品,器械包申请单则不会) + else if ("combo".equals(tousseType) || TousseDefinition.PACKAGE_TYPE_INSIDE.equals(tousseType)) { + map = this.setReturnResult(tousseDefinition, price); + } + //如果器械包分组为专科器械组,则只保留类型为专科器械组的数据 + else if (TousseDefinition.TOUSSE_GROUP_SPECIALIZED_INSTRUMENT.equals(tousseType)) { + map = this.setReturnResult(tousseDefinition, price); + } + else { + map = this.setReturnResult(tousseDefinition, price); + } + return map; + } /** Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r16156 -r16164 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 16156) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 16164) @@ -14,22 +14,17 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; -import com.forgon.disinfectsystem.tousse.toussedefinition.service.GoodBindHelper; -import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionHelper; -import com.forgon.tools.json.JSONUtil; -import com.forgon.tools.util.PageUtil; -import com.google.gson.reflect.TypeToken; - import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; @@ -64,9 +59,12 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.GoodBindHelper; import com.forgon.disinfectsystem.tousse.toussedefinition.service.SearchTousseDefinitionParams; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionHelper; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousse.videomanager.service.VideoFileManager; @@ -79,7 +77,11 @@ import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; +import com.forgon.tools.util.PageUtil; +import com.forgon.tools.util.SqlUtils; +import com.google.gson.reflect.TypeToken; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -1503,6 +1505,37 @@ return null; } + private Set getPredicates(String tousseType) { + Set predicates = new HashSet(); + Set tousseTypes = new HashSet(); + //如果类型为消毒物品,则只保留类型为消毒物品的数据 + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)) { + tousseTypes.add(tousseType); + } + //如果类型为敷料包,则只保留类型为敷料包的数据 + else if (TousseDefinition.PACKAGE_TYPE_DRESSING.equals(tousseType)) { + tousseTypes.add(tousseType); + } + //如果类型为组合申请单或者器械包申请单,则保留类型为器械包,消毒物品,敷料包(组合申请单后面会添加一次性物品,器械包申请单则不会) + else if (TousseDefinition.PACKAGE_TYPE_INSIDE.equals(tousseType)) { + tousseTypes.add(tousseType); + }else if ("combo".equals(tousseType)) { + tousseTypes.add(TousseDefinition.PACKAGE_TYPE_INSIDE); + tousseTypes.add(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + tousseTypes.add(TousseDefinition.PACKAGE_TYPE_DRESSING); + } + //如果器械包分组为专科器械组,则只保留类型为专科器械组的数据 + else if (TousseDefinition.TOUSSE_GROUP_SPECIALIZED_INSTRUMENT.equals(tousseType)) { + predicates.add(SqlUtils.getStringFieldPredicate("tousseGroupName", TousseDefinition.TOUSSE_GROUP_SPECIALIZED_INSTRUMENT)); + } + else { + + } + if(!tousseTypes.isEmpty()){ + predicates.add(SqlUtils.getStringFieldInCollectionsPredicate("tousseType", tousseTypes)); + } + return predicates; + } // 搜索组合物品,包含器械包和一次性物品 public String searchComboGoodsData() { //下拉框分页(开始记录数及每页记录数) @@ -1554,12 +1587,13 @@ if(!TousseItem.TYPE_DIPOSABLE_GOODS.equals(tousseType)){ OrgUnit cssd = new OrgUnit(); cssd.setOrgUnitCoding(cssdOrgUnitCode); + Set predicates = getPredicates(tousseType); List tousseDefinitiionList = - tousseDefinitionManager.getCssdHandleTousseDefinitionList(cssd,spell,start,limit,retObj); + tousseDefinitionManager.getCssdHandleTousseDefinitionList(cssd,spell,start,limit,predicates,retObj); if(CollectionUtils.isNotEmpty(tousseDefinitiionList)){ for(TousseDefinition tousseDefinition : tousseDefinitiionList){ - Map map = tousseDefinitionHelper.filterResultByTousseType(tousseType,tousseDefinition); + Map map = tousseDefinitionHelper.filterResultByTousseType2(tousseType,tousseDefinition); if(map != null){ mapList.add(map); } @@ -1584,26 +1618,29 @@ totalCount = mapList2.size(); }else{ totalCount = JSONUtil.optInteger(retObj, "totalCount", 0); - totalCount += mapList2.size(); if(mapList.size() >= limit){ // 器械包已满足一页数据 mapDataList.addAll(mapList); }else{ mapDataList.addAll(mapList); if(mapList2.size() > 0){ - int endIndex = start + limit; - if(endIndex >= totalCount){ - int mapList2Start = endIndex - totalCount; - int mapList2SubListCoumt = limit - mapList.size(); - if(mapList2Start < mapList2.size()){ - int mapList2EndIndex = mapList2Start + mapList2SubListCoumt; - if(mapList2EndIndex > mapList2.size()){ - mapList2EndIndex = mapList2.size(); - } - mapList2 = mapList2.subList(mapList2Start, mapList2EndIndex); - mapDataList.addAll(mapList2); + int mapList2Start = 0; + int mapList2SubListCoumt = limit; + if(start > totalCount){ + mapList2Start = start - totalCount; + }else{ + mapList2SubListCoumt = limit - mapList.size(); + } + if(mapList2Start < mapList2.size()){ + int mapList2EndIndex = mapList2Start + mapList2SubListCoumt; + if(mapList2EndIndex > mapList2.size()){ + mapList2EndIndex = mapList2.size(); } + mapList2 = mapList2.subList(mapList2Start, mapList2EndIndex); + mapDataList.addAll(mapList2); + totalCount += mapList2.size(); } + } } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r16158 -r16164 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 16158) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 16164) @@ -13,6 +13,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -2015,14 +2016,19 @@ @SuppressWarnings("unchecked") @Override public List getCssdHandleTousseDefinitionList( - OrgUnit cssdOrgUnit,String spell,int start,int limit,JSONObject retObj) { + OrgUnit cssdOrgUnit,String spell,int start,int limit,Set predicates,JSONObject retObj) { List list = null; int totalCount = 0; String whereSql = " where id in (select tousseDefinitionId from " + CssdHandleTousses.class.getSimpleName() + " where orgUnitCode = '" + cssdOrgUnit.getOrgUnitCoding() + "')"; whereSql += " and (spelling like '%" + spell + "%' or wbCode like '%" + spell + "%' or externalCode like '" + spell + "%' or name like '%" + spell + "%') and (isDisable is null or isDisable = '"+TousseDefinition.STR_NO+"')"; + if(!predicates.isEmpty()){ + for (String predicate : predicates) { + whereSql += " and " + predicate; + } + } String findSql = String.format(" from %s %s ", TousseDefinition.class.getSimpleName(),whereSql); if(limit > 0){ list = objectDao.findByHql(findSql,start,limit);