Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r14621 -r14639 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14621) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14639) @@ -9177,46 +9177,65 @@ */ public Map getGeneralMaterialMap(String year,String departCoding){ if (StringUtils.isNotBlank(year)){ - Map rsMap = new HashMap(); - for (int i = 1; i <= 12; i++) { - String mm = ""; - if (i > 9) { - mm = "" + i; - } else { - mm = "0" + i; - } - String startTime = year + "-" + mm + "-01 00:00:00"; - String endTime = getNextMonth(year,mm) + " 00:00:00"; + try{ + Map rsMap = new HashMap(); + String startTime = year+ "-01-01 00:00:00"; + String endTime = getNextYear(year) + " 00:00:00"; String sql = "select distinct po from " + ClassifyBasket.class.getSimpleName() - + " po inner join fetch po.classfiedItems ci inner join fetch ci.tousseDefinition citd inner join fetch citd.materialInstances left join po.washAndDisinfectRecords wr where wr is not null" - + " and po.containerName in (select containerName from Container where departCode = '" + departCoding + "' )" - + " and po.recyclingTime between " + dateQueryAdapter.dateAdapter(startTime) - + " and " + dateQueryAdapter.dateAdapter(endTime) ; - List baskets = (List)objectDao.findByHql(sql); - int totalAmount = 0; - int basketMaterialAmount = 0; - if(baskets != null || baskets.size()>0){ - for(ClassifyBasket cb : baskets){ - basketMaterialAmount += getMaterialsAmount(cb); - } - } - int washMaterialAmount = 0; - // 不入框清洗的材料 - String washRecordSql = "select distinct po from " + WashAndDisinfectRecord.class.getSimpleName() + + " po inner join fetch po.classfiedItems ci inner join fetch ci.tousseDefinition citd inner join fetch citd.materialInstances left join po.washAndDisinfectRecords wr where wr is not null" + + " and po.containerName in (select containerName from Container where departCode = '" + departCoding + "' )" + + " and po.recyclingTime between " + dateQueryAdapter.dateAdapter(startTime) + + " and " + dateQueryAdapter.dateAdapter(endTime) ; + List baskets = (List)objectDao.findByHql(sql); + String washRecordSql = "select distinct po from " + WashAndDisinfectRecord.class.getSimpleName() + " po inner join fetch po.washAndDisinfectMaterials where po.orgUnitCoding = '" + departCoding + "'" + " and po.endDate between " + dateQueryAdapter.dateAdapter(startTime) + " and " + dateQueryAdapter.dateAdapter(endTime) ; List washRecords = (List)objectDao.findByHql(washRecordSql); - if(washRecords != null || washRecords.size()>0){ - for(WashAndDisinfectRecord wr : washRecords){ - washMaterialAmount += getMaterialsAmount(wr); - } - } - totalAmount = basketMaterialAmount + washMaterialAmount; - // 插入一个月的统计数量 - rsMap.put(mm, totalAmount); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + for (int i = 1; i <= 12; i++) { + String mm = ""; + if (i > 9) { + mm = "" + i; + } else { + mm = "0" + i; + } + startTime = year + "-" + mm + "-01 00:00:00"; + endTime = getNextMonth(year,mm) + " 00:00:00"; + Date starDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + int totalAmount = 0; + int basketMaterialAmount = 0; + if(baskets != null && baskets.size()>0){ + for(ClassifyBasket cb : baskets){ + Date dt = cb.getRecyclingTime(); + if(dt != null){ + if(starDate.before(dt) && endDate.after(dt)){ + basketMaterialAmount += getMaterialsAmount(cb); + } + } + } + } + // 不入框清洗的材料 + int washMaterialAmount = 0; + if(washRecords != null && washRecords.size()>0){ + for(WashAndDisinfectRecord wr : washRecords){ + Date dt = wr.getEndDate(); + if(dt != null){ + if(starDate.before(dt) && endDate.after(dt)){ + washMaterialAmount += getMaterialsAmount(wr); + } + } + } + } + totalAmount = basketMaterialAmount + washMaterialAmount; + // 插入一个月的统计数量 + rsMap.put(mm, totalAmount); + } + return rsMap; + }catch(Exception e){ + e.printStackTrace(); } - return rsMap; } return null; } @@ -9274,13 +9293,14 @@ String startTime = year + "-" + mm + "-01 00:00:00"; String endTime = getNextMonth(year,mm) + " 00:00:00"; String sql = "select distinct po from " + ClassifyBasket.class.getSimpleName() - + " po left join po.washAndDisinfectRecords wr where wr is not null" + + " po inner join fetch po.classfiedItems ci inner join fetch ci.materialDefinition cimd inner join fetch ci.tousseDefinition citd inner join fetch citd.materialInstances " + + " left join po.washAndDisinfectRecords wr where wr is not null" + " and po.containerName in (select containerName from Container where departCode = '" + departCoding + "' )" + " and po.recyclingTime between " + dateQueryAdapter.dateAdapter(startTime) + " and " + dateQueryAdapter.dateAdapter(endTime) ; List baskets = (List)objectDao.findByHql(sql); int basketMaterialAmount = 0; - if(baskets != null || baskets.size()>0){ + if(baskets != null && baskets.size()>0){ for(ClassifyBasket cb : baskets){ basketMaterialAmount += getForeignMaterialsAmount(cb); } @@ -9332,32 +9352,45 @@ */ public Map getMorrowSendTousseInstanceMap(String year,String departCoding,Boolean isMorrowSend){ if (StringUtils.isNotBlank(year)){ - Map rsMap = new HashMap(); - for (int i = 1; i <= 12; i++) { - String mm = ""; - if (i > 9) { - mm = "" + i; - } else { - mm = "0" + i; - } - String startTime = year + "-" + mm + "-01 00:00:00"; - String endTime = getNextMonth(year,mm) + " 00:00:00"; - String sql = "select po from " + Invoice.class.getSimpleName() + " po where " + try{ + Map rsMap = new HashMap(); + String startTime = year+ "-01-01 00:00:00"; + String endTime = getNextYear(year) + " 00:00:00"; + String sql = "select distinct po from " + Invoice.class.getSimpleName() + " po inner join fetch po.invoiceItem where " + " ( po.invoicePlan.depart like '%" + "手术室" + "%' or po.invoicePlan.depart like '%" + "麻醉" +"%' )" + " and po.invoicePlan.handleDepartCoding = '" + departCoding + "'" + " and po.sendTime between " + dateQueryAdapter.dateAdapter(startTime) + " and " + dateQueryAdapter.dateAdapter(endTime) ; List invoices = (List)objectDao.findByHql(sql); - int tousseInstanceAmount = 0; - if(invoices != null || invoices.size()>0){ - for(Invoice invoice : invoices){ - tousseInstanceAmount += getMorrowSendTousseInstance(invoice,isMorrowSend); - } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if(invoices != null && invoices.size()>0){ + for (int i = 1; i <= 12; i++) { + String mm = ""; + if (i > 9) { + mm = "" + i; + } else { + mm = "0" + i; + } + startTime = year + "-" + mm + "-01 00:00:00"; + endTime = getNextMonth(year,mm) + " 00:00:00"; + Date starDate = sdf.parse(startTime); + Date endDate = sdf.parse(endTime); + int tousseInstanceAmount = 0; + for(Invoice iv : invoices){ + Date dt = iv.getSendTime(); + if( dt != null){ + if(starDate.before(dt) && endDate.after(dt)){ + tousseInstanceAmount += getMorrowSendTousseInstance(iv,isMorrowSend); + } + } + } + rsMap.put(mm, tousseInstanceAmount); + } + return rsMap; } - // 插入一个月的统计数量 - rsMap.put(mm, tousseInstanceAmount); + }catch(Exception ex){ + ex.printStackTrace(); } - return rsMap; } return null; } @@ -9372,16 +9405,21 @@ return 0; int amount = 0; try{ - String sql = "select sum(it.amount) from invoiceitem it where it.tousseType != '一次性物品' and it.invoice_id = " + invoice.getId(); - ResultSet rs = objectDao.executeSql(sql); - // 获取发货单器械包数量 - while (rs.next()) { - amount = rs.getInt(1); + for(InvoiceItem it : invoice.getInvoiceItem()){ + if( !"一次性物品".equals(it.getTousseType()) ){ + amount += it.getAmount(); + } } - DatabaseUtil.closeResultSetAndStatement(rs); +// String sql = "select sum(it.amount) from invoiceitem it where it.tousseType != '一次性物品' and it.invoice_id = " + invoice.getId(); +// ResultSet rs = objectDao.executeSql(sql); +// // 获取发货单器械包数量 +// while (rs.next()) { +// amount = rs.getInt(1); +// } +// DatabaseUtil.closeResultSetAndStatement(rs); if(isMorrowSend){ - sql = "select i.sendTime,rr.recyclingTime from RecyclingRecord rr,invoicePlan ip,invoice i " + String sql = "select i.sendTime,rr.recyclingTime from RecyclingRecord rr,invoicePlan ip,invoice i " + " where i.invoicePlan_ID = ip.id and rr.recyclingApplication_id = ip.id" + " and i.id = " + invoice.getId(); ResultSet rs1 = objectDao.executeSql(sql);