Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DeviceMaintenanceHelper.java =================================================================== diff -u -r41168 -r41169 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DeviceMaintenanceHelper.java (.../DeviceMaintenanceHelper.java) (revision 41168) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/DeviceMaintenanceHelper.java (.../DeviceMaintenanceHelper.java) (revision 41169) @@ -9,7 +9,9 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +38,7 @@ import com.forgon.tools.MathTools; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.util.SqlUtils; /** * * 各种设备维护报表 @@ -346,13 +349,23 @@ }else if(enableCustomReportDisplayOptions){ requestParameters.put("jasperreportName","formInstanceReportShowAnswer.jasper"); } + Set ids = null; + if(StringUtils.isNotBlank(reportQueryItemName)){ + ids = objectDao.getLongSet("select fi.id from " + + FormInstance.class.getSimpleName() + + " fi join " + + FormInstanceItem.class.getSimpleName() + + " fii on fii.formInstance_id=fi.id join " + + FormDefinitionItem.class.getSimpleName() + + " fdi on fdi.id= fii.formDefinitionItem_id " + + " where fdi.name='" + + reportQueryItemName + +"' and fii.dateAnswer " + + betweenSql); + } sql = String.format( - "where po.formDefinition.formName = '%s' and " - + (StringUtils.isNotBlank(reportQueryItemName)?" exists (select 1 from " - + FormInstanceItem.class.getSimpleName() - + " fii where fii.definitionItem.name='" - + reportQueryItemName - +"' and fii.dateAnswer %s) ":" po.createDate %s") + "where po.formDefinition.formName = '%s' " + + (CollectionUtils.isNotEmpty(ids)?SqlUtils.getInLongListSql("po.id", ids):" and po.createDate %s") + "", formName,betweenSql); if(StringUtils.isNotBlank(departCoding)){