Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r16436 -r16459 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 16436) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 16459) @@ -323,7 +323,7 @@ ClassifyBasket classifyBasket = beCleanItemManager.getClassifyBasketById(id.toString()); if(classifyBasket != null){ Container container = (Container) barcodeManager.getBarcodeByBarcode(classifyBasket.getContainerBarcode()); - setContainerStatus(washRecord, rinser, isNewRecord, container); + setContainerStatus(washRecord, rinser, isNewRecord, container,id); classifyBasket.setPersonInCharge(personInCharge); classifyBasket.setPersonInChargeCode(personInChargeCode); classifyBasket.setPosition(position); @@ -344,23 +344,47 @@ } private void setContainerStatus(WashAndDisinfectRecord washRecord, - Rinser rinser, boolean isNewRecord, Container container) { - if((container != null && Container.CONTAINER_STATUS_WASHLOADING.equals(container.getStatus())) || isNewRecord){ - if(rinser != null){ - boolean isWashConfirm = rinser.sterilizerIsWashConfirm(); - if(!isWashConfirm){ - container.setStatus(Container.CONTAINER_STATUS_WASHED); - }else{ - if(WashAndDisinfectRecord.STATUS_WASHED.equals(washRecord.getWashStatus())){ + Rinser rinser, boolean isNewRecord, Container container,Long classifyBasketId) { + if(container != null){ + //篮筐多次清洗并且清洗机需要确认的话,每开一炉篮筐状态:清洗中->清洗完成 + if(Container.CONTAINER_STATUS_WASHLOADING.equals(container.getStatus()) || isNewRecord){ + + /**是否还有其他清洗装载的篮筐实例 + * 场景:篮筐A清洗完成后,拿去做回收后篮筐状态变成清洗装载, + * 然后打开A所在的清洗记录单保存,这个时候不应该把篮筐状态设为清洗完成 + */ + boolean isExistUnWashBasket = isExistUnWashBasket(container.getBarcode(),classifyBasketId); + if (isExistUnWashBasket) { + return; + } + if(rinser != null){ + boolean isWashConfirm = rinser.sterilizerIsWashConfirm(); + if(!isWashConfirm){ container.setStatus(Container.CONTAINER_STATUS_WASHED); }else{ - container.setStatus(Container.CONTAINER_STATUS_WASHING); + if(WashAndDisinfectRecord.STATUS_WASHED.equals(washRecord.getWashStatus())){ + container.setStatus(Container.CONTAINER_STATUS_WASHED); + }else{ + container.setStatus(Container.CONTAINER_STATUS_WASHING); + } } } } } } - + + private boolean isExistUnWashBasket(String barcode,Long classifyBasketId) { + if (StringUtils.isNotBlank(barcode) && classifyBasketId != null) { + String sql = String.format("select po,r from %s po left join po.washAndDisinfectRecords r " + + "where r.id is null and po.containerBarcode = '%s' and po.id > %s", ClassifyBasket.class.getSimpleName(),barcode,classifyBasketId); + List list = objectDao.findByHql(sql); + if(list.size() > 0) { + return true; + } + } + return false; + } + /** * 删除与"此清洗记录"有关系的所有"篮筐实例" * @param washRecord