Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r41156 -r41192 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 41156) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 41192) @@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import com.forgon.disinfectsystem.jasperreports.service.*; import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRParameter; import net.sf.jasperreports.engine.JRPrintElement; @@ -96,13 +97,6 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseSterilizationInspectSituationBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.UrgentNeedGoodsProcessingCycle; import com.forgon.disinfectsystem.jasperreports.javabeansource.WorkQualityCollection; -import com.forgon.disinfectsystem.jasperreports.service.CustomReports; -import com.forgon.disinfectsystem.jasperreports.service.CustomReportsOfDgsfy; -import com.forgon.disinfectsystem.jasperreports.service.CustomReportsOfXjjqzyy; -import com.forgon.disinfectsystem.jasperreports.service.CustomReportsOfZsyy; -import com.forgon.disinfectsystem.jasperreports.service.InvoiceReportManager; -import com.forgon.disinfectsystem.jasperreports.service.JasperReportManager; -import com.forgon.disinfectsystem.jasperreports.service.WorkQualityCollectionReport; import com.forgon.disinfectsystem.jasperreports.util.BorrowingReportReportHelper; import com.forgon.disinfectsystem.jasperreports.util.ChineseMedicineInstrTypeQuaRateReportHelper; import com.forgon.disinfectsystem.jasperreports.util.CssdNursingQualityControlSummaryReportHelper; @@ -153,6 +147,7 @@ private ObjectDao objectDao; private JasperReportManager jasperReportManager; + private JasperReportsHandlerMapping jasperReportsHandlerMapping; private DateQueryAdapter dateQueryAdapter; @@ -331,6 +326,10 @@ this.jasperReportManager = jasperReportManager; } + public void setJasperReportsHandlerMapping(JasperReportsHandlerMapping jasperReportsHandlerMapping) { + this.jasperReportsHandlerMapping = jasperReportsHandlerMapping; + } + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { this.dateQueryAdapter = dateQueryAdapter; } @@ -639,6 +638,10 @@ */ public List getDataSourceList(String jasperreportName , String reportName,Map requestParameters, Map parametMap) throws SQLException, ParseException { + JasperReportsHandler handler = jasperReportsHandlerMapping.getHandler(reportName); + if(handler != null) { + return handler.handle(jasperreportName, reportName, requestParameters, parametMap); + } if (reportName.equals("stocktakereport")) {// 物资收发明细 Long warehouseId = StrutsParamUtils.getPraramLongValue("warehouseId", null); String startDate = StrutsParamUtils.getPraramValue("startDate", ""); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandlerMapping.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandlerMapping.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandlerMapping.java (revision 41192) @@ -0,0 +1,13 @@ +package com.forgon.disinfectsystem.jasperreports.service; + +import javax.annotation.Nullable; + +public interface JasperReportsHandlerMapping { + /** + * 根据报表名称查询对应的报表处理器 + * @param reportName 报表名称 + * @return 报表处理器 + */ + @Nullable + JasperReportsHandler getHandler(String reportName); +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/impl/JasperReportsHandlerMappingImpl.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/impl/JasperReportsHandlerMappingImpl.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/impl/JasperReportsHandlerMappingImpl.java (revision 41192) @@ -0,0 +1,28 @@ +package com.forgon.disinfectsystem.jasperreports.service.impl; + +import com.forgon.disinfectsystem.jasperreports.service.JasperReportsHandler; +import com.forgon.disinfectsystem.jasperreports.service.JasperReportsHandlerMapping; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +@Service("jasperReportsHandlerMapping") +public class JasperReportsHandlerMappingImpl implements JasperReportsHandlerMapping { + @Autowired + private List handlers; + + @Override + public JasperReportsHandler getHandler(String reportName) { + if(CollectionUtils.isEmpty(handlers)) { + return null; + } + for (JasperReportsHandler handler : handlers) { + if (handler.support(reportName)) { + return handler; + } + } + return null; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandler.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandler.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportsHandler.java (revision 41192) @@ -0,0 +1,22 @@ +package com.forgon.disinfectsystem.jasperreports.service; + +import java.util.List; +import java.util.Map; + +public interface JasperReportsHandler { + /** + * 判断是否支持处理此报表 + * @param reportName 报表名称 + * @return 支持处理此报表返回true,否则返回false + */ + boolean support(String reportName); + /** + * 处理报表并返回处理结果 + * @param jasperReportName 报表模板文件。是iReport根据jrxml编译后生成的 + * @param reportName 报表名称 + * @param requestParameters 请求参数 + * @param parameterMap 报表需要返回的参数 + * @return 处理结果 + */ + List handle(String jasperReportName , String reportName, Map requestParameters, Map parameterMap); +}