Index: ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java =================================================================== diff -u -r13710 -r13726 --- ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java (.../GridManagerImpl.java) (revision 13710) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java (.../GridManagerImpl.java) (revision 13726) @@ -28,7 +28,9 @@ import com.forgon.component.grid.vo.GridVo; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.tools.MathTools; @@ -48,7 +50,14 @@ private ObjectDao objectDao; private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + public void setSupplyRoomConfigManager( + SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { this.dateQueryAdapter = dateQueryAdapter; } @@ -199,26 +208,56 @@ if(TousseInstance.class.getSimpleName().equals(poClass)){ Map sqlWhereParamMap = getParamFromView(parameterMap); String taskGroup = sqlWhereParamMap.get("taskGroup"); - sql += " and tousseDefinition in (select td from TousseDefinition td where td.ancestorID in (select ct.tousseDefinitionId from CssdHandleTousses ct " - + "where ct.taskGroup='" + taskGroup + "' and ct.orgUnitCode='" + orgUnitCoding + "'))"; - list = objectDao - .findBySql(poClass, sql, start, pageSize, orderStr); + String hqlCondition = "";//用于查询记录的hql语句条件 + String sqlCondition = "";//用于查询数量的sql语句条件 + if (StringUtils.isNotBlank(taskGroup)) { + //科室供应室配置 + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + hqlCondition += " and ("; + sqlCondition += " and ("; + //器械包、消毒物品、敷料包根据任务组进行过滤 + hqlCondition += "(tousseDefinition.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_INSIDE+"','"+TousseDefinition.PACKAGE_TYPE_DISINFECTION+"','"+TousseDefinition.PACKAGE_TYPE_DRESSING+"') " + + "and tousseDefinition in (select td from TousseDefinition td where td.ancestorID in (select ct.tousseDefinitionId from CssdHandleTousses ct " + + "where ct.taskGroup='" + taskGroup + "' and ct.orgUnitCode='" + orgUnitCoding + "')))"; + + sqlCondition += "(tousseDefinition_id in (select id from tousseDefinition where tousseType in ('"+TousseDefinition.PACKAGE_TYPE_INSIDE+"','"+TousseDefinition.PACKAGE_TYPE_DISINFECTION+"','"+TousseDefinition.PACKAGE_TYPE_DRESSING+"') " + + "and ancestorID in (select ct.tousseDefinitionId from CssdHandleTousses ct " + "where ct.taskGroup='" + taskGroup + "' and ct.orgUnitCode='" + orgUnitCoding + "')))"; + + if(taskGroup.equals(supplyRoomConfig.getCustomTousseDefaultTaskGroup())){ + //自定义器械包按任务组进行过滤 + hqlCondition += " or tousseDefinition.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')"; + sqlCondition += " or tousseDefinition_id in (select id from tousseDefinition where tousseType in ('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"'))"; + } + + if(taskGroup.equals(supplyRoomConfig.getDefalutTaskGroup())){ + //外来器械包、外来器械拆分小包按任务组进行过滤 + hqlCondition += " or tousseDefinition.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"')"; + sqlCondition += " or tousseDefinition_id in (select id from tousseDefinition where tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"'))"; + } + + //外部代理灭菌 + hqlCondition += " or tousseDefinition.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY+"')"; + sqlCondition += " or tousseDefinition_id in (select id from tousseDefinition where tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY+"'))"; + + hqlCondition += ")"; + sqlCondition += ")"; + } + list = objectDao.findBySql(poClass, sql + hqlCondition, start, pageSize, orderStr); if(CollectionUtils.isNotEmpty(list)){ //任务组条件 if (StringUtils.isNotBlank(taskGroup)) { - List tousseInstanceList = new ArrayList(); + /*List tousseInstanceList = new ArrayList(); for(Object obj : list){ TousseInstance tousseInstance = (TousseInstance)obj; if(StringUtils.equals(taskGroup, getTousseTaskGroupByOrgUnitCode(tousseInstance.getTousseDefinition(),orgUnitCoding))){ tousseInstance.setTaskGroup(taskGroup); tousseInstanceList.add(tousseInstance); } } - list = tousseInstanceList; + list = tousseInstanceList;*/ //数量重新计算 - totalResults = objectDao.countBySql("select count(0) from TousseInstance ti join TousseDefinition td on ti.tousseDefinition_id=td.id join CssdHandleTousses ct on td.ancestorID=ct.tousseDefinitionId " - + "where ti.status = '" + TousseInstance.STATUS_PACKED + "' and ct.taskGroup='" + taskGroup + "' and ct.orgUnitCode='" + orgUnitCoding + "'"); + totalResults = objectDao.countBySql("select count(0) from TousseInstance po " + sql + sqlCondition); } } }