Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r34425 -r34661 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 34425) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 34661) @@ -3526,16 +3526,44 @@ } Set invoicePlanIDs = parseInvoicePlanIDs(params); //invoicePlanList = invoicePlanManager.getInvoicePlanByOrgUnitCoding_ForUpdate_TRANS_MANDATORY(departCode); - if(invoicePlanIDs.isEmpty()){ + if(CollectionUtils.isEmpty(invoicePlanIDs)){ + invoicePlanList = new ArrayList(); + //第一步:如果扫描的发货物品(器械包实例)中有代理灭菌单的包,优先找到这些代理灭菌包对应的代理灭菌单 + List barcodeList = new ArrayList(); + submitInvoiceContext.getSubmitInvoiceItems().stream().forEach(item->{ + barcodeList.add(item.getBarcode()); + }); + List barcodeDeviceList = barcodeManager.getCollection("barcode", barcodeList); + List proxyInvoicePlanIdList = new ArrayList(); + barcodeDeviceList.stream().forEach(barcodeDevice->{ + if(barcodeDevice instanceof TousseInstance){ + TousseInstance ti = (TousseInstance)barcodeDevice; + Long proxyInvoicePlanId = ti.getProxyDisinfection_id(); + if(DatabaseUtil.isPoIdValid(proxyInvoicePlanId)){ + proxyInvoicePlanIdList.add(proxyInvoicePlanId); + } + } + }); + if(CollectionUtils.isNotEmpty(proxyInvoicePlanIdList)){ + List proxyInvoicePlanList = invoicePlanManager.getCollection(proxyInvoicePlanIdList); + if(CollectionUtils.isNotEmpty(proxyInvoicePlanList)){ + invoicePlanList.addAll(proxyInvoicePlanList); + } + } + + //第二步:根据过滤条件查询待发货的申请单 //器械包分组id(暂时为单个id) Long tousseGroupIds = params.optLong("tousseGroupIds"); String tousseGroupIdString = null; if(DatabaseUtil.isPoIdValid(tousseGroupIds)){ tousseGroupIdString = String.valueOf(tousseGroupIds); } - invoicePlanList = + List queryInvoicePlanList = invoicePlanManager.getInvoicePlanByOrgUnitCodingAndTousseType_ForUpdate_TRANS_MANDATORY(departCode, params.optString("applyDate"), params.optString("tousseType"), tousseGroupIdString,params.optString("appFormType")); + if(CollectionUtils.isNotEmpty(queryInvoicePlanList)){ + invoicePlanList.addAll(queryInvoicePlanList); + } }else{ invoicePlanList = invoicePlanManager.getInvoicePlanByIDsForInvoice_ForUpdate_TRANS_MANDATORY(invoicePlanIDs); }