Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r27021 -r27024 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 27021) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 27024) @@ -1500,6 +1500,12 @@ sdf.format(new Date())); String departSearch = StrutsParamUtils.getPraramValue("departSearch",""); String damageReporter = StrutsParamUtils.getPraramValue("damageReporter",""); + StringBuffer notExistsSql = new StringBuffer(350);//MaterialErrorDamageDetail和recyclingItem没有关联关系的数据查询语句 + notExistsSql.append("select medd.type,medd.operator,medd.materialName,medd.toussename,medd.operationTime,medd.depart,medd.amount,medd.materialCost, null circuitNurse,null doctorName,null useTime from ") + .append(MaterialErrorDamageDetail.class.getSimpleName()) + .append(" medd where not exists(select 1 from recyclingItem_errorDamage re where re.errordamagedetail_id=medd.id) and type='") + .append(MaterialErrorDamageDetail.TYPE_DAMAGE) + .append("'"); String sql = "select * from ( " +" select medd.type,medd.operator,medd.materialName,medd.toussename,medd.operationTime,medd.depart,medd.amount,medd.materialCost " +" ,ur.circuitNurse,ur.doctorName,case when ur.operationTime is null then ur.enteringDate else ur.operationTime end useTime " @@ -1511,31 +1517,16 @@ +" join invoicePlan ip on ip.id=rr.recyclingapplication_id " +" join RecyclingApplication ra on ra.id=ip.id " +" left join UseRecord ur on ur.id=ra.userecord_id " - +" where ri.amount = 1 and ur.id is not null " - + +" where ri.amount = 1 " +" union all " - - +" select medd.type,medd.operator,medd.materialName,medd.toussename,medd.operationTime,medd.depart,medd.amount,medd.materialCost " - +" ,ur.circuitNurse,ur.doctorName,case when ur.operationTime is null then ur.enteringDate else ur.operationTime end useTime " - +" from MaterialErrorDamageDetail medd " - +" join MaterialDefinition md on md.id=medd.materialDefinitionId " - +" join recyclingItem_errorDamage re on re.errorDamageDetail_id=medd.id " - +" join RecyclingItem ri on re.recyclingItem_id=ri.id " - +" join RecyclingRecord rr on ri.recyclingRecord_id = rr.id " - +" join invoicePlan ip on ip.id=rr.recyclingapplication_id " - +" join RecyclingApplication ra on ra.id=ip.id " - +" left join UseRecord ur on ur.id=ra.userecord_id " - +" where ri.amount = 1 and ur.id is null " - - +" union all " - +" select medd.type,medd.operator,medd.materialName,medd.toussename,medd.operationTime,medd.depart,medd.amount,medd.materialCost, " +" null,null,null " +" from MaterialErrorDamageDetail medd " +" join MaterialDefinition md on md.id=medd.materialDefinitionId " +" join recyclingItem_errorDamage re on re.errorDamageDetail_id=medd.id " +" join RecyclingItem ri on re.recyclingItem_id=ri.id " - +" where ri.amount > 1 " + +" where ri.amount > 1 union all " + + notExistsSql +" ) po "; sql += " where 1=1 "; if (StringUtils.isNotBlank(departSearch)) {