Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r17542 -r17545 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17542) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17545) @@ -1275,7 +1275,7 @@ if (historyPackingTaskId == null) { historyPackingTaskId = getUnionPackingTaskId( records, confirmation, item, - historyPackingTaskId); + historyPackingTaskId,detail); } detail.setPackingTaskId(historyPackingTaskId); } @@ -1320,13 +1320,29 @@ } private Long getUnionPackingTaskId(RecyclingRecord records, - boolean confirmation, RecyclingItem item, Long historyPackingTaskId) { + boolean confirmation, RecyclingItem item, Long historyPackingTaskId,MaterialErrorDamageDetail detail) { List taskList = packingManager .getPackingTask(records.getId(), item.getTousseDefinitionId(), PackingTask.TASK_RECYCLINGRECORD); - if (taskList != null && taskList.size() > 0) { - PackingTask packingTask = taskList.get(0); + if (CollectionUtils.isNotEmpty(taskList)) { + PackingTask packingTask = null; + if(detail.isIDCard()){ + //丢失的标识牌关联上相应的装配任务(回收多个标识牌,放入不同的篮筐,装配任务多条) + for (PackingTask task : taskList) { + List idCardTasks = packingManager.findIDCardForPackingTask(task.getId()); + if(CollectionUtils.isEmpty(idCardTasks)){ + packingTask = task; + break; + } + } + + }else{ + packingTask = taskList.get(0); + } + if(packingTask == null){ + throw new RuntimeException("异常数据,请联系管理员!"); + } historyPackingTaskId = packingTask.getId(); } else { throw new RuntimeException(item.getTousseName()