Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33273 -r33286 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33273) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33286) @@ -13405,7 +13405,7 @@ String supplierName = rs.getString("supplierName"); Long useRecord_id = rs.getLong("useRecord_id"); int materialCount = 0; - if(!enableShowForeignTousseApplicationReportMaterials){ + if(!enableShowForeignTousseApplicationReportMaterials && !enableTheSizeDisplayOfTheForeignTousseApplicationReport){ tousseItemVO = new TousseItemVO(); }else { materialCount = rs.getInt("count"); @@ -13440,6 +13440,10 @@ } } } + if(enableShowForeignTousseApplicationReportSummaryOfMaterials){ + tousseItemVO.setToolAmount(MathTools.add(tousseItemVO.getToolAmount(), rs.getInt("toolAmount")).intValue()); + tousseItemVO.setImplantAmount(MathTools.add(tousseItemVO.getImplantAmount(), rs.getInt("implantAmount")).intValue()); + } if(isContinue){ continue; } @@ -13449,10 +13453,6 @@ tousseItemVO.setPrice(price); tousseItemVO.setInvoiceSendTimeStr(invoiceSendTimeStr); tousseItemVO.setUsed(useRecord_id == 0?"否":"是"); - if(enableShowForeignTousseApplicationReportSummaryOfMaterials){ - tousseItemVO.setToolAmount(rs.getInt("toolAmount")); - tousseItemVO.setImplantAmount(rs.getInt("implantAmount")); - } totalAmount += amount; if(StringUtils.isNotBlank(supplierName)){ tousseItemVO.setSupplierName(supplierName); @@ -24884,7 +24884,7 @@ dateSql = String.format("and (i.applicationTime between %s and %s)", startDate, endDate); timeFieldName = "i.applicationTime"; if("按日期汇总".equals(reportType)){ - queryDateSql = " CONVERT(varchar(100), i.applicationTime, 23) dateStr,"; + queryDateSql = " CONVERT(varchar(100), i.applicationTime, 23) "; orderAndGroupByDateSql= "i.applicationTime,"; } }else if("发货时间".equals(timeType)){ @@ -24893,14 +24893,14 @@ + "and tit.invoiceSendTime between %s and %s)", startDate,endDate,startDate,endDate); if("按日期汇总".equals(reportType)){ - queryDateSql = " case when tit.invoiceSendTime2 is not null then CONVERT(varchar(100), tit.invoiceSendTime2, 23) else CONVERT(varchar(100), tit.invoiceSendTime, 23) end dateStr,"; + queryDateSql = " case when tit.invoiceSendTime2 is not null then CONVERT(varchar(100), tit.invoiceSendTime2, 23) else CONVERT(varchar(100), tit.invoiceSendTime, 23) end "; orderAndGroupByDateSql = "case when tit.invoiceSendTime2 is not null then CONVERT(varchar(100), tit.invoiceSendTime2, 23) else CONVERT(varchar(100), tit.invoiceSendTime, 23) end ,"; } }else{//接收时间 dateSql = String.format("and (f.receiveTime between %s and %s)", startDate, endDate); timeFieldName = "f.receiveTime"; if("按日期汇总".equals(reportType)){ - queryDateSql = "CONVERT(varchar(100), f.receiveTime, 23) dateStr,"; + queryDateSql = "CONVERT(varchar(100), f.receiveTime, 23) "; orderAndGroupByDateSql= "f.receiveTime,"; } } @@ -24937,39 +24937,45 @@ } } String supplierNameWhereSql = ""; - String supplierNameWhereSql2 = ""; if(StringUtils.isNotBlank(supplierName)){ - supplierNameWhereSql = " where tdd.supplierName='" + supplierName +"' "; - supplierNameWhereSql2 = " and td.supplierName='" + supplierName +"' "; + supplierNameWhereSql = " and td.supplierName='" + supplierName +"' "; } - String sql = String.format("select %s td.supplierName,count(distinct tit.id) sterilizationTousseAmount,sum(case when mi.isImplant='是' then mi.count else 0 end) implantAmount " - + ",sum(case when mi.isImplant='是' then 0 else mi.count end) toolAmount" - + ",count(distinct case when b.basketSize='大包' then b.id else null end) bigTousseAmount " - + ",count(distinct case when b.basketSize='小包' then b.id else null end) smallTousseAmount " - + " from %s f join %s i on f.id=i.id " - + " join %s tit on tit.foreignTousseApp_id=f.id" - + " join %s td on td.id=tit.tousseDefinition_id " - + " left join %s mi on mi.tousse_id=tit.tousseDefinition_id " - + " left join (" - + " select distinct ci.invoicePlanID,cb.id,cb.basketSize from " - + " %s cb join " - + " %s ci on ci.classifybasket_id=cb.id" - + " left join %s tdd on tdd.id=ci.tousseDefinitionID %s " - + " ) b on b.invoicePlanID=f.id " - + " where 1=1 %s %s %s ", - queryDateSql, - ForeignTousseApplication.class.getSimpleName(), - InvoicePlan.class.getSimpleName(), - TousseInstance.class.getSimpleName(), - TousseDefinition.class.getSimpleName(), - MaterialInstance.class.getSimpleName(), - ClassifyBasket.class.getSimpleName(), - ClassifiedItem.class.getSimpleName(), - TousseDefinition.class.getSimpleName(), - supplierNameWhereSql, - dateSql,customTimePeriodSql,supplierNameWhereSql2); - - sql += " group by "+ orderAndGroupByDateSql +" td.supplierName order by "+ orderAndGroupByDateSql +" td.supplierName "; + String sql = String.format("select %s supplierName,sum(implantAmount) implantAmount,sum(toolAmount) toolAmount,sum(sterilizationTousseAmount) sterilizationTousseAmount " + + ",sum(bigTousseAmount) bigTousseAmount,sum(smallTousseAmount) smallTousseAmount from ( " + + "select %s " + + "td.supplierName " + + ",sum(case when mi.isImplant='是' then mi.count else 0 end) implantAmount " + + ",sum(case when mi.isImplant='是' then 0 else mi.count end) toolAmount " + + ",count(distinct tit.id) sterilizationTousseAmount,0 bigTousseAmount,0 smallTousseAmount " + + "from ForeignTousseApplication f join InvoicePlan i on f.id=i.id " + + "join TousseInstance tit on tit.foreignTousseApp_id=f.id " + + "join TousseDefinition td on td.id=tit.tousseDefinition_id " + + "join MaterialInstance mi on mi.tousse_id=td.id " + + "where (i.deliverStatus<>'已终止' or i.deliverStatus is null) %s %s %s " + + "group by td.supplierName %s " + + "union all " + + "select %s " + + "td.supplierName,0 implantAmount,0 toolAmount,0 sterilizationTousseAmount " + + ", count( distinct case when cb.basketSize='大包' then cb.id else null end) bigTousseAmount " + + ", count( distinct case when cb.basketSize='小包' then cb.id else null end) smallTousseAmount " + + "from ForeignTousseApplication f join InvoicePlan i on f.id=i.id " + + "join TousseInstance tit on tit.foreignTousseApp_id=f.id " + + "join TousseDefinition td on td.id=tit.tousseDefinition_id " + + "join ClassifiedItem ci on td.parentID is null and ci.tousseDefinitionID=td.id or td.parentID is not null and td.parentID=ci.tousseDefinitionID " + + "join ClassifyBasket cb on cb.id=ci.classifybasket_id " + + "where (i.deliverStatus<>'已终止' or i.deliverStatus is null) %s %s %s " + + "group by td.supplierName %s" + + ") temp1 " + + "group by supplierName %s", + "按日期汇总".equals(reportType)?"dateStr,":"", + "按日期汇总".equals(reportType)?queryDateSql + " dateStr,":"", + dateSql,supplierNameWhereSql,customTimePeriodSql, + "按日期汇总".equals(reportType)? "," + queryDateSql:"", + "按日期汇总".equals(reportType)?queryDateSql + " dateStr,":"", + dateSql,supplierNameWhereSql,customTimePeriodSql, + "按日期汇总".equals(reportType)? "," + queryDateSql:"", + "按日期汇总".equals(reportType) ?",dateStr order by dateStr,supplierName ":" order by supplierName " + ); ResultSet rs = null; List vos = new ArrayList(); try {