Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r15459 -r15462 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 15459) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 15462) @@ -2615,55 +2615,34 @@ if (invoiceTousseInstance != null) { BigDecimal itemPrice = new BigDecimal(0.00); Set tousseInstancesSet = new HashSet(); - if (invoiceTousseInstance.getTousseFixedBarcode()) { - List tousseInstanceList = invoiceItem - .getTousseInstances(); - if (tousseInstanceList != null) { - tousseInstancesSet.addAll(tousseInstanceList); - for (TousseInstance tousseInstance : tousseInstancesSet) { - if (amountAwaitingSent <= 0) { - break; - } - if (!tousseInstance.canInvoice()) { - continue; - } - itemPrice = addItemPriceToTotal( - tousseInstance.getPrice(), 1, - itemPrice); - totalPrice = addItemPriceToTotal( - tousseInstance.getPrice(), 1, - totalPrice); - tousseInstancesToUpdate.add(tousseInstance); - amountAwaitingSent--; + + List tousseInstanceList = invoiceItem + .getTousseInstances(); + if (tousseInstanceList != null) { + tousseInstancesSet.addAll(tousseInstanceList); + for (TousseInstance tousseInstance : tousseInstancesSet) { + if (amountAwaitingSent <= 0) { + break; } + if (!tousseInstance.canInvoice()) { + continue; + } + itemPrice = addItemPriceToTotal( + tousseInstance.getPrice(), 1, + itemPrice); + totalPrice = addItemPriceToTotal( + tousseInstance.getPrice(), 1, + totalPrice); + tousseInstancesToUpdate.add(tousseInstance); + amountAwaitingSent--; } - if (amountAwaitingSent > 0) { - throw new RuntimeException(String.format( - "固定条码物品%s库存不足!", - invoiceItem.getTousseName())); - } - } else { - String barcode = invoiceTousseInstance.getBarcode(); - int amount = invoiceItem.getAmount(); - // 数量必须为1 - if (amount != 1) { - throw new RuntimeException(String.format( - "器械包[%s]条码[%s]发货数量必须为1,实际为%s!", - invoiceItem.getTousseName(), - invoiceTousseInstance.getBarcode(), - amount)); - } - - itemPrice = addItemPriceToTotal( - invoiceTousseInstance.getPrice(), amount, - itemPrice); - totalPrice = addItemPriceToTotal( - invoiceTousseInstance.getPrice(), amount, - totalPrice); - sendOutBarcodeAmount.put(barcode, 0); - tousseInstancesToUpdate.add(invoiceTousseInstance); - amountAwaitingSent--; } + if (amountAwaitingSent > 0) { + throw new RuntimeException(String.format( + "物品%s库存不足!", + invoiceItem.getTousseName())); + } + } else { for (Entry sendOutBarcodeAmountEntry : sendOutBarcodeAmount .entrySet()) { @@ -5883,7 +5862,11 @@ } invoiceItem.setTousseType(scannedTousseType); invoiceItem.setTousseInstance(scannedTousseInstance); - invoiceItem.setTousseInstances(tousseInstancesToSend); + if(scannedTousseInstance.getTousseFixedBarcode()){ + invoiceItem.getTousseInstances().addAll(tousseInstancesToSend); + }else{ + invoiceItem.getTousseInstances().add(scannedTousseInstance); + } invoiceItem.setTousseName(scannedTousseName); submitInvoiceItem.setSentAmount(submitInvoiceItem.getSentAmount()+canSendAmount);