Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java =================================================================== diff -u -r34199 -r34645 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java (.../WorkQualityCollectionDataIndex.java) (revision 34199) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java (.../WorkQualityCollectionDataIndex.java) (revision 34645) @@ -271,7 +271,7 @@ */ public Map getPackAmountMap(ReportQueryParams reportParams, String format, String type){ Map map = new HashMap(); - if("mm".equals(format) || "dd".equals(format)){ + if("mm".equals(format) || "dd".equals(format)|| "year".equals(format)){ reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3("ti.operationTime",format); }else if("yyyy-MM-dd".equals(format)){ reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter("ti.operationTime",null); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java =================================================================== diff -u -r34573 -r34645 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 34573) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 34645) @@ -8,6 +8,7 @@ public static String TOTAL = "合计"; public static String DAY = "天"; + public static String YEAR = "年"; public static String MONTH = "月"; public static String RATIO = "比率"; public static String COMPARISON = "对比"; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r34641 -r34645 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34641) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 34645) @@ -22602,7 +22602,10 @@ } reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),format); reviewTimeSql = dateQueryAdapter.dateConverAdapter("case when ti.reviewTime is not null then ti.reviewTime else ti.operationTime end", null); - } else { + } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"year"); + reviewTimeSql = dateQueryAdapter.dateConverAdapter3("case when ti.reviewTime is not null then ti.reviewTime else ti.operationTime end", "year"); + }else { format = "mm"; reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),format); reviewTimeSql = dateQueryAdapter.dateConverAdapter3("case when ti.reviewTime is not null then ti.reviewTime else ti.operationTime end", "mm"); @@ -22630,6 +22633,13 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("monthstr")); int amount = rs.getInt("amount"); + if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(date.equals(month)){ + month = "今年"; + }else{ + month = "去年"; + } + } map.put(month, amount); } } catch (Exception e) { @@ -22639,7 +22649,7 @@ } if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else { + } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ map = dataIndex.convertMonthly(map); } } @@ -22662,7 +22672,9 @@ startTime = startTime + " 00:00:00"; endTime = endTime + " 23:59:59"; params.monthlyStr = dateQueryAdapter.dateConverAdapter("wr.endDate",null); - } else { + } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + params.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate","year"); + }else { params.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate","mm"); startTime = date + "-01-01 00:00:00"; endTime = DataIndex.getNextYear(date) + " 00:00:00"; @@ -22691,6 +22703,13 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("dateTime")); int amount = rs.getInt("amount"); + if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(date.equals(month)){ + month = "今年"; + }else{ + month = "去年"; + } + } map.put(month, amount); } } catch (Exception e) { @@ -22700,7 +22719,7 @@ } if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else { + } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ map = dataIndex.convertMonthly(map); } } @@ -22894,7 +22913,9 @@ startTime = startTime + " 00:00:00"; endTime = endTime + " 23:59:59"; qmiDateTimeSql = dateQueryAdapter.dateConverAdapter("qmi.dateTime", null); - } else { + } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "year"); + }else { qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "mm"); startTime = date + "-01-01 00:00:00"; endTime = DataIndex.getNextYear(date) + " 00:00:00"; @@ -22919,6 +22940,13 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("dateTime")); int amount = rs.getInt("amount"); + if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(date.equals(month)){ + month = "今年"; + }else{ + month = "去年"; + } + } map.put(month, amount); } } catch (Exception e) { @@ -22928,7 +22956,7 @@ } if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else { + } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ map = dataIndex.convertMonthly(map); } } @@ -23019,7 +23047,36 @@ * @param onlyCalcRatio 只计算比率 * @param dataIndexsAsRows 值为true,则将每个数据指标作为一行显示,否则每个数据指标作为一列显示 */ - private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber, boolean onlyCalcRatio, boolean dataIndexsAsRows) { + private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber, boolean onlyCalcRatio, boolean dataIndexsAsRows, String queryScope) { + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(onlyCalcRatio){ + Object resultObj = MapUtils.getObject(result, "去年" + SupplyRoomQualityQuota.RATIO); + String ratio = null; + SupplyRoomQualityQuota vo3 = null; + if(resultObj != null && resultObj instanceof RatioVo){ + RatioVo ratioVo = (RatioVo)resultObj; + ratio = ratioVo.getRatio(); + vo3 = new SupplyRoomQualityQuota("去年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); + } + list.add(vo3); + resultObj = MapUtils.getObject(result, "今年" + SupplyRoomQualityQuota.RATIO); + SupplyRoomQualityQuota vo4 = null; + if(resultObj != null && resultObj instanceof RatioVo){ + RatioVo ratioVo = (RatioVo)resultObj; + ratio = ratioVo.getRatio(); + vo4 = new SupplyRoomQualityQuota("今年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); + } + list.add(vo4); + }else{ + String value = MapUtils.getString(result, "去年", "0"); + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota("去年", rowSerialNumber, quotaName, rowSerialNumber, value, dataIndexsAsRows); + list.add(vo); + String value2 = MapUtils.getString(result, "今年", "0"); + SupplyRoomQualityQuota vo2 = new SupplyRoomQualityQuota("今年", rowSerialNumber, quotaName, rowSerialNumber, value2, dataIndexsAsRows); + list.add(vo2); + } + return; + } int columnSerialNumber = 0; for (int i = 1; i <= 12; i++) { String key = ""; @@ -23139,7 +23196,11 @@ total += packAmountMap.get(key); } } - }else{ + } else if("year".equals(format)){ + for (String key : packAmountMap.keySet()) { + map.put(key, packAmountMap.get(key)); + } + } else{ for (int i = 1; i <= size; i++) { map.put(i<10 ? "0" + i : "" + i, packAmountMap.get("" + i) == null?0:packAmountMap.get("" + i)); if(packAmountMap.get("" + i) != null){ @@ -23157,7 +23218,7 @@ * @param dataIndexsAsRows 值为true,则将每个数据指标作为一行显示,否则每个数据指标作为一列显示 * @return */ - private List getSupplyRoomQualityQuotaByMonth(String departmentCode, String year, JSONArray dataConfigArr, Set dataIndexSources, boolean dataIndexsAsRows) { + private List getSupplyRoomQualityQuotaByMonth(String departmentCode, String year, JSONArray dataConfigArr, Set dataIndexSources, boolean dataIndexsAsRows, String lastYearTime, String queryScope) { List list = new ArrayList(); List definitionList = null; /** @@ -23170,8 +23231,22 @@ //每个月的合格的灭菌物品 Map sterileArticlesForQualified = null; ReportQueryParams reportParams = new ReportQueryParams(objectDao); - String startTime = year + "-01-01 00:00:00"; - String endTime = dataIndex.getNextYear(year) + " 00:00:00"; + String startTime = null; + String endTime = dataIndex.getNextYear(year) + " 00:00:00";; + if(StringUtils.isNotBlank(lastYearTime)){ + startTime = lastYearTime + "-01-01 00:00:00"; + }else{ + startTime = year + "-01-01 00:00:00"; + } + String format = null; + int size = 0; + if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ + format = "mm"; + size = 12; + }else if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + format = "year"; + size = 2; + } String betweenSql = String.format(" between %s and %s ", dateQueryAdapter.dateAdapter(startTime),dateQueryAdapter.dateAdapter(endTime)); reportParams.betweenSql = betweenSql; reportParams.querySupplyRoom = departmentCode; @@ -23181,10 +23256,10 @@ reportParams.isGroup=true; reportParams.extraQuery = " and sr.status<>'"+ SterilizationRecord.STERILIZATION_STATUS_FAILURE +"'"; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ - sterileArticles = getSterileArticles(reportParams, departmentCode, year, SupplyRoomQualityQuota.MONTH, null, null, null); + sterileArticles = getSterileArticles(reportParams, departmentCode, year, queryScope, startTime, endTime, null); String[] sterileArticlesUnqualifiedSource = null; sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 - sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, year, queryScope, startTime, endTime , null); sterileArticlesForQualified = getQualifiedAmountMap(sterileArticles, sterileArticlesForUnqualified); if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ getRatio(sterileArticlesForQualified, sterileArticles, null, true); @@ -23200,9 +23275,9 @@ //每个月的合格的器械清洗数 Map washSumAmountForQualified = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO)){ - washSumAmount = getWashSumAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH, null, null, null, null); + washSumAmount = getWashSumAmount(departmentCode, year, queryScope, startTime, endTime, null, null); String[] washSumUnqualifiedSource = getModelSources(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, definitionList); - washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, year, queryScope, startTime, endTime , null); washSumAmountForQualified = getQualifiedAmountMap(washSumAmount, washSumAmountForUnqualified); //得到合格率 if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO)){ @@ -23222,10 +23297,10 @@ if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ //每个月的灭菌包数 - sterilizationSumAmount = dataIndex.getSterilizationAmount(reportParams, departmentCode, year, SupplyRoomQualityQuota.MONTH, null, null, null); + sterilizationSumAmount = dataIndex.getSterilizationAmount(reportParams, departmentCode, year, queryScope, startTime, endTime, null); //每个月的不合格的灭菌包数 String[] sterilizationUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 - sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, year, queryScope, startTime, endTime , null); //每个月的合格的灭菌包数 sterilizationForQualified = getQualifiedAmountMap(sterilizationSumAmount, sterilizationForUnqualified); //得到合格率 @@ -23241,7 +23316,7 @@ Map wetPacketAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ String[] wetPacketUnqualifiedSource = getModelSources(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, definitionList); - wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, year, queryScope, startTime, endTime , null); if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ //得到湿包率 getRatio(wetPacketAmount, sterilizationSumAmount, null, true); @@ -23259,10 +23334,11 @@ Map packingForQualified = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_UNQUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO)){ // 装配总数的Map - packingSumAmount = getPackingAmount(reportParams,"mm", 12, null,null); + packingSumAmount = getPackingAmount(reportParams,format, size, null,null); + packingSumAmount = replaceKey(packingSumAmount, queryScope, year); //每个月的不合格的灭菌包数 String[] packingUnqualifiedSource = getModelSources(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE, definitionList); - packingForUnqualified = getUnqualified(true, departmentCode, packingUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + packingForUnqualified = getUnqualified(true, departmentCode, packingUnqualifiedSource, year, queryScope, startTime, endTime , null); //每个月的合格的灭菌包数 packingForQualified = getQualifiedAmountMap(packingSumAmount, packingForUnqualified); //得到合格率 @@ -23276,87 +23352,87 @@ Map disposablegoodsUnqualifiedAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED)){ String[] disposablegoodsUnqualifiedSource = getModelSources(GoodsOption.MODEL_DISPOSABLEGOODS, definitionList); - disposablegoodsUnqualifiedAmount = getUnqualified(true, departmentCode, disposablegoodsUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + disposablegoodsUnqualifiedAmount = getUnqualified(true, departmentCode, disposablegoodsUnqualifiedSource, year, queryScope, startTime, endTime , null); } /** * 7 回收器械丢失件数 */ Map recyclingTousseErrorAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_RECYCLING_TOUSSEERROR)){ String[] recyclingTousseErrorSource = getModelSources(GoodsOption.MODEL_RECYCLINGTOUSSEERROR, definitionList); - recyclingTousseErrorAmount = getUnqualified(false, departmentCode, recyclingTousseErrorSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + recyclingTousseErrorAmount = getUnqualified(false, departmentCode, recyclingTousseErrorSource, year, queryScope, startTime, endTime , null); } /** * 8 包内器械缺失件数 */ Map missingInTousseAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MISSING_IN_TOUSSE)){ String[] missingInTousseSource = getModelSources(GoodsOption.MODEL_MISSING_INTOUSSE, definitionList); - missingInTousseAmount = getUnqualified(false, departmentCode, missingInTousseSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + missingInTousseAmount = getUnqualified(false, departmentCode, missingInTousseSource, year, queryScope, startTime, endTime , null); } /** * 9 包内器械功能不全 */ Map insufficiencyInTousseAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INSUFFICIENCY_IN_TOUSSE)){ String[] insufficiencyInTousseSource = getModelSources(GoodsOption.MODEL_INSUFFICIENCY_INTOUSSE, definitionList); - insufficiencyInTousseAmount = getUnqualified(false, departmentCode, insufficiencyInTousseSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + insufficiencyInTousseAmount = getUnqualified(false, departmentCode, insufficiencyInTousseSource, year, queryScope, startTime, endTime , null); } /** * 10 包内器械种类错误 */ Map typEerrorInTousseAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_TYPE_ERROR_IN_TOUSSE)){ String[] typEerrorInTousseSource = getModelSources(GoodsOption.MODEL_TYPEERROR_INTOUSSE, definitionList); - typEerrorInTousseAmount = getUnqualified(false, departmentCode, typEerrorInTousseSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + typEerrorInTousseAmount = getUnqualified(false, departmentCode, typEerrorInTousseSource, year, queryScope, startTime, endTime , null); } /** * 11 包内化学指示卡不合格 */ Map model_chemicalindicatorcard_intousse_unqualifiedAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_CHEMICALINDICATORCARD_INTOUSSE_UNQUALIFIED)){ String[] model_chemicalindicatorcard_intousse_unqualifiedSource = getModelSources(GoodsOption.MODEL_CHEMICALINDICATORCARD_INTOUSSE_UNQUALIFIED, definitionList); - model_chemicalindicatorcard_intousse_unqualifiedAmount = getUnqualified(true, departmentCode, model_chemicalindicatorcard_intousse_unqualifiedSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + model_chemicalindicatorcard_intousse_unqualifiedAmount = getUnqualified(true, departmentCode, model_chemicalindicatorcard_intousse_unqualifiedSource, year, queryScope, startTime, endTime , null); } /** * 12 物品标识不正确 */ Map item_id_is_incorrectAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_ID_IS_INCORRECT)){ String[] item_id_is_incorrectSource = getModelSources(GoodsOption.MODEL_ITEM_ID_IS_INCORRECT, definitionList); - item_id_is_incorrectAmount = getUnqualified(true, departmentCode, item_id_is_incorrectSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + item_id_is_incorrectAmount = getUnqualified(true, departmentCode, item_id_is_incorrectSource, year, queryScope, startTime, endTime , null); } /** * 13 灭菌失败 */ Map sterilization_failureAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE)){ String[] sterilization_failureSource = getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); - sterilization_failureAmount = getUnqualified(true, departmentCode, sterilization_failureSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + sterilization_failureAmount = getUnqualified(true, departmentCode, sterilization_failureSource, year, queryScope, startTime, endTime , null); } /** * 14 物品发放错误 */ Map item_invoice_errorAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR)){ String[] item_invoice_errorSource = getModelSources(GoodsOption.MODEL_ITEM_INVOICE_ERROR, definitionList); - item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, year, queryScope, startTime, endTime , null); } /** * 15、消毒物品清洗总件数 */ //每天的器械清洗数 Map disposablegoodsWashSumAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL)){ - disposablegoodsWashSumAmount = getWashSumAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH, null, null , null, TousseDefinition.PACKAGE_TYPE_DISINFECTION); + disposablegoodsWashSumAmount = getWashSumAmount(departmentCode, year, queryScope, startTime, endTime , null, TousseDefinition.PACKAGE_TYPE_DISINFECTION); } /** * 16、处理外来手术器械总件数 */ //每天的器械清洗数 Map foreigntousseWashSumAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_FOREIGNTOUSSE_WASH_TOTAL)){ - foreigntousseWashSumAmount = getWashSumAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH, null, null , null, TousseDefinition.PACKAGE_TYPE_FOREIGN + "," + TousseDefinition.PACKAGE_TYPE_SPLIT); + foreigntousseWashSumAmount = getWashSumAmount(departmentCode, year, queryScope, startTime, endTime , null, TousseDefinition.PACKAGE_TYPE_FOREIGN + "," + TousseDefinition.PACKAGE_TYPE_SPLIT); } /** * 17、处理敷料总件数 @@ -23367,7 +23443,8 @@ reportParams.tousseTypes = TousseDefinition.PACKAGE_TYPE_DRESSING; reportParams.tousseTypeAndPackageSizeSql = " and td.tousseType='"+ reportParams.tousseTypes +"'"; reportParams.includeDisposableGoodsInTousse = true; - dressingSumAmount = getPackingAmount(reportParams,"mm", 12, null,"按材料"); + dressingSumAmount = getPackingAmount(reportParams,format, size, null,"按材料"); + dressingSumAmount = replaceKey(dressingSumAmount, queryScope, year); } /** * 18 灭菌器使用炉次(按灭菌炉分组) @@ -23376,7 +23453,7 @@ Map> sterilizerUseAmountMap = null;//灭菌炉使用次数map Set ownGroups = objectDao.getStringSet("select distinct ownGroup from Sterilizer ", "空"); if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP)){ - sterilizerUseAmountMap = getSterilizerUseAmountMap(startTime, endTime, departmentCode,"mm"); + sterilizerUseAmountMap = getSterilizerUseAmountMap(startTime, endTime, departmentCode,format); } /** @@ -23385,82 +23462,105 @@ Map model_incorrect_choice_sterilizationmodeAmount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE)){ String[] model_incorrect_choice_sterilizationmodeSource = getModelSources(GoodsOption.MODEL_INCORRECT_CHOICE_STERILIZATIONMODE, definitionList); - model_incorrect_choice_sterilizationmodeAmount = getUnqualified(true, departmentCode, model_incorrect_choice_sterilizationmodeSource, year, SupplyRoomQualityQuota.MONTH, null, null , null); + model_incorrect_choice_sterilizationmodeAmount = getUnqualified(true, departmentCode, model_incorrect_choice_sterilizationmodeSource, year, queryScope, startTime, endTime , null); } for (int i = 0; i < dataConfigArr.size(); i++) { JSONObject dataConfig = (JSONObject)dataConfigArr.get(i); String dataIndexSource = dataConfig.optString("dataIndexSource"); String dataIndexNameForDisplay = dataConfig.optString("dataIndexNameForDisplay"); if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_RECYCLING_TOUSSEERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MISSING_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INSUFFICIENCY_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, insufficiencyInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, insufficiencyInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_TYPE_ERROR_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, typEerrorInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, typEerrorInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_CHEMICALINDICATORCARD_INTOUSSE_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, model_chemicalindicatorcard_intousse_unqualifiedAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, model_chemicalindicatorcard_intousse_unqualifiedAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_ID_IS_INCORRECT.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, item_id_is_incorrectAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, item_id_is_incorrectAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilization_failureAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilization_failureAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, item_invoice_errorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, item_invoice_errorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, disposablegoodsWashSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, disposablegoodsWashSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_FOREIGNTOUSSE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DRESSING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, dressingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, dressingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP.equals(dataIndexSource)){ int j = 0; for (String ownGroup : ownGroups) { - getSupplyRoomQualityQuota(list, sterilizerUseAmountMap.get(ownGroup), dataIndexNameForDisplay + " (" + ownGroup + ")", i + j, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, replaceKey(sterilizerUseAmountMap.get(ownGroup), queryScope, year), dataIndexNameForDisplay + " (" + ownGroup + ")", i + j, false, dataIndexsAsRows,queryScope); j++; } }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); } } return list; } - /** + * 替换数据的年份 换成前台需要显示的年份 + * @param map 数据 + * @param queryScope 查询模式 + * @param thisYear 今年 如2022 + * @return + */ + private Map replaceKey(Map map, String queryScope, String thisYear){ + if(SupplyRoomQualityQuota.YEAR.equals(queryScope) && MapUtils.isNotEmpty(map)){ + Map newMap = new HashMap(); + for (String key : map.keySet()) { + if(SupplyRoomQualityQuota.TOTAL.equals(key)){ + continue; + } + if(thisYear.equals(key)){ + newMap.put("今年", map.get(key)); + }else{ + newMap.put("去年", map.get(key)); + } + } + return newMap; + } + return map; + } + /** * 获取SupplyRoomQualityQuota集合(按天统计). * @param departmentCode 供应室的科室编码 * @param month 查询月份 @@ -23798,8 +23898,8 @@ */ private Map> getSterilizerUseAmountMap(String startTime, String endTime, String orgUnitCoding, String format){ String monthlyStr = dateQueryAdapter.dateConverAdapter("sr.enddate",null); - if("mm".equals(format)){ - monthlyStr = dateQueryAdapter.dateConverAdapter3("sr.enddate","mm"); + if("mm".equals(format) || "year".equals(format)){ + monthlyStr = dateQueryAdapter.dateConverAdapter3("sr.enddate",format); }else{ monthlyStr = dateQueryAdapter.dateConverAdapter("sr.enddate",null); } @@ -23917,13 +24017,13 @@ , String startTime, String endTime, boolean dataIndexsAsRows) { List list = new ArrayList(); if (SupplyRoomQualityQuota.MONTH.equals(queryScope) || "compareToLastYear".equals(queryScope) || "split".equals(queryScope)) { - list = getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime, dataConfigArr, dataIndexSources,dataIndexsAsRows); + if("compareToLastYear".equals(queryScope)){ + String lastYearTime = (Integer.valueOf(queryTime) - 1) + ""; + return getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime, dataConfigArr, dataIndexSources,dataIndexsAsRows, lastYearTime,SupplyRoomQualityQuota.YEAR); + } + list = getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime, dataConfigArr, dataIndexSources,dataIndexsAsRows,null,SupplyRoomQualityQuota.MONTH); if("split".equals(queryScope)){ return setSplitQueryScopeData(list); - }else if("compareToLastYear".equals(queryScope)){ - queryTime = (Integer.valueOf(queryTime) - 1) + ""; - List lastData = getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime, dataConfigArr, dataIndexSources,dataIndexsAsRows); - return setCompareToLastYeardata(lastData, list); } } else if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { list = getSupplyRoomQualityQuotaByDay(departmentCode, queryTime, dataConfigArr, dataIndexSources, startTime, endTime, dataIndexsAsRows); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java =================================================================== diff -u -r34606 -r34645 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 34606) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/DataIndex.java (.../DataIndex.java) (revision 34645) @@ -2780,7 +2780,9 @@ format = "dd"; } reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),format); - } else { + } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"year"); + }else { reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"mm"); } String sql = "select monthstr,sum(tl.amount) amount from (" @@ -2792,6 +2794,13 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("monthstr")); int amount = rs.getInt("amount"); + if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(date.equals(month)){ + month = "今年"; + }else{ + month = "去年"; + } + } map.put(month, amount); } } catch (Exception e) { @@ -2801,7 +2810,7 @@ } if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { map = convertEveryDay(map, firstDayToLastDay); - } else { + } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ map = convertMonthly(map); } }