Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r14141 -r14144 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 14141) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 14144) @@ -1857,6 +1857,18 @@ } invoiceItem.setSettlementPrice(invoiceItem .getSettlementPrice() + itemPrice.doubleValue()); + }else if (InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION.equals(invoicePlanType)) { + // 外来器械申请单 + BigDecimal itemPrice = new BigDecimal(0.00); + Collection tousseInstanceList = invoiceItem.getTousseInstances(); + for (TousseInstance tousseInstance : tousseInstanceList) { + itemPrice = addItemPriceToTotal(tousseInstance.getPrice(), 1, itemPrice); + totalPrice = addItemPriceToTotal(tousseInstance.getPrice(), 1, totalPrice); + tousseInstancesToUpdate.add(tousseInstance); + --amountAwaitingSent; + } + invoiceItem.setSettlementPrice(invoiceItem + .getSettlementPrice() + itemPrice.doubleValue()); }else{ for (Entry sendOutBarcodeAmountEntry : sendOutBarcodeAmount .entrySet()) { @@ -3930,6 +3942,14 @@ Map barcodeObjMap = submitInvoiceContext.getBarcodeToBarcodeDeviceMap(); String errorMessage = null; Set invoiceItemSet = new HashSet(); + List applicationItems = invoicePlan.getApplicationItems(); + if(applicationItems == null || applicationItems.size()==0){ + return invoiceItemSet; + } + TousseItem item = applicationItems.get(0); + if(item.terminated()){// 对终止状态的处理 + return invoiceItemSet; + } // 外来器械包拆包处理 Map invoiceItemMap = new HashMap(); List tousseInstanceList = tousseInstanceManager @@ -3938,43 +3958,39 @@ for (TousseInstance tousseInstance : tousseInstanceList) { Integer amount = sendOutBarcodeAmountMap.get(tousseInstance .getBarcode()); - if (amount != null && amount > 0) { - if (!tousseInstance.isSteriled()) { - errorMessage = String.format("%s(%s)不是已灭菌状态!", - tousseInstance.getTousseName(), - tousseInstance.getBarcode()); - throw new RuntimeException(errorMessage); - } - // 器械包实例改为已发货状态 - tousseInstance.setStatus(TousseInstance.STATUS_SHIPPED); - if (invoiceItemMap.get(tousseInstance.getTousseName()) == null) { - InvoiceItem invoiceItem = new InvoiceItem(); - invoiceItem.setAmount(1); - invoiceItem.setDiposable("否"); - invoiceItem.setTousseType(tousseInstance - .getTousseDefinition().getTousseType()); - invoiceItem.setTousseName(tousseInstance - .getTousseName()); - invoiceItemMap.put(tousseInstance.getTousseName(), - invoiceItem); - } else { - InvoiceItem invoiceItem = invoiceItemMap - .get(tousseInstance.getTousseName()); - invoiceItem.setAmount(invoiceItem.getAmount() + 1); - } + if(amount == null || amount == 0){ + continue; } + if (!tousseInstance.isSteriled()) { + errorMessage = String.format("%s(%s)不是已灭菌状态!", + tousseInstance.getTousseName(), + tousseInstance.getBarcode()); + throw new RuntimeException(errorMessage); + } + // 器械包实例改为已发货状态 + tousseInstance.setStatus(TousseInstance.STATUS_SHIPPED); + InvoiceItem invoiceItem = invoiceItemMap.get(tousseInstance.getTousseName()); + if (invoiceItem == null) { + invoiceItem = new InvoiceItem(); + invoiceItem.setAmount(1); + invoiceItem.setDiposable("否"); + invoiceItem.setTousseType(tousseInstance + .getTousseDefinition().getTousseType()); + invoiceItem.setTousseName(tousseInstance + .getTousseName()); + invoiceItemMap.put(tousseInstance.getTousseName(), + invoiceItem); + } else { + invoiceItem.setAmount(invoiceItem.getAmount() + 1); + } + invoiceItem.getTousseInstances().add(tousseInstance); } // 目前外来器械只能申请一个物品 // if (invoiceItemMap.size() > 0) { // TousseItem item = invoicePlan.getApplicationItems().get(0); // item.setSendOutAmount(1); // } if (invoiceItemMap.size() > 0) { - TousseItem item = invoicePlan.getApplicationItems().get(0); - if(item.terminated()){// 对终止状态的处理 - invoiceItemSet.clear(); - return invoiceItemSet; - } item.setSendOutAmount(1); for (TousseInstance tousseInstance : tousseInstanceList) { // 必须所有器械包实例状态都变为已发货状态,才能将已发货数量改为1