Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java =================================================================== diff -u -r36338 -r36391 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36338) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36391) @@ -33,7 +33,10 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceAdditionalInfo; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.customform.forminstance.FormInstance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringGoods; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.jasperreports.javabeansource.RatioVo; @@ -331,7 +334,7 @@ Map sterilization_failureAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE)){ String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); - sterilization_failureAmount = getUnqualified(true, departmentCode, sterilization_failureSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); + sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); } /** * 14 物品发放错误 @@ -393,7 +396,7 @@ Map sterilization_faultAmount = null; if(dataIndexSources.contains(GoodsOption.MODEL_STERILIZATION_FAULT)){ String[] sterilization_faultSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAULT, definitionList); - sterilization_faultAmount = getUnqualified(true, departmentCode, sterilization_faultSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , null); + sterilization_faultAmount = getUnqualified(null, departmentCode, sterilization_faultSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , null); } /** * 21、灭菌记录确认次数 @@ -698,7 +701,7 @@ Map sterilization_failureAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE)){ String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); - sterilization_failureAmount = getUnqualified(true, departmentCode, sterilization_failureSource, year, queryScope, startTime, endTime , null); + sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, year, queryScope, startTime, endTime , null); } /** * 14 物品发放错误 @@ -762,7 +765,7 @@ Map sterilization_faultAmount = null; if(dataIndexSources.contains(GoodsOption.MODEL_STERILIZATION_FAULT)){ String[] sterilization_faultSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAULT, definitionList); - sterilization_faultAmount = getUnqualified(true, departmentCode, sterilization_faultSource, year, queryScope, startTime, endTime , null); + sterilization_faultAmount = getUnqualified(null, departmentCode, sterilization_faultSource, year, queryScope, startTime, endTime , null); } /** * 21、灭菌记录确认次数 @@ -1255,15 +1258,15 @@ } /** * 获取每个月的不合格数. - * @param tousse 是否器械包(如果为true则取质量监测登记的器械包,反之取材料) + * @param tousse 是否器械包(如果为true则取质量监测登记的器械包,false反之取材料 null去记录条数) * @param departmentCode 处理供应室的科室编码 * @param unqualifiedSource 不合格数来源 * @param date 查询的时间范围,如果queryScope=月,则为yyyy,如果queryScope=日,则为yyyy-mm * @param qqueryScope 查询的精度(月/天) * @return */ private Map getUnqualified( - boolean tousse, String departmentCode, String[] unqualifiedSource, String date, String queryScope, String startTime, String endTime, List firstDayToLastDay) { + Boolean tousse, String departmentCode, String[] unqualifiedSource, String date, String queryScope, String startTime, String endTime, List firstDayToLastDay) { Map map = new HashMap(); if (StringTools.isNotBlank(departmentCode) && ArrayUtils.isNotEmpty(unqualifiedSource) && (StringTools.isNotBlank(date) || StringTools.isNotBlank(startTime) && StringTools.isNotBlank(endTime))) { String qmiDateTimeSql = null; @@ -1278,22 +1281,44 @@ startTime = date + "-01-01 00:00:00"; endTime = DataIndex.getNextYear(date) + " 00:00:00"; } - - String sql = "select " + qmiDateTimeSql - + " dateTime,sum(qmg.amount) amount " - + "from QualityMonitoringInstance qmi " - + "join FormInstance fi on fi.id=qmi.id " - + "join FormDefinition fd on fd.id=fi.formDefinition_id " - + "join QualityMonitoringDefinition qmdf on qmdf.id=fd.id " - + "join QualityMonitoringGoods qmg on qmg.qualityMonitoringInstance_id=fi.id " - + "where " + (tousse ? " qmg.tousseName is not null " : " (qmg.tousseName is null or qmg.tousseName='') ") - + "and fd.formType = '" + FormDefinition.FOMRTYPE_QUALITYMONITORING+ "' " - + SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(departmentCode) - + SqlUtils.get_InSql("fd.formName", unqualifiedSource) - + " and " + dateQueryAdapter.dateAreaSql("qmi.datetime", startTime, endTime) - + "group by " + qmiDateTimeSql; - - ResultSet rs = objectDao.executeSql(sql); + StringBuffer sql = new StringBuffer(); + sql.append("select "); + sql.append(qmiDateTimeSql); + if(tousse == null){ + sql.append(" dateTime,count(distinct fi.id) amount from "); + }else{ + sql.append(" dateTime,sum(qmg.amount) amount from "); + } + sql.append(QualityMonitoringInstance.class.getSimpleName()); + sql.append(" qmi join "); + sql.append(FormInstance.class.getSimpleName()); + sql.append(" fi on fi.id=qmi.id join "); + sql.append(FormDefinition.class.getSimpleName()); + sql.append(" fd on fd.id=fi.formDefinition_id join "); + sql.append(QualityMonitoringDefinition.class.getSimpleName()); + sql.append(" qmdf on qmdf.id=fd.id "); + if(tousse != null){ + sql.append(" join "); + sql.append(QualityMonitoringGoods.class.getSimpleName()); + sql.append(" qmg on qmg.qualityMonitoringInstance_id=fi.id "); + if(tousse){ + sql.append(" where qmg.tousseName is not null "); + }else{ + sql.append(" where (qmg.tousseName is null or qmg.tousseName='') "); + } + }else{ + sql.append(" where 1=1 "); + } + sql.append(" and fd.formType = '"); + sql.append(FormDefinition.FOMRTYPE_QUALITYMONITORING); + sql.append("' "); + sql.append(SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(departmentCode)); + sql.append(SqlUtils.get_InSql("fd.formName", unqualifiedSource)); + sql.append(" and "); + sql.append(dateQueryAdapter.dateAreaSql("qmi.datetime", startTime, endTime)); + sql.append(" group by "); + sql.append(qmiDateTimeSql); + ResultSet rs = objectDao.executeSql(sql.toString()); try { while (rs.next()) { String month = StringTools.defaultString(rs.getString("dateTime"));