Index: ssts-web/src/main/webapp/disinfectsystem/config/zd5y/config.js =================================================================== diff -u -r16263 -r16270 --- ssts-web/src/main/webapp/disinfectsystem/config/zd5y/config.js (.../config.js) (revision 16263) +++ ssts-web/src/main/webapp/disinfectsystem/config/zd5y/config.js (.../config.js) (revision 16270) @@ -64,5 +64,9 @@ // 灭菌完成后是否确认 sterilizationRecordFinishConfirm : true, // 责任环节进去录之间监测是否限制监测项的范围 - responsibilityPartNotLimitInspect : true + responsibilityPartNotLimitInspect : true, + //核算月报只有一列的时候,是否使用另外的一个模板。新模板的名称monthReportOneColumn.jasper + applyMonthReportOneColumnTemplate:true, + //核算月报的名称,如果没配置,就是核算月报 + monthReportName:'消毒供应室消毒费核算月报' } \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r16176 -r16270 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 16176) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 16270) @@ -22,6 +22,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import javax.servlet.http.HttpServletResponse; @@ -46,6 +47,7 @@ import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; @@ -71,6 +73,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialDamageBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialDamageItemBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialDamageTotal_child; +import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.SatisfyInfo; import com.forgon.disinfectsystem.jasperreports.javabeansource.SatisfyItem; @@ -91,6 +94,7 @@ import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; /** * @author wangyi 2012-08-15 下午12:04 @@ -205,27 +209,14 @@ public String createReportFromJavaBeanSource() { Map parameters = StrutsParamUtils.getParameters(); String fileName = "未命名"; - String jasperreportName = parameters.get("jasperreportName"); - String rootPath = StrutsParamUtils.getRequest().getSession() - .getServletContext().getRealPath(""); - String realPath = rootPath + "\\jasperRtp\\" + jasperreportName;// 报表文件workload.jasper路径 - if (StringUtils.equals("workQualityCollection.jasper", jasperreportName)) { - if (StringUtils.equals(parameters.get("type"),"split")) { - realPath = rootPath - + "\\jasperRtp\\workQualityCollection2.jasper"; - } else if (StringUtils.equals(parameters.get("type"),"compareToLastYear")) { - realPath = rootPath - + "\\jasperRtp\\workQualityCollection3.jasper"; - } - } try { String reportName = parameters.get("reportName");// 模块名称,根据不同的报表配置不同的参数 List dataSourceList = getDataSourceList(reportName,parameters); JRDataSource dataSource = new JRBeanCollectionDataSource( dataSourceList); Map parametMap = getParametMap(reportName); JasperReport jasperReport = (JasperReport) JRLoader - .loadObjectFromFile(realPath); + .loadObjectFromFile(getJasperReportFileRealPath(parameters)); JasperPrint jPrint = JasperFillManager.fillReport(jasperReport, parametMap, dataSource); StrutsParamUtils.getRequest().getSession() @@ -239,6 +230,23 @@ return "success"; } + private String getJasperReportFileRealPath(Map parameters) { + String jasperreportName = parameters.get("jasperreportName"); + String rootPath = StrutsParamUtils.getRequest().getSession() + .getServletContext().getRealPath(""); + String realPath = rootPath + "\\jasperRtp\\" + jasperreportName;// 报表文件workload.jasper路径 + if (StringUtils.equals("workQualityCollection.jasper", jasperreportName)) { + if (StringUtils.equals(parameters.get("type"),"split")) { + realPath = rootPath + + "\\jasperRtp\\workQualityCollection2.jasper"; + } else if (StringUtils.equals(parameters.get("type"),"compareToLastYear")) { + realPath = rootPath + + "\\jasperRtp\\workQualityCollection3.jasper"; + } + } + return realPath; + } + /** * 获取需要的bean数据源 * @@ -423,7 +431,30 @@ String disposableGoodsType = StrutsParamUtils.getPraramValue("disposableGoodsType", ""); String showCustonTousseAmountStr = StrutsParamUtils.getPraramValue("showCustonTousseAmount", ""); Boolean showCustonTousseAmount = Boolean.valueOf(showCustonTousseAmountStr); - return jasperReportManager.getMonthReportData(startDate, endDate, department,tousseType,disposableGoodsType,showCustonTousseAmount); + List dataSource = jasperReportManager.getMonthReportData(startDate, endDate, department,tousseType,disposableGoodsType,showCustonTousseAmount); + boolean applyMonthReportOneColumnTemplate = CssdUtils.getSystemSetConfigByNameBool("applyMonthReportOneColumnTemplate"); + if(applyMonthReportOneColumnTemplate){ + Map> columnTitleColumnNameMap = new HashMap<>(); + for(MonthReportBean bean : dataSource){ + String title = bean.getColumnTitle(); + Set columnNames = columnTitleColumnNameMap.get(title); + if(columnNames == null){ + columnNames = new HashSet(); + columnTitleColumnNameMap.put(title, columnNames); + } + columnNames.add(bean.getColumnName()); + } + boolean onlyOneColumn = true; + for(Entry> entry : columnTitleColumnNameMap.entrySet()){ + if(entry.getValue().size() > 1){ + onlyOneColumn = false; + } + } + if(onlyOneColumn){ + requestParameters.put("jasperreportName", "monthReportOneColumn.jasper"); + } + } + return dataSource; } else if (reportName.equals("departmentMonthDetail")) {// 明细核算月报 String startTime = StrutsParamUtils.getPraramValue("startTime", @@ -1037,7 +1068,8 @@ }else if (reportName.equals("monthReport")){ String startTime = StrutsParamUtils.getPraramValue("startTime", ""); String endTime = StrutsParamUtils.getPraramValue("endTime", ""); - map.put("title", "核算月报(" + startTime + " & " + endTime + ")"); + String title = StringTools.defaultIfBlank(CssdUtils.getSystemSetConfigByName("monthReportName"),"核算月报"); + map.put("title", title + "(" + startTime + " & " + endTime + ")"); }else if(reportName.equals("SterilizationRecord")){ // 灭菌记录信息 String startTime = StrutsParamUtils.getPraramValue("startDate", ""); String endTime = StrutsParamUtils.getPraramValue("endDate", "");