Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java =================================================================== diff -u -r30612 -r30613 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java (.../Invoice.java) (revision 30612) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/Invoice.java (.../Invoice.java) (revision 30613) @@ -617,24 +617,29 @@ */ @Transient public void updatePrintStatus(ObjectDao dao){ + + int totalAmount = getInvoiceItem().size(); + int printedCount = 0; for(InvoiceItem item : getInvoiceItem()){ if(item.printed()){ ++printedCount; } } - // 退货数量 - int returnAmount = 0; - String sql = String.format("select count(*) from %s po where (po.invoice_id=%s or invoice2_id=%s) and po.status in('%s','%s')", - TousseInstance.class.getSimpleName(), this.id, this.id, TousseInstance.STATUS_STERILED, TousseInstance.STATUS_DISCARD); - returnAmount = dao.countBySql(sql); + if(printedCount < totalAmount){ + // 退货数量 + int returnAmount = 0; + String sql = String.format("select count(*) from %s po where (po.invoice_id=%s or invoice2_id=%s) and po.status in('%s','%s')", + TousseInstance.class.getSimpleName(), this.id, this.id, TousseInstance.STATUS_STERILED, TousseInstance.STATUS_DISCARD); + returnAmount = dao.countBySql(sql); + + printedCount += returnAmount; + } - printedCount += returnAmount; - if(printedCount == 0){ setIsPrint(PRINT_NO); - }else if(printedCount == getInvoiceItem().size()){ + }else if(printedCount == totalAmount){ setIsPrint(PRINT_YES); setPrintTime(new Date()); }else{