Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/FormDefinitionHelper.java =================================================================== diff -u -r36472 -r36690 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/FormDefinitionHelper.java (.../FormDefinitionHelper.java) (revision 36472) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/FormDefinitionHelper.java (.../FormDefinitionHelper.java) (revision 36690) @@ -93,6 +93,8 @@ return formName.contains(GoodsOption.MODEL_INCORRECT_CHOICE_STERILIZATIONMODE); }else if(GoodsOption.MODEL_STERILIZATION_FAULT.equals(model)){ return formName.contains("灭菌故障"); + }else if(GoodsOption.MODEL_ITEM_INVOICE_ERROR.equals(model)){ + return formName.contains(GoodsOption.MODEL_ITEM_INVOICE_ERROR); } return false; } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java =================================================================== diff -u -r36391 -r36690 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36391) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/SupplyRoomQualityQuotaHelper.java (.../SupplyRoomQualityQuotaHelper.java) (revision 36690) @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -28,12 +29,15 @@ 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.rinser.Rinser; import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; 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.customform.forminstance.FormInstance; +import com.forgon.disinfectsystem.entity.devicemaintenance.DeviceMaintenance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringGoods; import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; @@ -276,7 +280,9 @@ * 6 消毒物品不合格件数 */ Map disposablegoodsUnqualifiedAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ String[] disposablegoodsUnqualifiedSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_DISPOSABLEGOODS, definitionList); disposablegoodsUnqualifiedAmount = getUnqualified(true, departmentCode, disposablegoodsUnqualifiedSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); } @@ -329,28 +335,53 @@ item_id_is_incorrectAmount = getUnqualified(true, departmentCode, item_id_is_incorrectSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); } /** - * 13 灭菌失败 + * 13 灭菌失败 灭菌装载合格率 */ - Map sterilization_failureAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE)){ - String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); - sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); + Map sterilization_failureAmount = null;//灭菌失败 + Map sterilizerUseQualified = null;//灭菌使用次数和合格率 + Map sterilizerLoadUnQualifiedAmount = null;//灭菌装载不合格 + Map sterilizerLoadQualified = null;//灭菌装载合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO)){ + String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); + sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); + } + Map sterilizerUseAmount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + sterilizerUseAmount = getSterilizerUseAmountMap(betweenSql, departmentCode, SupplyRoomQualityQuota.DAY, null, null, firstDayToLastDay); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO)){ + //每个月的合格的灭菌包数 + sterilizerUseQualified = getQualifiedAmountMap(sterilizerUseAmount, sterilization_failureAmount); + getRatio(sterilizerUseQualified, sterilizerUseAmount, null); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + sterilizerLoadUnQualifiedAmount = getUnqualified(null, departmentCode, null, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay, " and fd.formName like '%灭菌装载不合格%' "); + sterilizerLoadQualified = getQualifiedAmountMap(sterilizerUseAmount, sterilizerLoadUnQualifiedAmount); + getRatio(sterilizerLoadQualified, sterilizerUseAmount, null); + } } /** - * 14 物品发放错误 - */ - Map item_invoice_errorAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR)){ - String[] item_invoice_errorSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_ITEM_INVOICE_ERROR, definitionList); - item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); - } - /** * 15、消毒物品清洗总件数 */ //每天的器械清洗数 Map disposablegoodsWashSumAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL)){ + Map disposablegoodsQualifiedAmount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ disposablegoodsWashSumAmount = getWashSumAmount(departmentCode, month, SupplyRoomQualityQuota.DAY, startTime, endTime, firstDayToLastDay, TousseDefinition.PACKAGE_TYPE_DISINFECTION); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ + disposablegoodsQualifiedAmount = getQualifiedAmountMap(disposablegoodsWashSumAmount, disposablegoodsUnqualifiedAmount); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ + getRatio(disposablegoodsQualifiedAmount, disposablegoodsWashSumAmount, null); + } + } } /** * 16、处理外来手术器械总件数 @@ -377,7 +408,7 @@ //获取所有灭菌炉分组 Map> sterilizerUseAmountMap = null;//灭菌炉使用次数map if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP)){ - sterilizerUseAmountMap = getSterilizerUseAmountMap(startTime + " 00:00:00", endTime + " 23:59:59", departmentCode,null); + sterilizerUseAmountMap = getSterilizerUseAmountMap(betweenSql, departmentCode,null); } /** @@ -403,25 +434,87 @@ */ Map sterilizer_confirm_amount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT)){ - sterilizer_confirm_amount = getSterilizer_confirm_amount(startTime, endTime, departmentCode, null); + sterilizer_confirm_amount = getSterilizer_confirm_amount(betweenSql, departmentCode, null, null, 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); + Map invoie_tousse_amount = null; + /** + * 物品发放错误 + */ + Map item_invoice_errorAmount = null; + Map item_invoice_qualified = null;//物品发放合格数 合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + invoie_tousse_amount = getInvoie_tousse_amount(betweenSql, departmentCode, null, null, null); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + String[] item_invoice_errorSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_ITEM_INVOICE_ERROR, definitionList); + item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, month, SupplyRoomQualityQuota.DAY, startTime, endTime , firstDayToLastDay); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + item_invoice_qualified = getQualifiedAmountMap(invoie_tousse_amount, item_invoice_errorAmount); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + getRatio(item_invoice_qualified, invoie_tousse_amount, 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); + total_by_sterilizationmodeMap = getTotal_by_sterilizationmodeMap(reportParams, SupplyRoomQualityQuota.DAY, departmentCode); } + + /** + * 24、设备维护完成次数 + */ + Map deviceMaintenanceMap = null;//设备维护完成次数 + Map rinserMaintenanceMap = null;//设备维护完成次数(清洗机) + Map sterilizerMaintenanceMap = null;//设备维护完成次数(灭菌炉) + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT)){ + deviceMaintenanceMap = new HashMap(); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT)){ + rinserMaintenanceMap = new HashMap(); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT)){ + sterilizerMaintenanceMap = new HashMap(); + } + getMaintenance_completion_count(departmentCode, SupplyRoomQualityQuota.DAY, betweenSql, null, null, deviceMaintenanceMap, rinserMaintenanceMap, sterilizerMaintenanceMap, null,null); + } + + /** + * 25、职业暴露发生率 + */ +/* Map occupational_exposure_incidence = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_OCCUPATIONAL_EXPOSURE_INCIDENCE)){ + occupational_exposure_incidence = getUnqualified(null, departmentCode, null, month, SupplyRoomQualityQuota.DAY, startTime, endTime ,firstDayToLastDay, " and fd.formName like '%职业暴露%' "); + String sql = "select count(distinct s.id) from " + + OrgUserRelation.class.getSimpleName() + + " our join SS_USERS s on s.id=our.userId " + + "join "+ OrgUnit.class.getSimpleName() + + " ou on ou.id=our.orgUnitId " + + "where s.status=1 and ou.orgUnitCoding='"+ departmentCode +"' "; + int totalNumberOfPeople = objectDao.countBySql(sql); + Map totalNumberOfPeopleMap = new HashMap(); + for (String key : occupational_exposure_incidence.keySet()) { + totalNumberOfPeopleMap.put(key, totalNumberOfPeople); + } + getRatio(occupational_exposure_incidence, totalNumberOfPeopleMap, null); + }*/ + int i = 0;//序号 for (int j = 0; j < dataConfigArr.size(); j++) { JSONObject dataConfig = (JSONObject)dataConfigArr.get(j); @@ -503,6 +596,26 @@ getSupplyRoomQualityQuota(list, entry.getValue(), dataIndexNameForDisplay + " (" + entry.getKey() + ")", i++, firstDayToLastDay, false, dataIndexsAsRows); } } + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, deviceMaintenanceMap, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, rinserMaintenanceMap, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerMaintenanceMap, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerUseQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, disposablegoodsQualifiedAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, disposablegoodsQualifiedAmount, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerLoadQualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); + }/*else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_OCCUPATIONAL_EXPOSURE_INCIDENCE.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, occupational_exposure_incidence, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); + }*/else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, item_invoice_qualified, dataIndexNameForDisplay, i++, firstDayToLastDay, false, dataIndexsAsRows); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, item_invoice_qualified, dataIndexNameForDisplay, i++, firstDayToLastDay, true, dataIndexsAsRows); } } return list; @@ -643,7 +756,9 @@ * 6 消毒物品不合格件数 */ Map disposablegoodsUnqualifiedAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_UNQUALIFIED) || + dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ String[] disposablegoodsUnqualifiedSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_DISPOSABLEGOODS, definitionList); disposablegoodsUnqualifiedAmount = getUnqualified(true, departmentCode, disposablegoodsUnqualifiedSource, year, queryScope, startTime, endTime , null); } @@ -699,25 +814,52 @@ * 13 灭菌失败 */ Map sterilization_failureAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE)){ - String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); - sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, year, queryScope, startTime, endTime , null); + + Map sterilizerUseQualified = null; + + Map sterilizerLoadUnQualifiedAmount = null;//灭菌装载不合格 + Map sterilizerLoadQualified = null;//灭菌装载合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZATION_FAILURE) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO)){ + String[] sterilization_failureSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_STERILIZATION_FAILURE, definitionList); + sterilization_failureAmount = getUnqualified(null, departmentCode, sterilization_failureSource, year, queryScope, startTime, endTime , null); + } + Map sterilizerUseAmount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + sterilizerUseAmount = getSterilizerUseAmountMap(betweenSql, departmentCode, format, queryScope, year, null); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO)){ + sterilizerUseQualified = getQualifiedAmountMap(sterilizerUseAmount, sterilization_failureAmount); + getRatio(sterilizerUseQualified, sterilizerUseAmount, null,true); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO)){ + sterilizerLoadUnQualifiedAmount = getUnqualified(null, departmentCode, null, year, queryScope, startTime, endTime , null, " and fd.formName like '%灭菌装载不合格%' "); + sterilizerLoadQualified = getQualifiedAmountMap(sterilizerUseAmount, sterilizerLoadUnQualifiedAmount); + getRatio(sterilizerLoadQualified, sterilizerUseAmount, null,true); + } } /** - * 14 物品发放错误 - */ - Map item_invoice_errorAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR)){ - String[] item_invoice_errorSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_ITEM_INVOICE_ERROR, definitionList); - item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, year, queryScope, startTime, endTime , null); - } - /** * 15、消毒物品清洗总件数 */ //每天的器械清洗数 Map disposablegoodsWashSumAmount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL)){ + //消毒物品合格件数(清洗) + Map disposablegoodsQualifiedAmount = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ disposablegoodsWashSumAmount = getWashSumAmount(departmentCode, year, queryScope, startTime, endTime , null, TousseDefinition.PACKAGE_TYPE_DISINFECTION); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED) || + dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ + disposablegoodsQualifiedAmount = getQualifiedAmountMap(disposablegoodsWashSumAmount, disposablegoodsUnqualifiedAmount); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO)){ + getRatio(disposablegoodsQualifiedAmount, disposablegoodsWashSumAmount, null,true); + } + } } /** * 16、处理外来手术器械总件数 @@ -747,7 +889,7 @@ 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); + sterilizerUseAmountMap = getSterilizerUseAmountMap(betweenSql, departmentCode,format); } /** @@ -772,15 +914,36 @@ */ Map sterilizer_confirm_amount = null; if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_CONFIRM_AMOUNT)){ - sterilizer_confirm_amount = getSterilizer_confirm_amount(startTime, endTime, departmentCode, format); + sterilizer_confirm_amount = getSterilizer_confirm_amount(betweenSql, departmentCode, format, queryScope, year); } /** * 22、复用性物品发货数量 */ Map invoie_tousse_amount = null; - if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT)){ - invoie_tousse_amount = getInvoie_tousse_amount(startTime, endTime, departmentCode, format); + /** + * 物品发放错误 + */ + Map item_invoice_errorAmount = null; + Map item_invoice_qualified = null;//物品发放合格数 合格率 + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + invoie_tousse_amount = getInvoie_tousse_amount(betweenSql, departmentCode, format, queryScope, year); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_ERROR) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + String[] item_invoice_errorSource = formDefinitionHelper.getModelSources(GoodsOption.MODEL_ITEM_INVOICE_ERROR, definitionList); + item_invoice_errorAmount = getUnqualified(true, departmentCode, item_invoice_errorSource, year, queryScope, startTime, endTime , null); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + item_invoice_qualified = getQualifiedAmountMap(invoie_tousse_amount, item_invoice_errorAmount); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO)){ + getRatio(item_invoice_qualified, invoie_tousse_amount, null, true); + } + } + } } /** @@ -791,8 +954,73 @@ 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); + total_by_sterilizationmodeMap = getTotal_by_sterilizationmodeMap(reportParams, queryScope, departmentCode); } + + /** + * 24、设备维护完成次数 + */ + Map deviceMaintenanceMap = null;//设备维护完成次数 + Map rinserMaintenanceMap = null;//设备维护完成次数(清洗机) 设备设施定期维护检测完成率(清洗) + Map sterilizerMaintenanceMap = null;//设备维护完成次数(灭菌炉) 设备设施定期维护检测完成率(灭菌) + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_RATIO) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_RATIO)){ + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT)){ + deviceMaintenanceMap = new HashMap(); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_RATIO)){ + rinserMaintenanceMap = new HashMap(); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT) + || dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_RATIO)){ + sterilizerMaintenanceMap = new HashMap(); + } + Set rinserNames = null; + Set sterilizerNames = null; + getMaintenance_completion_count(departmentCode, format, betweenSql, queryScope, year, deviceMaintenanceMap, rinserMaintenanceMap, sterilizerMaintenanceMap,rinserNames,sterilizerNames); + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_RATIO)){ + if(rinserNames == null){ + rinserNames = objectDao.getStringSet("select distinct name from " + Rinser.class.getSimpleName()+" where useStatus='在用' and name not like '%手%'", "无"); + } + int rinserCount = rinserNames == null?MathTools.ZERO_INTEGER:rinserNames.size(); + Map totalNumberOfRinserMap = getFixedValueMap(rinserCount); + getRatio(rinserMaintenanceMap, totalNumberOfRinserMap, null,true); + } + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_RATIO)){ + if(sterilizerNames == null){ + sterilizerNames = objectDao.getStringSet("select distinct name from " + Sterilizer.class.getSimpleName() + " where useStatus='在用'", "无"); + } + int sterilizerCount = sterilizerNames == null?MathTools.ZERO_INTEGER:sterilizerNames.size(); + Map totalNumberOfSterilizerMap = getFixedValueMap(sterilizerCount); + getRatio(sterilizerMaintenanceMap, totalNumberOfSterilizerMap, null,true); + } + } + + /** + * 25、职业暴露发生率 + */ +/* Map occupational_exposure_incidence = null; + if(dataIndexSources.contains(SupplyRoomQualityQuota.DATAINDEXSOURCE_OCCUPATIONAL_EXPOSURE_INCIDENCE)){ + occupational_exposure_incidence = getUnqualified(null, departmentCode, null, year, queryScope, startTime, endTime ,null, " and fd.formName like '%职业暴露%' "); + + String sql = "select count(distinct s.id) from " + + OrgUserRelation.class.getSimpleName() + + " our join SS_USERS s on s.id=our.userId " + + "join "+ OrgUnit.class.getSimpleName() + + " ou on ou.id=our.orgUnitId " + + "where s.status=1 and ou.orgUnitCoding='"+ departmentCode +"' "; + int totalNumberOfPeople = objectDao.countBySql(sql); + Map totalNumberOfPeopleMap = new HashMap(); + for (String key : occupational_exposure_incidence.keySet()) { + totalNumberOfPeopleMap.put(key, totalNumberOfPeople); + } + getRatio(occupational_exposure_incidence, totalNumberOfPeopleMap, null,true); + }*/ + int i = 0;//序号 for (int k = 0; k < dataConfigArr.size(); k++) { JSONObject dataConfig = (JSONObject)dataConfigArr.get(k); @@ -870,11 +1098,56 @@ for (String sterilizationmode : sterilizationmodes) { getSupplyRoomQualityQuota(list, replaceKey(total_by_sterilizationmodeMap.get(sterilizationmode), queryScope, year), dataIndexNameForDisplay + " (" + sterilizationmode + ")", i++, false, dataIndexsAsRows,queryScope); } + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, deviceMaintenanceMap, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, rinserMaintenanceMap, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerMaintenanceMap, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerUseQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, disposablegoodsQualifiedAmount, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, disposablegoodsQualifiedAmount, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerLoadQualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); + }/*else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_OCCUPATIONAL_EXPOSURE_INCIDENCE.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, occupational_exposure_incidence, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope, true); + }*/else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, item_invoice_qualified, dataIndexNameForDisplay, i++, false, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, item_invoice_qualified, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_RATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, rinserMaintenanceMap, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); + }else if(SupplyRoomQualityQuota.DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_RATIO.equals(dataIndexSource)){ + getSupplyRoomQualityQuota(list, sterilizerMaintenanceMap, dataIndexNameForDisplay, i++, true, dataIndexsAsRows,queryScope); } } return list; } /** + * 获得一个每段时间数量一样的map + * @param num + * @return + */ + private Map getFixedValueMap(Integer num){ + Map totalNumberOfSterilizerMap = new HashMap(); + Integer total = 0; + for (int i = 1; i <= 12; i++) { + String key = ""; + if (i > 9) { + key = "" + i; + } else { + key = "0" + i; + } + totalNumberOfSterilizerMap.put(key, num); + total += num; + } + totalNumberOfSterilizerMap.put(SupplyRoomQualityQuota.TOTAL, total); + return totalNumberOfSterilizerMap; + } + /** * 获取无菌物品数. * @param departmentCode 处理供应室的科室编码 * @param date 查询的时间范围,如果queryScope=月,则为yyyy,如果queryScope=日,则为yyyy-mm @@ -886,7 +1159,7 @@ if (StringTools.isNotBlank(departmentCode) && (StringTools.isNotBlank(date) || StringTools.isNotBlank(startTime) && StringTools.isNotBlank(endTime))) { String reviewTimeSql = ""; String format = null; - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { startTime = startTime + " 00:00:00"; endTime = endTime + " 23:59:59"; if(dbConnection.isOracle()){ @@ -896,7 +1169,7 @@ } reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),format); reviewTimeSql = dateQueryAdapter.dateConverAdapter("case when ti.reviewTime is not null then ti.reviewTime else ti.operationTime end", null); - } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + } else if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"yyyy"); reviewTimeSql = dateQueryAdapter.dateConverAdapter3("case when ti.reviewTime is not null then ti.reviewTime else ti.operationTime end", "yyyy"); }else { @@ -951,7 +1224,7 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("monthstr")); int amount = rs.getInt("amount"); - if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ if(date.equals(month)){ month = "今年"; }else{ @@ -965,9 +1238,9 @@ } finally { DatabaseUtil.closeResultSetAndStatement(rs); } - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ + } else if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ map = dataIndex.convertMonthly(map); } } @@ -999,7 +1272,14 @@ rsMap1.put(specifyKey + SupplyRoomQualityQuota.RATIO, result); } } else { - for (String key : rsMap2.keySet()) { + Set keys = new HashSet();//不包含在总数rsMap2中的key + Set keys2 = rsMap2.keySet(); + for(String key : rsMap1.keySet()){ + if(!keys2.contains(key)){ + keys.add(key); + } + } + for (String key : keys2) { Integer value1 = MapUtils.getIntValue(rsMap1, key, 0); Integer value2 = MapUtils.getIntValue(rsMap2, key, 0); String result = "0%"; @@ -1015,6 +1295,16 @@ rsMap1.put(key + SupplyRoomQualityQuota.RATIO, result); } } + if(keys.size() > 0){ + for (String key : keys) { + if(needNumeratorAndDenominator){ + RatioVo ratioVo = new RatioVo(MapUtils.getIntValue(rsMap1, key, 0), 0, "0%"); + rsMap1.put(key + SupplyRoomQualityQuota.RATIO, ratioVo); + }else{ + rsMap1.put(key + SupplyRoomQualityQuota.RATIO, "0%"); + } + } + } } } } @@ -1049,6 +1339,14 @@ ratio = ratioVo.getRatio(); vo3 = new SupplyRoomQualityQuota("去年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); list.add(vo3); + }else if(resultObj == null){ + RatioVo ratioVo = new RatioVo(); + ratioVo.setRatio("0%"); + ratioVo.setDenominator(0); + ratioVo.setNumerator(0); + ratio = ratioVo.getRatio(); + vo3 = new SupplyRoomQualityQuota("去年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); + list.add(vo3); } resultObj = MapUtils.getObject(result, "今年" + SupplyRoomQualityQuota.RATIO); SupplyRoomQualityQuota vo4 = null; @@ -1057,6 +1355,14 @@ ratio = ratioVo.getRatio(); vo4 = new SupplyRoomQualityQuota("今年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); list.add(vo4); + }else if(resultObj == null){ + RatioVo ratioVo = new RatioVo(); + ratioVo.setRatio("0%"); + ratioVo.setDenominator(0); + ratioVo.setNumerator(0); + ratio = ratioVo.getRatio(); + vo4 = new SupplyRoomQualityQuota("今年" , rowSerialNumber,quotaName , rowSerialNumber, ratio, dataIndexsAsRows, ratioVo.getNumerator(), ratioVo.getDenominator()); + list.add(vo4); } }else{ String value = MapUtils.getString(result, "去年", "0"); @@ -1149,17 +1455,16 @@ * @param orgUnitCoding 供应室 * @return */ - private Map> getSterilizerUseAmountMap(String startTime, String endTime, String orgUnitCoding, String format){ + private Map> getSterilizerUseAmountMap(String betweenSql, 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 sql3 = "select count(*) amount,s.ownGroup,"+ monthlyStr +" monthStr from SterilizationRecord sr,Sterilizer s where " - + " sr.sterilizer_id = s.id and (sr.status = '灭菌完成' or sr.status = '灭菌失败') and sr.enddate between " - + dateQueryAdapter.dateAdapter(startTime) + " and " - + dateQueryAdapter.dateAdapter(endTime) + + " sr.sterilizer_id = s.id and (sr.status = '灭菌完成' or sr.status = '灭菌失败') and sr.enddate " + + betweenSql + SqlUtils.get_InSql_Extra("sr.orgUnitCoding", orgUnitCoding) + "group by s.ownGroup," + monthlyStr; @@ -1203,16 +1508,71 @@ * @param orgUnitCoding 供应室 * @return */ - private Map> getTotal_by_sterilizationmodeMap(ReportQueryParams reportParams, String queryScope, String startTime, String endTime, String orgUnitCoding){ - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + private Map getSterilizerUseAmountMap(String betweenSql, String orgUnitCoding, String format, String queryScope, String thisYear , List firstDayToLastDay){ + 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 sql3 = "select count(*) amount,"+ monthlyStr +" monthStr from SterilizationRecord sr,Sterilizer s where " + + " sr.sterilizer_id = s.id and (sr.status = '灭菌完成' or sr.status = '灭菌失败') and sr.enddate " + + betweenSql + + SqlUtils.get_InSql_Extra("sr.orgUnitCoding", orgUnitCoding) + + "group by " + + monthlyStr; + ResultSet rs3 = null; + Map sterilizerUseAmountMap = new HashMap();//灭菌炉使用次数map + try { + rs3 = objectDao.executeSql(sql3); + while (rs3.next()) { + Integer amount5 = rs3.getInt("amount"); + String monthStr = rs3.getString("monthStr"); + putAmountIntoMap(sterilizerUseAmountMap, monthStr, amount5, queryScope, thisYear); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs3); + } +/* if(CollectionUtils.isNotEmpty(firstDayToLastDay)){ + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { + sterilizerUseAmountMap = dataIndex.convertEveryDay(sterilizerUseAmountMap, firstDayToLastDay); + } else if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ + sterilizerUseAmountMap = dataIndex.convertMonthly(sterilizerUseAmountMap); + } + }*/ + return sterilizerUseAmountMap; + } + private void putAmountIntoMap(Map map ,String monthStr, Integer amount, String queryScope, String thisYear){ + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(thisYear.equals(monthStr)){ + map.put("今年", amount); + }else{ + map.put("去年", amount); + } + }else{ + map.put(monthStr, amount); + } + map.put(SupplyRoomQualityQuota.TOTAL, MathTools.add((Integer)map.get(SupplyRoomQualityQuota.TOTAL), amount).intValue()); + } + /** + * 按灭菌炉分组获取灭菌炉使用次数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param orgUnitCoding 供应室 + * @return + */ + private Map> getTotal_by_sterilizationmodeMap(ReportQueryParams reportParams, String queryScope, String orgUnitCoding){ + if (SupplyRoomQualityQuota.DAY.equals(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)){ + } else if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"yyyy"); }else { reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3(dateQueryAdapter.stringFieldToDate("ti.sterileEndTime"),"mm"); @@ -1267,83 +1627,7 @@ */ private Map getUnqualified( Boolean tousse, String departmentCode, String[] unqualifiedSource, String date, String queryScope, String startTime, String endTime, List firstDayToLastDay) { - Map map = new HashMap(); - if (StringTools.isNotBlank(departmentCode) && ArrayUtils.isNotEmpty(unqualifiedSource) && (StringTools.isNotBlank(date) || StringTools.isNotBlank(startTime) && StringTools.isNotBlank(endTime))) { - String qmiDateTimeSql = null; - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { - startTime = startTime + " 00:00:00"; - endTime = endTime + " 23:59:59"; - qmiDateTimeSql = dateQueryAdapter.dateConverAdapter("qmi.dateTime", null); - } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ - qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "yyyy"); - }else { - qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "mm"); - startTime = date + "-01-01 00:00:00"; - endTime = DataIndex.getNextYear(date) + " 00:00:00"; - } - StringBuffer sql = new StringBuffer(); - sql.append("select "); - sql.append(qmiDateTimeSql); - if(tousse == null){ - sql.append(" dateTime,count(distinct fi.id) amount from "); - }else{ - sql.append(" dateTime,sum(qmg.amount) amount from "); - } - sql.append(QualityMonitoringInstance.class.getSimpleName()); - sql.append(" qmi join "); - sql.append(FormInstance.class.getSimpleName()); - sql.append(" fi on fi.id=qmi.id join "); - sql.append(FormDefinition.class.getSimpleName()); - sql.append(" fd on fd.id=fi.formDefinition_id join "); - sql.append(QualityMonitoringDefinition.class.getSimpleName()); - sql.append(" qmdf on qmdf.id=fd.id "); - if(tousse != null){ - sql.append(" join "); - sql.append(QualityMonitoringGoods.class.getSimpleName()); - sql.append(" qmg on qmg.qualityMonitoringInstance_id=fi.id "); - if(tousse){ - sql.append(" where qmg.tousseName is not null "); - }else{ - sql.append(" where (qmg.tousseName is null or qmg.tousseName='') "); - } - }else{ - sql.append(" where 1=1 "); - } - sql.append(" and fd.formType = '"); - sql.append(FormDefinition.FOMRTYPE_QUALITYMONITORING); - sql.append("' "); - sql.append(SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(departmentCode)); - sql.append(SqlUtils.get_InSql("fd.formName", unqualifiedSource)); - sql.append(" and "); - sql.append(dateQueryAdapter.dateAreaSql("qmi.datetime", startTime, endTime)); - sql.append(" group by "); - sql.append(qmiDateTimeSql); - ResultSet rs = objectDao.executeSql(sql.toString()); - try { - while (rs.next()) { - String month = StringTools.defaultString(rs.getString("dateTime")); - int amount = rs.getInt("amount"); - if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ - if(date.equals(month)){ - month = "今年"; - }else{ - month = "去年"; - } - } - map.put(month, amount); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { - map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ - map = dataIndex.convertMonthly(map); - } - } - return map; + return getUnqualified(tousse, departmentCode, unqualifiedSource, date, queryScope, startTime, endTime, firstDayToLastDay, ""); } /** * 获取每个月的装配总数. @@ -1394,20 +1678,29 @@ Integer unqualifiedAmount = MapUtils.getIntValue(unqualifiedAmountMap, date, 0); map.put(date, sumAmount - unqualifiedAmount); } + Set keys = sumAmountMap.keySet(); + for(Entry entry : unqualifiedAmountMap.entrySet()){ + if(!keys.contains(entry.getKey())){ + map.put(entry.getKey(), 0 - (Integer)entry.getValue()); + } + } + }else if(MapUtils.isEmpty(sumAmountMap) && MapUtils.isNotEmpty(unqualifiedAmountMap)){ + for(Entry entry : unqualifiedAmountMap.entrySet()){ + map.put(entry.getKey(), 0 - (Integer)entry.getValue()); + } } return map; } - public Map getSterilizer_confirm_amount(String startTime, String endTime, String orgUnitCoding, String format){ + public Map getSterilizer_confirm_amount(String betweenSql, String orgUnitCoding, String format, String queryScope, String thisYear){ 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) + + " sr.enddate " + + betweenSql + SqlUtils.get_InSql_Extra("sr.orgUnitCoding", orgUnitCoding) + SqlUtils.getIsNotNullSql(dbConnection, "sr.srSituationComfirmer") + "group by " @@ -1421,7 +1714,15 @@ Integer amount5 = rs3.getInt("amount"); String monthStr = rs3.getString("monthStr"); totalAmount = MathTools.add(totalAmount, amount5).intValue(); - itemMap.put(monthStr, amount5); + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(thisYear.equals(monthStr)){ + itemMap.put("今年", amount5); + }else{ + itemMap.put("去年", amount5); + } + }else{ + itemMap.put(monthStr, amount5); + } } } catch (SQLException e) { e.printStackTrace(); @@ -1431,7 +1732,93 @@ itemMap.put(SupplyRoomQualityQuota.TOTAL, totalAmount); return itemMap; } - public Map getInvoie_tousse_amount(String startTime, String endTime, String orgUnitCoding, String format){ + /** + * 获取设备维护完成次数 + * @param orgUnitCoding 供应室 + * @param format mm或yyyy或dd 按月或者按年查询 + * @param betweenSql 日期过滤 between '' and '' + * @param thisYear 今年 + * @return + */ + private void getMaintenance_completion_count(String orgUnitCoding, String format, String betweenSql, String queryScope, String thisYear + , Map deviceMaintenanceMap, Map rinserMaintenanceMap, Map sterilizerMaintenanceMap + ,Set rinserNames, Set sterilizerNames){ + ResultSet rs = null; + boolean isDeviceMaintenanceCus = false; + if(rinserMaintenanceMap != null || sterilizerMaintenanceMap != null){ + isDeviceMaintenanceCus = CssdUtils.getSystemSetConfigByNameBool("isDeviceMaintenanceCus", false); + if(rinserMaintenanceMap != null){ + rinserNames = objectDao.getStringSet("select distinct name from " + Rinser.class.getSimpleName()+" where useStatus='在用' and name not like '%手%'", "无"); + } + if(sterilizerMaintenanceMap != null){ + sterilizerNames = objectDao.getStringSet("select distinct name from " + Sterilizer.class.getSimpleName() + " where useStatus='在用'", "无"); + } + } + try { + String monthlyStr = null; + if("mm".equals(format) || "yyyy".equals(format)){ + monthlyStr = dateQueryAdapter.dateConverAdapter3("d.maintenanceTime",format); + }else{ + monthlyStr = dateQueryAdapter.dateConverAdapter("d.maintenanceTime",null); + } + StringBuffer sql = new StringBuffer(); + sql.append("select "); + sql.append(monthlyStr); + sql.append(" monthStr,"); + if(sterilizerMaintenanceMap != null || rinserMaintenanceMap != null){ + sql.append("d.deviceName,"); + } + sql.append("count(*) amount from "); + sql.append(DeviceMaintenance.class.getSimpleName()); + sql.append(" d where d.maintenanceTime "); + sql.append(betweenSql); + sql.append(" and d.deviceDepartCoding='"); + sql.append(orgUnitCoding); + sql.append("' group by "); + if(sterilizerMaintenanceMap != null || rinserMaintenanceMap != null){ + sql.append("d.deviceName,"); + } + sql.append(monthlyStr); + rs = objectDao.executeSql(sql.toString()); + while (rs.next()) { + Integer amount5 = rs.getInt("amount"); + String monthStr = rs.getString("monthStr"); + if(sterilizerMaintenanceMap != null || rinserMaintenanceMap != null){ + String deviceName = rs.getString("deviceName"); + if(sterilizerMaintenanceMap != null){ + if(sterilizerNames.contains(deviceName) || isDeviceMaintenanceCus && deviceName.contains("灭菌")){ + putAmountIntoDeviceMaintenanceMap(sterilizerMaintenanceMap, monthStr, amount5, queryScope, thisYear); + } + } + if(rinserMaintenanceMap != null){ + if(rinserNames.contains(deviceName) || isDeviceMaintenanceCus && deviceName.contains("清洗")){ + putAmountIntoDeviceMaintenanceMap(rinserMaintenanceMap, monthStr, amount5, queryScope, thisYear); + } + } + } + if(deviceMaintenanceMap != null){ + putAmountIntoDeviceMaintenanceMap(deviceMaintenanceMap, monthStr, amount5, queryScope, thisYear); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + private void putAmountIntoDeviceMaintenanceMap(Map map ,String monthStr, Integer amount5, String queryScope, String thisYear){ + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(thisYear.equals(monthStr)){ + map.put("今年", MathTools.add((Integer)map.get("今年"), amount5).intValue()); + }else{ + map.put("去年", MathTools.add((Integer)map.get("去年"), amount5).intValue()); + } + }else{ + map.put(monthStr, MathTools.add((Integer)map.get(monthStr), amount5).intValue()); + } + map.put(SupplyRoomQualityQuota.TOTAL, MathTools.add((Integer)map.get(SupplyRoomQualityQuota.TOTAL), amount5).intValue()); + } + public Map getInvoie_tousse_amount(String betweenSql, String orgUnitCoding, String format, String queryScope, String thisYear){ String monthlyStr = null; if("mm".equals(format) || "yyyy".equals(format)){ monthlyStr = dateQueryAdapter.dateConverAdapter3("m.sendTime",format); @@ -1487,9 +1874,8 @@ 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) + sql += " where m.sendTime " + + betweenSql + " and m.orgUnitCoding='"+ orgUnitCoding +"'"; sql += " group by " + monthlyStr; ResultSet rs3 = null; @@ -1501,7 +1887,16 @@ Integer amount5 = rs3.getInt("amount"); String monthStr = rs3.getString("monthStr"); totalAmount = MathTools.add(totalAmount, amount5).intValue(); - itemMap.put(monthStr, amount5); + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(thisYear.equals(monthStr)){ + itemMap.put("今年", amount5); + }else{ + itemMap.put("去年", amount5); + } + }else{ + itemMap.put(monthStr, amount5); + } + } } catch (SQLException e) { e.printStackTrace(); @@ -1522,11 +1917,11 @@ Map map = new HashMap(); if (StringTools.isNotBlank(departmentCode) && (StringTools.isNotBlank(date) || StringTools.isNotBlank(startTime) && StringTools.isNotBlank(endTime))) { ReportQueryParams params = new ReportQueryParams(); - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { startTime = startTime + " 00:00:00"; endTime = endTime + " 23:59:59"; params.monthlyStr = dateQueryAdapter.dateConverAdapter("wr.endDate",null); - } else if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + } else if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ params.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate","yyyy"); }else { params.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate","mm"); @@ -1553,7 +1948,7 @@ while (rs.next()) { String month = StringTools.defaultString(rs.getString("dateTime")); int amount = rs.getInt("amount"); - if(SupplyRoomQualityQuota.YEAR.endsWith(queryScope)){ + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ if(date.equals(month)){ month = "今年"; }else{ @@ -1567,9 +1962,9 @@ } finally { DatabaseUtil.closeResultSetAndStatement(rs); } - if (SupplyRoomQualityQuota.DAY.endsWith(queryScope)) { + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { map = dataIndex.convertEveryDay(map, firstDayToLastDay); - } else if(SupplyRoomQualityQuota.MONTH.endsWith(queryScope)){ + } else if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ map = dataIndex.convertMonthly(map); } } @@ -1641,4 +2036,108 @@ } return Arrays.asList(firstHalfYearAmountMap.values().toArray()); } + /** + * 获取每个月的不合格数. + * @param tousse 是否器械包(如果为true则取质量监测登记的器械包,false反之取材料 null去记录条数) + * @param departmentCode 处理供应室的科室编码 + * @param unqualifiedSource 不合格数来源 + * @param date 查询的时间范围,如果queryScope=月,则为yyyy,如果queryScope=日,则为yyyy-mm + * @param qqueryScope 查询的精度(月/天) + * @param formNameSql 质量监测名称过滤的sql,用于不从不合格数据来源配置的质量监测 优先使用unqualifiedSource,如果unqualifiedSource为空才会使用formNameSql的过滤 + * @return + */ + private Map getUnqualified( + Boolean tousse, String departmentCode, String[] unqualifiedSource, String date, String queryScope, String startTime, String endTime, List firstDayToLastDay, String formNameSql) { + Map map = new HashMap(); + if(ArrayUtils.isEmpty(unqualifiedSource) && StringUtils.isBlank(formNameSql)){ + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { + map = dataIndex.convertEveryDay(map, firstDayToLastDay); + } else if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ + map = dataIndex.convertMonthly(map); + } + return map; + } + if (StringTools.isNotBlank(departmentCode) + && (StringTools.isNotBlank(date) + || StringTools.isNotBlank(startTime) && StringTools.isNotBlank(endTime))) { + String qmiDateTimeSql = null; + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { + startTime = startTime + " 00:00:00"; + endTime = endTime + " 23:59:59"; + qmiDateTimeSql = dateQueryAdapter.dateConverAdapter("qmi.dateTime", null); + } else if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "yyyy"); + }else { + qmiDateTimeSql = dateQueryAdapter.dateConverAdapter3("qmi.dateTime", "mm"); + startTime = date + "-01-01 00:00:00"; + endTime = DataIndex.getNextYear(date) + " 00:00:00"; + } + StringBuffer sql = new StringBuffer(); + sql.append("select "); + sql.append(qmiDateTimeSql); + if(tousse == null){ + sql.append(" dateTime,count(distinct fi.id) amount from "); + }else{ + sql.append(" dateTime,sum(qmg.amount) amount from "); + } + sql.append(QualityMonitoringInstance.class.getSimpleName()); + sql.append(" qmi join "); + sql.append(FormInstance.class.getSimpleName()); + sql.append(" fi on fi.id=qmi.id join "); + sql.append(FormDefinition.class.getSimpleName()); + sql.append(" fd on fd.id=fi.formDefinition_id join "); + sql.append(QualityMonitoringDefinition.class.getSimpleName()); + sql.append(" qmdf on qmdf.id=fd.id "); + if(tousse != null){ + sql.append(" join "); + sql.append(QualityMonitoringGoods.class.getSimpleName()); + sql.append(" qmg on qmg.qualityMonitoringInstance_id=fi.id "); + if(tousse){ + sql.append(" where qmg.tousseName is not null "); + }else{ + sql.append(" where (qmg.tousseName is null or qmg.tousseName='') "); + } + }else{ + sql.append(" where 1=1 "); + } + sql.append(" and fd.formType = '"); + sql.append(FormDefinition.FOMRTYPE_QUALITYMONITORING); + sql.append("' "); + sql.append(SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(departmentCode)); + if(unqualifiedSource != null && unqualifiedSource.length > 0){ + sql.append(SqlUtils.get_InSql("fd.formName", unqualifiedSource)); + }else{ + sql.append(formNameSql); + } + sql.append(" and "); + sql.append(dateQueryAdapter.dateAreaSql("qmi.datetime", startTime, endTime)); + sql.append(" group by "); + sql.append(qmiDateTimeSql); + ResultSet rs = objectDao.executeSql(sql.toString()); + try { + while (rs.next()) { + String month = StringTools.defaultString(rs.getString("dateTime")); + int amount = rs.getInt("amount"); + if(SupplyRoomQualityQuota.YEAR.equals(queryScope)){ + if(date.equals(month)){ + month = "今年"; + }else{ + month = "去年"; + } + } + map.put(month, amount); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + if (SupplyRoomQualityQuota.DAY.equals(queryScope)) { + map = dataIndex.convertEveryDay(map, firstDayToLastDay); + } else if(SupplyRoomQualityQuota.MONTH.equals(queryScope)){ + map = dataIndex.convertMonthly(map); + } + return map; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java =================================================================== diff -u -r36338 -r36690 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 36338) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SupplyRoomQualityQuota.java (.../SupplyRoomQualityQuota.java) (revision 36690) @@ -29,6 +29,8 @@ public static String DATAINDEXSOURCE_WASH_UNQUALIFIED = "器械清洗不合格件数"; public static String DATAINDEXSOURCE_WASH_QUALIFIEDRATIO = "器械清洗合格率"; public static String DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_TOTAL = "消毒物品清洗总件数"; + public static String DATAINDEXSOURCE_DISPOSABLEGOODS_WASH_QUALIFIED = "消毒物品合格件数(清洗)"; + public static String DATAINDEXSOURCE_DISPOSABLEGOODS_QUALIFIEDRATIO = "消毒物品合格率"; public static String DATAINDEXSOURCE_FOREIGNTOUSSE_WASH_TOTAL = "处理外来手术器械总件数"; public static String DATAINDEXSOURCE_DRESSING_TOTAL = "处理敷料总件数"; @@ -52,8 +54,12 @@ public static String DATAINDEXSOURCE_ITEM_ID_IS_INCORRECT= "包标识不正确件数"; public static String DATAINDEXSOURCE_STERILIZATION_FAILURE= "灭菌失败次数"; public static String DATAINDEXSOURCE_ITEM_INVOICE_ERROR= "物品发放错误次数"; + public static String DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIED= "物品发放合格数"; + public static String DATAINDEXSOURCE_ITEM_INVOICE_QUALIFIEDRATIO= "物品发放合格率"; public static String DATAINDEXSOURCE_INCORRECT_CHOICE_AMOUNT_STERILIZATIONMODE= "灭菌方式选择不正确发生件数"; public static String DATAINDEXSOURCE_STERILIZER_USEAMOUNT_BY_GROUP = "灭菌器使用炉次(按灭菌炉分组)"; + public static String DATAINDEXSOURCE_STERILIZER_USEAMOUNT_QUALIFIEDRATIO = "灭菌炉次合格率"; + public static String DATAINDEXSOURCE_STERILIZER_LOAD_QUALIFIEDRATIO = "灭菌装载合格率"; /** * 灭菌情况确认人srSituationComfirmer不为空的灭菌记录条数 */ @@ -62,7 +68,29 @@ * 复用性物品发货数量(包件混合) */ public static String DATAINDEXSOURCE_INVOIE_TOUSSE_AMOUNT = "复用性物品发货数量"; + /** + * 设备维护完成次数 + */ + public static String DATAINDEXSOURCE_MAINTENANCE_COMPLETION_COUNT = "设备维护完成次数"; + + /** + * 设备维护完成次数(清洗机) + */ + public static String DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_COUNT = "设备维护完成次数(清洗机)"; + /** + * 设备维护完成次数(灭菌炉) + */ + public static String DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_COUNT = "设备维护完成次数(灭菌炉)"; + /** + * 设备设施定期维护检测完成率(清洗) + */ + public static String DATAINDEXSOURCE_MAINTENANCE_COMPLETION_RINSER_RATIO = "设备设施定期维护检测完成率(清洗)"; + /** + * 设备设施定期维护检测完成率(灭菌) + */ + public static String DATAINDEXSOURCE_MAINTENANCE_COMPLETION_STERILIZER_RATIO = "设备设施定期维护检测完成率(灭菌)"; + /** * 交叉报表的列名称(月份和天) */ private String columnName; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r36567 -r36690 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 36567) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 36690) @@ -742,14 +742,14 @@ if("灭菌器使用炉次(按灭菌炉分组)".equals(dataIndex.optString("dataIndexSource"))){ String dataIndexNameForDisplay = dataIndex.optString("dataIndexNameForDisplay"); for (String ownGroup : ownGroups) { - dataIndexNameArr[i + k] = dataIndexNameForDisplay + " ("+ ownGroup +")"; + dataIndexNameArr[i + k - sub] = 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 +")"; + dataIndexNameArr[i + k - sub] = dataIndexNameForDisplay + " ("+ sterilizationmode +")"; k++; } sub++;