当前位置: 代码迷 >> SQL >> 润乾表格动态改变SQL语句
  详细解决方案

润乾表格动态改变SQL语句

热度:99   发布时间:2016-05-05 12:50:21.0
润乾报表动态改变SQL语句

最近做了一个润乾报表动态拼接SQL语句的功能,之前做的都是固定SQL传参数的形式。但是项目上有一个特殊需求,一个开发人员没做过,我就帮着就研究了一下,可能写的还不是很完美,但是以实现功能为主,留下来备用。

//开始需要导入润乾用到的包<[email protected] import="com.sun.org.apache.bcel.internal.generic.NEW"%><[email protected] import="com.runqian.report4.cache.CacheManager"%><%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report"%><%@ page import="com.runqian.report4.model.*"%> <%@ page import="com.runqian.report4.usermodel.*"%> <%@ page import="com.runqian.report4.util.*"%> <%    //从请求中取出参数并进行拼接    request.setCharacterEncoding( "GBK" );    String startTime = (String)request.getAttribute("startTime");    String endTime = (String)request.getAttribute("endTime");    String agentId = (String)request.getAttribute("agentId");    String accuseName = (String)request.getAttribute("accuseName");    String accuseType = (String)request.getAttribute("accuseType");    String accuseLevel = (String)request.getAttribute("accuseLevel");    String accuseReasonContent = (String)request.getAttribute("accuseReasonContent");    String accuseReasonContent1 = (String)request.getAttribute("accuseReasonContent1");    String insureChannel = (String)request.getAttribute("insureChannel");    String dealType = (String)request.getAttribute("dealType");    String customerDepId = (String)request.getAttribute("customerDepId");     String accuseMan = (String)request.getAttribute("accuseMan");    String riskName = (String)request.getAttribute("riskName");    String accuseTitle = (String)request.getAttribute("accuseTitle");    String departNo = (String)request.getAttribute("departNo");     String depart = (String)request.getAttribute("depart");     String report = (String)request.getAttribute("reportid");    String ifToLeadership = (String)request.getAttribute("ifToLeadership");        StringBuffer param=new StringBuffer(100);                if(agentId!=null&& !"".equals(agentId)){				param.append("agentId=").append(agentId).append(";");   	}   	if(startTime!=null && !"".equals(startTime)){		param.append("startTime=").append(startTime).append(";");   	}   	   	if(endTime!=null && !"".equals(endTime)){		param.append("endTime=").append(endTime).append(";");   	}   	   	if(accuseName!=null && !"".equals(accuseName)){		param.append("accuseName=").append(accuseName).append(";");   	}   	   	if(accuseType!=null && !"".equals(accuseType)){		param.append("accuseType=").append(accuseType).append(";");   	}   	   	if(accuseLevel!=null && !"".equals(accuseLevel)){		param.append("accuseLevel=").append(accuseLevel).append(";");   	}   	   	if(accuseReasonContent1!=null && !"".equals(accuseReasonContent1)){		param.append("accuseReasonContent=").append(accuseReasonContent1).append(";");   	}   	   	if(insureChannel!=null && !"".equals(insureChannel)){		param.append("insureChannel=").append(insureChannel).append(";");   	}   	   	if(dealType!=null && !"".equals(dealType)){		param.append("dealType=").append(dealType).append(";");   	}   	   	if(customerDepId!=null && !"".equals(customerDepId)){		param.append("customerDepId=").append(customerDepId).append(";");   	}   	   	if(accuseMan!=null && !"".equals(accuseMan)){		param.append("accuseMan=").append(accuseMan).append(";");   	}   	   	if(riskName!=null && !"".equals(riskName)){		param.append("riskName=").append(riskName).append(";");   	}   	   	if(accuseTitle!=null && !"".equals(accuseTitle)){		param.append("accuseTitle=").append(accuseTitle).append(";");   	}   	   	if(departNo!=null && !"".equals(departNo)){		param.append("departNo=").append(departNo).append(";");   	}   	     	if(depart!=null && !"".equals(depart)){		param.append("depart=").append(depart).append(";");   	}   	     	if(ifToLeadership!=null && !"".equals(ifToLeadership)){		param.append("ifToLeadership=").append(ifToLeadership).append(";");   	}   	     	   	     String path = request.getContextPath();    //加载报表的定义对象	 	    ReportDefine rd = (ReportDefine)ReportUtils.read(application.getRealPath("apps/reportFiles/yd_accuser_query.raq")); 	   	   	      /*修改报表SQL语句开始*/     DataSetMetaData dsmd = rd.getDataSetMetaData(); //获得报表定义中的数据集元对象    SQLDataSetConfig sdsc = (SQLDataSetConfig)       dsmd.getDataSetConfig(0); //取到需要修改的数据集对象   String sql =sdsc.getSQL(); //取得数据集对象中的SQL      //修改sql      if(accuseReasonContent!=null && !"".equals(accuseReasonContent)){		   sql = sql + accuseReasonContent ;		}  	//	sql = sql + accuseReasonContent ;		 	 	//System.out.println("报表对象的SQL后:"+sql); 				//将修改后的SQL设置到数据集对象中 		sdsc.setSQL(sql); 		dsmd.setDataSetConfig(0,sdsc); 		rd.setDataSetMetaData(dsmd); 		/*修改报表SQL语句结束*/				/*修改报表参数语句开始*/				//ParamMetaData paramMetaData = rd.getParamMetaData();		//Param p2 = paramMetaData.getParam(0); 		//p2.setValue("0001"); 		//paramMetaData.setParam(0,p2);				//rd.setParamMetaData(paramMetaData);				//ParamMetaData paramMetaData = new ParamMetaData();				ParamMetaData pmd=new ParamMetaData();  //构造参数元数据				    		Param param1 = new Param();  //构造参数定义		param1.setParamName("agentId");  //设置参数名		param1.setDataType(Types.DT_STRING);  //设置参数数据类型		param1.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(agentId!=null&& !"".equals(agentId)){ 		  param1.setValue(agentId);  //设参数缺省值 		}								pmd.addParam(param1);  //把参数定义添加到参数元数据中     		Param param2 = new Param();  //构造参数定义		param2.setParamName("startTime");  //设置参数名		param2.setDataType(Types.DT_STRING);  //设置参数数据类型		param2.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(startTime!=null && !"".equals(startTime)){		  param2.setValue(startTime);  //设参数缺省值  		}		pmd.addParam(param2);  //把参数定义添加到参数元数据中   		    	   	   			Param param3 = new Param();  //构造参数定义		param3.setParamName("endTime");  //设置参数名		param3.setDataType(Types.DT_STRING);  //设置参数数据类型		param3.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(endTime!=null && !"".equals(endTime)){		  param3.setValue(endTime);  //设参数缺省值  		}		pmd.addParam(param3);  //把参数定义添加到参数元数据中    		 	Param param4 = new Param();  //构造参数定义		param4.setParamName("accuseName");  //设置参数名		param4.setDataType(Types.DT_STRING);  //设置参数数据类型		param4.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseName!=null && !"".equals(accuseName)){		  param4.setValue(accuseName);  //设参数缺省值  		} 		pmd.addParam(param4);  //把参数定义添加到参数元数据中   	  	  		Param param5 = new Param();  //构造参数定义		param5.setParamName("accuseType");  //设置参数名		param5.setDataType(Types.DT_STRING);  //设置参数数据类型		param5.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseType!=null && !"".equals(accuseType)){		  param5.setValue(accuseType);  //设参数缺省值  		}		pmd.addParam(param5);  //把参数定义添加到参数元数据中   	   	   		Param param6 = new Param();  //构造参数定义		param6.setParamName("accuseLevel");  //设置参数名		param6.setDataType(Types.DT_STRING);  //设置参数数据类型		param6.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseLevel!=null && !"".equals(accuseLevel)){		   param6.setValue(accuseLevel);  //设参数缺省值  		} 		pmd.addParam(param6);  //把参数定义添加到参数元数据中   	  	  		//param.append("accuseReasonContent=").append(accuseReasonContent).append(";");		Param param7 = new Param();  //构造参数定义		param7.setParamName("accuseReasonContent");  //设置参数名		param7.setDataType(Types.DT_STRING);  //设置参数数据类型		param7.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseReasonContent1!=null && !"".equals(accuseReasonContent1)){		    param7.setValue(accuseReasonContent1);  //设参数缺省值  		}  		pmd.addParam(param7);  //把参数定义添加到参数元数据中    	   		Param param8 = new Param();  //构造参数定义		param8.setParamName("insureChannel");  //设置参数名		param8.setDataType(Types.DT_STRING);  //设置参数数据类型		param8.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(insureChannel!=null && !"".equals(insureChannel)){		   param8.setValue(insureChannel);  //设参数缺省值  		}		pmd.addParam(param8);  //把参数定义添加到参数元数据中      	   	    	Param param9 = new Param();  //构造参数定义		param9.setParamName("dealType");  //设置参数名		param9.setDataType(Types.DT_STRING);  //设置参数数据类型		param9.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(dealType!=null && !"".equals(dealType)){		    param9.setValue(dealType);  //设参数缺省值       	    }   	   	    pmd.addParam(param9);  //把参数定义添加到参数元数据中   	       			Param param10 = new Param();  //构造参数定义		param10.setParamName("customerDepId");  //设置参数名		param10.setDataType(Types.DT_STRING);  //设置参数数据类型		param10.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(customerDepId!=null && !"".equals(customerDepId)){	    	param10.setValue(customerDepId);  //设参数缺省值  		}		pmd.addParam(param10);  //把参数定义添加到参数元数据中   	   	  		Param param11 = new Param();  //构造参数定义		param11.setParamName("accuseMan");  //设置参数名		param11.setDataType(Types.DT_STRING);  //设置参数数据类型		param11.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseMan!=null && !"".equals(accuseMan)){		   param11.setValue(accuseMan);  //设参数缺省值  		}   		pmd.addParam(param11);  //把参数定义添加到参数元数据中  			Param param12 = new Param();  //构造参数定义		param12.setParamName("riskName");  //设置参数名		param12.setDataType(Types.DT_STRING);  //设置参数数据类型		param12.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(riskName!=null && !"".equals(riskName)){		   param12.setValue(riskName);  //设参数缺省值  		  }		pmd.addParam(param12);  //把参数定义添加到参数元数据中      	   			Param param13 = new Param();  //构造参数定义		param13.setParamName("accuseTitle");  //设置参数名		param13.setDataType(Types.DT_STRING);  //设置参数数据类型		param13.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(accuseTitle!=null && !"".equals(accuseTitle)){		  param13.setValue(accuseTitle);  //设参数缺省值  		} 		pmd.addParam(param13);  //把参数定义添加到参数元数据中    	   			Param param14 = new Param();  //构造参数定义		param14.setParamName("departNo");  //设置参数名		param14.setDataType(Types.DT_STRING);  //设置参数数据类型		param14.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(departNo!=null && !"".equals(departNo)){		    param14.setValue(departNo);  //设参数缺省值  		}  		pmd.addParam(param14);  //把参数定义添加到参数元数据中   	     		Param param15 = new Param();  //构造参数定义		param15.setParamName("depart");  //设置参数名		param15.setDataType(Types.DT_STRING);  //设置参数数据类型		param15.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(depart!=null && !"".equals(depart)){		  param15.setValue(depart);  //设参数缺省值  		} 		pmd.addParam(param15);  //把参数定义添加到参数元数据中     	     			Param param16 = new Param();  //构造参数定义		param16.setParamName("ifToLeadership");  //设置参数名		param16.setDataType(Types.DT_STRING);  //设置参数数据类型		param16.setParamType(Param.PARAM_NORMAL);  //设置参数类型(普通参数或动态参数)		if(ifToLeadership!=null && !"".equals(ifToLeadership)){		  param16.setValue(ifToLeadership);  //设参数缺省值  		}		pmd.addParam(param16);  //把参数定义添加到参数元数据中 						rd.setParamMetaData(pmd);  //把参数元数据赋给ReportDefine								/*修改报表参数语句开始*/						Context ctx = new Context(); 		ctx.setParamValue("accuseName",accuseName); 		Engine engine = new Engine(rd,ctx); 		IReport ireport = engine.calc(); 		 		request.setAttribute("ireport",ireport);   		request.setAttribute("mycontext",ctx); 		CacheManager.getInstance().deleteAllReport();//清空所有缓存   %>//使用标签显示报表对象<report:html name="report"   	  srcType="defineBean" 	  beanName="ireport"      needSaveAsExcel="yes"      needSaveAsPdf="yes"      needPrint="yes"      printLabel="打印"      width="-1"      contextName="mycontext"      params="<%=param.toString()%>"      useCache="no"/> 	<%		request.removeAttribute("ireport");	%>

?

  相关解决方案