Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java =================================================================== diff -u -r25621 -r25724 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 25621) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 25724) @@ -41,6 +41,7 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.SqlUtils; +import com.forgon.util.StringUtil; /** * @author Terry 2018-12-08 上午09:22 @@ -195,7 +196,7 @@ public static String getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition(String extraJoinCondition){ String sql = String .format("from WashAndDisinfectRecord wr inner join ClassifyBasket_WashRecord cw on cw.WashAndDisinfectRecord_ID = wr.id " - + "inner join ClassifyBasket cb on cb.id = cw.ClassifyBasket_ID inner join ClassifiedItem ci on ci.classifybasket_id = cb.id %s " + + "inner join ClassifyBasket cb on cb.id = cw.ClassifyBasket_ID inner join ClassifiedItem ci on ci.classifybasket_id = cb.id inner join TousseDefinition td on ci.toussedefinition_id = td.id %s " + "where ci.tousseDefinitionID is null " + "and ci.itemType = '材料' ", extraJoinCondition); return sql; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r25635 -r25724 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 25635) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 25724) @@ -6631,45 +6631,45 @@ // 统计清洗项的itemType为材料的物品,包括拆包清洗的器械包以及外来器械包 String sql = String - .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount) amount " + .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount) amount, td.tousseType " + dataIndex.getWashMaterialAmountSqlFromItemTypeIsMaterial(params.extraJoinCondition) - + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse ", + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse, td.tousseType ", params.betweenSql, SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); // 统计清洗项的itemType为材料的物品,单独入清洗篮筐的器械,没有关联的器械包 sql += " union all "; sql += String - .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount) amount " + .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount) amount, td.tousseType " + dataIndex.getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition(params.extraJoinCondition) - + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse ", + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse, td.tousseType ", params.betweenSql, SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); // 统计清洗项的itemType不为材料的物品,包括整包清洗的器械包 sql += " union all "; sql += String - .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount*mi.count) amount " + .format("select ci.itemType type,ci.orgUnitName,ci.isSencondWashForForeignTousse ,sum(ci.amount*mi.count) amount, td.tousseType " + dataIndex.getWashMaterialAmountSqlFromItemTypeIsNotMaterial("") - + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse ", + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse, td.tousseType ", params.betweenSql, SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); // 判断是否需要统计单独清洗的材料的数量 // 由于要查找清洗记录所属的科室的名称,所以连接了orgUnit表进行查询,没有调用DataIndex服务类的getWashMaterialAmountSqlFromTousseTypeIsMaterial方法 sql += " union all "; sql += String - .format("select md.type,org.name orgUnitName,0 isSencondWashForForeignTousse ,sum(wrm.amount) amount " - + "from WashAndDisinfectRecord wr, WashRecord_WashMaterial wm,WashAndDisinfectRecordMaterial wrm,MaterialDefinition md, OrgUnit org " + .format("select md.type,org.name orgUnitName,0 isSencondWashForForeignTousse ,sum(wrm.amount) amount, td.tousseType " + + "from materialInstance mi, TousseDefinition td, WashAndDisinfectRecord wr, WashRecord_WashMaterial wm,WashAndDisinfectRecordMaterial wrm,MaterialDefinition md, OrgUnit org " + "where wm.WashAndDisinfectRecord_ID = wr.id and wrm.id = wm.WashAndDisinfectMaterial_ID and wrm.materialDefinition_id = md.id and org.orgUnitCoding = wr.orgUnitCoding " - + "and wr.endDate %s %s group by md.type,org.name ", + + "and md.id = mi.id and td.id = mi.tousse_id and wr.endDate %s %s group by md.type,org.name, td.tousseType ", params.betweenSql, SqlUtils.get_InSql_Extra( "wr.orgUnitCoding", params.querySupplyRoom)); - sql = " select rs.type,rs.orgUnitName,rs.isSencondWashForForeignTousse,sum(rs.amount) from (" + sql = " select rs.type,rs.orgUnitName,rs.isSencondWashForForeignTousse,sum(rs.amount), rs.tousseType from (" + sql + ")rs " - + " group by rs.type,rs.orgUnitName,rs.isSencondWashForForeignTousse"; + + " group by rs.type,rs.orgUnitName,rs.isSencondWashForForeignTousse,rs.tousseType"; Map amountMap = getWashWorkloadAmountMap(sql); // 清洗不合格数量 @@ -6728,8 +6728,9 @@ String orgUnitName = rs.getString(2); boolean isSecWashForeignTousse = rs.getBoolean(3); Integer amount = rs.getInt(4); + String tousseType = rs.getString("tousseType"); String key = ""; - if(ClassifiedItem.TYPE_FOREIGN_TOUSSE.equals(type)){ + if(ClassifiedItem.TYPE_FOREIGN_TOUSSE.equals(tousseType)){ // 外来器械包,看是否二次清洗 if(isSecWashForeignTousse == false){ key = "外来器械";