Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java =================================================================== diff -u -r32261 -r32264 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 32261) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 32264) @@ -978,7 +978,7 @@ case "发货数量": String miCountSql = null; if(dataSoureOfMaterialsCountOfToussesInReports == 3){ - miCountSql = "ti.materialAmount"; + miCountSql = "case when ((td.isApplyEntireTousse='否' and td.tousseType='消毒物品') or td.tousseType='自定义器械包') then ii.materialAmount*ii.amount else ii.amount end"; joinMaterialInstanceSql = ""; }else{ miCountSql = "mi.count"; @@ -987,8 +987,8 @@ if(!obj.getIsOnlyQueryComboTousse()){ amountSql = String .format("select sum(%s) amount %s " - + "from Invoice i inner join TousseInstance ti on ti.invoice_id = i.id inner join TousseDefinition td on ti.tousseDefinition_id = td.id " - + " %s where ti.comboTousseInstanceId is null and ti.comboTousseDefinitionId is null and i.sendTime %s %s " + + "from Invoice i inner join InvoiceItem ii on ii.invoice_id=i.id inner join TousseDefinition td on ii.tousseDefinitionId = td.id " + + " %s where i.sendTime %s %s " + "and i.sender is not null and %s(i.sender)<>0 %s %s %s %s %s", miCountSql, obj.extraSelectColumns, @@ -1006,6 +1006,13 @@ if(!obj.getIsOnlyQueryComboTousse()){ amountSql += " union all "; } + if(dataSoureOfMaterialsCountOfToussesInReports == 3){ + miCountSql = "ti.materialAmount"; + joinMaterialInstanceSql = ""; + }else{ + miCountSql = "mi.count"; + joinMaterialInstanceSql = "inner join MaterialInstance mi on mi.tousse_id = td.id"; + } amountSql += String .format("select sum(%s) amount %s " + "from Invoice i inner join TousseInstance ti on ti.invoice_id = i.id inner join TousseDefinition td on ti.tousseDefinition_id = td.id " @@ -1043,15 +1050,15 @@ case "年度报表中的发货数量(按材料)": if(dataSoureOfMaterialsCountOfToussesInReports == 3){ - amountColumnSql = "ti.materialAmount"; + amountColumnSql = "case when ((td.isApplyEntireTousse='否' and td.tousseType='消毒物品') or td.tousseType='自定义器械包') then ii.materialAmount*ii.amount else ii.amount end"; joinMaterialInstanceSql = ""; }else{ amountColumnSql = "mi.count"; joinMaterialInstanceSql = " inner join MaterialInstance mi on mi.tousse_id = td.id "; } amountSql = String .format("select " + obj.monthlyStr + " monthstr, sum(%s) amount " - + "from Invoice i inner join TousseInstance ti on ti.invoice_id = i.id inner join TousseDefinition td on ti.tousseDefinition_id = td.id " + + "from Invoice i inner join InvoiceItem ii on ii.invoice_id=i.id inner join TousseDefinition td on ii.tousseDefinitionId = td.id " + " %s where i.sendTime %s %s " + "and i.sender is not null and %s(i.sender)<>0 %s %s %s %s " + "group by "