Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33629 -r33630 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33629) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33630) @@ -7729,8 +7729,7 @@ String dataConfigStr = CssdUtils.getSystemSetConfigByName("dataIndexConfigurationOfYearWorkloadReport"); JSONArray dataConfigArr = null; if(StringUtils.isBlank(dataConfigStr)){ - dataConfigStr = "\"dataIndexConfigurationOfYearWorkloadReport\":" - + "[{ \"dataIndexNameForDisplay\": \"处理器械总件数\", \"dataIndexSource\": \"处理器械总件数\" }" + dataConfigStr = "[{ \"dataIndexNameForDisplay\": \"处理器械总件数\", \"dataIndexSource\": \"处理器械总件数\" }" + ",{ \"dataIndexNameForDisplay\": \"处理外来手术器械总件数\", \"dataIndexSource\": \"处理外来手术器械总件数\" }" + ",{ \"dataIndexNameForDisplay\": \"消毒物品数量\", \"dataIndexSource\": \"消毒物品数量\" }" + ",{ \"dataIndexNameForDisplay\": \"灭菌无菌包数\", \"dataIndexSource\": \"复用性灭菌物品总件数\" }" @@ -7740,18 +7739,20 @@ + ",{ \"dataIndexNameForDisplay\": \"器械包发放数量\", \"dataIndexSource\": \"复用性物品发货数量\" }" + ",{ \"dataIndexNameForDisplay\": \"一次性物品发放数量\", \"dataIndexSource\": \"一次性物品发放数量\" }" + ",{ \"dataIndexNameForDisplay\": \"处理腔镜器械总件数\", \"dataIndexSource\": \"处理腔镜器械总件数(材料类型为腔镜)\" }" - + ",{ \"dataIndexNameForDisplay\": \"下收下送次数\", \"dataIndexSource\": \"下收下送次数(中六模式)\" }"; + + ",{ \"dataIndexNameForDisplay\": \"下收下送次数\", \"dataIndexSource\": \"下收下送次数(中六模式)\" }]"; } Map numAndOrgUnitCode = new HashMap();//序号和核算月报科室编码map 可配多个科室 Set orgUnitCodes = new HashSet();//核算月报的科室编码 Map numAndAdverseEventRecord = new HashMap(); //序号和不良事件列map 可多种事件 Map uniqueDataIndexSources = new HashMap(); //唯一的指标 多配只有一个生效 String sterilizerUseCountCn = "灭菌器使用炉次";//灭菌炉使用次数显示名 + Set dataIndexSources = new HashSet(); if(StringUtils.isNotBlank(dataConfigStr)){ dataConfigArr = JSONArray.fromObject(dataConfigStr); for (int i = 0; i < dataConfigArr.size(); i++) { JSONObject dataConfig = (JSONObject)dataConfigArr.get(i); String dataIndexSource = dataConfig.optString("dataIndexSource"); + dataIndexSources.add(dataIndexSource); JSONObject titleObj = new JSONObject(); if("灭菌器使用炉次".equals(dataIndexSource)){ sterilizerUseCountCn = dataConfig.optString("dataIndexNameForDisplay"); @@ -7853,7 +7854,7 @@ params.isGroup = true; params.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate",mmOrdd); String sql = null; - if(uniqueDataIndexSources.containsKey("处理器械总件数")){ + if(dataIndexSources.contains("处理器械总件数")){ // 处理器械总件数 sql = String.format("select sum(tl.amount) amount, monthstr from (" +dataIndex.getWorkAmountByMaterialSQL("清洗数量", params, dataSoureOfMaterialsCountOfToussesInReports) @@ -7876,7 +7877,7 @@ // 处理外来器械总件数 params.tousseTypes = TousseDefinition.PACKAGE_TYPE_FOREIGN; params.tousseTypeAndPackageSizeSql = DataIndex.getTousseTypesAndPackageSizesFilterSQL(TousseDefinition.PACKAGE_TYPE_FOREIGN, null); - if(uniqueDataIndexSources.containsKey("处理外来手术器械总件数")){ + if(dataIndexSources.contains("处理外来手术器械总件数")){ sql = String.format("select sum(tl.amount) amount, monthstr from (" +dataIndex.getWorkAmountByMaterialSQL("清洗数量", params, dataSoureOfMaterialsCountOfToussesInReports) + ") tl group by monthstr "); @@ -7938,7 +7939,7 @@ +dataIndex.getWorkAmountByPackageSQL("发货数量", params) + ") tl group by monthstr"); } - if(uniqueDataIndexSources.containsKey("消毒物品数量")){ + if(dataIndexSources.contains("消毒物品数量")){ ResultSet disinfectionRs = null; try { logger.debug("消毒供应中心年度工作量统计报表消毒物品数查询:"+disinfectionSql); @@ -7961,7 +7962,7 @@ // 灭菌无菌包数 params.tousseTypeAndPackageSizeSql = ""; params.extraGroupBy = ""; - if(uniqueDataIndexSources.containsKey("复用性灭菌物品总件数")){ + if(dataIndexSources.contains("复用性灭菌物品总件数")){ String sterileSql = String.format("select sum(tl.amount) amount,monthstr from (" +dataIndex.getWorkAmountByPackageSQL("灭菌数量", params) + ") tl group by monthstr"); @@ -7985,7 +7986,7 @@ .getTousseTypesAndPackageSizesFilterSQL( TousseDefinition.PACKAGE_TYPE_FOREIGN + "," + TousseDefinition.PACKAGE_TYPE_SPLIT, null); - if(uniqueDataIndexSources.containsKey("灭菌外来手术器械包数")){ + if(dataIndexSources.contains("灭菌外来手术器械包数")){ ResultSet sterileForeignRs = null; try { String sterileForeignSql = String.format("select sum(tl.amount) amount,monthstr from (" @@ -8011,7 +8012,7 @@ endDay = dateQueryAdapter.dateAdapter(endDay); monthlyStr = dateQueryAdapter.dateConverAdapter3("sr.enddate",mmOrdd); //获取所有灭菌炉分组 - if(uniqueDataIndexSources.containsKey("灭菌器使用炉次")){ + if(dataIndexSources.contains("灭菌器使用炉次")){ String sql3 = "select count(*) amount,s.ownGroup,"+ monthlyStr +" monthStr from SterilizationRecord sr,Sterilizer s where " + " sr.sterilizer_id = s.id and (sr.status = '灭菌完成' or sr.status = '灭菌失败') and sr.enddate between " + startDay + " and " + endDay @@ -8068,7 +8069,7 @@ params.extraSelectColumns = "," + monthlyStr + " monthStr "; params.isGroup = true; params.extraGroupBy = monthlyStr; - if(uniqueDataIndexSources.containsKey("复用性物品发货数量")){ + if(dataIndexSources.contains("复用性物品发货数量")){ String tousseSendSql = String.format("select sum(tl.amount) amount,monthStr from (" +dataIndex.getWorkAmountByPackageSQL("发货数量", params) + ") tl group by monthStr"); @@ -8088,7 +8089,7 @@ } } - if(uniqueDataIndexSources.containsKey("生物监测次数")){ + if(dataIndexSources.contains("生物监测次数")){ ResultSet sterilizationRecordCountRs = null; try { String monthStr = dateQueryAdapter.dateConverAdapter3("sr.biologicalMonitoringEndDate",mmOrdd); @@ -8108,7 +8109,7 @@ } // 是否统计一次性物品发放数量 - if (uniqueDataIndexSources.containsKey("一次性物品发放数量")){ + if (dataIndexSources.contains("一次性物品发放数量")){ params.includeTousses = false; params.includeDisposableGoods = true; @@ -8131,7 +8132,7 @@ } } // 判断是否需要增加腔镜器械和下收下送数量的统计 - if(uniqueDataIndexSources.containsKey("处理腔镜器械总件数(材料类型为腔镜)")){ + if(dataIndexSources.contains("处理腔镜器械总件数(材料类型为腔镜)")){ String sql7 = " select sum(tdc.amount) amount,"+ monthlyStr +" monthStr from Invoice i,TousseInstance ti,TousseDefinition td,(select td.name tdName, sum(mi.count) amount from MaterialInstance mi,MaterialDefinition md, tousseDefinition td " + " where mi.materialDefinition_id=md.id and mi.tousse_id=td.id and td.forDisplay=1 " + "and md.type like '%腔镜%' " @@ -8157,7 +8158,7 @@ DatabaseUtil.closeResultSetAndStatement(rs7); } } - if(uniqueDataIndexSources.containsKey("下收下送次数(中六模式)")){ + if(dataIndexSources.contains("下收下送次数(中六模式)")){ String departs = ""; GoodsOption goodsOption = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_SURGICALINSTRUMENTS_DEPT, null); if (goodsOption != null) {