Index: forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java =================================================================== diff -u -r12331 -r12349 --- forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 12349) @@ -181,4 +181,66 @@ } return ""; } + /** + * 抽取数据库中的日期某部分转为字符串 + * @param dateFiled + * @param datePart 标准的java日期格式字符串 + * @return + */ + public String datePart(String dateFiled,String datePart) { + if (StringUtils.isBlank(dateFiled) || StringUtils.isBlank(datePart)) { + throw new RuntimeException("参数非法!"); + } + String database = dbConnection.getDatabase(); + String sql = null; + if (DatabaseUtil.isSqlServer(database)) { + sql = String.format("DATENAME(%s,%s)", transJavaDateFormatStrToSqlServer(datePart),dateFiled); + return sql; + } else if (DatabaseUtil.isOracle(database)) { + sql = String.format("to_char(%s,'%s')",dateFiled,transJavaDateFormatStrToOracle(datePart)); + return sql; + } else if (DatabaseUtil.isMySQL(database)) { + throw new RuntimeException("暂不支持mysql!"); + } + return ""; + } + public String transJavaDateFormatStrToOracle(String s){ + switch(s){ + case "yy": + return "YY"; + case "yyyy": + return "YYYY"; + case "M": + case "MM": + return "MM"; + case "dd": + return "DD"; + case "HH": + return "HH24"; + case "mm": + return "MI"; + case "ss": + return "SS"; + } + throw new RuntimeException("参数非法!"); + } + public String transJavaDateFormatStrToSqlServer(String s){ + switch(s){ + case "yy": + case "yyyy": + return "yyyy"; + case "M": + case "MM": + return "mm"; + case "dd": + return "dd"; + case "HH": + return "hh"; + case "mm": + return "mi"; + case "ss": + return "ss"; + } + throw new RuntimeException("参数非法!"); + } } \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r12332 -r12349 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12332) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12349) @@ -264,15 +264,15 @@ + " and "+dateQueryAdapter.dateAdapter(nextYear) + " group by "+dateQueryAdapter.dateConverAdapter3("w.enddate", "mm")+" order by "+dateQueryAdapter.dateConverAdapter3("w.enddate", "mm"); - String qualityMonitoringSql = "select t.datetime,sum(t.amount) from (select "+dateQueryAdapter.dateConverAdapter("q.dateTime","mm")+"as datetime," + String qualityMonitoringSql = "select t.datetime,sum(t.amount) from (select "+dateQueryAdapter.datePart("q.dateTime","MM")+"as datetime," + "sum(q.amount)as amount from QualityMonitoring q where q.inspectitem like '%器械清洗不合格%' " + "and q.orgUnitCoding = '"+departCoding+"' and q.datetime between " + dateQueryAdapter.dateAdapter(queryYear) + " and " + dateQueryAdapter.dateAdapter(nextYear) + " and q.type = '质量监测' " + "group by " - + dateQueryAdapter.dateConverAdapter("q.dateTime", "mm") + + dateQueryAdapter.datePart("q.dateTime", "MM") + ",q.id)t group by t.datetime"; ResultSet washRecordResult = objectDao.executeSql(washRecordSql);