Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseApplicationReportHelper.java =================================================================== diff -u -r35799 -r36695 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseApplicationReportHelper.java (.../ForeignTousseApplicationReportHelper.java) (revision 35799) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ForeignTousseApplicationReportHelper.java (.../ForeignTousseApplicationReportHelper.java) (revision 36695) @@ -219,8 +219,8 @@ timeFieldName = "i.applicationTime"; timeSql = String.format("and (i.applicationTime between %s and %s)", startDay, endDay); }else{ - timeFieldName = "f.receiveTime"; - timeSql = String.format("and (f.receiveTime between %s and %s)", startDay, endDay); + timeFieldName = "rr.recyclingTime"; + timeSql = String.format("and (rr.recyclingTime between %s and %s)", startDay, endDay); } String querySummaryOfMaterialsSql = ""; @@ -280,11 +280,11 @@ } } String sql = String - .format(" select * from (select tit.doctorName tiDoctorName %s , 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 " + .format(" select * from (select tit.doctorName tiDoctorName %s , i.applicationtime,case when tit.invoiceSendTime2 is not null then tit.invoiceSendTime2 else tit.invoiceSendTime end invoiceSendTime,min(rr.recyclingTime) 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 ", + + "join TousseDefinition td on td.id = tit.tousseDefinition_id left join RecyclingRecord rr on rr.recyclingApplication_id=f.id " + + " %s where rr.recyclingTimes is null and (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 ", queryExtendedColumnSQL, customColumnName1Sql, queryMaterialNameSql, @@ -338,13 +338,14 @@ sqlBuilder.append(noDisplayTerminatedIPSql); } sqlBuilder.append(customTimePeriodSql); - sqlBuilder.append(" group by tit.doctorName,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(" group by tit.doctorName,tit.invoiceSendTime,tit.invoiceSendTime2,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(extendedGroupSQL); sqlBuilder.append(groupByMaterialInstanceSql); sqlBuilder.append(",f.doctor,f.processType "); if(!"发货时间".equals(timeType) && !"是".equals(used) && showNoInvoie){//此处的数据是装配的数据,不存在发货时间 不存在已使用 - sqlBuilder.append(" union all select null tiDoctorName "+ queryExtendedColumnSQL2 +",i.applicationtime,null invoiceSendTime,f.receiveTime " + sqlBuilder.append(" union all select null tiDoctorName "+ queryExtendedColumnSQL2 +",i.applicationtime,null invoiceSendTime" + + ",min(rr.recyclingTime) receiveTime" + " ,td.name tousseName,td.price,f.id,ti.supplierName,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus " + customColumnName1Sql + ",f.doctor,f.processType,sum(ti.amount) amount,f.bedNumber,null useRecord_id " @@ -359,9 +360,9 @@ TousseItem.class.getSimpleName() +" ti on ti.recyclingApplication_ID=i.id join "+ TousseDefinition.class.getSimpleName() - +" td on td.id = ti.tousseDefinitionId " + +" td on td.id = ti.tousseDefinitionId left join RecyclingRecord rr on rr.recyclingApplication_id=f.id " + joinMaterialInstanceSql - + " where not exists (select id from "+ + + " where rr.recyclingTimes is null and not exists (select id from "+ TousseInstance.class.getSimpleName() +" where foreignTousseApp_id=f.id) " + timeSql @@ -376,7 +377,7 @@ + customTimePeriodSql + filterConpanyNameSql + noDisplayTerminatedIPSql - + " group by f.receiveTime"+ extendedGroupSQL2 +",td.name,td.price,f.id,ti.supplierName " + + " group by ti.supplierName"+ extendedGroupSQL2 +",td.name,td.price,f.id " + " ,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus,f.bedNumber,i.applicationtime,f.id " + customColumnName1Sql + groupByMaterialInstanceSql