Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33398 -r33402 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33398) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33402) @@ -11242,6 +11242,9 @@ String tempSql = ""; //如果goodsId不为空则则按照goodsId查,否则查全部的一次性物品和全部的器械包,此时不显示同单明细,否则有交叉 + if(StringUtils.isBlank(disposableGoodIds) && StringUtils.isBlank(expensiveGoodIds) && StringUtils.isBlank(tousseInstanceIds)){ + return tousseInstanceSql + " union all " + disposableGoodsSql + " union all " + expensiveGoodsSql; + } //1、一次性物品 if (StringUtils.isNotBlank(disposableGoodIds)) { if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) @@ -11257,19 +11260,23 @@ } if (StringUtils.isNotBlank(expensiveGoodIds)) { if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) - String useRecordIds = "select distinct egi.userecordId from ExpensiveGoodsInstance egi join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("eg.id", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + String useRecordIds = "select distinct egi.userecordId from ExpensiveGoodsInstance egi join ExpensiveGoods eg on eg.id=egi.expensiveGoods_id where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("eg.id", SqlUtils.splitStringToSet(expensiveGoodIds, ";")); expensiveGoodsSql += " and ur.id in(" + useRecordIds + ") "; expensiveGoodsSql += " union all " + tousseInstanceSql + " and ur.id in (" + useRecordIds + ") "; expensiveGoodsSql += " union all " + disposableGoodsSql + " and ur.id in (" + useRecordIds + ") "; }else{ expensiveGoodsSql += " and " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("eg.id", SqlUtils.splitStringToSet(disposableGoodIds, ";")); } - tempSql = expensiveGoodsSql; + if(StringUtils.isNotBlank(tempSql)){ + tempSql += " union all " + expensiveGoodsSql; + }else{ + tempSql = expensiveGoodsSql; + } //3、器械包 } if (StringUtils.isNotBlank(tousseInstanceIds)) { //由于器械包的包定义的id,有可能是由其他包定义生成的(消毒物品\自定义器械包),而goodsId是祖先id,所以要先查出goodsId的后代id - String toussedefIds = "select id from tousseDefinition where ancestorID=" + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ancestorID", SqlUtils.splitStringToSet(disposableGoodIds, ";")); + String toussedefIds = "select id from tousseDefinition where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ancestorID", SqlUtils.splitStringToSet(tousseInstanceIds, ";")); if(showOther){ //显示同单的其他物品,则需要查出所有使用记录的id,找出每一个使用记录的所有物品(一次性物品和器械包) String useRecordIds = "select distinct useRecord_id from tousseInstance where tousseDefinition_id in (" + toussedefIds + ") "; tousseInstanceSql += " and ur.id in (" + useRecordIds + ") "; @@ -11278,11 +11285,12 @@ }else{ tousseInstanceSql += " and ti.tousseDefinition_id in ( " + toussedefIds + " ) "; } - tempSql = tousseInstanceSql; + if(StringUtils.isNotBlank(tempSql)){ + tempSql += " union all " + tousseInstanceSql; + }else{ + tempSql = tousseInstanceSql; + } } - if(StringUtils.isBlank(tempSql)){ - tempSql = tousseInstanceSql + " union all " + disposableGoodsSql + " union all " + expensiveGoodsSql; - } return tempSql; }