Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r17545 -r17552 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17545) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17552) @@ -61,6 +61,7 @@ import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.materialinstance.service.MaterialInstanceManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; import com.forgon.disinfectsystem.vo.TousseItemVo; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; @@ -118,6 +119,12 @@ private MaterialInstanceManager materialInstanceManager; + private TousseInstanceManager tousseInstanceManager; + + public void setTousseInstanceManager(TousseInstanceManager tousseInstanceManager) { + this.tousseInstanceManager = tousseInstanceManager; + } + public void setMaterialInstanceManager( MaterialInstanceManager materialInstanceManager) { this.materialInstanceManager = materialInstanceManager; @@ -284,6 +291,7 @@ if(errorJsonArray != null){ LoginUserData loginUser = AcegiHelper.getLoginUser(); Map tousseItemMap = getRecyclingTousseItemMap(record); + Map tousseBarcodeMap = new HashMap(); for (int i = 0; i < errorJsonArray.size(); i++) { JSONObject obj = errorJsonArray.optJSONObject(i); String detailId = obj.optString("detailId"); @@ -324,14 +332,7 @@ //删除 if(amount <= 0){ if(detail != null){ - //找到此丢失记录关联的所有回收项 - List items = materialErrorDamageDetailManager.getErrorDamageUnionRecyclingItems(detail); - if(CollectionUtils.isNotEmpty(items)){ - for (RecyclingItem recyclingItem2 : items) { - recyclingItem2.getErrorDamageDetails().remove(detail); - } - } - objectDao.delete(detail); + materialErrorDamageDetailManager.delete(detail); } }else{ if(recyclingItem == null){ @@ -362,8 +363,11 @@ detail.setAmount(amount); detail.setErrorType(errorType); detail.setIsUnionToussInstance(false); - detail.setTousseBarcode(""); + detail.setTousseBarcode(tousseBarcode); detail.setTousseDefinitionId(tousseDefinitionID); + if(StringUtils.isNotBlank(tousseBarcode)){ + tousseBarcodeMap.put(tousseBarcode, tousseBarcode); + } Long currerntDetailId = detail.getId(); boolean isExist = CollectionUtils.exists(recyclingItem.getErrorDamageDetails(), new Predicate() { @@ -381,6 +385,15 @@ } } } + if(tousseBarcodeMap.size() > 0){ + for (String tousseBarcode : tousseBarcodeMap.keySet()) { + TousseInstance ti = tousseInstanceManager.getTousseInstanceByBarcode(tousseBarcode); + if(ti != null){ + ti.setStatus(TousseInstance.STATUS_RECYCLED); + tousseInstanceManager.saveOrUpdate(ti); + } + } + } splitErrorDamageDetail(record, confirmation); } } @@ -444,9 +457,8 @@ } //删除拆分过的旧丢失报损明细 if(CollectionUtils.isNotEmpty(toDeleteDetails)){ - recyclingItem.getErrorDamageDetails().removeAll(toDeleteDetails); for (MaterialErrorDamageDetail detail : toDeleteDetails) { - objectDao.delete(detail); + materialErrorDamageDetailManager.delete(detail); } } //拆分明细 Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r17524 -r17552 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 17524) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 17552) @@ -903,8 +903,9 @@ } catch (Exception e) { errorMessage = e.getMessage(); } - - details = RecyclingErrorAndDamageUtil.findTousseInstanceErrorDamages(tousseInstance, objectDao); + if(!StringUtils.equals(TousseInstance.STATUS_RECYCLED, tousseInstance.getStatus())){ + details = RecyclingErrorAndDamageUtil.findTousseInstanceErrorDamages(tousseInstance, objectDao); + } } } } else if (barcodeDevice instanceof User) { @@ -958,7 +959,9 @@ || TousseInstance.STATUS_USED.equals(status) || TousseInstance.STATUS_DISCARD.equals(status) || TousseInstance.STATUS_SIGNED.equals(status)) { - details = RecyclingErrorAndDamageUtil.findTousseInstanceErrorDamages(tousseInstance, objectDao); + if(!StringUtils.equals(TousseInstance.STATUS_RECYCLED, tousseInstance.getStatus())){ + details = RecyclingErrorAndDamageUtil.findTousseInstanceErrorDamages(tousseInstance, objectDao); + } } else { errorMessage = "器械包必须是已发货、已使用或已签收的状态,该包当前状态为:" + status; tousseInstance = null; Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java =================================================================== diff -u -r17542 -r17552 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 17542) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/materialerrordamage/service/MaterialErrorDamageDetailManagerImpl.java (.../MaterialErrorDamageDetailManagerImpl.java) (revision 17552) @@ -305,6 +305,12 @@ @Override public void delete(MaterialErrorDamageDetail detail) { if(detail != null){ + List items = getErrorDamageUnionRecyclingItems(detail); + if(CollectionUtils.isNotEmpty(items)){ + for (RecyclingItem recyclingItem2 : items) { + recyclingItem2.getErrorDamageDetails().remove(detail); + } + } objectDao.delete(detail); } }