Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r30245 -r30258 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30245) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30258) @@ -97,6 +97,7 @@ import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.exception.SterilingModeNotTheSameException; import com.forgon.exception.SystemException; +import com.forgon.exception.UnScanSterilizationMonitoringPackageException; import com.forgon.exception.service.ExceptionHandler; import com.forgon.keyvalue.model.KeyValue; import com.forgon.log.model.Log; @@ -1589,8 +1590,6 @@ } isNewRecord = true; - // 验证是否需要扫描监测包条码 - isNeedScanMonitoringTousse(sr, sterilizationRecord, tousseInstanceBarcodes, containerBarcodes); } // 在新建灭菌记录,或者编辑暂存状态的灭菌记录时,允许修改炉次,需要验证炉次是否正确(HBSXKYY-19) @@ -2071,6 +2070,14 @@ timingAutoCompleteSterilization(sterilisation.getUseTime(), sterilizationRecord); } } + + // 验证是否需要扫描监测包条码 + Boolean enableScanSterilizationMonitoringPackage = + ConfigUtils.getSystemSetConfigByNameBool("enableScanSterilizationMonitoringPackage"); + if(enableScanSterilizationMonitoringPackage){ + isNeedScanMonitoringTousse(sterilizationRecord); + } + return result; } /** @@ -2079,8 +2086,9 @@ * @param sterilizationRecord * @param tousseInstanceBarcodes */ - private void isNeedScanMonitoringTousse(Sterilizer sr, SterilizationRecord sterilizationRecord, Collection tousseInstanceBarcodes, Collection containerBarcodes) { + private void isNeedScanMonitoringTousse(SterilizationRecord sterilizationRecord) { + Sterilizer sr = sterilizerManager.getSterilizerByName(sterilizationRecord.getSterilizerName()); String monitorTousseDisplay = sr.getMonitorTousseDisplay(); String monitorPackageBarcode = sterilizationRecord.getMonitorPackageBarcode(); String chemistryPackageBarcode = sterilizationRecord.getChemistryPackageBarcode(); @@ -2090,108 +2098,111 @@ if (StringUtils.isNotBlank(monitorTousseDisplay)) { - // 器械包条码 - if(CollectionUtils.isNotEmpty(tousseInstanceBarcodes)){ - String sql = "select td.includeImplant, td.tousseType from TousseDefinition td " - + "join TousseInstance ti on ti.tousseDefinition_id = td.id " - + "join barcodeDevice bd on bd.id = ti.id " - + "where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("bd.barcode", tousseInstanceBarcodes); - ResultSet rs = null; - try { - rs = objectDao.executeSql(sql); - while(rs.next()){ - int includeImplantInt = rs.getInt("includeImplant"); - String tousseType = rs.getString("tousseType"); - if(!includeImplant && includeImplantInt == TousseDefinition.INCLUDE_IMPLANT){ - includeImplant = true; - } - if(!includeForeignTousse && StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ - includeForeignTousse = true; - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - } + Collection allTousseInstances = CollectionUtils.emptyCollection(); + allTousseInstances = CollectionUtils.union(allTousseInstances, + sterilizationRecord.getTousseInstanceList()); + + List reviewedBasketList = sterilizationRecord.getReviewedBaskets(); + for (ReviewedBasket reviewedBasket : reviewedBasketList) { + allTousseInstances = CollectionUtils.union(allTousseInstances, + reviewedBasket.getTousseInstances(objectDao)); + } + + if (CollectionUtils.isNotEmpty(allTousseInstances)) { + for (TousseInstance tousseInstance : allTousseInstances) { + if(includeImplant && includeForeignTousse){ + break; + } + TousseDefinition td = tousseInstance.getTousseDefinition(); + int includeImplantInt = td.getIncludeImplant() == null ? TousseDefinition.UNINCLUDE_IMPLANT : td.getIncludeImplant().intValue(); + String tousseType = td.getTousseType(); + if(!includeImplant && includeImplantInt == TousseDefinition.INCLUDE_IMPLANT){ + includeImplant = true; + } + if(!includeForeignTousse && StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + includeForeignTousse = true; + } + } + } - // 篮筐条码 - if(CollectionUtils.isNotEmpty(containerBarcodes) && !includeForeignTousse && !includeImplant){ - for (String barcode : containerBarcodes) { - ReviewedBasket reviewedBasket = reviewedBasketManager.getReviewedBasketForSterilizeRecordNew(barcode, null); - if (reviewedBasket == null) { - continue; - } - Collection tousseInstances = tousseInstanceManager.getReviewedTousseInstance(reviewedBasket); - if (CollectionUtils.isNotEmpty(tousseInstances)) { - for (TousseInstance tousseInstance : tousseInstances) { - if(includeImplant && includeForeignTousse){ - break; - } - TousseDefinition td = tousseInstance.getTousseDefinition(); - int includeImplantInt = td.getIncludeImplant() == null ? TousseDefinition.UNINCLUDE_IMPLANT : td.getIncludeImplant().intValue(); - String tousseType = td.getTousseType(); - if(!includeImplant && includeImplantInt == TousseDefinition.INCLUDE_IMPLANT){ - includeImplant = true; - } - if(!includeForeignTousse && StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ - includeForeignTousse = true; - } - } - } - } - } - + boolean unScanMonitorPackageBarcode = false; + boolean unScanChemistryPackageBarcode = false; String[] monitorTousseDisplayArray = monitorTousseDisplay.split(";"); for (int i = 0; i < monitorTousseDisplayArray.length; i++) { String item = monitorTousseDisplayArray[i]; + + if(unScanMonitorPackageBarcode && unScanChemistryPackageBarcode){ + break; + } + //每炉 if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_EVERYTHING) >= 0) { if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + unScanMonitorPackageBarcode = true; + unScanChemistryPackageBarcode = true; + break; } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码!"); + unScanChemistryPackageBarcode = true; } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } - //每天第一炉 - } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FIRST) >= 0 && frequency == 1) { + } + + //每天第一炉 + if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FIRST) >= 0 && frequency == 1) { if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + unScanMonitorPackageBarcode = true; + unScanChemistryPackageBarcode = true; + break; } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码!"); + unScanChemistryPackageBarcode = true; } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } - //有植入物时 - } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_IMPLANT) >= 0 && includeImplant) { + } + + //有植入物时 + if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_IMPLANT) >= 0 && includeImplant) { if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + unScanMonitorPackageBarcode = true; + unScanChemistryPackageBarcode = true; + break; } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码!"); + unScanChemistryPackageBarcode = true; } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } - //有外来器械包时 - } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FOREIGN_TOUSSE) >= 0 && includeForeignTousse) { + } + + //有外来器械包时 + if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FOREIGN_TOUSSE) >= 0 && includeForeignTousse) { if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + unScanMonitorPackageBarcode = true; + unScanChemistryPackageBarcode = true; + break; } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { - throw new SystemException("请扫描化学监测包条码!"); + unScanChemistryPackageBarcode = true; } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { - throw new SystemException("请扫描生物监测包条码!"); + unScanMonitorPackageBarcode = true; } } } + + if(unScanMonitorPackageBarcode && unScanChemistryPackageBarcode){ + throw new UnScanSterilizationMonitoringPackageException("请扫描化学监测包条码和生物监测包条码!"); + }else if(unScanMonitorPackageBarcode){ + throw new UnScanSterilizationMonitoringPackageException("请扫描生物监测包条码!"); + }else if(unScanChemistryPackageBarcode){ + throw new UnScanSterilizationMonitoringPackageException("请扫描化学监测包条码!"); + } } }