Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/WashWorkloadReprotHelper.java =================================================================== diff -u -r35983 -r40479 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/WashWorkloadReprotHelper.java (.../WashWorkloadReprotHelper.java) (revision 35983) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/WashWorkloadReprotHelper.java (.../WashWorkloadReprotHelper.java) (revision 40479) @@ -49,8 +49,8 @@ private CommonReportHelper commonReportHelper; /** * 获取清洗区工作量及不合格率统计报表的数据 - * @param startMonth 开始时间 - * @param endMonth 结束时间 + * @param startTime 开始时间 + * @param endTime 结束时间 * @param querySupplyRoom 供应室 * @param queryDateType 查询时间类型 year or month or day * @return @@ -183,7 +183,8 @@ washDateAmountMap = commonReportHelper.getWashWorkloadAmountMap(washWorkloadSql,true); //查询不合格 String[] washSumUnqualifiedSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, null); - String unQualitySql = DataIndex.getQMAmountSqlByFormNames(washSumUnqualifiedSource, params, true); + boolean enableCountToussesMaterialsDuringWashWorkloadReport = CssdUtils.getSystemSetConfigByNameBool("enableCountToussesMaterialsDuringWashWorkloadReport", false); + String unQualitySql = enableCountToussesMaterialsDuringWashWorkloadReport?DataIndex.getQMAmountSqlByFormNamesAndParent(washSumUnqualifiedSource, params):DataIndex.getQMAmountSqlByFormNames(washSumUnqualifiedSource, params, true); ResultSet unQualityRs = null; try { unQualityRs = objectDao.executeSql(unQualitySql); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java =================================================================== diff -u -r39834 -r40479 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 39834) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 40479) @@ -2343,8 +2343,43 @@ } return sql; } - /** + * 根据监测项的名称,查询该监测项下的登记的物品的数量 + * 如果有归属关系 只显示子对象的数量 + * 如果没有归属关系 是包就显示这个包的所有材料数量 是材料就直接显示材料数量 + * @param formNames 数据库的表单定义表的表单名字字段,即质量监测定义的监测项的名字 + * @param obj + * @return + */ + public static String getQMAmountSqlByFormNamesAndParent(String[] formNames, ReportQueryParams obj) { + + String groupByToken = ""; + + if (StringUtils.isNotBlank(obj.monthlyStr)){ + groupByToken = obj.monthlyStr + " monthstr,"; + } + String sql = "select " + groupByToken + + "sum(case when qmd.parentId is null and qsub.parentId is null and qmd.tousseDefinitionId is not null then td.materialAmount * qmd.amount " + + " else qmd.amount end ) as amount " + + obj.extraSelectColumns + +" from QualityMonitoringInstance qi ,FormInstance fi,FormDefinition fd,QualityMonitoringDefinition qmdf ,QualityMonitoringGoods qmd " + + " left join TousseDefinition td on td.id=qmd.tousseDefinitionId " + + " left join ( select sub.parentId " + + " from QualityMonitoringGoods sub where sub.parentId is not null " + + " group by sub.parentId ) " + + " qsub on qsub.parentId=qmd.id" + + " where qmdf.id=fd.id and qi.id = fi.id and fi.formDefinition_id = fd.id and qi.id=qmd.qualityMonitoringInstance_id " + getIsQualifiedSql("qi") + + SqlUtils.get_LikeSql("fd.formName", formNames) + + "and qi.datetime " + obj.betweenSql + + SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(obj.querySupplyRoom) + + " and qsub.parentId is null and fd.formType = '质量监测' "; + + if (StringUtils.isNotBlank(obj.monthlyStr)){ + sql += " group by " + obj.monthlyStr + obj.extraGroupBy; + } + return sql; + } + /** * 获取质量监测查询的sql,根据监测项的名称,查询登记的质量监测和定期监测记录中数量的总和 * 本查询没有监测类型的限制,包括质量监测和定期监测 * @param inspectItemName