Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r38737 -r38788 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 38737) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 38788) @@ -373,8 +373,9 @@ } @Override public void checkSterilizationMode(Long sterilizationTransitionId, Long proxyDisinfectionId, - Set tousseInstanceIdsOfScanned, String containerBarcodeOfScanned + Set tousseInstanceIdsOfScanned, String containerBarcodesOfScannedStr , BarcodeDevice barcodeDevice) { + Set containerBarcodesOfScanned = SqlUtils.splitStringToSet(containerBarcodesOfScannedStr, ","); //第一步 获取原有的灭菌方式 List oldTis = new ArrayList(); if(CollectionUtils.isNotEmpty(tousseInstanceIdsOfScanned)){//扫描的 又未保存的包实例 @@ -434,40 +435,46 @@ } } if(barcodeDevice != null){ - if(BarcodeDevice.BARCODE_TYPE_CONTAINER.equals(barcodeDevice.getType())){//扫描的是篮筐 + if(BarcodeDevice.BARCODE_TYPE_CONTAINER.equals(barcodeDevice.getType())){//扫描的是篮筐 灭菌交接只有一个篮筐 灭菌交接是换框 //灭菌交接扫描新篮筐相当于换篮筐 不用校验旧篮筐的物品 List containers = objectDao.findByHql("select po from Container po where po.barcode='"+barcodeDevice.getBarcode()+"'"); - Container container = null; - if(CollectionUtils.isNotEmpty(containers)){ - container = containers.get(0); - } - if(container == null){ + if(CollectionUtils.isEmpty(containers)){ throw new SystemException("不存在的篮筐"); } - //验证篮筐的灭菌方式是否和原有的包一致 - if(StringUtils.isNotBlank(container.getSterilingMode()) && firstOfoldTis != null){ - checkSterilingMode(container.getContainerName(), oldSterilizationMode, container.getSterilingMode(),"篮筐"); + if(!DatabaseUtil.isPoIdValid(sterilizationTransitionId) && CollectionUtils.isNotEmpty(containerBarcodesOfScanned)){ + List containersOfScanned = objectDao.findByHql("select po from Container po where 1=1 "+SqlUtils.getInStringListSql("po.barcode", containerBarcodesOfScanned)); + if(CollectionUtils.isEmpty(containers)){ + throw new SystemException("不存在的篮筐"); + } + containers.addAll(containersOfScanned); } - ReviewedBasket basket = reviewedBasketManager - .getReviewedBasketForSterilizeRecord(container.getBarcode()); - List tousses = this.buildReviewedTousseInstanceVos(basket); - //验证篮筐内是否有不一致的灭菌方式 - checkSterilingModeOfTousseInstances(tousses); - if(CollectionUtils.isNotEmpty(tousses)){ - TousseInstance ti = tousses.get(0); - String checkSterilizationMode = getSterilizationModeByTousseInstance(ti); - //验证篮筐内灭菌方式和原有包的灭菌方式是否一致 - if(firstOfoldTis != null){ - checkSterilingMode(ti.getTousseName(), oldSterilizationMode, checkSterilizationMode,"物品"); + checkMultipleSterilingModes(containers); + for (Container container : containers) { + //验证篮筐的灭菌方式是否和原有的包一致 + if(StringUtils.isNotBlank(container.getSterilingMode()) && firstOfoldTis != null){ + checkSterilingMode(container.getContainerName(), oldSterilizationMode, container.getSterilingMode(),"篮筐"); } - ////验证篮筐内灭菌方式和篮筐灭菌方式是否一致 - if(StringUtils.isNotBlank(container.getSterilingMode())){ - if(!StringUtils.equals(checkSterilizationMode, container.getSterilingMode())){ - throw new SystemException("【" + container.getContainerName() - + "】属于【" - +container.getSterilingMode() - + "】篮筐与篮筐内【" + checkSterilizationMode + "】物品的灭菌方式不一致,不能录入。"); + ReviewedBasket basket = reviewedBasketManager + .getReviewedBasketForSterilizeRecord(container.getBarcode()); + List tousses = this.buildReviewedTousseInstanceVos(basket); + //验证篮筐内是否有不一致的灭菌方式 + checkSterilingModeOfTousseInstances(tousses); + if(CollectionUtils.isNotEmpty(tousses)){ + TousseInstance ti = tousses.get(0); + String checkSterilizationMode = getSterilizationModeByTousseInstance(ti); + //验证篮筐内灭菌方式和原有包的灭菌方式是否一致 + if(firstOfoldTis != null){ + checkSterilingMode(ti.getTousseName(), oldSterilizationMode, checkSterilizationMode,"物品"); } + ////验证篮筐内灭菌方式和篮筐灭菌方式是否一致 + if(StringUtils.isNotBlank(container.getSterilingMode())){ + if(!StringUtils.equals(checkSterilizationMode, container.getSterilingMode())){ + throw new SystemException("【" + container.getContainerName() + + "】属于【" + +container.getSterilingMode() + + "】篮筐与篮筐内【" + checkSterilizationMode + "】物品的灭菌方式不一致,不能录入。"); + } + } } } }else if(BarcodeDevice.BARCODE_TYPE_PACKAGE.equals(barcodeDevice.getType())){ @@ -476,32 +483,44 @@ if(CollectionUtils.isNotEmpty(oldTis)){//跟旧包做校验 checkSterilingMode(ti.getTousseName(), oldSterilizationMode, checkSterilizationMode,"物品"); } - if(StringUtils.isNotBlank(containerBarcodeOfScanned)){//跟旧篮筐做校验 - List containers = objectDao.findByHql("select po from Container po where po.barcode='"+containerBarcodeOfScanned+"'"); - Container container = null; - if(CollectionUtils.isNotEmpty(containers)){ - container = containers.get(0); - } - if(container == null){ + if(CollectionUtils.isNotEmpty(containerBarcodesOfScanned)){//跟旧篮筐做校验 + List containers = objectDao.findByHql("select po from Container po where 1=1 "+SqlUtils.getInStringListSql("po.barcode", containerBarcodesOfScanned)); + if(CollectionUtils.isEmpty(containers)){ throw new SystemException("不存在的篮筐"); } - if(StringUtils.isNotBlank(container.getSterilingMode())){ - checkSterilingMode(ti.getTousseName(), container.getSterilingMode(), checkSterilizationMode,"物品"); - } - ReviewedBasket basket = reviewedBasketManager - .getReviewedBasketForSterilizeRecord(container.getBarcode()); - List tousses = this.buildReviewedTousseInstanceVos(basket); - if(CollectionUtils.isNotEmpty(tousses)){ - for (TousseInstance tiOfBasket : tousses) { - String sterilizationModeOfTiOfBasket = getSterilizationModeByTousseInstance(tiOfBasket); - checkSterilingMode(ti.getTousseName(), sterilizationModeOfTiOfBasket, checkSterilizationMode,"物品"); - break; + checkMultipleSterilingModes(containers); + for (Container container : containers) { + if(StringUtils.isNotBlank(container.getSterilingMode())){ + checkSterilingMode(ti.getTousseName(), container.getSterilingMode(), checkSterilizationMode,"物品"); } + ReviewedBasket basket = reviewedBasketManager + .getReviewedBasketForSterilizeRecord(container.getBarcode()); + List tousses = this.buildReviewedTousseInstanceVos(basket); + if(CollectionUtils.isNotEmpty(tousses)){ + for (TousseInstance tiOfBasket : tousses) { + String sterilizationModeOfTiOfBasket = getSterilizationModeByTousseInstance(tiOfBasket); + checkSterilingMode(ti.getTousseName(), sterilizationModeOfTiOfBasket, checkSterilizationMode,"物品"); + break; + } + } } } } } } + private void checkMultipleSterilingModes(List containers){ + if(containers.size() > 1){ + Set sterilingModesOfContainers = new HashSet(); + for (Container container : containers) { + if(StringUtils.isNotBlank(container.getSterilingMode())){ + sterilingModesOfContainers.add(container.getSterilingMode()); + } + } + if(sterilingModesOfContainers.size() > 0){ + throw new SystemException("存在多种灭菌方式的篮筐"); + } + } + } /** * 获取包实例的灭菌方式 * 追溯的包取包实例的灭菌方式 不追溯的包取祖先包定义的灭菌方式