Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r33838 -r33861 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 33838) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 33861) @@ -4754,54 +4754,49 @@ firstBarcodeSql = "(select barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdancestor.id and rownum <= 1) "; } - String sql = "select * from (" - + "(select ip.id invoicePlanID, ip.recyclingStatus, ti.tousseName, tis.status, bd.barcode tousseBarcode, 1 amount " + String sql = "select invoicePlanID, tousseName, status, tousseBarcode, count(*) amount from (" + + "(select ip.id invoicePlanID, ti.tousseName, tis.status, (case when tdancestor.isTraceable = '是' then bd.barcode else " + firstBarcodeSql + " end ) tousseBarcode " + "from InvoicePlan ip " + "join TousseItem ti on ip.id = ti.recyclingApplication_ID " - + "join TousseInstance tis on ip.id = (case when ip.type = '代理灭菌单' then tis.proxyDisinfection_id else tis.invoicePlanID end) " + + "join TousseInstance tis on ip.id = tis.invoicePlanID " + "join TousseDefinition td on td.id = tis.tousseDefinition_id " + "join TousseDefinition tdancestor on tdancestor.id = td.ancestorID " + "join barcodeDevice bd on bd.id = tis.id " + "where 1=1 " - + "and tdancestor.isTraceable = '是' " + "and ti.tousseName = '" + tousseName + "' " + "and (tdancestor.id = ti.tousseDefinitionId or td.id = ti.tousseDefinitionId )" + "and tis.tousseFixedBarcode = 0 " + invoicePlanCommonCondition + ")" + "union all " - + "(select ip.id invoicePlanID, ip.recyclingStatus, ti.tousseName, tis.status, " - + firstBarcodeSql + " tousseBarcode, " - + "count(ti.id) amount " + + "(select ip.id invoicePlanID, ti.tousseName, tis.status, " + + "(case when tdancestor.isTraceable = '是' then bd.barcode else " + firstBarcodeSql + " end) tousseBarcode " + "from InvoicePlan ip " + "join TousseItem ti on ip.id = ti.recyclingApplication_ID " - + "join TousseInstance tis on ip.id = (case when ip.type = '代理灭菌单' then tis.proxyDisinfection_id else tis.invoicePlanID end) " + + "join TousseInstance tis on ip.id = tis.proxyDisinfection_id " + "join TousseDefinition td on td.id = tis.tousseDefinition_id " + "join TousseDefinition tdancestor on tdancestor.id = td.ancestorID " + "join barcodeDevice bd on bd.id = tis.id " + "where 1=1 " - + "and tdancestor.isTraceable = '否' " + "and ti.tousseName = '" + tousseName + "' " + "and (tdancestor.id = ti.tousseDefinitionId or td.id = ti.tousseDefinitionId )" + "and tis.tousseFixedBarcode = 0 " + invoicePlanCommonCondition - + " group by ti.tousseName,tis.status, tdancestor.id, ip.id, ip.recyclingStatus)) r order by tousseBarcode "; + + ")) r " + + "group by invoicePlanID, tousseName, status, tousseBarcode " + + "order by tousseBarcode "; ResultSet rs = null; try { rs = objectDao.executeSql(sql); while(rs.next()){ - ApplicationGoodsVo vo = new ApplicationGoodsVo(); Long invoicePlanID = rs.getLong("invoicePlanID"); String tousseName1 = rs.getString("tousseName"); String status = rs.getString("status"); - String recyclingStatus = rs.getString("recyclingStatus"); String tousseBarcode = rs.getString("tousseBarcode"); int amount = rs.getInt("amount"); + ApplicationGoodsVo vo = new ApplicationGoodsVo(); vo.setBarcode(tousseBarcode); vo.setName(tousseName1); vo.setStatus(status); - if(StringUtils.isBlank(status)){ - vo.setStatus(recyclingStatus); - } vo.setCount(amount); vo.addInvoicePlanID(invoicePlanID); tousseInstanceVoList.add(vo);