Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java =================================================================== diff -u -r13664 -r13672 --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java (.../SupplyRoomControlManagerImpl.java) (revision 13664) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java (.../SupplyRoomControlManagerImpl.java) (revision 13672) @@ -283,12 +283,14 @@ SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); String orgUnitCoding = config.getOrgUnitCoding(); - String countSql = "select count(*),count(*),count(*) from (select ti.tousseName "; - String totalCountSql = "select count(*),count(*),count(*) "; - String sql = "select ti.tousseName as \"tousseName\",sr.id as \"id\",sr.sterilizationUser as \"operator\",s.name as \"disinfectIdentification\"," - + "sr.frequency as \"frequency\",sr.sterilizationType as \"disinfectProgram\",sr.startDate as \"startDate\"," - + "sr.endDate as \"endDate\",c.containerName as \"basketName\",count(*) as \"amount\" "; - String whereSql = "from Container c,SterilizationRecord sr " + String joinedBasketSql = "select ti.tousseName,sr.id,sr.sterilizationUser operator,s.name disinfectIdentification," + + "sr.frequency,sr.sterilizationType disinfectProgram,sr.startDate startDate," + + "sr.endDate ,c.containerName basketName "; + String notJoinedBasketSql = "select ti.tousseName,sr.id,sr.sterilizationUser operator,s.name disinfectIdentification," + + "sr.frequency,sr.sterilizationType disinfectProgram,sr.startDate startDate," + + "sr.endDate ,'' basketName "; + + /*String whereSql = "from Container c,SterilizationRecord sr " + "left join Sterilizer s on s.id = sr.sterilizer_id " + "left join sterilization_reviewed st on st.sterilizationRecord_id = sr.id " + "left join ReviewedBasket rb on rb.id = st.reviewedBasket_id " @@ -301,18 +303,49 @@ + "and sr.endDate between " + dateQueryAdapter.dateAdapter(statDate) + " and " - + dateQueryAdapter.dateAdapter(endDate); + + dateQueryAdapter.dateAdapter(endDate);*/ - if (StringUtils.isNotBlank(tousseName)) { - whereSql += " and ti.tousseName = '" + tousseName + "'"; - } - totalCountSql += whereSql; + String joinedBasketWhereSql = "from TousseInstance ti left join TousseDefinition td on ti.toussename = td.name " + + "left join ReviewedBasket rb on rb.id = ti.reviewBasket_id " + + "left join Container c on c.id = rb.container_id " + + "left join sterilization_reviewed st on st.reviewedBasket_id = rb.id " + + "left join SterilizationRecord sr on sr.id = st.sterilizationRecord_id " + + "left join Sterilizer s on s.id = sr.sterilizer_id " + + "where 1=1 " + //+ "and ti.status='"+ TousseInstance.STATUS_STERILED +"' " + + "and sr.orgUnitCoding = '"+orgUnitCoding+"' " + + "and td.tousseType in (" + TOUSSE_TYPE + ") " + + "and sr.status = '"+SterilizationRecord.STERILIZATION_STATUS_END+"' " + + "and sr.endDate between " + + dateQueryAdapter.dateAdapter(statDate) + + " and " + + dateQueryAdapter.dateAdapter(endDate); - whereSql += " group by ti.tousseName,sr.id,sr.sterilizationUser,s.name,sr.frequency,sr.sterilizationType,sr.startDate,sr.endDate,c.containerName"; + String notJoinedBasketWhereSql = "from TousseInstance ti left join TousseDefinition td on ti.toussename = td.name " + + "left join sterilization_tousseInstance st on st.tousseInstance_id = ti.id " + + "left join SterilizationRecord sr on sr.id = st.sterilizationRecord_id " + + "left join Sterilizer s on s.id = sr.sterilizer_id " + + "where 1=1 and sr.orgUnitCoding = '"+orgUnitCoding+"' " + + "and td.tousseType in (" + TOUSSE_TYPE + ") " + + "and sr.status = '"+SterilizationRecord.STERILIZATION_STATUS_END+"' " + + "and sr.endDate between " + + dateQueryAdapter.dateAdapter(statDate) + + " and " + + dateQueryAdapter.dateAdapter(endDate); - countSql += whereSql + ")alias"; - sql += whereSql; + //String groupBySql = " group by ti.tousseName,sr.id,sr.sterilizationUser,s.name,sr.frequency,sr.sterilizationType,sr.startDate,sr.endDate,c.containerName"; + String groupBySql = " group by alias.tousseName,alias.id,alias.operator,alias.disinfectProgram,alias.frequency,alias.disinfectIdentification,alias.startDate,alias.endDate,alias.basketName"; + if (StringUtils.isNotBlank(tousseName)) { + joinedBasketWhereSql += " and ti.tousseName = '" + tousseName + "'"; + notJoinedBasketWhereSql += " and ti.tousseName = '" + tousseName + "'"; + } + String whereSql = "(" + joinedBasketSql + joinedBasketWhereSql + " union all " + notJoinedBasketSql + notJoinedBasketWhereSql + ") alias " + groupBySql; + String countSql = "select count(*),count(*),count(*) from (select alias.* from " + whereSql + ") alias1"; + + String sql = "select *,count(*) amount from " + whereSql; + String totalCountSql = "select sum(alias2.amount),sum(alias2.amount),sum(alias2.amount) from (" + sql + ") alias2"; + Integer [] amountArray = countBySql(countSql); int totalCount = amountArray[0]; Integer [] totalAmountArray = countBySql(totalCountSql);