Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r34036 -r34084 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34036) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34084) @@ -9304,7 +9304,7 @@ } totalWashMaterialAmountMap = null; noOperatingRoomWashMaterialAmountMap = null; - noOperatingRoomWashMaterialAmountMap = null; + operatingRoomWashMaterialAmountMap = null; foreignMaterialAmountMap = null; // 包装外来手术器械总包数 二次回收的外来器械不统计 String dateStr = dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm"); @@ -14381,12 +14381,12 @@ boolean enableShowForeignTousseApplicationReportMaterials = CssdUtils.getSystemSetConfigByNameBool("enableShowForeignTousseApplicationReportMaterials", false); String materialInstanceSql = null; if(DatabaseUtil.isPoIdValid(materialId) || enableShowForeignTousseApplicationReportMaterials){ - joinMaterialInstanceSql = " left join MaterialInstance mi on mi.tousse_id=td.id "; + joinMaterialInstanceSql = " left join MaterialInstance mi on mi.tousse_id=td.id "; }else{ joinMaterialInstanceSql = ""; } if(DatabaseUtil.isPoIdValid(materialId)){ - materialInstanceSql = " and tit.tousseDefinition_id in(select tousse_id from MaterialInstance where materialDefinition_id="+ materialId +" and tousseDefinition_id=td.id) "; + materialInstanceSql = " and td.id in(select tousse_id from MaterialInstance where materialDefinition_id="+ materialId +" and tousseDefinition_id=td.id) "; }else{ materialInstanceSql = ""; } @@ -14447,11 +14447,11 @@ sizeSql = String.format(",(select count(distinct cb.id) from %s cb join " + " ClassifyBasket_RecyclingRecord cr on cb.id=cr.ClassifyBasket_ID " + " join %s rr on rr.id=cr.RecyclingRecord_ID " - + " where rr.recyclingApplication_id=tit.foreignTousseApp_id and rr.recyclingTimes is null " + + " where rr.recyclingApplication_id=f.id and rr.recyclingTimes is null " + " and cb.basketSize='大包') bigTousseAmount, (select count(distinct cb.id) from %s cb join " + " ClassifyBasket_RecyclingRecord cr on cb.id=cr.ClassifyBasket_ID" + " join %s rr on rr.id=cr.RecyclingRecord_ID " - + " where rr.recyclingApplication_id=tit.foreignTousseApp_id and rr.recyclingTimes is null " + + " where rr.recyclingApplication_id=f.id and rr.recyclingTimes is null " + " and cb.basketSize='小包') smallTousseAmount " , ClassifyBasket.class.getSimpleName(), RecyclingRecord.class.getSimpleName(), @@ -14491,7 +14491,7 @@ } } String sql = String - .format("select i.applicationtime,case when tit.invoiceSendTime2 is not null then tit.invoiceSendTime2 else tit.invoiceSendTime end invoiceSendTime,f.receiveTime,tit.tousseName,tit.price,f.id,ti.supplierName,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus %s,f.doctor,f.processType,count(distinct tit.id) amount,f.bedNumber,tit.useRecord_id %s %s %s from %s f join %s i on f.id=i.id left join %s ti on ti.recyclingApplication_ID=i.id left join %s tit on tit.foreignTousseApp_id=f.id left join TousseDefinition td on td.id = tit.tousseDefinition_id %s where (tit.id is null or td.parentID is null and ti.tousseDefinitionId=tit.tousseDefinition_id or ti.tousseDefinitionId=td.parentID) %s %s %s %s %s ", + .format(" select * from (select i.applicationtime,case when tit.invoiceSendTime2 is not null then tit.invoiceSendTime2 else tit.invoiceSendTime end invoiceSendTime,f.receiveTime,tit.tousseName,tit.price,f.id,ti.supplierName,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus %s,f.doctor,f.processType,count(distinct tit.id) amount,f.bedNumber,tit.useRecord_id %s %s %s from %s f join %s i on f.id=i.id join %s ti on ti.recyclingApplication_ID=i.id join %s tit on tit.foreignTousseApp_id=f.id join TousseDefinition td on td.id = tit.tousseDefinition_id %s where (tit.id is null or td.parentID is null and ti.tousseDefinitionId=tit.tousseDefinition_id or ti.tousseDefinitionId=td.parentID) %s %s %s %s %s ", customColumnName1Sql, queryMaterialNameSql, querySummaryOfMaterialsSql, @@ -14507,37 +14507,83 @@ timeSql, usedSql); sqlBuilder.append(sql); + String goodsNameSql = ""; if (StringUtils.isNotBlank(goodsName)) { - sql = String + goodsNameSql = String .format(" and f.id=(select t.recyclingApplication_ID from %s t where t.recyclingApplication_ID=f.id and t.tousseName = '%s')",TousseItem.class.getSimpleName(),goodsName); - sqlBuilder.append(sql); + sqlBuilder.append(goodsNameSql); } + String deptNameSql = ""; if (StringUtils.isNotBlank(deptName)) { - sql = " and i.depart = '" + deptName + "' "; - sqlBuilder.append(sql); + deptNameSql = " and i.depart = '" + deptName + "' "; + sqlBuilder.append(deptNameSql); } + String patientNameSql = ""; if (StringUtils.isNotBlank(patientName)) { - sql = " and f.patient = '" + patientName + "' "; - sqlBuilder.append(sql); + patientNameSql = " and f.patient = '" + patientName + "' "; + sqlBuilder.append(patientNameSql); } + String deliverStatusSql = ""; if (StringUtils.isNotBlank(deliverStatus)) { - sql = " and i.deliverStatus = '" + deliverStatus + "' "; - sqlBuilder.append(sql); + deliverStatusSql = " and i.deliverStatus = '" + deliverStatus + "' "; + sqlBuilder.append(deliverStatusSql); } + String departOfPatientSql = ""; if(StringUtils.isNotBlank(departOfPatient)){ - sqlBuilder.append(" and f.ascriptionDepartment ='").append(departOfPatient).append("' "); + departOfPatientSql = " and f.ascriptionDepartment ='" + departOfPatient + "' "; + sqlBuilder.append(departOfPatientSql); } + String filterConpanyNameSql = ""; if(filterConpanyName){ - sqlBuilder.append(" and ti.SupplierName='").append(companyName).append("' "); + filterConpanyNameSql = " and ti.SupplierName='" + companyName+ "' "; + sqlBuilder.append(filterConpanyNameSql); } + String noDisplayTerminatedIPSql = ""; if(noDisplayTerminatedIP){ - sqlBuilder.append(" and (i.deliverStatus<>'").append(InvoicePlan.STATUS_END).append("' or i.deliverStatus is null) "); + noDisplayTerminatedIPSql = " and (i.deliverStatus<>'"+ InvoicePlan.STATUS_END +"' or i.deliverStatus is null) "; + sqlBuilder.append(noDisplayTerminatedIPSql); } sqlBuilder.append(customTimePeriodSql); sqlBuilder.append(" group by tit.invoiceSendTime,tit.invoiceSendTime2,f.receiveTime,tit.tousseName,tit.price,f.id,ti.supplierName,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus,f.bedNumber,tit.useRecord_id,i.applicationtime,tit.foreignTousseApp_id "); sqlBuilder.append(customColumnName1Sql); sqlBuilder.append(groupByMaterialInstanceSql); - sqlBuilder.append(",f.doctor,f.processType order by f.id asc "); + sqlBuilder.append(",f.doctor,f.processType "); + if(!"发货时间".equals(timeType) && !"是".equals(used) && showNoInvoie){//此处的数据是装配的数据,不存在发货时间 不存在已使用 + sqlBuilder.append(" union all select i.applicationtime,null invoiceSendTime,f.receiveTime " + + " ,td.name tousseName,td.price,f.id,ti.supplierName,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus " + + " ,f.ascriptionDepartment,f.doctor,f.processType,sum(ti.amount) amount,f.bedNumber,null useRecord_id " + + " ,mi.materialName,sum(mi.count) count from "+ + ForeignTousseApplication.class.getSimpleName() + +" f join "+ + InvoicePlan.class.getSimpleName() + +" i on f.id=i.id join "+ + TousseItem.class.getSimpleName() + +" ti on ti.recyclingApplication_ID=i.id join "+ + TousseDefinition.class.getSimpleName() + +" td on td.id = ti.tousseDefinitionId join "+ + MaterialInstance.class.getSimpleName() + +" mi on mi.tousse_id=td.id where not exists (select id from "+ + TousseInstance.class.getSimpleName() + +" where foreignTousseApp_id=f.id) " + + timeSql + + goodsNameSql + + deptNameSql + + patientNameSql + + deliverStatusSql + + departOfPatientSql + + filterConpanyNameSql + + noDisplayTerminatedIPSql + + customTimePeriodSql + + " group by f.receiveTime,td.name,td.price,f.id,ti.supplierName " + + " ,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus,f.bedNumber,i.applicationtime,f.id " + + " ,f.ascriptionDepartment,mi.materialName ,f.doctor,f.processType,ti.id " + + customColumnName1Sql + + groupByMaterialInstanceSql + + " ) t order by t.id asc "); + }else{ + sqlBuilder.append(") t order by t.id asc "); + } + ResultSet rs = null; try { rs = objectDao.executeSql(sqlBuilder.toString());