Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r14717 -r14744 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14717) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 14744) @@ -853,17 +853,27 @@ */ public EighteenQuotaBean getGeneralMaterialAmount(String year,String departCoding) { if (StringUtils.isNotBlank(year)) { -// String queryYear = year + "-01-01 00:00:00"; -// String nextYear = getNextYear(year) + " 00:00:00"; + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; // String washSql = "select "+dateQueryAdapter.dateConverAdapter3("w.endDate","mm")+" as monthstr,sum(w.generalMaterialAmount+w.operateMaterialAmount+w.foreignMaterialAmount) from WashAndDisinfectRecord w" // + " where w.endDate between "+dateQueryAdapter.dateAdapter(queryYear) // + "and "+dateQueryAdapter.dateAdapter(nextYear) // + " and w.orgUnitCoding = '"+departCoding+"'" // + " group by "+dateQueryAdapter.dateConverAdapter3("w.endDate","mm"); // ResultSet foreignMaterialRS = objectDao.executeSql(washSql); // 不包括辅料包、外来器械包 - Map map = getGeneralMaterialMap(year,departCoding); - return getEveryMonthAmount(map, "处理器械总件数"); + String invoiceSql = "select "+dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm")+" as monthstr,sum(ii.amount * td.amount) from InvoiceItem ii,Invoice iv," + + "(select td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td " + + " where mi.tousse_id=td.id and td.forDisplay=1 group by td.name) td" + + " where ii.invoice_id = iv.id and ii.tousseName=td.tdName " + + " and iv.sendTime between "+dateQueryAdapter.dateAdapter(queryYear) + + " and "+dateQueryAdapter.dateAdapter(nextYear) + + " and iv.orgUnitCoding = '"+departCoding+"'" + + " group by "+dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm"); + ResultSet materialRS = objectDao.executeSql(invoiceSql); + + //Map map = getGeneralMaterialMap(year,departCoding); + return getEveryMonthAmount(materialRS, "处理器械总件数"); } return null; } @@ -876,17 +886,28 @@ */ public EighteenQuotaBean getForeignMaterialAmount(String year,String departCoding) { if (StringUtils.isNotBlank(year)) { -// String queryYear = year + "-01-01 00:00:00"; -// String nextYear = getNextYear(year) + " 00:00:00"; + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; // String washSql = "select "+dateQueryAdapter.dateConverAdapter3("w.endDate","mm")+" as monthstr,sum(w.foreignMaterialAmount) from WashAndDisinfectRecord w" // + " where w.endDate between "+dateQueryAdapter.dateAdapter(queryYear) // // + "and "+dateQueryAdapter.dateAdapter(nextYear) // + " and w.orgUnitCoding = '"+departCoding+"'" // + " group by "+dateQueryAdapter.dateConverAdapter3("w.endDate","mm"); // ResultSet foreignMaterialRS = objectDao.executeSql(washSql); - Map map = getForeignMaterialMap(year,departCoding); - return getEveryMonthAmount(map, "外来手术器械总件数"); + + String invoiceSql = "select "+dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm")+" as monthstr,sum(ii.amount * td.amount) from InvoiceItem ii,Invoice iv," + + "(select td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td " + + " where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseType = '外来器械包' group by td.name) td" + + " where ii.invoice_id = iv.id and ii.tousseName=td.tdName " + + " and iv.sendTime between "+dateQueryAdapter.dateAdapter(queryYear) + + " and "+dateQueryAdapter.dateAdapter(nextYear) + + " and iv.orgUnitCoding = '"+departCoding+"'" + + " group by "+dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm"); + ResultSet materialRS = objectDao.executeSql(invoiceSql); + + //Map map = getForeignMaterialMap(year,departCoding); + return getEveryMonthAmount(materialRS, "外来手术器械总件数"); } return null; } @@ -898,18 +919,15 @@ */ public EighteenQuotaBean getMorrowSendIncidence(String year,String departCoding) { if (StringUtils.isNotBlank(year)) { -// String queryYear = year + "-01-01 00:00:00"; -// String nextYear = getNextYear(year) + " 00:00:00"; -// String applicationtimeSql = ""; -// String sendtimeSql = ""; -// String database = dbConnection.getDatabase(); -// if(DatabaseUtil.isOracle(database)){ -// applicationtimeSql = dateQueryAdapter.dateConverAdapter3("p.applicationtime","yyyy-mm-dd"); -// sendtimeSql = dateQueryAdapter.dateConverAdapter3("i.sendtime","yyyy-mm-dd"); -// }else{ -// applicationtimeSql = dateQueryAdapter.dateConverAdapter("p.applicationtime","yyyy-mm-dd"); -// sendtimeSql = dateQueryAdapter.dateConverAdapter("i.sendtime","yyyy-mm-dd"); -// } + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; + String timeCompareSql = ""; + String database = dbConnection.getDatabase(); + if(DatabaseUtil.isOracle(database)){ + timeCompareSql = " trunc(iv.sendTime) - trunc(iv.recyclingTime) > 0 "; + }else{ + timeCompareSql = " DATEDIFF(DAY,iv.recyclingTime,iv.sendTime) > 0 "; + } // String recyclingSql = "select "+dateQueryAdapter.dateConverAdapter3("p.applicationtime","mm")+" as monthstr,count(*) from invoiceplan p ,invoice i,tousseinstance t where p.id = i.invoiceplan_id and t.invoice_id = i.id " // + "and "+applicationtimeSql+" != "+sendtimeSql+" and p.depart = '手术室' " // + "and p.applicationtime between "+dateQueryAdapter.dateAdapter(queryYear) @@ -925,10 +943,28 @@ // + " and i.depart = '手术室' and i.orgUnitCoding = '"+departCoding+"'" // +" group by "+dateQueryAdapter.dateConverAdapter3("i.sendtime","mm"); // ResultSet invoiceResult = objectDao.executeSql(invoiceSql); - Map totalTousseInstanceMap = getMorrowSendTousseInstanceMap(year,departCoding,false); - Map morrowSendTousseInstanceMap = getMorrowSendTousseInstanceMap(year,departCoding,true); - return getFractionDefective(totalTousseInstanceMap, morrowSendTousseInstanceMap, - "手术器械包次日下送发生率"); + + String morrowSendSql = "select " + dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm") +" monthstr,count(ii.amount) from Invoice iv,InvoiceItem ii " + + " where iv.id=ii.invoice_id " + + " and (iv.depart like '%手术室%' or iv.depart like '%麻醉%')" + + " and " + timeCompareSql + + " and iv.sendTime between " + dateQueryAdapter.dateAdapter(queryYear) + + "and "+dateQueryAdapter.dateAdapter(nextYear) + + " group by " + dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm"); + ResultSet morrowSendResult = objectDao.executeSql(morrowSendSql); + + String totalSql = "select " + dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm") +" monthstr,count(ii.amount) from Invoice iv,InvoiceItem ii " + + " where iv.id=ii.invoice_id " + + " and (iv.depart like '%手术室%' or iv.depart like '%麻醉%')" + + " and iv.sendTime between " + dateQueryAdapter.dateAdapter(queryYear) + + "and "+dateQueryAdapter.dateAdapter(nextYear) + + " group by " + dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm"); + ResultSet totalResult = objectDao.executeSql(totalSql); + + //Map totalTousseInstanceMap = getMorrowSendTousseInstanceMap(year,departCoding,false); + //Map morrowSendTousseInstanceMap = getMorrowSendTousseInstanceMap(year,departCoding,true); + return getFractionDefective(totalResult, morrowSendResult, + "手术器械包次日下送发生率",false); } return null; }