Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForSaveOrUpdateSterilizationRecord.java =================================================================== diff -u -r17577 -r17673 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForSaveOrUpdateSterilizationRecord.java (.../SterilizationRecordManagerTestsForSaveOrUpdateSterilizationRecord.java) (revision 17577) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForSaveOrUpdateSterilizationRecord.java (.../SterilizationRecordManagerTestsForSaveOrUpdateSterilizationRecord.java) (revision 17673) @@ -367,4 +367,63 @@ } return sterilizationRecord; } + /** + * 灭菌记录在灭菌中的时候,废弃篮筐内的器械包,再重新保存灭菌记录。已废弃的器械包不能变成灭菌中 + */ + @Test + @Rollback(false) + public void testDiscardTousseResaveSterileRecord(){ + //一个篮筐,里面放三个器械包,另外七个器械包在篮筐外 + int basketCount = 1; + int basketTousseCount = 3; + int tousseDefCount = 1; + int tousseCount = 10; + //1.初始化基础数据 + initCSSDData(); + basketIndex = 0; + + initMyData(basketCount); + int barcodeStart = barcodeIndex; + List tousseInstanceBarcodes = new ArrayList<>(); + List containerBarcodes = new ArrayList<>(); + SterilizationRecord sterilizationRecord = prepareTousse(tousseDefCount, tousseCount); + prepareBarcode(barcodeStart,tousseInstanceBarcodes,containerBarcodes,basketCount,basketTousseCount); + sterilizationRecordManager.saveOrUpdateSterilizationRecord(sterilizationRecord, tousseInstanceBarcodes, containerBarcodes, null); + assertEquals(sterilizationRecord.getStatus(), SterilizationRecord.STERILIZATION_STATUS_BEGIN); + + assertEquals(containerBarcodes.size(), basketCount); + for(String barcode : containerBarcodes){ + ReviewedBasket rb = (ReviewedBasket) objectDao.getByProperty(ReviewedBasket.class.getSimpleName(), "container.barcode", barcode); + assertEquals(rb.getContainer().getStatus(),Container.CONTAINER_STATUS_STERILIZING); + } + + List tousses = tousseInstanceManager.getCollection("barcode", getAllTousseBarcodes(barcodeStart)); + if(tousses == null){ + assertEquals(0, tousseCount * tousseDefCount); + }else{ + assertEquals(tousses.size(), tousseCount * tousseDefCount); + for(TousseInstance tousse: tousses){ + assertEquals(tousse.getStatus(), TousseInstance.STATUS_STERILING); + } + } + //将篮筐内和篮筐外的一个包实例废弃掉,再重新保存,判断废弃的包实例状态依然是已废弃状态 + List tousseBarcodes = getAllTousseBarcodes(barcodeStart); + String barcodeInContainer = tousseBarcodes.get(0); + String barcodeNotInContainer = tousseBarcodes.get(9); + + TousseInstance tousseInstanceInContainer = tousseInstanceManager.getFirst("barcode", barcodeInContainer); + TousseInstance tousseInstanceNotInContainer = tousseInstanceManager.getFirst("barcode", barcodeNotInContainer); + + tousseInstanceManager.discardTousseInstance(tousseInstanceInContainer, "就是要废弃掉"); + tousseInstanceManager.discardTousseInstance(tousseInstanceNotInContainer, "就是要废弃掉"); + //再次保存 + sterilizationRecordManager.saveOrUpdateSterilizationRecord(sterilizationRecord, tousseInstanceBarcodes, containerBarcodes, sterilizationRecord.getId()); + + tousseInstanceInContainer = tousseInstanceManager.getFirst("barcode", barcodeInContainer); + tousseInstanceNotInContainer = tousseInstanceManager.getFirst("barcode", barcodeNotInContainer); + assertEquals(tousseInstanceInContainer.getStatus(), TousseInstance.STATUS_DISCARD); + assertEquals(tousseInstanceInContainer.getWasteReason(), "就是要废弃掉"); + assertEquals(tousseInstanceNotInContainer.getStatus(), TousseInstance.STATUS_DISCARD); + assertEquals(tousseInstanceNotInContainer.getWasteReason(), "就是要废弃掉"); + } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r17481 -r17673 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 17481) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 17673) @@ -1298,8 +1298,10 @@ .getTousseInstanceList(); if (CollectionUtils.isNotEmpty(originalTousseInstances)) { for (TousseInstance tousseInstance : originalTousseInstances) { - tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); - tousseInstanceManager.saveOrUpdate(tousseInstance); + if(tousseInstance.isSteriling()){ + tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstanceManager.saveOrUpdate(tousseInstance); + } } } @@ -1318,9 +1320,10 @@ .getTousseInstances(objectDao); if (!CollectionUtils.isEmpty(tousseInstances)) { for (TousseInstance tousseInstance : tousseInstances) { - tousseInstance - .setStatus(TousseInstance.STATUS_REVIEWED); - tousseInstanceManager.saveOrUpdate(tousseInstance); + if(tousseInstance.isSteriling()){ + tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstanceManager.saveOrUpdate(tousseInstance); + } } } }