Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java =================================================================== diff -u -r33383 -r33612 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 33383) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 33612) @@ -55,9 +55,15 @@ */ public static final String MODEL_STERILEUNQUALIFIEDSOURCE = "无菌物品不合格数据来源"; public static final String MODEL_WASHUNQUALIFIEDSOURCE = "器械清洗不合格数据来源"; + /** + * 很混乱的指标 有的地方当包装用 有的地方当灭菌用 暂不改原代码 新增MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE 仅用于包装不合格数据来源 + */ public static final String MODEL_PACKINGUNQUALIFIEDSOURCE = "包装不合格数据来源"; public static final String MODEL_WETPACKETSUNQUALIFIEDSOURCE = "湿包数据来源"; - + /** + * 仅用包装不合格数据来源 + */ + public static final String MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE = "仅用于包装不合格数据来源"; private String code; private String value; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java =================================================================== diff -u -r33526 -r33612 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java (.../WorkQualityCollectionDataIndex.java) (revision 33526) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/dataindex/WorkQualityCollectionDataIndex.java (.../WorkQualityCollectionDataIndex.java) (revision 33612) @@ -33,6 +33,7 @@ import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.foreigntousseapplication.service.ForeignTousseApplicationManager; +import com.forgon.disinfectsystem.jasperreports.javabeansource.SupplyRoomQualityQuota; import com.forgon.disinfectsystem.jasperreports.javabeansource.WorkQualityCollection; import com.forgon.disinfectsystem.qualitymonitoring.definition.service.QualityMonitoringDefinitionManager; import com.forgon.disinfectsystem.reportforms.vo.ReportQueryParams; @@ -231,9 +232,18 @@ * @return */ public Map getPackAmountMap(ReportQueryParams reportParams){ + return getPackAmountMap(reportParams, "mm"); + } + /** + * 获取装配数量的map,12个月的数据 + * @param querySupplyRoom + * @param year + * @return + */ + public Map getPackAmountMap(ReportQueryParams reportParams, String format){ Map map = new HashMap(); - reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3("ti.operationTime","mm"); + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3("ti.operationTime",format); String sql = "select monthstr,sum(tl.amount) from (" + dataIndex.getWorkAmountByPackageSQL("配包数量", reportParams) + ") tl group by monthstr "; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33528 -r33612 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33528) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33612) @@ -18803,7 +18803,7 @@ String rate = MathTools.divideStr(totalSterilzeAmount-totalSterilzeUQAmount,totalSterilzeAmount, 2); sterilizeRateStr = sterilizeRate1 + "/" + "全院无菌物品总件数" + totalSterilzeAmount + " = " + rate; rate = MathTools.divideStr(totalWashAmount-totalWasnUQAmount,totalWashAmount, 2); - washQualifiedRateStr = washQualifiedRateStr1 + "/" + "器械清洗总件数" + totalWashAmount + " = " + rate; + washQualifiedRateStr = washQualifiedRateStr1 + "/" + SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL + totalWashAmount + " = " + rate; packingUnQualifiedAmountStr = packingUnQualifiedAmountStr + " = " + totalPackingUQAmount; rate = MathTools.divideStr(totalPackingAmount-totalPackingUQAmount,totalPackingAmount, 2); packingUnQualifiedRateStr = packingQualifiedRateStr1 + "/" + "包装总件数" + totalPackingAmount + " = " + rate; @@ -21569,8 +21569,9 @@ * @param result 每月的值 * @param quotaName 行名称(即:指标名称) * @param rowSerialNumber 行序列号 + * @param onlyCalcRatio 只计算比率 */ - private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber) { + private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber, boolean onlyCalcRatio) { int columnSerialNumber = 0; for (int i = 1; i <= 12; i++) { String key = ""; @@ -21579,26 +21580,29 @@ } else { key = "0" + i; } - - String value = MapUtils.getString(result, key, "0"); - SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota((i + "月"), ++ columnSerialNumber, quotaName, rowSerialNumber, value); - list.add(vo); - - String ratio = MapUtils.getString(result, key + SupplyRoomQualityQuota.RATIO, ""); - SupplyRoomQualityQuota ratioVo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.RATIO, ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); - list.add(ratioVo); + if(onlyCalcRatio){ + String value = MapUtils.getString(result, key + SupplyRoomQualityQuota.RATIO, ""); + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota((i + "月"), ++ columnSerialNumber, quotaName, rowSerialNumber, value); + list.add(vo); + }else{ + String ratio = MapUtils.getString(result, key, "0"); + SupplyRoomQualityQuota ratioVo = new SupplyRoomQualityQuota((i + "月"), ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); + list.add(ratioVo); + } } - /** * 年合计 */ - String value = MapUtils.getString(result, SupplyRoomQualityQuota.TOTAL, "0"); - SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, value); - list.add(vo); + if(onlyCalcRatio){ + String ratio = MapUtils.getString(result, SupplyRoomQualityQuota.TOTAL + SupplyRoomQualityQuota.RATIO, ""); + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); + list.add(vo); + }else{ + String value = MapUtils.getString(result, SupplyRoomQualityQuota.TOTAL, "0"); + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, value); + list.add(vo); + } - String ratio = MapUtils.getString(result, SupplyRoomQualityQuota.TOTAL + SupplyRoomQualityQuota.RATIO, ""); - SupplyRoomQualityQuota ratioVo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.RATIO, ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); - list.add(ratioVo); } @@ -21609,8 +21613,9 @@ * @param quotaName 行名称(即:指标名称) * @param rowSerialNumber 行序列号 * @param firstDayToLastDay 某个月的所有天数 + * @param onlyCalcRatio 只计算比率 */ - private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber, List firstDayToLastDay) { + private void getSupplyRoomQualityQuota(List list, Map result, String quotaName, int rowSerialNumber, List firstDayToLastDay, boolean onlyCalcRatio) { if (CollectionUtils.isNotEmpty(firstDayToLastDay)) { int columnSerialNumber = 0; int size = firstDayToLastDay.size(); @@ -21624,98 +21629,213 @@ } else { value = MapUtils.getString(result, key, "0"); } - - SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(key, ++ columnSerialNumber, quotaName, rowSerialNumber, value); - list.add(vo); + if(onlyCalcRatio){ + value = MapUtils.getString(result, key + SupplyRoomQualityQuota.RATIO, ""); + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(key, ++ columnSerialNumber, quotaName, rowSerialNumber, value); + list.add(vo); + }else{ + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(key, ++ columnSerialNumber, quotaName, rowSerialNumber, value); + list.add(vo); + } } /** * 月合计 */ String value = MapUtils.getString(result, SupplyRoomQualityQuota.TOTAL, "0"); - SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, value); - list.add(vo); - - String ratio = MapUtils.getString(result, (SupplyRoomQualityQuota.TOTAL + SupplyRoomQualityQuota.RATIO), ""); - SupplyRoomQualityQuota ratioVo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.RATIO, ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); - list.add(ratioVo); + if(onlyCalcRatio){ + String ratio = MapUtils.getString(result, (SupplyRoomQualityQuota.TOTAL + SupplyRoomQualityQuota.RATIO), ""); + SupplyRoomQualityQuota ratioVo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, ratio); + list.add(ratioVo); + }else{ + SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota(SupplyRoomQualityQuota.TOTAL, ++ columnSerialNumber, quotaName, rowSerialNumber, value); + list.add(vo); + } } } /** + * 获取每个月的装配总数. + * @param departmentCode 处理供应室的科室编码 + * @param date 查询的时间范围,如果queryScope=月,则为yyyy,如果queryScope=日,则为yyyy-mm + * @param queryScope 查询的精度(月/天) + * @return + */ + public Map getPackingAmount(ReportQueryParams reportParams, String format, int size) { + Map map = new HashMap(); + // 装配总数的Map + Map packAmountMap = workQualityCollectionDataIndex.getPackAmountMap(reportParams, format); + Integer total = 0; + for (int i = 1; i <= size; i++) { + if("mm".equals(format)){ + map.put(i<10 ? "0" + i : "" + i, packAmountMap.get("" + i) == null?0:packAmountMap.get("" + i)); + }else{ + map.put("" + i, packAmountMap.get("" + i) == null?0:packAmountMap.get("" + i)); + } + if(packAmountMap.get("" + i) != null){ + total += packAmountMap.get("" + i); + } + } + map.put(SupplyRoomQualityQuota.TOTAL, total); + return map; + } + /** * 获取SupplyRoomQualityQuota集合(按月统计). * @param departmentCode 供应室的科室编码 * @param year 查询年份 * @return */ - private List getSupplyRoomQualityQuotaByMonth(String departmentCode, String year) { + private List getSupplyRoomQualityQuotaByMonth(String departmentCode, String year, JSONArray dataConfigArr, Set dataIndexSources) { List list = new ArrayList(); - - String[] sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 - String[] washSumUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); //器械清洗不合格数据来源 - String[] sterilizationUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 - String[] wetPacketUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); //湿包数据来源 - - int rowSerialNumber = 0; //行号 - /** * 1、灭菌物品的统计 */ //每个月的灭菌物品 - Map sterileArticles = getSterileArticles(departmentCode, year, SupplyRoomQualityQuota.MONTH); + Map sterileArticles = null; //每个月的不合格的灭菌物品 - Map sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + Map sterileArticlesForUnqualified = null; //每个月的合格的灭菌物品 - Map sterileArticlesForQualified = getQualifiedAmountMap(sterileArticles, sterileArticlesForUnqualified); - - //得到合格率 - getRatio(sterileArticlesForQualified, sterileArticles, null); - - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, SupplyRoomQualityQuota.STERILEARTICLES_QUALIFIED, ++ rowSerialNumber); - getSupplyRoomQualityQuota(list, sterileArticles, SupplyRoomQualityQuota.STERILEARTICLES_TOTAL, ++ rowSerialNumber); - + Map sterileArticlesForQualified = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ + sterileArticles = getSterileArticles(departmentCode, year, SupplyRoomQualityQuota.MONTH); + String[] sterileArticlesUnqualifiedSource = null; + sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 + sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + sterileArticlesForQualified = getQualifiedAmountMap(sterileArticles, sterileArticlesForUnqualified); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ + getRatio(sterileArticlesForQualified, sterileArticles, null); + } + } /** * 2、清洗器械的统计 */ //每个月的器械清洗数 - Map washSumAmount = getWashSumAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH); + Map washSumAmount = null; //每个月的不合格的器械清洗数 - Map washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + Map washSumAmountForUnqualified = null; //每个月的合格的器械清洗数 - Map washSumAmountForQualified = getQualifiedAmountMap(washSumAmount, washSumAmountForUnqualified); - - //得到合格率 - getRatio(washSumAmountForQualified, washSumAmount, null); - - getSupplyRoomQualityQuota(list, washSumAmountForQualified, SupplyRoomQualityQuota.WASH_QUALIFIED, ++ rowSerialNumber); - getSupplyRoomQualityQuota(list, washSumAmount, SupplyRoomQualityQuota.WASH_TOTAL, ++ rowSerialNumber); - + 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); + String[] washSumUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); //器械清洗不合格数据来源 + washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + washSumAmountForQualified = getQualifiedAmountMap(washSumAmount, washSumAmountForUnqualified); + //得到合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO)){ + getRatio(washSumAmountForQualified, washSumAmount, null); + } + } + /** * 3、灭菌包的统计 */ //每个月的灭菌包数 - Map sterilizationSumAmount = dataIndex.getSterilizationAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH); + Map sterilizationSumAmount = null; //每个月的不合格的灭菌包数 - Map sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + Map sterilizationForUnqualified = null; //每个月的合格的器械清洗数 - Map sterilizationForQualified = getQualifiedAmountMap(sterilizationSumAmount, sterilizationForUnqualified); + Map sterilizationForQualified = null; - //得到合格率 - getRatio(sterilizationForQualified, sterilizationSumAmount, null); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + //每个月的灭菌包数 + sterilizationSumAmount = dataIndex.getSterilizationAmount(departmentCode, year, SupplyRoomQualityQuota.MONTH); + //每个月的不合格的灭菌包数 + String[] sterilizationUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 + sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + //每个月的合格的灭菌包数 + sterilizationForQualified = getQualifiedAmountMap(sterilizationSumAmount, sterilizationForUnqualified); + //得到合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + getRatio(sterilizationForQualified, sterilizationSumAmount, null); + } + } - getSupplyRoomQualityQuota(list, sterilizationForQualified, SupplyRoomQualityQuota.STERILE_QUALIFIED, ++ rowSerialNumber); - getSupplyRoomQualityQuota(list, sterilizationSumAmount, SupplyRoomQualityQuota.STERILE_TOTAL, ++ rowSerialNumber); - /** * 4、湿包的统计 */ //每个月的不合格的灭菌包数 - Map wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + Map wetPacketAmount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ + String[] wetPacketUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); //湿包数据来源 + wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ + //得到湿包率 + getRatio(wetPacketAmount, sterilizationSumAmount, null); + } + } - //得到湿包率 - getRatio(wetPacketAmount, sterilizationSumAmount, null); + /** + * 5 包装统计 + */ + //每个月的装配包数 + Map packingSumAmount = new HashMap(); + //每个月的不合格的装配包数 + Map packingForUnqualified = null; + //每个月的合格的装配数 + Map packingForQualified = null; - getSupplyRoomQualityQuota(list, wetPacketAmount, SupplyRoomQualityQuota.WETPACKETS_TOTAL, ++ rowSerialNumber); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO)){ + ReportQueryParams reportParams = new ReportQueryParams(objectDao); + String startTime = year + "-01-01 00:00:00"; + String endTime = dataIndex.getNextYear(year) + " 00:00:00"; + String betweenSql = String.format(" between %s and %s ", dateQueryAdapter.dateAdapter(startTime),dateQueryAdapter.dateAdapter(endTime)); + reportParams.betweenSql = betweenSql; + reportParams.querySupplyRoom = departmentCode; + reportParams.isDisableIDCardSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.taskGroupSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.tousseGroupSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.tousseTypeAndPackageSizeSql = ""; + //数据库计算字符串长度的函数名 + String sqlLengthFunctionName = DatabaseUtil.getSqlLengthFunctionName(dbConnection); + reportParams.sqlLengthFunctionName = sqlLengthFunctionName; + + // 装配总数的Map + packingSumAmount = getPackingAmount(reportParams,"mm", 12); + //每个月的不合格的灭菌包数 + String[] packingUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 + packingForUnqualified = getUnqualified(true, departmentCode, packingUnqualifiedSource, year, SupplyRoomQualityQuota.MONTH); + //每个月的合格的灭菌包数 + packingForQualified = getQualifiedAmountMap(packingSumAmount, packingForUnqualified); + //得到合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + getRatio(packingForQualified, packingSumAmount, 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); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, true); + } + } return list; } @@ -21725,89 +21845,184 @@ * @param month 查询月份 * @return */ - public List getSupplyRoomQualityQuotaByDay(String departmentCode, String month) { + public List getSupplyRoomQualityQuotaByDay(String departmentCode, String month, JSONArray dataConfigArr, Set dataIndexSources) { List list = new ArrayList(); - - String[] sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 - String[] washSumUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); //器械清洗不合格数据来源 - String[] sterilizationUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 - String[] wetPacketUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); //湿包数据来源 - - int rowSerialNumber = 0; //行号 List firstDayToLastDay = ForgonDateUtils.getFirstDayToLastDay(month); //当月的所有天数 /** * 1、灭菌物品的统计 */ //每天的灭菌物品 - Map sterileArticles = getSterileArticles(departmentCode, month, SupplyRoomQualityQuota.DAY); + Map sterileArticles = null; //每天的不合格的灭菌物品 - Map sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + Map sterileArticlesForUnqualified = null; //每天的合格灭菌物品 - Map sterileArticlesForQualified = getQualifiedAmountMap(sterileArticles, sterileArticlesForUnqualified); - - //得到合格率 - getRatio(sterileArticlesForQualified, sterileArticles, SupplyRoomQualityQuota.TOTAL); - - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, SupplyRoomQualityQuota.STERILEARTICLES_QUALIFIED, ++ rowSerialNumber, firstDayToLastDay); - getSupplyRoomQualityQuota(list, sterileArticles, SupplyRoomQualityQuota.STERILEARTICLES_TOTAL, ++ rowSerialNumber, firstDayToLastDay); - - + Map sterileArticlesForQualified = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ + sterileArticles = getSterileArticles(departmentCode, month, SupplyRoomQualityQuota.DAY); + String[] sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 + sterileArticlesUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); //无菌物品不合格数据来源 + sterileArticlesForUnqualified = getUnqualified(true, departmentCode, sterileArticlesUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + sterileArticlesForQualified = getQualifiedAmountMap(sterileArticles, sterileArticlesForUnqualified); + + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO)){ + //得到合格率 + getRatio(sterileArticlesForQualified, sterileArticles, null); + } + } /** * 2、清洗器械的统计 */ //每天的器械清洗数 - Map washSumAmount = getWashSumAmount(departmentCode, month, SupplyRoomQualityQuota.DAY); + Map washSumAmount = null; //每天的不合格的器械清洗数 - Map washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + Map washSumAmountForUnqualified = null; //每天的合格的器械清洗数 - Map washSumAmountForQualified = getQualifiedAmountMap(washSumAmount, washSumAmountForUnqualified); - - //得到合格率 - getRatio(washSumAmountForQualified, washSumAmount, SupplyRoomQualityQuota.TOTAL); - - getSupplyRoomQualityQuota(list, washSumAmountForQualified, SupplyRoomQualityQuota.WASH_QUALIFIED, ++ rowSerialNumber, firstDayToLastDay); - getSupplyRoomQualityQuota(list, washSumAmount, SupplyRoomQualityQuota.WASH_TOTAL, ++ rowSerialNumber, firstDayToLastDay); - + Map washSumAmountForQualified = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + washSumAmount = getWashSumAmount(departmentCode, month, SupplyRoomQualityQuota.DAY); + String[] washSumUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); //器械清洗不合格数据来源 + washSumAmountForUnqualified = getUnqualified(false, departmentCode, washSumUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + washSumAmountForQualified = getQualifiedAmountMap(washSumAmount, washSumAmountForUnqualified); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO)){ + //得到合格率 + getRatio(washSumAmountForQualified, washSumAmount, null); + } + } /** * 3、灭菌包的统计 */ //每天的灭菌包数 - Map sterilizationSumAmount = dataIndex.getSterilizationAmount(departmentCode, month, SupplyRoomQualityQuota.DAY); + Map sterilizationSumAmount = null; //每天的不合格的灭菌包数 - Map sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + Map sterilizationForUnqualified = null; //每天的合格的器械清洗数 - Map sterilizationForQualified = getQualifiedAmountMap(sterilizationSumAmount, sterilizationForUnqualified); + Map sterilizationForQualified = null; - //得到合格率 - getRatio(sterilizationForQualified, sterilizationSumAmount, SupplyRoomQualityQuota.TOTAL); - getSupplyRoomQualityQuota(list, sterilizationForQualified, SupplyRoomQualityQuota.STERILE_QUALIFIED, ++ rowSerialNumber, firstDayToLastDay); - getSupplyRoomQualityQuota(list, sterilizationSumAmount, SupplyRoomQualityQuota.STERILE_TOTAL, ++ rowSerialNumber, firstDayToLastDay); - + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + //每个月的灭菌包数 + sterilizationSumAmount = dataIndex.getSterilizationAmount(departmentCode, month, SupplyRoomQualityQuota.DAY); + //每个月的不合格的灭菌包数 + String[] sterilizationUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 + sterilizationForUnqualified = getUnqualified(true, departmentCode, sterilizationUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + //每个月的合格的灭菌包数 + sterilizationForQualified = getQualifiedAmountMap(sterilizationSumAmount, sterilizationForUnqualified); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + //得到合格率 + getRatio(sterilizationForQualified, sterilizationSumAmount, null); + } + } /** * 4、湿包的统计 */ //每天的不合格的灭菌包数 - Map wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + Map wetPacketAmount = null; - //得到湿包率 - getRatio(wetPacketAmount, sterilizationSumAmount, SupplyRoomQualityQuota.TOTAL); - getSupplyRoomQualityQuota(list, wetPacketAmount, SupplyRoomQualityQuota.WETPACKETS_TOTAL, ++ rowSerialNumber, firstDayToLastDay); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ + String[] wetPacketUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); //湿包数据来源 + wetPacketAmount = getUnqualified(true, departmentCode, wetPacketUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO)){ + //得到湿包率 + getRatio(wetPacketAmount, sterilizationSumAmount, null); + } + } + /** + * 5 包装统计 + */ + //每个月的装配包数 + Map packingSumAmount = new HashMap(); + //每个月的不合格的装配包数 + Map packingForUnqualified = null; + //每个月的合格的装配数 + Map packingForQualified = null; + + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO)){ + ReportQueryParams reportParams = new ReportQueryParams(objectDao); + String startTime = firstDayToLastDay.get(0) + " 00:00:00"; + String endTime = firstDayToLastDay.get(firstDayToLastDay.size() - 1) + " 23:59:59"; + String betweenSql = String.format(" between %s and %s ", dateQueryAdapter.dateAdapter(startTime),dateQueryAdapter.dateAdapter(endTime)); + reportParams.betweenSql = betweenSql; + reportParams.querySupplyRoom = departmentCode; + reportParams.isDisableIDCardSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.taskGroupSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.tousseGroupSqlWithAliasOfTousseDefinitionIsTd = ""; + reportParams.tousseTypeAndPackageSizeSql = ""; + //数据库计算字符串长度的函数名 + String sqlLengthFunctionName = DatabaseUtil.getSqlLengthFunctionName(dbConnection); + reportParams.sqlLengthFunctionName = sqlLengthFunctionName; + + // 装配总数的Map + packingSumAmount = getPackingAmount(reportParams,"dd", firstDayToLastDay.size()); + //每个月的不合格的灭菌包数 + String[] packingUnqualifiedSource = goodsOptionManager.getGoodsOptionValue(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE, ""); //包装不合格数据来源 + packingForUnqualified = getUnqualified(true, departmentCode, packingUnqualifiedSource, month, SupplyRoomQualityQuota.DAY); + //每个月的合格的灭菌包数 + packingForQualified = getQualifiedAmountMap(packingSumAmount, packingForUnqualified); + //得到合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + getRatio(packingForQualified, packingSumAmount, 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, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay,i, firstDayToLastDay, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, firstDayToLastDay, true); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true); + } + } return list; } - @Override public List getSupplyRoomQualityQuota( String departmentCode, String queryScope, String queryTime) { List list = new ArrayList(); + //读取配置的数据 + String dataConfigStr = CssdUtils.getSystemSetConfigByName("nursingQualityIndexConfiguration"); + JSONArray dataConfigArr = null; + //数据源 + 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); + dataIndexSources.add(dataConfig.optString("dataIndexSource")); + } + } if (StringUtils.isNotBlank(departmentCode) && StringUtils.isNotBlank(queryScope) && StringUtils.isNotBlank(queryTime)) { if (SupplyRoomQualityQuota.MONTH.equals(queryScope)) { - list = getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime); + list = getSupplyRoomQualityQuotaByMonth(departmentCode, queryTime, dataConfigArr, dataIndexSources); } else if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { - list = getSupplyRoomQualityQuotaByDay(departmentCode, queryTime); + list = getSupplyRoomQualityQuotaByDay(departmentCode, queryTime, dataConfigArr, dataIndexSources); } } return list; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r33414 -r33612 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33414) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33612) @@ -378,7 +378,7 @@ break; } } - if("statisticalWorkload".equals(reportName) || "monthReport".equals(reportName)){//对于这些报表 数字单元格内容设置右边距 + if("supplyRoomQualityQuota".equals(reportName) || "statisticalWorkload".equals(reportName) || "monthReport".equals(reportName)){//对于这些报表 数字单元格内容设置右边距 for (int i = 0; i < size; i++) { JRPrintElement jr = jRPrintElements.get(i); if(!(jr instanceof JRTemplatePrintFrame)){ @@ -404,6 +404,9 @@ } JRTemplatePrintText kItemText = (JRTemplatePrintText)kItem; if(StringUtils.isNotBlank(kItemText.getText()) && StringTools.isNumber(kItemText.getText())){ + if("supplyRoomQualityQuota".equals(reportName) && kItemText.getHeight() == 30){ + continue;//供应室护理质量指标表 按天查询的列名不偏移 + } kItemText.getLineBox().setRightPadding(8); } } @@ -426,7 +429,7 @@ * @return */ private boolean canCalcframeWidth(String reportName){ - String canCalcStr = "departSatisfyDetailReport,operatingRoomInstrumentSetUsageAndApportionmentExpenseReport,formInstanceReport,QualityMonitoring,sterilizingStoveUseCount,tousseDeliverStatistics,deviceMaintenance,apparatusInfusionisType,monthReport,yearWorkloadReport2,statisticalWorkload,washWorkloadReprot,materialTypeWorkloadReport,packingUnqualifieReport,sterilizationWorkloadReport"; + String canCalcStr = "supplyRoomQualityQuota,departSatisfyDetailReport,operatingRoomInstrumentSetUsageAndApportionmentExpenseReport,formInstanceReport,QualityMonitoring,sterilizingStoveUseCount,tousseDeliverStatistics,deviceMaintenance,apparatusInfusionisType,monthReport,yearWorkloadReport2,statisticalWorkload,washWorkloadReprot,materialTypeWorkloadReport,packingUnqualifieReport,sterilizationWorkloadReport"; if(canCalcStr.indexOf(reportName) != -1){ return true; } @@ -4199,15 +4202,16 @@ String washPercentOfPass = StrutsParamUtils.getPraramValue("washPercentOfPass", ""); String packingPercentOfPass = StrutsParamUtils.getPraramValue("packingPercentOfPass", ""); String percentOfWetPackets = StrutsParamUtils.getPraramValue("percentOfWetPackets", ""); - + String onlyPackingPercentOfWetPackets = StrutsParamUtils.getPraramValue("onlyPackingPercentOfWetPackets", ""); sterilePercentOfPass = replaceSeparativeSign(sterilePercentOfPass); washPercentOfPass = replaceSeparativeSign(washPercentOfPass); packingPercentOfPass = replaceSeparativeSign(packingPercentOfPass); percentOfWetPackets = replaceSeparativeSign(percentOfWetPackets); + onlyPackingPercentOfWetPackets = replaceSeparativeSign(onlyPackingPercentOfWetPackets); goodsOptionManager.saveUnqualifiedSource(sterilePercentOfPass, washPercentOfPass, - packingPercentOfPass, percentOfWetPackets); + packingPercentOfPass, percentOfWetPackets,onlyPackingPercentOfWetPackets); StrutsResponseUtils.output(JSONUtil.buildJsonObject(true, "保存成功")); } catch (Exception e) { e.printStackTrace(); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java =================================================================== diff -u -r22467 -r33612 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java (.../GoodsOptionManagerImpl.java) (revision 22467) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java (.../GoodsOptionManagerImpl.java) (revision 33612) @@ -41,12 +41,12 @@ @Override public void saveUnqualifiedSource(String sterilePercentOfPass, String washPercentOfPass, String packingPercentOfPass, - String percentOfWetPackets) { + String percentOfWetPackets, String onlyPackingPercentOfWetPackets) { GoodsOption goodsOption1 = this.getGoodsOption(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption2 = this.getGoodsOption(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption3 = this.getGoodsOption(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption4 = this.getGoodsOption(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); - + GoodsOption goodsOption5 = this.getGoodsOption(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE, ""); if (goodsOption1 == null) { goodsOption1 = new GoodsOption(); goodsOption1.setModel(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE); @@ -63,14 +63,20 @@ goodsOption4 = new GoodsOption(); goodsOption4.setModel(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE); } + if (goodsOption5 == null) { + goodsOption5 = new GoodsOption(); + goodsOption5.setModel(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE); + } goodsOption1.setValue(sterilePercentOfPass); goodsOption2.setValue(washPercentOfPass); goodsOption3.setValue(packingPercentOfPass); goodsOption4.setValue(percentOfWetPackets); + goodsOption5.setValue(onlyPackingPercentOfWetPackets); save(goodsOption1); save(goodsOption2); save(goodsOption3); save(goodsOption4); + save(goodsOption5); } @Override @@ -79,6 +85,7 @@ GoodsOption goodsOption2 = this.getGoodsOption(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption3 = this.getGoodsOption(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption4 = this.getGoodsOption(GoodsOption.MODEL_WETPACKETSUNQUALIFIEDSOURCE, ""); + GoodsOption goodsOption5 = this.getGoodsOption(GoodsOption.MODEL_ONLY_PACKINGUNQUALIFIEDSOURCE, ""); JSONObject result = new JSONObject(); if (goodsOption1 != null) { @@ -93,6 +100,9 @@ if (goodsOption4 != null) { result.put("percentOfWetPackets", goodsOption4.getValue()); } + if (goodsOption5 != null) { + result.put("onlyPackingPercentOfWetPackets", goodsOption5.getValue()); + } return result; } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java =================================================================== diff -u -r22467 -r33612 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 22467) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 33612) @@ -6,7 +6,7 @@ */ public class SupplyRoomQualityQuota { - public static String TOTAL = "总数"; + public static String TOTAL = "合计"; public static String DAY = "天"; public static String MONTH = "月"; public static String RATIO = "比率"; @@ -18,7 +18,24 @@ public static String STERILE_TOTAL = "灭菌包总数"; public static String WETPACKETS_TOTAL = "湿包数"; + public static String DATAINDEXSOURCE_REUSABLEGOODS_TOTAL = "复用性物品总件数"; + public static String DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED = "复用性物品合格件数"; + public static String DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO = "复用性物品合格率"; + public static String DATAINDEXSOURCE_WASH_TOTAL = "器械清洗总件数"; + public static String DATAINDEXSOURCE_WASH_QUALIFIED = "器械清洗合格件数"; + public static String DATAINDEXSOURCE_WASH_QUALIFIEDRATIO = "器械清洗合格率"; + + public static String DATAINDEXSOURCE_STERILE_TOTAL = "复用性灭菌物品总件数"; + public static String DATAINDEXSOURCE_STERILE_QUALIFIED = "复用性灭菌物品合格件数"; + public static String DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO = "复用性灭菌物品合格率"; + + public static String DATAINDEXSOURCE_WETPACKETS_TOTAL = "湿包件数"; + public static String DATAINDEXSOURCE_WETPACKETS_RATIO = "湿包发生率"; + + public static String DATAINDEXSOURCE_PACKING_TOTAL = "复用性物品包装总件数"; + public static String DATAINDEXSOURCE_PACKING_QUALIFIED = "复用性物品包装合格件数"; + public static String DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO = "包装合格率"; /** * 交叉报表的列名称(月份和天) */ Index: ssts-web/src/main/webapp/jasperRtp/supplyRoomQualityQuota.jasper =================================================================== diff -u -r22564 -r33612 Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/supplyRoomQualityQuota.jrxml =================================================================== diff -u -r22564 -r33612 --- ssts-web/src/main/webapp/jasperRtp/supplyRoomQualityQuota.jrxml (.../supplyRoomQualityQuota.jrxml) (revision 22564) +++ ssts-web/src/main/webapp/jasperRtp/supplyRoomQualityQuota.jrxml (.../supplyRoomQualityQuota.jrxml) (revision 33612) @@ -26,8 +26,8 @@ <band height="38" splitType="Stretch"> <textField> - <reportElement uuid="9970edd2-d300-4de0-8b56-068541d3c1e1" x="0" y="0" width="765" height="38"/> - <textElement verticalAlignment="Middle"> + <reportElement uuid="9970edd2-d300-4de0-8b56-068541d3c1e1" x="0" y="0" width="1000" height="38"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> <font size="12" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> @@ -41,23 +41,37 @@ <crosstabHeaderCell> <cellContents> <staticText> - <reportElement uuid="efbde1c9-384b-48ad-a2cc-879adb594797" style="Crosstab Data Text" mode="Opaque" x="0" y="0" width="80" height="30" forecolor="#000000" backcolor="#F0F8FF"/> + <reportElement uuid="efbde1c9-384b-48ad-a2cc-879adb594797" style="Crosstab Data Text" mode="Opaque" x="40" y="0" width="108" height="30" forecolor="#000000" backcolor="#F0F8FF"/> <box> - <pen lineWidth="1.0"/> - <topPen lineWidth="1.0"/> - <leftPen lineWidth="1.0"/> - <bottomPen lineWidth="1.0"/> - <rightPen lineWidth="1.0"/> + <pen lineWidth="0.5"/> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> </box> <textElement textAlignment="Center" verticalAlignment="Middle" rotation="None" markup="none"> <font fontName="SansSerif" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <paragraph lineSpacing="Single"/> </textElement> <text><![CDATA[指标名称]]></text> </staticText> + <staticText> + <reportElement uuid="854617c6-1208-4bfd-af48-2bdb4184ce81" style="Crosstab Data Text" mode="Opaque" x="0" y="0" width="40" height="30" isRemoveLineWhenBlank="true" backcolor="#F0F8FF"/> + <box> + <pen lineWidth="0.5"/> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement verticalAlignment="Middle"> + <font size="12" isBold="true"/> + </textElement> + <text><![CDATA[序号]]></text> + </staticText> </cellContents> </crosstabHeaderCell> - <rowGroup name="rowSerialNumber" width="0"> + <rowGroup name="rowSerialNumber" width="40"> <bucket class="java.lang.Integer"> <bucketExpression><![CDATA[$F{rowSerialNumber}]]></bucketExpression> </bucket> @@ -66,13 +80,20 @@ <box> <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/> </box> + <textField> + <reportElement uuid="5bc65bf5-8251-4738-aa05-622a73ce132b" style="Crosstab Data Text" x="0" y="0" width="40" height="25"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font size="12"/> + </textElement> + <textFieldExpression><![CDATA[$V{rowSerialNumber}+1]]></textFieldExpression> + </textField> </cellContents> </crosstabRowHeader> <crosstabTotalRowHeader> <cellContents/> </crosstabTotalRowHeader> </rowGroup> - <rowGroup name="rowName" width="80"> + <rowGroup name="rowName" width="108"> <bucket class="java.lang.String"> <bucketExpression><![CDATA[$F{rowName}]]></bucketExpression> </bucket> @@ -82,7 +103,7 @@ <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/> </box> <textField> - <reportElement uuid="8d82180a-7b3c-45de-a0e6-10cf18b0c312" style="Crosstab Data Text" mode="Transparent" x="0" y="0" width="80" height="25"/> + <reportElement uuid="8d82180a-7b3c-45de-a0e6-10cf18b0c312" style="Crosstab Data Text" mode="Transparent" x="0" y="0" width="108" height="25"/> <textElement verticalAlignment="Middle"> <font size="12" isBold="false"/> </textElement> @@ -141,7 +162,7 @@ </box> <textField> <reportElement uuid="5378e2d5-2d92-49a1-a140-c360c59fad0f" style="Crosstab Data Text" x="0" y="0" width="56" height="25"/> - <textElement verticalAlignment="Middle"> + <textElement textAlignment="Right" verticalAlignment="Middle"> <font size="12"/> </textElement> <textFieldExpression><![CDATA[$V{valueMeasure}]]></textFieldExpression> Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java =================================================================== diff -u -r22467 -r33612 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java (.../GoodsOptionManager.java) (revision 22467) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java (.../GoodsOptionManager.java) (revision 33612) @@ -34,11 +34,12 @@ * 保存不合格数据来源的配置. * @param sterilePercentOfPass 无菌物品不合格数据来源 * @param washPercentOfPass 器械清洗不合格数据来源 - * @param packingPercentOfPass 包装不合格数据来源 + * @param packingPercentOfPass 包装不合格数据来源(旧数据供应室护理质量指标报表中用来做灭菌不合格数据来源 暂不处理 保持原样) * @param percentOfWetPackets 湿包数据来源 + * @param onlyPackingPercentOfWetPackets 仅用于包装不合格数据来源 */ public void saveUnqualifiedSource(String sterilePercentOfPass, String washPercentOfPass, - String packingPercentOfPass, String percentOfWetPackets); + String packingPercentOfPass, String percentOfWetPackets, String onlyPackingPercentOfWetPackets); /** * 加载不合格数据来源的配置的数据.