Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r32391 -r32392 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 32391) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 32392) @@ -15391,11 +15391,19 @@ // 材料或者包数量和 Integer qmTousseAndMaterialAmount = 0; if(materialAndTousse){ - sql = " select sum(t.aAmount) count,sum(t.bAmount) total from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " - + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id join ( select qmi.id qid,sum(case when qmd.tousseDefinitionId is not null and qmd.material is not null and qmd.material<>'' then qmd.amount-1 else qmd.amount end ) aAmount,sum(case when qmd.material is null or qmd.material='' then 0 else qmd.amount end) bAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id " + sql = " select 0 count,sum(t.bAmount) total from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " + + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id join ( select qmi.id qid,sum(case when qmd.material is null or qmd.material='' then 0 else qmd.amount end) bAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id " + tousseNameSql + " group by qmi.id ) t on t.qid=qmi.id " + " where " + whereSql; + Set readIds = new HashSet(); + for (MonitoringItemBean bean : list) { + Long id = bean.getQualityMonitoringGoodsId(); + if(!readIds.contains(id)){ + readIds.add(id); + qmCount += bean.getAmount(); + } + } }else{ sql = " select count(0) count,sum(t.aAmount) total from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id join ( select qmi.id qid,sum(qmd.amount) aAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id " @@ -15406,7 +15414,9 @@ ResultSet rs = objectDao.executeSql(sql); try { while (rs.next()) { - qmCount = rs.getInt("count"); + if(!materialAndTousse){ + qmCount = rs.getInt("count"); + } qmTousseAndMaterialAmount = rs.getInt("total"); } } catch (SQLException e) {