Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r23473 -r23479 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 23473) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 23479) @@ -1950,13 +1950,17 @@ } - private TousseInstance getTousseInstanceByName(String name,Set tousseInstances){ + private List getTousseInstanceByName(String name,Set tousseInstances,int maxAmount){ + List list = new ArrayList(maxAmount); for (TousseInstance tousseInstance : tousseInstances) { + if(list.size() >= maxAmount){ + break; + } if(StringUtils.equals(tousseInstance.getTousseName(), name)){ - return tousseInstance; + list.add(tousseInstance); } } - return null; + return list; } // 聚合包整包发货 private void invoiceWrapperComboTousse(List filteredList,SubmitInvoiceContext submitInvoiceContext){ @@ -2041,16 +2045,16 @@ // 未发货数量 Integer notSendAmount = (amount - applicationItem.getSendOutAmount()); - - TousseInstance tousseInstanceToSend = getTousseInstanceByName(applicationGoodsName, tousseInstances); - if(tousseInstanceToSend == null){ + if (notSendAmount == null || notSendAmount <= 0) { continue; } - if (notSendAmount == null || notSendAmount <= 0) { + List curItemTousseInstancesToSend = getTousseInstanceByName(applicationGoodsName, tousseInstances,notSendAmount); + if(curItemTousseInstancesToSend.isEmpty()){ continue; } + - int canSendAmount = 1;// 能发货的数量 + int canSendAmount = Math.min(notSendAmount, curItemTousseInstancesToSend.size());// 能发货的数量 // 完全发货 if (canSendAmount >= notSendAmount) { @@ -2074,9 +2078,9 @@ } } } - tousseInstancesToSend_invoicePlan.add(tousseInstanceToSend); - tousseInstancesToSend.add(tousseInstanceToSend); - tousseInstances.remove(tousseInstanceToSend); + tousseInstancesToSend_invoicePlan.addAll(curItemTousseInstancesToSend); + tousseInstancesToSend.addAll(curItemTousseInstancesToSend); + tousseInstances.removeAll(curItemTousseInstancesToSend); } } }