Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r21399 -r21409 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 21399) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 21409) @@ -708,18 +708,26 @@ ApplicationItemVO vo = new ApplicationItemVO(); vo.setInvoiceAmount(item.getSendOutAmount()); - List tousseInstances = objectDao.findBySql( - TousseInstance.class.getSimpleName(), String.format("where invoicePlanID=%s ", re.getId())); - //设置“供应商名称”、“医生名称”、“拆分数量”、“已装配数量”、“已灭菌数量”、“已发货数量” if (item.isForeignTousse() && re instanceof ForeignTousseApplication && DatabaseUtil.isPoIdValid(item.getTousseDefinitionId())) { ForeignTousseApplication fta = (ForeignTousseApplication) re; vo.setSupplierName(fta.getSupplierName()); vo.setDoctor(fta.getDoctor()); int splitAmount = objectDao.countBySql( - String.format("select count(0) from ClassifiedItem where tousseDefinitionID=%s", item.getTousseDefinitionId())); + String.format("select count(distinct classifybasket_id) from ClassifiedItem where tousseDefinitionID=%s", item.getTousseDefinitionId())); vo.setSplitAmount(splitAmount); } + + List tousseInstances = objectDao.findBySql( + TousseInstance.class.getSimpleName(), String.format("where invoicePlanID=%s and tousseDefinition.id=%s ", + re.getId(), item.getTousseDefinitionId())); + + //tousseInstances为空有可能是外来器械拆包装配了,尝试再次查找 + if (CollectionUtils.isEmpty(tousseInstances)) { + tousseInstances = objectDao.findBySql( + TousseInstance.class.getSimpleName(), String.format("where po.invoicePlanID=%s and tousseDefinition.parentID=%s ", + re.getId(), item.getTousseDefinitionId())); + } if (CollectionUtils.isNotEmpty(tousseInstances)) { vo.setPackedAmount(tousseInstances.size()); //已装配数量 Integer sterilizationAmount = 0; //已灭菌数量