简表报表配置以及ftl文件的一些功能

本文介绍了如何修改joreportlist.ftl文件以实现页面查询时的必填项、默认值和日期格式化。内容包括设置查询条件、验证输入、日期选择器的使用,以及在页面加载成功后的操作。同时提到了JoReportDao_queryJoReportItems.sql、JoReportConstant.java和JoReportController.java的相关修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为最近做的功能是修改ftl页面一些代码,来实现页面查询时必填项,默认值,日期格式化等功能,下面是简表报表配置里需要实现的功能,顺序比较乱,希望能帮助你参考一下

简表页面查询栏



1.joreportlist.ftl文件代码
<pre name="code" class="html"><!--#setting classic_compatible=true-->
<!DOCTYPE html>
<html style="height: 100%">
<head>
	<title></title>
	<link href="plug-in/lhgDialog/skins/default.css" rel="stylesheet" id="lhgdialoglink">
	<script type="text/javascript" src="plug-in/jquery/jquery-1.8.3.min.js"></script>
	<script type="text/javascript" src="plug-in/tools/dataformat.js"></script>
	<link id="easyuiTheme" rel="stylesheet" href="plug-in/easyui/themes/default/easyui.css" type="text/css">
	<link rel="stylesheet" href="plug-in/easyui/themes/icon.css" type="text/css">
	<link rel="stylesheet" type="text/css" href="plug-in/accordion/css/accordion.css">
	<script type="text/javascript" src="plug-in/easyui/jquery.easyui.min.1.3.2.js"></script>
	<script type="text/javascript" src="plug-in/easyui/locale/easyui-lang-zh_CN.js"></script>
	<script type="text/javascript" src="plug-in/tools/syUtil.js"></script>
	<script type="text/javascript" src="plug-in/easyui/extends/datagrid-scrollview.js"></script>
	<script type="text/javascript" src="plug-in/My97DatePicker/WdatePicker.js"></script>
	<link href="plug-in/My97DatePicker/skin/WdatePicker.css" rel="stylesheet" type="text/css">
	<link rel="stylesheet" href="plug-in/tools/css/common.css" type="text/css">
	<script type="text/javascript" src="plug-in/lhgDialog/lhgdialog.min.js"></script>
	<script type="text/javascript" src="plug-in/tools/curdtools.js"></script>
	<script type="text/javascript" src="plug-in/tools/easyuiextend.js"></script>
	<script type="text/javascript" src="plug-in/jquery-plugs/hftable/jquery-hftable.js"></script>
	<link rel="stylesheet" href="plug-in/jquery/jquery-autocomplete/jquery.autocomplete.css" type="text/css">
	<script type="text/javascript" src="plug-in/jquery/jquery-autocomplete/jquery.autocomplete.min.js"></script>
    
	<style type='text/css'>
		body{margin:0px;padding:0px;}
	</style>
<script type="text/javascript">
$(function(){
	<#list config_queryList  as x>
		<#if x['search_mode']=="group">
			<#if x['field_type']=="Date" && x['data_type']=="*">
				$("input[name='${x['field_name']}_begin']").attr({datatype:"*"});
				$("input[name='${x['field_name']}_end']").attr({datatype:"*"});
			</#if>
		</#if>
		<#if x['search_mode']=="single">
			<#if x['field_type']=="Date" && x['data_type']=="*">
				$("input[name='${x['field_name']}']").attr({datatype:"*"});
			</#if>
		</#if>
	</#list>
	$('#${config_id}List').datagrid({
		idField: 'id',
		title: '${config_name}',
		url:'',
		fit:false,
		fitColumns:false,
		pageSize: 100,
		pagination:false,
		pageList:[10,30,50,100],
		singleSelect:true,
		checkbox:false,
		sortOrder:'asc',
		rownumbers:true,
		showHeader:false,
		showFooter:true,
		frozenColumns:[[]],
		columns:[
			[			
			]
		],
		onLoadSuccess:function(data){$("#${config_id}List").datagrid("clearSelections");},
		onClickRow:function(rowIndex,rowData)
			{rowid=rowData.id;gridname='${config_id}List';}
	});
});
//打开内链
function ${config_id}Listsearch(){
<#if (config_requiredList?size>0)>
		<#list config_requiredList as x>
		    <#if x['search_mode']=="single">
				var ${x['field_name']}= $('#${config_id}Listtb').find("[name='${x['field_name']}']").val();
				if(${x['field_name']}=="" || ${x['field_name']}==undefined) {
					alert("${x['field_txt']} 不能为空!");
					return;
				}
			<#else>
				var ${x['field_name']}_begin= $('#${config_id}Listtb').find("[name='${x['field_name']}_begin']").val();
				if(${x['field_name']}_begin=="" || ${x['field_name']}_begin==undefined) {
					alert("${x['field_txt']} 开始时间不能为空!");
					return;
				}
				var ${x['field_name']}_end= $('#${config_id}Listtb').find("[name='${x['field_name']}_end']").val();
				if(${x['field_name']}_end=="" || ${x['field_name']}_end==undefined) {
					alert("${x['field_txt']} 结束时间不能为空!");
					return;
				}
			</#if>
		</#list>
	</#if>
	$("#${config_id}Content").show();
	//document.${config_id}JoRForm.action = "reportviewer?file=demos/功能演示/脚本/引入自定义脚本函数.xml";
	var form = document.${config_id}JoRForm;
	//alert(form.name);
	//遍历指定form表单所有元素
	for(var i=0;i<form.length;i++){
		var element=form[i];
		if(element.value==""){
			//$(element).attr({disabled:"disabled"});
			//console.log(element.name);
		}
	}
	form.target = "_self";
	$('#${config_id}JoRForm').submit();
}
//function dosearch(params){var jsonparams=$.parseJSON(params);$('#${config_id}List').datagrid({url:'joReportController.do?datagrid&configId=${config_id},',queryParams:jsonparams});}
//function ${config_id}Listsearchbox(value,name){var queryParams=$('#${config_id}List').datagrid('options').queryParams;queryParams[name]=value;queryParams.searchfield=name;$('#${config_id}List').datagrid('reload');}$('#${config_id}Listsearchbox').searchbox({searcher:function(value,name){${config_id}Listsearchbox(value,name);},menu:'#${config_id}Listmm',prompt:'请输入查询关键字'});
function searchReset_${config_id}(name){ $("#"+name+"tb").find(":input").val("");}
//打开外链
function ${config_id}blankLink() {
	<#if (config_requiredList?size>0)>
		<#list config_requiredList as x>
		    <#if x['search_mode']=="single">
				var ${x['field_name']}= $('#${config_id}Listtb').find("[name='${x['field_name']}']").val();
				if(${x['field_name']}=="" || ${x['field_name']}==undefined) {
					alert("${x['field_txt']} 不能为空!");
					return;
				}
			<#else>
				var ${x['field_name']}_begin= $('#${config_id}Listtb').find("[name='${x['field_name']}_begin']").val();
				if(${x['field_name']}_begin=="" || ${x['field_name']}_begin==undefined) {
					alert("${x['field_txt']} 开始时间不能为空!");
					return;
				}
				var ${x['field_name']}_end= $('#${config_id}Listtb').find("[name='${x['field_name']}_end']").val();
				if(${x['field_name']}_end=="" || ${x['field_name']}_end==undefined) {
					alert("${x['field_txt']} 结束时间不能为空!");
					return;
				}
			</#if>
		</#list>
	</#if>
	var form = document.${config_id}JoRForm;
	//遍历指定form表单所有元素
	for(var i=0;i<form.length;i++){
		var element=form[i];
		if(element.value==""){
			//$(element).attr({disabled:"disabled"});
			//console.log(element.name);
		}
	}
	form.target = "_blank";
	$('#${config_id}JoRForm').submit();
}
	<#-- 增加下面4个script函数,http://blog.youkuaiyun.com/dandanzmc/article/details/34110767-->
	function formatter_ymdh(date){
		var y = date.getFullYear();
		var m = date.getMonth()+1;
		var d = date.getDate();
		var h = date.getHours();
		return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d)+' '+(h<10?('0'+h):h);
	}
	function parser_ymdh(s){
		if (!s){ 
			var date = new Date();
			var ty = date.getFullYear();
			var tm = date.getMonth()+1;
			var td = date.getDate();
			var th = date.getHours();
			return new Date(ty,tm-1,td,th,0,0);
		}
		var reg=/[- ]/;  //利用正则表达式分隔  
        var ss = (s.split(reg));  
        var y = parseInt(ss[0],10);  
        var m = parseInt(ss[1],10);  
        var d = parseInt(ss[2],10);  
        var h = parseInt(ss[3],10);  
        if (!isNaN(y) && !isNaN(m) && !isNaN(d) && !isNaN(h)){  
            return new Date(y,m-1,d,h,0,0);  
        } else {  
            return new Date();  
        }
	}
	function formatter_month(date){
		var y = date.getFullYear();
		var m = date.getMonth()+1;
		return y+'-'+(m<10?('0'+m):m);
		/*var d = date.getDate();
		return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);*/
	}
	function parser_month(s){
		if (!s) return new Date();
        var ss = (s.split('-'));
        var y = parseInt(ss[0],10);
        var m = parseInt(ss[1],10);
        if (!isNaN(y) && !isNaN(m)){
            return new Date(y,m-1,1);
        } else {
            return new Date();
        }
        /*var d = parseInt(ss[2],10);
        if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
            return new Date(y,m-1,d);
        } else {
            return new Date();
        }
		return new Date(Date.parse(date.replace(/-/g,"/")));*/
	}
</script>
</head>
<body style="height: 100%">
<table width="100%"   id="${config_id}List" toolbar="#${config_id}Listtb"></table>
<div id="${config_id}Listtb" style="padding:3px; height: auto">
<form id="${config_id}JoRForm" name="${config_id}JoRForm" method="post" action="reportviewer">
	<div name="searchColums">
		<input type="hidden" name="file" value="${config_rfile}" />
		<input type="hidden" name="_all_in_one_page" value="<#if '${config_pagination}'=="Y">false<#else>true</#if>" />
		<#list config_queryList  as x>
			<span style="display:-moz-inline-box;display:inline-block;">
			<span style="<#if x['is_show']=="Y">display:-moz-inline-box;display:inline-block;<#else>display:none;</#if>width: 100px;text-align:right;text-align:right;text-overflow:ellipsis;-o-text-overflow:ellipsis; overflow: hidden;white-space:nowrap;" title="${x['field_txt']}" class="Validform_label" >${x['field_txt']}:</span>
			<#if x['search_mode']=="group">
				<input type="text" name="${x['field_name']}_begin" value="${x['default_va']}" <#if x['read_only']=="Y">readonly</#if> 
						<#if x['field_type']="Date">
						 	class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd'})"
						<#else>
					   	<#if x['date_format']!="">
					      	class="Wdate" <#if x['read_only']!="Y">onClick="WdatePicker({dateFmt:'${x['date_format']}'})" </#if> 
						</#if>
					</#if>  />
				<span style="display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;">~</span>
				<input type="text" name="${x['field_name']}_end" value="${x['default_va']}" <#if x['read_only']=="Y">readonly</#if> 
					<#if x['field_type']="Date">
						 class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd'})"
					<#else>
					<#if x['date_format']!="">
					      class="Wdate" <#if x['read_only']!="Y">onClick="WdatePicker({dateFmt:'${x['date_format']}'})" 
					   </#if> 
					</#if>
				</#if>  />
			</#if>
			<#if x['search_mode']=="single">
				<#if  (x['field_dictlist']?size >0)>
					<select name = "${x['field_name']}" <span style="color:#FF0000;"><#if x['read_only']=="Y">disabled="disabled"<#else>display:none;</#if></span> WIDTH="100" style="<#if x['is_show']=="Y"><#else>display:none;</#if>width: 104px" <#if x['data_type']?length gt 0 >datatype="${x['data_type']}"</#if> >
						<option value = "">---请选择---</option>
						<#list x['field_dictlist']  as xd>
							<span style="color:#FF0000;"><#if xd['typecode']=="${x['default_va']}">
								<option value = "${xd['typecode']}" selected = "selected" >${xd['typename']}</option>
							<#else>
								<option value = "${xd['typecode']}" >${xd['typename']}</option>
							</#if></span>	
						</#list>
					</select>
				<#elseif  (x['field_replacelist']?size >0)>
					<select name = "${x['field_name']}" <#if x['read_only']=="Y">disabled="disabled"<#else>display:none;</#if> WIDTH="100" style="<#if x['is_show']=="Y"><#else>display:none;</#if>width: 104px" <#if x['data_type']?length gt 0 >datatype="${x['data_type']}"</#if> >
						<option value = "">---请选择---</option>
						<#list x['field_replacelist']  as xd>
							<#if xd['typecode']=="${x['default_va']}">
								<option value = "${xd['typecode']}" selected = "selected" >${xd['typename']}</option>
							<#else>
								<option value = "${xd['typecode']}" >${xd['typename']}</option>
							</#if>
						</#list>
					</select>
				<#else>
				<input type="text" style="width: 120px" name="${x['field_name']}" value="${x['default_va']}" <#if x['read_only']=="Y">readonly</#if>
							<#if x['field_type']="Date">
								 class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd'})"
							<#else>
						   	<#if x['date_format']!="">class="Wdate" <#if x['read_only']!="Y">onClick="WdatePicker({dateFmt:'${x['date_format']}'})" </#if> 
							</#if>
						</#if>  />
					</#if>
				</#if>
			</span>	
		</#list>
	</div>
	<div style="height:30px;" class="datagrid-toolbar">
		<span style="float:left;" >
		<a href="#" class="easyui-linkbutton" plain="true" icon="icon-putout" onclick="${config_id}blankLink();">外链方式生成和阅读报表</a>
		</span>
		
		<#if  (config_queryList?size >0)>
			<span style="float:right">
				<a href="#" class="easyui-linkbutton" iconCls="icon-search" onclick="${config_id}Listsearch()">生成报表并阅读</a>
				<a href="#" class="easyui-linkbutton" iconCls="icon-reload" onclick="searchReset_${config_id}('${config_id}List')">重置</a>
			</span>
		</#if>
	</div>
<link rel="stylesheet" href="plug-in/Validform/css/style.css" type="text/css">
<link rel="stylesheet" href="plug-in/Validform/css/tablefrom.css" type="text/css">
<script type="text/javascript" src="plug-in/Validform/js/Validform_v5.3.1_min.js"></script>
<script type="text/javascript" src="plug-in/Validform/js/Validform_Datatype.js"></script>
<script type="text/javascript" src="plug-in/Validform/js/datatype.js"></script>
<script type="text/javascript" src="plug-in/Validform/plugin/passwordStrength/passwordStrength-min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#${config_id}JoRForm").Validform({
			tiptype:1
		});
	});
</script>
</form>
</div>
<div id="${config_id}Content" class="ui_loading" style="display: none; position: absolute; opacity: 1; z-index: 1; text-align:center; text-indent:0em; width: 100%; height: 50%; padding:3px;">
	<span>正在生成报表哦,休息一下吧......</span>
</div>
</body>
</html>



2.JoReportDao_queryJoReportItems.sql也需要修改

select 
ci.id as id,
ci.field_name as field_name,
ci.field_txt as field_txt,
ci.field_type as field_type,
ci.is_show as is_show,
ci.s_mode as search_mode,
ci.replace_va as replace_value,
ci.dict_code as dict_code,
ci.dict_table as dict_table,
ci.dict_text as dict_text,
ci.dict_editable as dict_editable,
ci.default_va as default_va,
ci.read_only as read_only,
ci.data_type as data_type,
ci.required as required,
ci.date_format as date_format,
ci.help_tip as help_tip,
ci.jorhead_id as joreport_head_id
from jform_jor_item ci,jform_jor_head ch 
where 1=1
and ci.jorhead_id = ch.id
and ch.code = '${configId}'
order by ci.order_num asc

3.配置ftl里需要的常量JoReportConstant.java

package com.iujin.web.joreport.common;

/**
 * @Title:JoReportConstant
 * @description:简表动态报表常量类
 * @author QQ:122693290
 * @version V1.0
 */
public class JoReportConstant {
	/** 抬头配置 */
	public static final String MAIN=  "main";
	/** 明细配置*/
	public static final String ITEMS=  "items";
	/**	配置的id*/
	public static final String CONFIG_ID="config_id";
	/**	配置的名称*/
	public static final String CONFIG_NAME="config_name";
	/**	配置的简表定义文件路径*/
	public static final String CONFIG_RFILE="config_rfile";
	/**	配置的是否分页*/
	public static final String CONFIG_PAGINATION="config_pagination";
	/**	字段列表*/
	//public static final String CONFIG_FIELDLIST = "config_fieldList";	//作废liuwei
	/**	查询字段*/
	public static final String CONFIG_QUERYLIST ="config_queryList";
	/**字典数据*/
	public static final String FIELD_DICTLIST = "field_dictlist";
	/**取值表达式下拉*/
	public static final String FIELD_REPLACELIST = "field_replacelist";
	/**系统字典表*/
	public static final String SYS_DIC="t_s_type";
	/**系统字典分组表*/
	public static final String SYS_DICGROUP="t_s_typegroup";
	/** 抬头配置-查询SQL*/
	public static final String CONFIG_SQL=  "cgreport_sql";
	/** 字典编码/字典编码列名(后面这个在有字典表设置时作为编码所在的列表使用)*/
	public static final String ITEM_DICCODE= "dict_code";
	/** 字典表*/
	public static final String ITEM_DICTABLE= "dict_table";
	/** 字典文本列名*/
	public static final String ITEM_DICTEXT= "dict_text";
	/** 取值表达式*/
	public static final String ITEM_REPLACE = "replace_value";
	/** 明细配置-字段名*/
	public static final String ITEM_FIELDNAME =  "field_name";
	/** 明细配置-字段类型*/
	public static final String ITEM_FIELDTYPE =  "field_type";
	/** 明细配置-查询模式*/
	public static final String ITEM_QUERYMODE =  "search_mode";
	/**逻辑true*/
	public static final String BOOL_TRUE= "Y";
	/**逻辑false*/
	public static final String BOOL_FALSE= "N";
	/**查询操作=*/
	public static final String OP_EQ = " = ";
	/**查询操作>=*/
	public static final String OP_RQ = " >= ";
	/**查询操作<=*/
	public static final String OP_LQ = " <= ";
	/**查询操作like*/
	public static final String OP_LIKE = " LIKE ";
	/** 明细配置-必填项*/
	public static final String ITEM_REQUIRED =  "required";
	/**	查询字段*/
	public static final String CONFIG_REQUIREDLIST ="config_requiredList";
}

4.JoReportController.java



package com.iujin.web.joreport.controller.autoreport;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.cgform.engine.FreemarkerHelper;
import org.jeecgframework.web.cgreport.common.CgReportConstant;
import org.jeecgframework.web.system.manager.ClientManager;
import org.jeecgframework.web.system.pojo.base.Client;
import org.jeecgframework.web.system.pojo.base.TSUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.iujin.web.joreport.common.JoReportConstant;
import com.iujin.web.joreport.exception.JoReportNotFoundException;
import com.iujin.web.joreport.service.autoreport.JoReportServiceI;
import com.iujin.web.joreport.util.JoReportQueryParamUtil;

/**
 * 
 * @Title:JoReportController
 * @description:简表动态报表展示控制器
 * @author QQ:122693290
 * @version V1.0
 */
@Controller
@RequestMapping("/joReportController")
public class JoReportController extends BaseController {
	@Autowired
	private JoReportServiceI joReportService;
	
	/**
	 * 简表动态报表展现入口
	 * @param id 动态配置ID-code
	 * @param request
	 * @param response
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(params = "list")
	public void list(String id, HttpServletRequest request, HttpServletResponse response) {
		//step.1 根据id获取该简表动态报表的配置参数
		Map<String, Object>  joReportMap = null;
		try{
			joReportMap = joReportService.queryJoReportConfig(id);
		}catch (Exception e) {
			throw new JoReportNotFoundException("简表动态报表配置不存在!");
		}
		//step.2 获取列表ftl模板路径
		FreemarkerHelper viewEngine = new FreemarkerHelper();
		//step.3 组合模板+数据参数,进行页面展现
		loadVars(joReportMap);
		
		//升级保留 liuwei		readme-jeecg/2.50	begin
		HttpSession session = ContextHolderUtils.getSession();
		Client client = ClientManager.getInstance().getClient(session.getId());
		if(client == null){ 
			client = ClientManager.getInstance().getClient(
					request.getParameter("sessionId"));
		}
		if (client != null && client.getUser()!=null ) {
			TSUser u = client.getUser();
			session.setAttribute("LOGINUSER_ID", u.getId());	//登录人id
	        session.setAttribute("LOGINUSER_USERNAME", u.getUserName());	//登录人登录名
	        session.setAttribute("LOGINUSER_REALNAME", u.getRealName());	//登录人显示中文名
	        session.setAttribute("LOGINUSER_DEPART_ID", u.getTSDepart().getId());	//登录人的所属部门id
	        session.setAttribute("LOGINUSER_DEPART_NAME", u.getTSDepart().getDepartname());	//登录人的所属部门中文名
	        //登录人的所属地市、区县、网格id
	        //登录人的所属地市、区县、网格中文名
	        //登录人的管辖地市及区县id组
		}
		//升级保留 liuwei		readme-jeecg/2.50	end
		
		String html = viewEngine.parseTemplate("/com/iujin/web/joreport/engine/autoreport/joreportlist.ftl", joReportMap);
		try {
			response.setContentType("text/html");
			response.setHeader("Cache-Control", "no-store");
			PrintWriter writer = response.getWriter();
			writer.println(html);
			writer.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 组装模版参数
	 * @param joReportMap
	 */
	@SuppressWarnings("unchecked")
	<span style="color:#FF9900;"><span style="color:#6666CC;">private void loadVars(Map<String, Object> joReportMap) {
		Map mainM = (Map) joReportMap.get(JoReportConstant.MAIN);
		List<Map<String,Object>> fieldList = (List<Map<String, Object>>) joReportMap.get(JoReportConstant.ITEMS);
		List<Map<String,Object>> queryList = new ArrayList<Map<String,Object>>(0);
		List<Map<String,Object>> requiredList = new ArrayList<Map<String,Object>>(0);
		for(Map<String,Object> fl:fieldList){
			fl.put(JoReportConstant.ITEM_FIELDNAME, ((String)fl.get(JoReportConstant.ITEM_FIELDNAME)).toLowerCase());
			loadDic(fl,fl);
			loadReplace(fl,fl);	//升级保留 liuwei
			queryList.add(fl);
		String isRequired = (String) fl.get(JoReportConstant.ITEM_REQUIRED);
		if(JoReportConstant.BOOL_TRUE.equalsIgnoreCase(isRequired)){
			requiredList.add(fl);
			}
		}
		joReportMap.put(JoReportConstant.CONFIG_ID, mainM.get("code"));
		joReportMap.put(JoReportConstant.CONFIG_NAME, mainM.get("name"));
		joReportMap.put(JoReportConstant.CONFIG_RFILE, mainM.get("rfile"));
		joReportMap.put(JoReportConstant.CONFIG_PAGINATION, mainM.get("is_pagination"));
		joReportMap.put(JoReportConstant.CONFIG_QUERYLIST, queryList);
		joReportMap.put(JoReportConstant.CONFIG_REQUIREDLIST, requiredList);
	}</span></span>

	/**
	 * 装载数据字典
	 * @param m	要放入freemarker的数据
	 * @param joReportMap 读取出来的动态配置数据
	 */
	@SuppressWarnings("unchecked")
	private void loadDic(Map m, Map<String, Object> joReportMap) {
		String dict_code = (String) joReportMap.get(JoReportConstant.ITEM_DICCODE);
		String dict_table = (String) joReportMap.get(JoReportConstant.ITEM_DICTABLE);
		String dict_text = (String) joReportMap.get(JoReportConstant.ITEM_DICTEXT);
		if(StringUtil.isEmpty(dict_code) || StringUtil.isEmpty(dict_code.trim())){
			m.put(JoReportConstant.FIELD_DICTLIST, new ArrayList(0));
			return;
		}
		if(dict_table==null || dict_table.trim().length()==0 || dict_text==null || dict_text.trim().length()==0) { 
			dict_table = "";
			dict_text  = "";
		}
		List<Map<String, Object>> dicDatas = queryDic(dict_code, dict_table, dict_text);
		m.put(JoReportConstant.FIELD_DICTLIST, dicDatas);
	}
	/**
	 * 查询数据字典
	 * @param diccode 字典编码/字典编码所在列名
	 * @param dictable 指定作为字典表的表
	 * @param dictext 指定字典表的文本列名
	 * @return
	 */
	private List<Map<String, Object>> queryDic(String diccode, String dictable, String dictext) {
		String dicfield = diccode;
		String dictable_local = dictable;
		if(StringUtil.isEmpty(dictable)) {
			dictable_local = JoReportConstant.SYS_DIC;
			dicfield = "TYPECODE";
			dictext  = "TYPENAME";
		}
		StringBuilder dicSql = new StringBuilder();
		dicSql.append(" SELECT "+dicfield+","+dictext+" FROM");
		dicSql.append(" "+dictable_local);
		if(StringUtil.isEmpty(dictable)) {
			dicSql.append(" "+"WHERE TYPEGROUPID = ");
			dicSql.append(" "+"(SELECT ID FROM "+JoReportConstant.SYS_DICGROUP+" WHERE TYPEGROUPCODE = '"+diccode+"' )");
		}
		List<Map<String, Object>> dicDatas = joReportService.findForJdbc(dicSql.toString());
		return dicDatas;
	}
	
	/**
	 * 装载取值表达式
	 * @param m	要放入freemarker的数据
	 * @param joReportMap 读取出来的动态配置数据
	 */
	@SuppressWarnings("unchecked")
	private void loadReplace(Map m, Map<String, Object> joReportMap) {
		try{
			//获取取值表达式
			String replace = (String) joReportMap.get(JoReportConstant.ITEM_REPLACE);
			if(StringUtil.isEmpty(replace)){
				m.put(JoReportConstant.FIELD_REPLACELIST, new ArrayList(0));
				return;
			}
			List<Map<String, Object>> replaceDatas = new ArrayList(0);
			String[] groups = replace.split(",");
			for(String g:groups){
				String[] items = g.split("_");
				String v = items[0];//逻辑判断值
				String txt = items[1];//要转换的文本
				Map<String, Object> rvm = new HashMap<String,Object>();
				rvm.put("typecode", v);
				rvm.put("typename", txt);
				replaceDatas.add(rvm);
			}
			m.put(JoReportConstant.FIELD_REPLACELIST, replaceDatas);
			
		}catch (Exception e) {
			//这里出现异常原因是因为取值表达式不正确
			e.printStackTrace();
			throw new BusinessException("取值表达式不正确");
		}
	}
}




























评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值