Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java =================================================================== diff -u -r13878 -r13879 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 13878) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 13879) @@ -612,6 +612,7 @@ for (TousseInstance tousseInstance : tousseInstances) { tousseInstance.setApplicationTousseItemId(tousseItem.getId()); + tousseInstance.setInvoicePlanID(foreignProxyDisinfection.getId()); objectDao.update(tousseInstance); } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r13877 -r13879 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 13877) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 13879) @@ -1309,11 +1309,11 @@ .joinToWhereInConditionForStringProperties(barcodesScanned); String tousseSql = String.format( " where po.id in(select t.tousseDefinition.id from %s t where %s)", TousseInstance.class.getSimpleName(),SqlUtils.getStringFieldInCollectionsPredicate("t.barcode", barcodesScanned)); - List tousseDefinitionList = objectDao.getBySql_ForUpdate2(TousseDefinition.class.getSimpleName(), tousseSql); + List tousseDefinitionList = objectDao.findBySql(TousseDefinition.class.getSimpleName(), tousseSql); String tousseInstancesIdsSql = String.format( " where %s", SqlUtils.getStringFieldInCollectionsPredicate("po.barcode", barcodesScanned)); - List tousseInstanceList = objectDao.findBySql(TousseInstance.class.getSimpleName(), tousseInstancesIdsSql); + List tousseInstanceList = objectDao.getBySql_ForUpdate2(TousseInstance.class.getSimpleName(), tousseInstancesIdsSql); // 获取所有相关的器械包 if (tousseInstanceList != null) { for (TousseInstance tousseInstance : tousseInstanceList) { @@ -2668,6 +2668,27 @@ .checkTousseInstanceHasNotRecall())); return tousseInstanceList; } + // 根据固定条码获取能发货的外部代理灭菌包实例 + private Collection getCanInvoiceForeignProxyDisinfectionTousseInstancesByFixedTousseInstance(InvoicePlan invoicePlan,TousseInstance fixedBarcodeTousseInstance){ + Collection sqlWheres = new ArrayList(); + // 判断状态 + sqlWheres.add(SqlBuilder.build_IN_Statement("po.status", + SqlBuilder.IN, TousseInstance.STATUS_STERILED, + TousseInstance.STATUS_NO_DELIVER)); + sqlWheres.add("po.tousseFixedBarcode = 0 "); + sqlWheres.add(String.format(" %s ", SqlUtils.getLongFieldPredicate("po.invoicePlanID", invoicePlan.getId()))); + // 非可追溯器械包,返回多个器械包实例 + Collection tousseInstanceList = tousseInstanceManager + .getUnTraceableTousseInstanceListByFictitiousTousseDefinition( + fixedBarcodeTousseInstance.getTousseDefinition(), + sqlWheres, + AllPredicate.allPredicate( + TousseInstanceManagerImpl + .isNotExpire(new Date()), + tousseInstanceManager + .checkTousseInstanceHasNotRecall())); + return tousseInstanceList; + } private JsonObject getFixedBarcodeInfo( TousseInstance fixedBarcodeTousseInstance, Collection tousseInstanceList) { @@ -3874,7 +3895,7 @@ actualSendAmount = Math.min(scannedAmount, awaitSendAmount);// 能发货的数量 // 非可追溯器械包,返回多个器械包实例 - List affiliatedTousseInstanceList = (List)getCanInvoiceTousseInstancesByFixedTousseInstance(tousseInstance); + List affiliatedTousseInstanceList = (List)getCanInvoiceForeignProxyDisinfectionTousseInstancesByFixedTousseInstance(invoicePlan,tousseInstance); if (CollectionUtils.isEmpty(affiliatedTousseInstanceList) || affiliatedTousseInstanceList.size() < actualSendAmount){ throw new RuntimeException(String.format("物品%s库存不足", tousseInstance.getTousseName())); } @@ -3911,15 +3932,15 @@ InvoiceItem invoiceItem = tousseNameToInvoiceItemMap.get(tousseName); if (invoiceItem == null) { invoiceItem = new InvoiceItem(); - invoiceItem.setAmount(1); + invoiceItem.setAmount(actualSendAmount); invoiceItem.setDiposable("否"); invoiceItem.setTousseType(tousseInstance .getTousseDefinition().getTousseType()); invoiceItem.setTousseName(tousseName); tousseNameToInvoiceItemMap.put(tousseName, invoiceItem); } else { invoiceItem - .setAmount(invoiceItem.getAmount() + 1); + .setAmount(invoiceItem.getAmount() + actualSendAmount); } invoiceItem.getTousseInstances().addAll(tousseInstanceList); }