Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java =================================================================== diff -u -r36317 -r36338 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36317) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36338) @@ -24,12 +24,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceAdditionalInfo; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoringconfig.QualityMonitoringDefinition; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.jasperreports.javabeansource.RatioVo; @@ -381,76 +385,121 @@ String[] model_incorrect_choice_sterilizationmodeSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_INCORRECT_CHOICE_STERILIZATIONMODE, definitionList); model_incorrect_choice_sterilizationmodeAmount = getUnqualified(true, departmentCode, model_incorrect_choice_sterilizationmodeSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); } - for (int i = 0; i < dataConfigArr.size(); i++) { - JSONObject dataConfig = (JSONObject)dataConfigArr.get(i); + + + /** + * 20 灭菌故障 + */ + Map sterilization_faultAmount = null; + if(dataIndexSources.contains(GoodsOption.MODEL_STERILIZATION_FAULT)){ + String[] sterilization_faultSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAULT, definitionList); + sterilization_faultAmount = getUnqualified(true, departmentCode, sterilization_faultSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , null); + } + /** + * 21、灭菌记录确认次数 + */ + Map sterilizer_confirm_amount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT)){ + sterilizer_confirm_amount = getSterilizer_confirm_amount(startTime, endTime, departmentCode, null); + } + + /** + * 22、复用性物品发货数量 + */ + Map invoie_tousse_amount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT)){ + invoie_tousse_amount = getInvoie_tousse_amount(startTime, endTime, departmentCode, null); + } + + /** + * 23 灭菌数量(按灭菌方式) + */ + //获取所有灭菌炉分组 + Map> total_by_sterilizationmodeMap = null;//灭菌炉使用次数map + if(dataIndexSources.contains(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE)){ + total_by_sterilizationmodeMap = getTotal_by_sterilizationmodeMap(reportParams, SupplyRoomQualityQuota.DAY, startTime, endTime, departmentCode); + } + int i = 0;//序号 + for (int j = 0; j < dataConfigArr.size(); j++) { + JSONObject dataConfig = (JSONObject)dataConfigArr.get(j); String dataIndexSource = dataConfig.optString("dataIndexSource"); String dataIndexNameForDisplay = dataConfig.optString("dataIndexNameForDisplay"); if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay,i, firstDayToLastDay, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay,i++, firstDayToLastDay, true, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, firstDayToLastDay, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, firstDayToLastDay, true, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_RECYCLING_TOUSSEERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MISSING_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INSUFFICIENCY_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, insufficiencyInTousseAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, insufficiencyInTousseAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_TYPE_ERROR_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, typEerrorInTousseAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, typEerrorInTousseAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_CHEMICALINDICATORCARD_INTOUSSE_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, model_chemicalindicatorcard_intousse_unqualifiedAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, model_chemicalindicatorcard_intousse_unqualifiedAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_ID_IS_INCORRECT.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, item_id_is_incorrectAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, item_id_is_incorrectAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilization_failureAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, sterilization_failureAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(GoodsOption.MODEL_STERILIZATION_FAULT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilization_faultAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, item_invoice_errorAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, item_invoice_errorAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, disposablegoodsWashSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, disposablegoodsWashSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_FOREIGNTOUSSE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DRESSING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, dressingSumAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, dressingSumAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP.equals(dataIndexSource)){ if(MapUtils.isNotEmpty(sterilizerUseAmountMap)){ - int j = 0; for (Entry> entry : sterilizerUseAmountMap.entrySet()) { - getSupplyRoomQualityQuota(list, entry.getValue(), dataIndexNameForDisplay + " (" + entry.getKey() + ")", i + j, firstDayToLastDay, false, dataIndexsAsRows); - j++; + getSupplyRoomQualityQuota(list, entry.getValue(), dataIndexNameForDisplay + " (" + entry.getKey() + ")", i++, firstDayToLastDay, false, dataIndexsAsRows); } } }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i, firstDayToLastDay, false, dataIndexsAsRows); + getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizer_confirm_amount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, invoie_tousse_amount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE.equals(dataIndexSource)){ + if(MapUtils.isNotEmpty(total_by_sterilizationmodeMap)){ + for (Entry> entry : total_by_sterilizationmodeMap.entrySet()) { + getSupplyRoomQualityQuota(list, entry.getValue(), dataIndexNameForDisplay + " (" + entry.getKey() + ")", i++, firstDayToLastDay, false, dataIndexsAsRows); + } + } } } return list; @@ -476,7 +525,7 @@ Map sterileArticlesForQualified = null; ReportQueryParams reportParams = new ReportQueryParams(objectDao); String startTime = null; - String endTime = dataIndex.getNextYear(year) + " 00:00:00";; + String endTime = DataIndex.getNextYear(year) + " 00:00:00";; if(StringUtils.isNotBlank(lastYearTime)){ startTime = lastYearTime + "-01-01 00:00:00"; }else{ @@ -536,7 +585,7 @@ //每个月的合格的器械清洗数 Map sterilizationForQualified = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED) || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO)){ //每个月的灭菌包数 sterilizationSumAmount = dataIndex.getSterilizationAmount(reportParams, departmentCode, year, queryScope, startTime, endTime, null); //每个月的不合格的灭菌包数 @@ -692,8 +741,9 @@ */ //获取所有灭菌炉分组 Map> sterilizerUseAmountMap = null;//灭菌炉使用次数map - Set ownGroups = objectDao.getStringSet("select distinct ownGroup from Sterilizer ", "空"); + Set ownGroups = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP)){ + ownGroups = objectDao.getStringSet("select distinct ownGroup from Sterilizer ", "空"); sterilizerUseAmountMap = getSterilizerUseAmountMap(startTime, endTime, departmentCode,format); } @@ -705,74 +755,118 @@ String[] model_incorrect_choice_sterilizationmodeSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_INCORRECT_CHOICE_STERILIZATIONMODE, definitionList); 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); + + /** + * 20 灭菌故障 + */ + Map sterilization_faultAmount = null; + if(dataIndexSources.contains(GoodsOption.MODEL_STERILIZATION_FAULT)){ + String[] sterilization_faultSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAULT, definitionList); + sterilization_faultAmount = getUnqualified(true, departmentCode, sterilization_faultSource, year, queryScope, startTime, endTime , null); + } + /** + * 21、灭菌记录确认次数 + */ + Map sterilizer_confirm_amount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT)){ + sterilizer_confirm_amount = getSterilizer_confirm_amount(startTime, endTime, departmentCode, format); + } + + /** + * 22、复用性物品发货数量 + */ + Map invoie_tousse_amount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT)){ + invoie_tousse_amount = getInvoie_tousse_amount(startTime, endTime, departmentCode, format); + } + + /** + * 23 灭菌数量(按灭菌方式) + */ + //获取所有灭菌炉分组 + Map> total_by_sterilizationmodeMap = null;//灭菌炉使用次数map + Set sterilizationmodes = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE)){ + sterilizationmodes = objectDao.getStringSet("select distinct sterilizationmode from "+Sterilisation.class.getSimpleName(), "无"); + total_by_sterilizationmodeMap = getTotal_by_sterilizationmodeMap(reportParams, queryScope, startTime, endTime, departmentCode); + } + int i = 0;//序号 + for (int k = 0; k < dataConfigArr.size(); k++) { + JSONObject dataConfig = (JSONObject)dataConfigArr.get(k); String dataIndexSource = dataConfig.optString("dataIndexSource"); String dataIndexNameForDisplay = dataConfig.optString("dataIndexNameForDisplay"); if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterileArticles, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterileArticlesForQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, washSumAmountForUnqualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, washSumAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WASH_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, washSumAmountForQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterilizationSumAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILE_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, sterilizationForQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_WETPACKETS_RATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, wetPacketAmount, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, packingSumAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, packingForUnqualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_PACKING_QUALIFIEDRATIO.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i, true, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, packingForQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, disposablegoodsUnqualifiedAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_RECYCLING_TOUSSEERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, recyclingTousseErrorAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MISSING_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, missingInTousseAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INSUFFICIENCY_IN_TOUSSE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, insufficiencyInTousseAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + 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,queryScope); + 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,queryScope); + 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,queryScope); + 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,queryScope); + getSupplyRoomQualityQuota(list, sterilization_failureAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(GoodsOption.MODEL_STERILIZATION_FAULT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilization_faultAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, item_invoice_errorAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + 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,queryScope); + getSupplyRoomQualityQuota(list, disposablegoodsWashSumAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_FOREIGNTOUSSE_WASH_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, foreigntousseWashSumAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DRESSING_TOTAL.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, dressingSumAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + 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, replaceKey(sterilizerUseAmountMap.get(ownGroup), queryScope, year), dataIndexNameForDisplay + " (" + ownGroup + ")", i + j, false, dataIndexsAsRows,queryScope); - j++; + getSupplyRoomQualityQuota(list, replaceKey(sterilizerUseAmountMap.get(ownGroup), queryScope, year), dataIndexNameForDisplay + " (" + ownGroup + ")", i++, false, dataIndexsAsRows,queryScope); } }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE.equals(dataIndexSource)){ - getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i, false, dataIndexsAsRows,queryScope); + getSupplyRoomQualityQuota(list, model_incorrect_choice_sterilizationmodeAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizer_confirm_amount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, invoie_tousse_amount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE.equals(dataIndexSource)){ + for (String sterilizationmode : sterilizationmodes) { + getSupplyRoomQualityQuota(list, replaceKey(total_by_sterilizationmodeMap.get(sterilizationmode), queryScope, year), dataIndexNameForDisplay + " (" + sterilizationmode + ")", i++, false, dataIndexsAsRows,queryScope); + } } } return list; @@ -951,16 +1045,16 @@ RatioVo ratioVo = (RatioVo)resultObj; ratio = ratioVo.getRatio(); vo3 = new SupplyRoomQualityQuota("去年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); + list.add(vo3); } - 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); } - list.add(vo4); }else{ String value = MapUtils.getString(result, "去年", "0"); SupplyRoomQualityQuota vo = new SupplyRoomQualityQuota("去年", rowSerialNumber, quotaName, rowSerialNumber, value, dataIndexsAsRows); @@ -1082,13 +1176,15 @@ if(sterilizerUseAmountMap.containsKey(ownGroup)){ itemMap = sterilizerUseAmountMap.get(ownGroup); Integer totalAmount = (Integer)itemMap.get(SupplyRoomQualityQuota.TOTAL); + Integer monthAmount = (Integer)itemMap.get(monthStr); + itemMap.put(monthStr, MathTools.add(monthAmount, amount5).intValue()); itemMap.put(SupplyRoomQualityQuota.TOTAL, MathTools.add(totalAmount, amount5).intValue()); }else{ itemMap = new HashMap(); itemMap.put(SupplyRoomQualityQuota.TOTAL, amount5); + itemMap.put(monthStr, amount5); sterilizerUseAmountMap.put(ownGroup, itemMap); } - itemMap.put(monthStr, amount5); } } catch (SQLException e) { e.printStackTrace(); @@ -1098,6 +1194,66 @@ return sterilizerUseAmountMap; } /** + * 按灭菌炉分组获取灭菌炉使用次数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param orgUnitCoding 供应室 + * @return + */ + private Map> getTotal_by_sterilizationmodeMap(ReportQueryParams reportParams, String queryScope, String startTime, String endTime, String orgUnitCoding){ + if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + String format = null; + if(dbConnection.isOracle()){ + format = "yyyy-MM-dd"; + }else{ + format = "dd"; + } + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),format); + } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"yyyy"); + }else { + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"mm"); + } + reportParams.extraGroupBy = ",ti.sterilingMode "; + reportParams.extraSelectColumns = ",ti.sterilingMode "; + String sql = "select monthstr,sum(tl.amount) amount,sterilingMode from (" + + dataIndex.getWorkAmountByPackageSQL("灭菌数量", + reportParams) + +") tl group by monthstr,sterilingMode "; + + ResultSet rs = null; + Map> sterilizerAmountMap = new HashMap>();//灭菌炉使用次数map + try { + rs = objectDao.executeSql(sql); + while (rs.next()) { + Integer amount = rs.getInt("amount"); + String sterilingMode = rs.getString("sterilingMode"); + if(StringUtils.isBlank(sterilingMode)){ + sterilingMode = "无"; + } + String monthStr = rs.getString("monthStr"); + Map itemMap = null; + if(sterilizerAmountMap.containsKey(sterilingMode)){ + itemMap = sterilizerAmountMap.get(sterilingMode); + Integer totalAmount = (Integer)itemMap.get(SupplyRoomQualityQuota.TOTAL); + Integer monthAmount = (Integer)itemMap.get(monthStr); + itemMap.put(monthStr, MathTools.add(monthAmount, amount).intValue()); + itemMap.put(SupplyRoomQualityQuota.TOTAL, MathTools.add(totalAmount, amount).intValue()); + }else{ + itemMap = new HashMap(); + itemMap.put(SupplyRoomQualityQuota.TOTAL, amount); + itemMap.put(monthStr, amount); + sterilizerAmountMap.put(sterilingMode, itemMap); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return sterilizerAmountMap; + } + /** * 获取每个月的不合格数. * @param tousse 是否器械包(如果为true则取质量监测登记的器械包,反之取材料) * @param departmentCode 处理供应室的科室编码 @@ -1216,6 +1372,120 @@ } return map; } + public Map getSterilizer_confirm_amount(String startTime, String endTime, String orgUnitCoding, String format){ + String monthlyStr = dateQueryAdapter.dateConverAdapter("sr.enddate",null); + if("mm".equals(format) || "yyyy".equals(format)){ + monthlyStr = dateQueryAdapter.dateConverAdapter3("sr.enddate",format); + }else{ + monthlyStr = dateQueryAdapter.dateConverAdapter("sr.enddate",null); + } + String sql = "select count(*) amount,"+ monthlyStr +" monthStr from SterilizationRecord sr where " + + " sr.enddate between " + + dateQueryAdapter.dateAdapter(startTime) + " and " + + dateQueryAdapter.dateAdapter(endTime) + + SqlUtils.get_InSql_Extra("sr.orgUnitCoding", orgUnitCoding) + + SqlUtils.getIsNotNullSql(dbConnection, "sr.srSituationComfirmer") + + "group by " + + monthlyStr; + ResultSet rs3 = null; + Map itemMap = new HashMap(); + Integer totalAmount = 0; + try { + rs3 = objectDao.executeSql(sql); + while (rs3.next()) { + Integer amount5 = rs3.getInt("amount"); + String monthStr = rs3.getString("monthStr"); + totalAmount = MathTools.add(totalAmount, amount5).intValue(); + itemMap.put(monthStr, amount5); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs3); + } + itemMap.put(SupplyRoomQualityQuota.TOTAL, totalAmount); + return itemMap; + } + public Map getInvoie_tousse_amount(String startTime, String endTime, String orgUnitCoding, String format){ + String monthlyStr = null; + if("mm".equals(format) || "yyyy".equals(format)){ + monthlyStr = dateQueryAdapter.dateConverAdapter3("m.sendTime",format); + }else{ + monthlyStr = dateQueryAdapter.dateConverAdapter("m.sendTime",null); + } + boolean showCustonTousseAmount = CssdUtils.getSystemSetConfigByNameBool("isMonthReportShowCustonTousseAmount", false); + int dataSoureOfMaterialsCountOfToussesInReports = CssdUtils.getSystemSetConfigByNameInt("dataSoureOfMaterialsCountOfToussesInReports", 3); + String columnSql = null; + String joinMaterialInstanceSql = null; + if(dataSoureOfMaterialsCountOfToussesInReports == 3){ + columnSql = "bo.materialAmount"; + joinMaterialInstanceSql = ""; + }else{ + columnSql = "m.mcount"; + joinMaterialInstanceSql = " left join ( select ctd.id, sum(cmi.count) as mcount from TousseDefinition ctd inner join MaterialInstance cmi on ctd.id = cmi.tousse_id group by ctd.id ) m on m.id = td.id"; + } + String cumstomTousseAmount = showCustonTousseAmount?" 1 ":" case when " + + columnSql + + " is null then 1 else " + + columnSql + + " end "; + String tousseAmount = null; + boolean isStatisticDisinfectionGoodsAmountByPackage = CssdUtils.getSystemSetConfigByNameBool("isStatisticDisinfectionGoodsAmountByPackage", false); + if(isStatisticDisinfectionGoodsAmountByPackage){ + tousseAmount = " case td.toussetype when '"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"' then " + cumstomTousseAmount + + " else 1 end "; + }else{ + tousseAmount = " case td.toussetype when '"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"' then " + cumstomTousseAmount + + " when '"+TousseDefinition.PACKAGE_TYPE_DISINFECTION+"' then case when " + + columnSql + + " is null then 1 else " + + columnSql + + " end else 1 end "; + } + String tousseTypeSql = SqlUtils.getStringFieldInLargeCollectionsPredicate("td.tousseType", dataIndex.getTousseTypes("全部器械包")); + //器械包 一次发货 + String tousseSql = "select po.orgUnitCoding," + + tousseAmount + " as amount,po.sendTime from " + + Invoice.class.getSimpleName() + " po inner join " + TousseInstance.class.getSimpleName() + " bo on po.id = bo.invoice_id " + + " inner join " + BarcodeDevice.class.getSimpleName()+ " do on bo.id = do.id" + + " inner join " + TousseDefinition.class.getSimpleName() + " td on bo.tousseDefinition_id=td.id " + + " join "+ TousseDefinition.class.getSimpleName() +" tdc on tdc.id=td.ancestorID " + + joinMaterialInstanceSql + " where " + tousseTypeSql; + //器械包 二次发货 + String tousseSql2 = "select po.orgUnitCoding," + + tousseAmount + " as amount,po.sendTime from " + + Invoice.class.getSimpleName() + " po inner join " + TousseInstance.class.getSimpleName() + " bo on po.id = bo.invoice2_id " + + " inner join " + BarcodeDevice.class.getSimpleName()+ " do on bo.id = do.id" + + " inner join " + TousseDefinition.class.getSimpleName() + " td on bo.tousseDefinition_id=td.id " + + " join "+ TousseDefinition.class.getSimpleName() +" tdc on tdc.id=td.ancestorID " + + joinMaterialInstanceSql + " where " + tousseTypeSql; + String sql = " select "+ monthlyStr + " monthStr,sum(amount) amount from ( "; + sql += tousseSql + " union all "; + sql += tousseSql2 + ") m "; + sql += " where m.sendTime between " + + dateQueryAdapter.dateAdapter(startTime) + + " and " + dateQueryAdapter.dateAdapter(endTime) + + " and m.orgUnitCoding='"+ orgUnitCoding +"'"; + sql += " group by " + monthlyStr; + ResultSet rs3 = null; + Map itemMap = new HashMap(); + Integer totalAmount = 0; + try { + rs3 = objectDao.executeSql(sql); + while (rs3.next()) { + Integer amount5 = rs3.getInt("amount"); + String monthStr = rs3.getString("monthStr"); + totalAmount = MathTools.add(totalAmount, amount5).intValue(); + itemMap.put(monthStr, amount5); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs3); + } + itemMap.put(SupplyRoomQualityQuota.TOTAL, totalAmount); + return itemMap; + } /** * 获取器械清洗数. * @param departmentCode 处理供应室的科室编码 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java =================================================================== diff -u -r33894 -r36338 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java (.../GoodsOptionManager.java) (revision 33894) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManager.java (.../GoodsOptionManager.java) (revision 36338) @@ -47,12 +47,14 @@ * @param sterilizationFailurePP 灭菌失败 * @param itemInvoiceErrorPP 物品发放错误 * @param incorrectChoiceSterilizationmodePP 灭菌方式选择不正确 + * @param sterilizationFaultPP 灭菌故障 */ public void saveUnqualifiedSource(String sterilePercentOfPass, String washPercentOfPass, String packingPercentOfPass, String percentOfWetPackets, String onlyPackingPercentOfWetPackets, String disposablegoodsPP , String recyclingTousseErrorPP, String missingInToussePP, String insufficiencyInToussePP , String typeErrorInToussePP, String chemicaCardInToussePP, String itemIDIsIncorrectPP - , String sterilizationFailurePP, String itemInvoiceErrorPP, String incorrectChoiceSterilizationmodePP); + , String sterilizationFailurePP, String itemInvoiceErrorPP, String incorrectChoiceSterilizationmodePP + ,String sterilizationFaultPP); /** * 加载不合格数据来源的配置的数据. Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java =================================================================== diff -u -r33898 -r36338 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java (.../GoodsOptionManagerImpl.java) (revision 33898) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/reportoption/GoodsOptionManagerImpl.java (.../GoodsOptionManagerImpl.java) (revision 36338) @@ -44,7 +44,8 @@ String percentOfWetPackets, String onlyPackingPercentOfWetPackets, String disposablegoodsPP , String recyclingTousseErrorPP, String missingInToussePP, String insufficiencyInToussePP , String typeErrorInToussePP, String chemicaCardInToussePP, String itemIDIsIncorrectPP - , String sterilizationFailurePP, String itemInvoiceErrorPP, String incorrectChoiceSterilizationmodePP) { + , String sterilizationFailurePP, String itemInvoiceErrorPP, String incorrectChoiceSterilizationmodePP + , String sterilizationFaultPP) { GoodsOption goodsOption1 = this.getGoodsOption(GoodsOption.MODEL_STERILEUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption2 = this.getGoodsOption(GoodsOption.MODEL_WASHUNQUALIFIEDSOURCE, ""); GoodsOption goodsOption3 = this.getGoodsOption(GoodsOption.MODEL_PACKINGUNQUALIFIEDSOURCE, ""); @@ -160,6 +161,14 @@ } goodsOption15.setValue(incorrectChoiceSterilizationmodePP); save(goodsOption15); + + GoodsOption goodsOption16 = this.getGoodsOption(GoodsOption.MODEL_STERILIZATION_FAULT, ""); + if (goodsOption16 == null) { + goodsOption16 = new GoodsOption(); + goodsOption16.setModel(GoodsOption.MODEL_STERILIZATION_FAULT); + } + goodsOption16.setValue(sterilizationFaultPP); + save(goodsOption16); } @Override Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java =================================================================== diff -u -r36037 -r36338 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 36037) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/GoodsOption.java (.../GoodsOption.java) (revision 36338) @@ -113,7 +113,10 @@ *灭菌方式选择不正确 */ public static final String MODEL_INCORRECT_CHOICE_STERILIZATIONMODE = "灭菌方式选择不正确"; - + /** + * 灭菌故障次数 + */ + public static final String MODEL_STERILIZATION_FAULT = "灭菌故障次数"; private String code; private String value; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java =================================================================== diff -u -r34645 -r36338 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 34645) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 36338) @@ -19,7 +19,7 @@ public static String STERILE_QUALIFIED = "灭菌包合格数"; public static String STERILE_TOTAL = "灭菌包总数"; public static String WETPACKETS_TOTAL = "湿包数"; - + public static String STERILE_TOTAL_BY_STERILIZATIONMODE = "灭菌数量(按灭菌方式)"; public static String DATAINDEXSOURCE_REUSABLEGOODS_TOTAL = "复用性物品总件数"; public static String DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIED = "复用性物品合格件数"; public static String DATAINDEXSOURCE_REUSABLEGOODS_QUALIFIEDRATIO = "复用性物品合格率"; @@ -55,6 +55,14 @@ public static String DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE= "灭菌方式选择不正确发生件数"; public static String DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP = "灭菌器使用炉次(按灭菌炉分组)"; /** + * 灭菌情况确认人srSituationComfirmer不为空的灭菌记录条数 + */ + public static String DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT = "灭菌记录确认次数"; + /** + * 复用性物品发货数量(包件混合) + */ + public static String DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT = "复用性物品发货数量"; + /** * 交叉报表的列名称(月份和天) */ private String columnName; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r36327 -r36338 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 36327) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 36338) @@ -68,6 +68,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.WorkScoreConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -718,19 +719,24 @@ title = "供应室护理质量指标统计表"; } JSONArray dataIndexsArray = dataConfigObj.optJSONArray("dataIndexsArray"); - Set ownGroups = objectDao.getStringSet("select distinct ownGroup from Sterilizer ", "空"); + Set ownGroups = null; + Set sterilizationmodes = null; Map descriptionOfDataIndexMap = new HashMap(); if(dataIndexsArray != null && ("split".equals(queryScope) || "compareToLastYear".equals(queryScope))){ int size = dataIndexsArray.size(); for (int i = 0; i < dataIndexsArray.size(); i++) { JSONObject dataIndex = dataIndexsArray.optJSONObject(i); if("灭菌器使用炉次(按灭菌炉分组)".equals(dataIndex.optString("dataIndexSource"))){ - size = dataIndexsArray.size() + ownGroups.size() - 1; - break; + ownGroups = objectDao.getStringSet("select distinct ownGroup from Sterilizer ", "空"); + size = size + ownGroups.size() - 1; + }else if(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE.equals(dataIndex.optString("dataIndexSource"))){ + sterilizationmodes = objectDao.getStringSet("select distinct sterilizationmode from "+Sterilisation.class.getSimpleName(), "无"); + size = size + sterilizationmodes.size() - 1; } } String[] dataIndexNameArr = new String[size]; int k = 0; + int sub = 0;//扣减量 每多一种类似按灭菌炉分组的数据就要+1 for (int i = 0; i < dataIndexsArray.size(); i++) { JSONObject dataIndex = dataIndexsArray.optJSONObject(i); if("灭菌器使用炉次(按灭菌炉分组)".equals(dataIndex.optString("dataIndexSource"))){ @@ -739,15 +745,27 @@ dataIndexNameArr[i + k] = dataIndexNameForDisplay + " ("+ ownGroup +")"; k++; } + sub++; + }else if(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE.equals(dataIndex.optString("dataIndexSource"))){ + String dataIndexNameForDisplay = dataIndex.optString("dataIndexNameForDisplay"); + for (String sterilizationmode : sterilizationmodes) { + dataIndexNameArr[i + k] = dataIndexNameForDisplay + " ("+ sterilizationmode +")"; + k++; + } + sub++; }else{ - dataIndexNameArr[i + k] = dataIndex.optString("dataIndexNameForDisplay"); + dataIndexNameArr[i + k - sub] = dataIndex.optString("dataIndexNameForDisplay"); } String descriptionOfDataIndex = dataIndex.optString("descriptionOfDataIndex"); if(StringUtils.isNotBlank(descriptionOfDataIndex)){ if("灭菌器使用炉次(按灭菌炉分组)".equals(dataIndex.optString("dataIndexSource"))){ for (String ownGroup : ownGroups) { descriptionOfDataIndexMap.put(dataIndex.optString("dataIndexNameForDisplay") + " ("+ ownGroup +")", descriptionOfDataIndex); } + } else if(SupplyRoomQualityQuota.STERILE_TOTAL_BY_STERILIZATIONMODE.equals(dataIndex.optString("dataIndexSource"))){ + for (String sterilizationmode : sterilizationmodes) { + descriptionOfDataIndexMap.put(dataIndex.optString("dataIndexNameForDisplay") + " ("+ sterilizationmode +")", descriptionOfDataIndex); + } }else{ descriptionOfDataIndexMap.put(dataIndex.optString("dataIndexNameForDisplay"), descriptionOfDataIndex); } @@ -4231,11 +4249,14 @@ String incorrectChoiceSterilizationmodePP = StrutsParamUtils.getPraramValue("incorrectChoiceSterilizationmodePP", ""); incorrectChoiceSterilizationmodePP = replaceSeparativeSign(incorrectChoiceSterilizationmodePP); + //灭菌故障 + String sterilizationFaultPP = StrutsParamUtils.getPraramValue("sterilizationFaultPP", ""); + sterilizationFaultPP = replaceSeparativeSign(sterilizationFaultPP); goodsOptionManager.saveUnqualifiedSource(sterilePercentOfPass, washPercentOfPass, packingPercentOfPass, percentOfWetPackets,onlyPackingPercentOfWetPackets, disposablegoodsPP, recyclingTousseErrorPP, missingInToussePP, insufficiencyInToussePP , typeErrorInToussePP, chemicaCardInToussePP, itemIDIsIncorrectPP, sterilizationFailurePP - , itemInvoiceErrorPP, incorrectChoiceSterilizationmodePP); + , itemInvoiceErrorPP, incorrectChoiceSterilizationmodePP,sterilizationFaultPP); StrutsResponseUtils.output(JSONUtil.buildJsonObject(true, "保存成功")); } catch (Exception e) { e.printStackTrace();