Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java =================================================================== diff -u -r37425 -r37427 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 37425) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 37427) @@ -1630,33 +1630,36 @@ } String tousseAssociationIdSql = SqlUtils.getNonStringFieldInLargeCollectionsPredicate("tousseDefinitionId", applicationTousseDefinitionIdSet); + String ancestorIdSql = SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ancestor.id", applicationTousseDefinitionIdSet); String sql = String.format("select ti.id from Storage_TousseInstance st " + "join StorageLocation sl on sl.id = st.storageLocationId " + "join TousseInstance ti on ti.id = st.tousseInstanceId " + "join TousseDefinition td on td.id = ti.tousseDefinition_id " + "join TousseDefinition ancestor on ancestor.id = td.ancestorID " - + "join TousseAssociationDetail tad on tad.tousseDefinitionId = ancestor.id " + + "left join TousseAssociationDetail tad on tad.tousseDefinitionId = ancestor.id " + "where sl.orgUnitCode = '%s' " - + "and ti.status in ('%s','%s') " - + "and tad.tousseAssociationId in (select tousseAssociationId from TousseAssociationDetail where %s ) " + + "and ti.status = '%s' " + + "and (tad.tousseAssociationId in (select tousseAssociationId from TousseAssociationDetail where %s ) or %s) " + "union all " + "select ti.id from Storage_TousseInstance st " + "join StorageLocation sl on sl.id = st.storageLocationId " + "join TousseInstance ti on ti.id = st.tousseInstanceId " + "join TousseDefinition td on td.id = ti.tousseDefinition_id " + "join TousseDefinition parent on parent.id = td.parentID " + "join TousseDefinition ancestor on ancestor.id = parent.ancestorID " - + "join TousseAssociationDetail tad on tad.tousseDefinitionId = ancestor.id " + + "left join TousseAssociationDetail tad on tad.tousseDefinitionId = ancestor.id " + "where sl.orgUnitCode = '%s' " - + "and ti.status in ('%s','%s') " - + "and tad.tousseAssociationId in (select tousseAssociationId from TousseAssociationDetail where %s ) ", + + "and ti.status = '%s' " + + "and (tad.tousseAssociationId in (select tousseAssociationId from TousseAssociationDetail where %s ) or %s) ", departCoding, - TousseInstance.STATUS_STERILED, TousseInstance.STATUS_DISINFECTED, + TousseInstance.STATUS_STERILED, tousseAssociationIdSql, + ancestorIdSql, departCoding, - TousseInstance.STATUS_STERILED, TousseInstance.STATUS_DISINFECTED, - tousseAssociationIdSql); + TousseInstance.STATUS_STERILED, + tousseAssociationIdSql, + ancestorIdSql); Set tousseInstanceIdSet = new HashSet(); ResultSet rs = null;