Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r30399 -r30467 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 30399) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 30467) @@ -9810,16 +9810,32 @@ String[] invoiceIds){ if(ArrayUtils.isEmpty(invoiceIds)) return CollectionUtils.emptyCollection(); - - String idsStr = StringUtils.join(invoiceIds, ","); + List invoiceIdList = new ArrayList<>(); + for(String invoiceId : invoiceIds){ + try{ + invoiceIdList.add(Long.parseLong(invoiceId)); + }catch(Exception e){ + throw new SystemException("发货单id参数的值非法,只能为是正整数"); + } + } + List invoiceList = getCollection(invoiceIdList); + if(CollectionUtils.isEmpty(invoiceList)){ + return CollectionUtils.emptyCollection(); + } + //符合条件的发货单id + List matchedConditionInvoiceId = invoiceList.stream().filter(invoice -> { + return !StringUtils.equals(InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM,invoice.getInvoicePlanType()); + }).map(Invoice::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(matchedConditionInvoiceId)){ + return CollectionUtils.emptyCollection(); + } + String idsStr = StringUtils.join(matchedConditionInvoiceId, ","); String sql = String.format(" where id in (%s)", idsStr); - sql += String.format(" and invoicePlanType != '%s'", - InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM); + /*sql += String.format(" and invoicePlanType != '%s'", + InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM);*/ String orderBy = " order by sendTime asc"; List list = findBySql(sql + orderBy); - String toussesql = " where invoice_id in ( select id from " - + Invoice.class.getSimpleName() + sql + " ) or invoice2_id in ( select id from " - + Invoice.class.getSimpleName() + sql + ")"; + String toussesql = String.format(" where invoice_id in (%s) or invoice2_id in (%s)",idsStr,idsStr); return getDisinfectGoodsPrintData(list,loadInvoice2TousseInstance(toussesql),null); } /**