Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r34952 -r34955 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 34952) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 34955) @@ -8253,11 +8253,30 @@ if(CollectionUtils.isEmpty(barcodeList)){ return tousseArr; } + // 遍历申请单申请单所有物品 + List applicationItems = app.getApplicationItems(); + List tdIds = new ArrayList(); + if(CollectionUtils.isNotEmpty(applicationItems)){ + for (TousseItem item : applicationItems) { + if(BooleanUtils.isTrue(item.getIsTerminated())){ + continue; + } + Long tdId = item.getTousseDefinitionId(); + tdIds.add(tdId); + } + } + if(CollectionUtils.isEmpty(tdIds)){ + return tousseArr; + } for (BarcodeDevice barcodeDevice : barcodeList) { if(barcodeDevice instanceof TousseInstance){ TousseInstance ti = (TousseInstance)barcodeDevice; TousseDefinition td = ti.getTousseDefinition(); + if(!tdIds.contains(td.getId())){ + continue; + } + // 器械包实例所在位置科室编码 String locationOrgUnitCode = ti.getLocation2(); if(StringUtils.isBlank(locationOrgUnitCode)){ @@ -8292,6 +8311,9 @@ if(CollectionUtils.isNotEmpty(applicationItems)){ List tdIds = new ArrayList(); for (TousseItem item : applicationItems) { + if(BooleanUtils.isTrue(item.getIsTerminated())){ + continue; + } Long tdId = item.getTousseDefinitionId(); tdIds.add(tdId); } @@ -8333,9 +8355,8 @@ if((splitJson != null && splitJson.size() > 0) && (tousseJson == null || tousseJson.size() == 0)){ InvoicePlan invoicePlan = invoicePlanManager.getForUpdate(recyclingContext.getRecyclingApplicationId()); if(invoicePlan != null){ - String endCause = "申请单上的物品全部被拆分"; // 申请单上的物品全部被拆分了,要把申请单终止 - invoicePlanManager.terminateInvoicePlan(invoicePlan, recyclingContext.getOperator(), endCause); + terminateInvoicePlan(invoicePlan, splitJson, recyclingContext.getOperator()); } } else { this.save(recyclingContext); @@ -8369,6 +8390,66 @@ } /** + * 物品被拆分后,需要把原来申请单上的物品终止 + * @param invoicePlan + * @param recyclingContext + */ + private void terminateInvoicePlan(InvoicePlan invoicePlan, JSONArray splitJson, String operator) { + if(invoicePlan == null){ + return; + } + if(splitJson == null || splitJson.size() == 0){ + return; + } + List applicationItems = invoicePlan.getApplicationItems(); + if(CollectionUtils.isEmpty(applicationItems)){ + return; + } + Map tousseItemIdMap = new HashMap(); + for (TousseItem tousseItem : applicationItems) { + Long tousseDefinitionId = tousseItem.getTousseDefinitionId(); + if(DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + tousseItemIdMap.put(tousseItem.getTousseDefinitionId(), tousseItem.getId()); + } + } + if(MapUtils.isEmpty(tousseItemIdMap)){ + return; + } + List willTerminateItems = new ArrayList(); + List splitTousseDefinitionIdList = getSplitTousseDefinitionId(splitJson); + for (Long tousseDefinitionId : tousseItemIdMap.keySet()) { + if(splitTousseDefinitionIdList.contains(tousseDefinitionId)){ + Long tousseItemId = tousseItemIdMap.get(tousseDefinitionId); + if(tousseItemId != null){ + willTerminateItems.add(tousseItemId); + } + } + } + if(CollectionUtils.isNotEmpty(willTerminateItems)){ + String endCause = "申请单上的物品被拆分"; + invoicePlanManager.terminateTousseItemByIds(willTerminateItems, endCause); + } + } + + /** + * 获取即将被拆分的包定义ID + */ + private List getSplitTousseDefinitionId(JSONArray splitJsonArray) { + List splitTousseDefinitionIdList = new ArrayList(); + if(splitJsonArray == null || splitJsonArray.size() == 0){ + return splitTousseDefinitionIdList; + } + for (Object object : splitJsonArray) { + JSONObject json = (JSONObject) object; + Long tousseDefinitionId = json.optLong("tousseDefinitionID"); + if(DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + splitTousseDefinitionIdList.add(tousseDefinitionId); + } + } + return splitTousseDefinitionIdList; + } + + /** * 根据科室拆分回收申请单 * @param splitJsonArray * @return