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

来源:互联网 发布:mars安卓视频教程源码 编辑:程序博客网 时间:2024/05/22 09:48

直接上代码。废话不多说

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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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实现

/** * 是否为条件展示字段 */@Overridepublic 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;}

/** * 查询是否为查询字段 */@Overridepublic 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;}

@Overridepublic 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{//查询详情记录sqlStringBuffer selectSql=new StringBuffer("select * from " + tableName+ "_data  where task_id=" + taskId);//查询记录数sqlStringBuffer 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 0
原创粉丝点击