根据读取后台配置(前端动态化展示table.)

直接上代码。废话不多说

jsp代码

<form id = "resultDownLoad">
<table id="dg-child" title="比对结果列表" class="easyui-datagrid" style="height:385px" data-options="border:false"
toolbar="#toolbar-child" rownumbers="true" fitColumns="true" singleSelect="true">
</table>
</form>


点击某行记录。执行函数

row数据结构


result数据结构



function detailTask(){
        var row = $('#dg').datagrid('getSelected');
        if (row){
            $.post('/taskManager/sureDetail.html',{taskId:row.taskId},function(result){
                if (result.success){
                    //查询是否为条件查询字段
                    queryFlagMap(row,result);
                    
                    //查询是否是展示字段。在根据展示字段来展示详情
                    showFlagMap(row,result);
                } else {
                    $.messager.show({
                        title: '错误信息',
                        msg: result.msg
                    });
                }
            },'json');
        }

    }



data数据结构


//查询是否为条件查询字段
    function queryFlagMap(row,result){
        $.ajax({
            url:'/taskManager/queryFlagMap.html',
            type:"post",
            data:{'channelId':row.channelId},
            dataType:'json',
            success:function(data){
                var html="";

                 // 拼接查询条件

                for(var i=0;i<data.length;i++){         
                    html+="<label class="+data[i].field +">"+data[i].title+":</label>"+
                    "<input  id="+data[i].field +"  name="+data[i].field+"  "+"style=width:100px"+"></input>"
            }    
                $("#toolbar-child").prepend(html);
           }
        });
    }

data数据结构


columns数据结构


//查询是否是展示字段。在根据展示字段来创建表格
    function showFlagMap(row,result){
        $.ajax({
            url:'/taskManager/showFlagMap.html',
            type:"post",
            data:{'channelId':row.channelId},
            dataType:'json',
            success:function(data){
                var columns=[];
                for(var i=0;i<data.length;i++){
                    var t={field:  data[i].field, title:data[i].title, width: 90};
                    if(data[i].field=='pay_amount'){
                        var t={field: data[i].field, title: '支付金额(元)', width: 90 ,
                                formatter: function(value,row,index){
                                   return formatPriceToRMB(value);
                               }};
                    }
                columns.push(t);
            }
                //查询详情数据(展示列表)
                detailList(columns,row,result);
           }
        });
     }

js

 //查询任务详情 
    function detailList(columns,row,result){
    $('#dlg-detail').dialog('open').dialog('center').dialog('setTitle','详情');
    $('#fm-detail').form('load', result.data);
    $('#dg-child').datagrid({
        rownumbers:true,
        url:'/taskManager/detailList.html?taskId='+row.taskId+'&channelId='+row.channelId,
        striped:true,
        singleSelect:true,
        loadMsg:'数据加载中,请稍后...',
        pagination:true,
        pageNumber:1,
        onLoadSuccess: function (data) {
            vara=data;
        },
        columns: [columns],//数据填充。宣染表格
        collapsible:true
    });
}

js

  //分转元。保留2位小数
    function formatPriceToRMB(_price){
        var result = "0.00";
        if(null != _price || undefined != _price){
            var price = parseInt(_price);
            if(!isNaN(price)) {
              var val = (price/100).toFixed(2);
              result = String(val).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');
            }
        }
        return result;
    }

controller

/**
	 * 查询是否为展示字段
	 * @param channelId
	 * @return
	 */
	@RequestMapping("/showFlagMap")
	@ResponseBody
	public List<Map<String,Object>> showFlagMap(Integer channelId){
		List<Map<String, Object>> resultMap=null;
		try {
			resultMap=taskDataService.showFlagMap(channelId);
			log.info("查询是否为显示字段成功");
		} catch (Exception e) {
			log.error("查询是否为显示字段失败:{}", e);
		}
		return resultMap;
	}

/**
	 * 查询是否为查询字段
	 * @return
	 */
	@RequestMapping("/queryFlagMap")
	@ResponseBody
	public List<Map<String,Object>> queryFlagMap(Integer channelId){
		List<Map<String, Object>> resultMap=null;
		try {
			resultMap=taskDataService.queryFlagMap(channelId);
			log.info("查询是否为条件查询字段成功");
		} catch (Exception e) {
			log.error("查询是否为条件查询字段失败:{}", e);
		}
		return resultMap;
	}
	

/**
	 * 查询任务详情记录
	 * @param request
	 * @return
	 */
	@RequestMapping("/detailList")
	@ResponseBody
	public PageListDto<Map<String,Object>> detailList(HttpServletRequest request) {
		PageListDto<Map<String,Object>> pageList = null;
		try {
			pageList = taskDataService.queryAllDetails(request);
			log.info("分页查询任务详情成功");
		} catch (Exception e) {
			log.error("分页查询任务详情失败:{}", e);
		}
		return pageList;
	}

serviceimpls实现

/**
	 * 是否为条件展示字段
	 */
	@Override
	public List<Map<String, Object>> showFlagMap(Integer channelId) {
		List<Map<String, Object>> resultMap=new ArrayList<Map<String,Object>>();
		
		ChannelEntity entity=channelService.selectById(DatasoureFlagEnum.DATA_R_CASH.getCode(),channelId);
		String schemaInfo=entity.getSchemaInfo();
		SchemaConfig config=JSON.parseObject(schemaInfo,SchemaConfig.class);
		
		//另外增加展示字段
		Map<String,Object> flagName=new HashMap<String,Object>();
		flagName.put("title","比对结果");
		flagName.put("field", "flagName");
		resultMap.add(flagName);
		
		Map<String,Object> deletedName=new HashMap<String,Object>();
		deletedName.put("title","处理状态");
		deletedName.put("field", "deletedName");
		resultMap.add(deletedName);
		
		for(int i=0;i<config.getFields().size();i++){
			if(String.valueOf(config.getFields().get(i).getShowFlag()).equals("1")){
				//是否为显示字段集合
				Map<String,Object> showFlagMap=new HashMap<String,Object>();
				showFlagMap.put("title",config.getFields().get(i).getLabel());
				showFlagMap.put("field", config.getFields().get(i).getColumn());
				resultMap.add(showFlagMap);
			}
		}
		//另外增加展示字段
		Map<String,Object> requestId=new HashMap<String,Object>();
		requestId.put("title","结果ID");
		requestId.put("field", "request_id");
		resultMap.add(requestId);
		return resultMap;
	}

/**
	 * 查询是否为查询字段
	 */
	@Override
	public List<Map<String, Object>> queryFlagMap(Integer channelId) {
		List<Map<String, Object>> resultMap=new ArrayList<Map<String,Object>>();
		
		ChannelEntity entity=channelService.selectById(DatasoureFlagEnum.DATA_R_CASH.getCode(),channelId);
		String schemaInfo=entity.getSchemaInfo();
		SchemaConfig config=JSON.parseObject(schemaInfo,SchemaConfig.class);
		
		for(int i=0;i<config.getFields().size();i++){
			if(String.valueOf(config.getFields().get(i).getQueryFlag()).equals("1")){
				//是否为条件查询字段集合
				Map<String,Object> queryFlagMap=new HashMap<String, Object>();
				queryFlagMap.put("title",config.getFields().get(i).getLabel());
				queryFlagMap.put("field", config.getFields().get(i).getColumn());
				resultMap.add(queryFlagMap);
			}
		}
		return resultMap;
	}

@Override
	public PageListDto<Map<String,Object>> queryAllDetails(HttpServletRequest request) {
				//获取条件查询字段
				Integer taskId=Integer.valueOf( request.getParameter("taskId"));
				Integer channelId=Integer.valueOf(request.getParameter("channelId"));
				Integer rows=Integer.valueOf(request.getParameter("rows"));
				Integer page=Integer.valueOf(request.getParameter("page"));
				String flag=String.valueOf(request.getParameter("flag")).equals("3")?"":request.getParameter("flag");
				String deleted=String.valueOf(request.getParameter("deleted")).equals("2")?"":request.getParameter("deleted");
				
				//获取数据源导入结构
				ChannelEntity entity=channelService.selectById(DatasoureFlagEnum.DATA_R_CASH.getCode(),channelId);
				String schemaInfo=entity.getSchemaInfo();
				SchemaConfig config=JSON.parseObject(schemaInfo,SchemaConfig.class);
				String tableName=config.getTableName(); 
				
				List<Map<String,Object>> list= new ArrayList<Map<String,Object>>(0);
				
				Long total=null;
				try{
					//查询详情记录sql
					StringBuffer selectSql=new StringBuffer("select * from " + tableName
							+ "_data  where task_id=" + taskId);
					//查询记录数sql
					StringBuffer countSql=new StringBuffer("select count(1) as total from " + tableName
							+ "_data  where task_id=  ?") ;
					
					//循环拼接查询条件字段
					for(int i=0;i<config.getFields().size();i++){
						if(String.valueOf(config.getFields().get(i).getQueryFlag()).equals("1")){
							String fieldValue = request.getParameter(config.getFields().get(i).getColumn());
							if(StringUtils.isNotBlank(fieldValue)){
								countSql.append(" and "+config.getFields().get(i).getColumn()+"='"+fieldValue+"'");
								selectSql.append(" and "+config.getFields().get(i).getColumn()+"='"+fieldValue+"'");
							}
						}
					}
					
					if(StringUtils.isNotBlank(flag)){
						countSql.append(" and flag="+flag);
						selectSql.append(" and flag="+flag);
					}
					if(StringUtils.isNotBlank(deleted)){
						countSql.append(" and deleted="+deleted);
						selectSql.append(" and deleted="+deleted);
					}
					Map<String,Object> map=baseJdbcDao
							.queryForMap(new String(countSql),taskId);
					if(map!=null&&null!=map.get("total")){
						total=(Long)(map.get("total"));
					}
					selectSql.append(" order by request_id desc "
						+ " limit "+(page-1)*rows+" , "+rows);
					
					list=baseJdbcDao.query(selectSql.toString());
					//翻译
					convert(list);
				
				}catch(Exception e){
					logger.error("查询任务详情异常:"+ e);
				}
				PageListDto<Map<String,Object>> result = new PageListDto<Map<String,Object>>();
				result.setRows(list);
				result.setTotal(total);
				return result;
		
	}
	/**
	 * 翻译
	 * @param list
	 */
	private void convert(List<Map<String, Object>> list) {
		int i=0;
		for(i=0;i<list.size();i++){
				if(list.get(i).get("flag").equals("0")){
					list.get(i).put("flagName", "后台失败记录");
				}
				if(list.get(i).get("flag").equals("1")){
					list.get(i).put("flagName", "比对成功记录");
				}
				if(list.get(i).get("flag").equals("2")){
					list.get(i).put("flagName", "网关失败记录");
				}
				if(list.get(i).get("deleted").equals("0")){
					list.get(i).put("deletedName", "未处理");
				}
				if(list.get(i).get("deleted").equals("1")){
					list.get(i).put("deletedName", "处理");
				}
			}
	}



最终





  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值