Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r14456 -r14458 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14456) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14458) @@ -1441,40 +1441,29 @@ String endDate = queryDate + " 23:59:59"; String supplyroomType = AcegiHelper.getLoginUser() .getOrgUnitCodingFromSupplyRoomConfig(); - String sql = " where po.packTime between " - + dateQueryAdapter.dateAdapter(startDate) + " and " - + dateQueryAdapter.dateAdapter(endDate) - + " and po.orgUnitCoding = '" + supplyroomType + "'"; - @SuppressWarnings("unchecked") - List list1 = objectDao.findBySql( - PackingRecord.class.getSimpleName(), sql); - + + String sql = "select case d.tousseType when '外来器械拆分小包' then '外来器械包' else d.tousseType end,sum(case d.tousseType when '" + TousseDefinition.PACKAGE_TYPE_DISINFECTION + "' then t.statisticsAmount else 1 end) " + + "from TousseInstance t,TousseDefinition d where t.tousseDefinition_id = d.id and t.operationTime between " + + dateQueryAdapter.dateAdapter(startDate) + " and " + dateQueryAdapter.dateAdapter(endDate)+" and t.orgUnitCoding='" + + deptCode + "' group by d.tousseType"; + + ResultSet rs = objectDao.executeSql(sql); Map tousseTypeMap = new HashMap(); - Integer amount = 0;// 总数 - for (PackingRecord packingRecord : list1) { - String tousseType = packingRecord.getTousseType(); - Integer tousseAmount = packingRecord.getAmount(); - if (TousseDefinition.PACKAGE_TYPE_DISINFECTION - .equals(tousseType)) {// 消毒物品按材料统计 - List tousseInstanceList = packingRecord - .getTousseInstanceList(objectDao); - if (tousseInstanceList != null - && tousseInstanceList.size() > 0) { - tousseAmount *= tousseInstanceList.get(0) - .getStatisticsAmount(); - } + Integer totalAmount = 0; + try { + while(rs.next()){ + String tousseType = rs.getString(1); + Integer amount = rs.getInt(2); + totalAmount += amount; + tousseTypeMap.put(tousseType,amount); } - if (tousseTypeMap.get(tousseType) == null) { - tousseTypeMap.put(tousseType, tousseAmount); - } else { - tousseTypeMap.put(tousseType, - (tousseTypeMap.get(tousseType) + tousseAmount)); - } - if(amount != null && tousseAmount != null){ - amount += tousseAmount; - } + } catch (SQLException e) { + e.printStackTrace(); + } finally{ + DatabaseUtil.closeResultSetAndStatement(rs); } Iterator iterator = tousseTypeMap.keySet().iterator(); + // 各类型包数量 while (iterator.hasNext()) { String title = iterator.next(); @@ -1487,7 +1476,7 @@ } PackingFractionDefectiveBean bean = new PackingFractionDefectiveBean(); bean.setDate(queryDate); - bean.setResult("" + amount); + bean.setResult("" + totalAmount); String title = "配包总数"; bean.setTitle(title); bean.setTitleSort(sourceSortMap.get(title)); @@ -1505,7 +1494,7 @@ monitoringSql, queryDate, returnList); // 不合格率列 PackingFractionDefectiveBean bean2 = getFractionDefectiveForPacking( - amount, unqualifiedAmount, queryDate); + totalAmount, unqualifiedAmount, queryDate); returnList.add(bean2); } // 月合计汇总行