⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reportconfigaction.java

📁 OBPM是一个开源
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
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 + -