📄 reportconfigaction.java
字号:
package cn.myapps.core.report.reportconfig.action;
import java.io.File;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import cn.myapps.base.action.BaseAction;
import cn.myapps.base.action.ParamsTable;
import cn.myapps.base.dao.DataPackage;
import cn.myapps.base.dao.ValueObject;
import cn.myapps.core.deploy.module.ejb.ModuleProcess;
import cn.myapps.core.deploy.module.ejb.ModuleVO;
import cn.myapps.core.dynaform.dts.datasource.ejb.DataSource;
import cn.myapps.core.dynaform.dts.datasource.ejb.DataSourceProcess;
import cn.myapps.core.dynaform.dts.exp.Export;
import cn.myapps.core.dynaform.dts.exp.mappingconfig.ejb.MappingConfig;
import cn.myapps.core.dynaform.dts.exp.mappingconfig.ejb.MappingConfigProcess;
import cn.myapps.core.dynaform.form.ejb.Form;
import cn.myapps.core.dynaform.form.ejb.FormProcess;
import cn.myapps.core.report.dataprepare.ExecuteDataPrepare;
import cn.myapps.core.report.dataprepare.ejb.DataPrepare;
import cn.myapps.core.report.dataprepare.ejb.DataPrepareProcess;
import cn.myapps.core.report.query.action.QueryHelper;
import cn.myapps.core.report.query.ejb.Parameter;
import cn.myapps.core.report.query.ejb.Query;
import cn.myapps.core.report.query.ejb.QueryProcess;
import cn.myapps.core.report.reportconfig.ejb.ReportConfig;
import cn.myapps.core.report.reportconfig.ejb.ReportConfigProcess;
import cn.myapps.core.report.tablecolumn.ejb.TableColumn;
import cn.myapps.core.report.tablecolumn.ejb.TableColumnProcess;
import cn.myapps.util.ProcessFactory;
import cn.myapps.util.file.FileOperate;
import cn.myapps.util.property.DefaultProperty;
import cn.myapps.util.sequence.Sequence;
import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionContext;
public class ReportConfigAction extends BaseAction {
private String _query;
private String _moduleid;
private String _reportType; // 标记是ListTable,还是 CrossTable
public static final String DATA_TYPE_STRING = "java.lang.String";
public static final String DATA_TYPE_DOUBLE = "java.lang.Double";
public static final String DATA_TYPE_DATE = "java.util.Date";
private String _module; // 标记searchForm所属模块
private String _searchForm;
private String _path;
private String _dts;
private String _creatReportType; // 标记是上传jrxml文件,或CustomMode
private String _dataPrepare;
public String get_dataPrepare() {
ReportConfig vo = (ReportConfig) this.getContent();
return vo!=null&&vo.getDataPrepare()!=null?vo.getDataPrepare().getId():null;
}
public void set_dataPrepare(String prepare) {
_dataPrepare = prepare;
}
public String get_moduleid() {
ReportConfig rc = (ReportConfig) this.getContent();
if (rc.getModule() != null) {
return rc.getModule().getId();
} else {
return this._moduleid;
}
}
public void set_moduleid(String _moduleid) {
this._moduleid = _moduleid;
}
public ReportConfigAction() throws Exception {
super(ProcessFactory.createProcess(ReportConfigProcess.class),
new ReportConfig());
}
public String doNew() throws Exception {
if (_creatReportType.equals(ReportConfig.Creat_Report_Type_CustomMade)) {
if (_reportType.equals(ReportConfig.Report_Type_ListTable))
return "ListTable";
else
return "CrossTable";
} else
return "UploadJrxml";
}
public String doEdit() throws Exception {
Map params = getContext().getParameters();
Object obj = params.get("id");
String id = ((String[]) obj)[0];
ValueObject contentVO = proxy.doView(id);
setContent(contentVO);
if (_creatReportType.equals(ReportConfig.Creat_Report_Type_CustomMade)) {
if (_reportType.equals(ReportConfig.Report_Type_ListTable))
return "ListTable";
else
return "CrossTable";
} else
return "UploadJrxml";
}
public String doView() throws Exception {
Map params = getContext().getParameters();
String[] ids = (String[]) (params.get("id"));
String id = null;
if (ids != null && ids.length > 0) {
id = ids[0];
}
ValueObject contentVO = proxy.doView(id);
setContent(contentVO);
if (_creatReportType.equals(ReportConfig.Creat_Report_Type_CustomMade)) {
if (_reportType.equals(ReportConfig.Report_Type_ListTable))
return "ListTable";
else
return "CrossTable";
} else
return "UploadJrxml";
}
public String doSave() throws Exception {
ModuleProcess mp = (ModuleProcess) ProcessFactory
.createProcess(ModuleProcess.class);
ModuleVO mv = (ModuleVO) mp.doView(_moduleid);
ReportConfig vo = (ReportConfig) getContent();
vo.setReportType(_reportType);
DataPrepareProcess dpr = (DataPrepareProcess) (ProcessFactory
.createProcess(DataPrepareProcess.class));
DataPrepare dataprepare=(DataPrepare)dpr.doView(_dataPrepare);
vo.setDataPrepare(dataprepare);
vo.setApplicationid(getApplication());
if (this._creatReportType != null
&& this._creatReportType
.equals(ReportConfig.Creat_Report_Type_CustomMade)) {
QueryProcess rp = (QueryProcess) (ProcessFactory
.createProcess(QueryProcess.class));
Query query = (Query) rp.doView(_query);
vo.setCreatReportType(ReportConfig.Creat_Report_Type_CustomMade);
vo.setQuery(query);
vo.setModule(mv);
vo.setReportType(get_reportType());
super.doSave();
if (_reportType.equals(ReportConfig.Report_Type_ListTable))
return "ListTable";
else
return "CrossTable";
} else if (this._creatReportType != null
&& this._creatReportType
.equals(ReportConfig.Creat_Report_Type_UploadJrxml)) {
vo.setCreatReportType(ReportConfig.Creat_Report_Type_UploadJrxml);
FormProcess fp = (FormProcess) (ProcessFactory
.createProcess(FormProcess.class));
Form form = (Form) fp.doView(_searchForm);
DataSourceProcess dp = (DataSourceProcess) (ProcessFactory
.createProcess(DataSourceProcess.class));
DataSource dts = (DataSource) dp.doView(_dts);
ModuleVO from_mv = (ModuleVO) mp.doView(_module);
vo.setForm_module(from_mv);
vo.setSearchForm(form);
vo.setModule(mv);
vo.setDataSource(dts);
String fullName = null;
if (this._path != null && _path.length() > 0) {
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) ctx
.get(ServletActionContext.HTTP_REQUEST);
fullName = request.getRealPath(DefaultProperty
.getProperty("JRXML_PATH"))
+ "\\"
+ _path.substring(_path.lastIndexOf("/") + 1, _path
.length());
String jrxml = FileOperate.getFileContentAsStringUTF(fullName);
vo.setJrxml(jrxml);
}
super.doSave();
return "UploadJrxml";
}
return "";
}
public String refData() throws Exception { // 刷新和该报表关联的数据
String id = getParams().getParameterAsString("id");
ReportConfig vo = (ReportConfig) this.proxy.doView(id);
Collection coll = vo.getMappingconfigs();
for (Iterator iter = coll.iterator(); iter.hasNext();) {
MappingConfig em = (MappingConfig) iter.next();
Export.exprotDocument(em, true, getApplication());
}
setContent(vo);
reportCondition();
return vo.getSearchForm() != null ? SUCCESS : INPUT;
}
public String reportCondition() throws Exception { // 判断是否有SearchForm
String id = getContent().getId();
if (id == null || id.trim().length() < 1)
id = getParams().getParameterAsString("id");
ReportConfig vo = (ReportConfig) this.proxy.doView(id);
if (vo != null) {
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) ctx
.get(ServletActionContext.HTTP_REQUEST);
if (vo.getCreatReportType().equals(
ReportConfig.Creat_Report_Type_CustomMade)
&& vo.getQuery() != null
&& vo.getQuery().getSearchForm() != null) {
request.setAttribute("searchForm", vo.getQuery()
.getSearchForm());
return SUCCESS;
} else if (vo.getCreatReportType().equals(
ReportConfig.Creat_Report_Type_UploadJrxml)
&& vo.getSearchForm() != null) {
request.setAttribute("searchForm", vo.getSearchForm());
return SUCCESS;
}
}
return INPUT;
}
public String exportReport() throws SQLException {
Connection conn = null;
try {
ReportConfigHepler helper = new ReportConfigHepler();
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) ctx
.get(ServletActionContext.HTTP_REQUEST);
String path = request.getRealPath("");
String reportpath = path.replaceAll("\\\\", "/")
+ DefaultProperty.getProperty("REPORT_PATH");
String jrxmlFile = reportpath + Sequence.getSequence()
+ "report.jrxml";
String jasperFile = reportpath + Sequence.getSequence()
+ "report.jasper";
// 存放路径
if (!(new File(reportpath).isDirectory())) {
new File(reportpath).mkdirs();
}
String fileExcelPath = reportpath + Sequence.getSequence()
+ "reportExcel.xls";
String filePdflPath = reportpath + Sequence.getSequence()
+ "reportPdf.pdf";
Map parameters = null;
String id = getContent().getId();
if (id == null || id.trim().length() < 1)
id = getParams().getParameterAsString("id");
ReportConfig vo = (ReportConfig) this.proxy.doView(id);
if (vo.getCreatReportType() != null
&& vo.getCreatReportType().equals(
ReportConfig.Creat_Report_Type_CustomMade)) { // 用户自定义报表
conn = helper.getConnection(vo.getQuery().getDataSource());
parameters = getCreatReportParams(getParams(), vo);
creatJasperTemplate(jrxmlFile, vo, parameters, application);
JasperCompileManager.compileReportToFile(jrxmlFile, jasperFile);
} else if (vo.getCreatReportType() != null
&& vo.getCreatReportType().equals(
ReportConfig.Creat_Report_Type_UploadJrxml)) {// 用户上传Jrxml产生报表
conn = helper.getConnection(vo.getDataSource());
FileOperate.writeFileUTF(jrxmlFile, vo.getJrxml(), true);
JasperCompileManager.compileReportToFile(jrxmlFile, jasperFile);
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(new File(jasperFile));
parameters = getCreatReportParams(ctx.getParameters(),
getParams(), jasperReport.getParameters());
}
if (conn != null) {
DataPrepare dataprepare=vo.getDataPrepare();
if(dataprepare!=null){
ExecuteDataPrepare.clearTempData(dataprepare); //先删除临时表数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -