数据地图--后台查询代码

DHTMLXtree:datamap_search.js initTree()

  • 数据地图--后台查询代码_第1张图片
    前台展示.png
由前台JS可以看出,后台要做的工作:
  • 返回值是json类型
  • json内有一个元素是msg,树结构会通过msg展现
XMLString拼接规则:DataMapSearchImpl.java initTree
  • 数据地图--后台查询代码_第2张图片
    XML.png
  • 头部信息固定

  • 对于XML本身的自有的斜线是是"/",需要对引用进行转义的字符是""。

  • 节点三要素是id,text,open。
    1. id是节点id,不能重复。如果当前节点没有id,可按顺序生成一个(必须要)
    2. text是节点展示的名字
    3. open表示当前节点是否自动打开

  • 这里只有两层树结构所以可以这么简单的写出来,如果有不确定的树结构的时候可以尝试使用递归方法调用

数据地图查询代码解析

有两次查询,一次是echart图表查询(loadEchartData方法),另外一个是datagrid查询(searchDataMap方法)。为了保证这两个查询的数据的一致性,我将这两个查询的关键代码抽成一个公共方法,共享拼装sql(fourLevelQuery方法)。
  • fourLevelQuery是一个四阶查询方法

  • 第一阶:获取查询结果落在表名以及表字段上的结果集

    • 涉及表:
      1. stnd_area_rela 模式与地域关系表
      2. stnd_dict dict_code为region_domain的部分,为地域字典的配置
      3. stnd_data_distri 数据地图分布表
      4. stnd_dict dict_code为business_domain的部分,为业务域的部分
        stnd_dict dict_code为system_domain的部分,为系统域的部分
    • 代码片段解析:

    片段 1 .
    数据地图--后台查询代码_第3张图片
    Paste_Image.png

    1. stnd_area_rela表是一个模式对应数个地域代码
    2. stnd_dict dict_code为region_domain的部分 配置一个地域代码对应一个地域名称
    3. group_concat 将一个schema_id对应的dict_text拼接,按逗号分隔。
    4. 将结果作为area视图
    这个操作的数据量很少,应该不会影响效率。
    片段 2 .


    数据地图--后台查询代码_第4张图片
    Paste_Image.png
         1.将stnd_data_distri表跟片段1以及stnd_dict表的业务部分三个表关联起来。有一个大表stnd_data_distri里面有1W条左右的数据
         2.如果查询结果落在db_name,scheme_name,table_name,table_coments,busi_type,area_val上,认为是有效的。
    

片段 3

数据地图--后台查询代码_第5张图片
Paste_Image.png
      对于一阶查询,只取查询结果落在表名和表备注上的。
    • 第二阶:获取查询结果落在表级,但是没有落在表名和表字段上的结果集

      • 涉及表: 跟一阶查询一致
        * 思路:先获取全集,再获取第一阶的结果,最后求差集。mysql求差集的方式是利用left join
    • 代码片段解析:
      片段1 :

数据地图--后台查询代码_第6张图片
Paste_Image.png
     1. 求全集与第一阶查询的差别在于没有加最后那个and限制条件

片段2:

数据地图--后台查询代码_第7张图片
Paste_Image.png
    1 . 获取全集的id
    2 . 获取限制集id
    3 . 两个id不能相同(使用别名)
    4 . 将两个结果集相同的放到同一行(id相同即可)
    5 . 取全集与限制集未公共的部分--即为补集
    6 . 千万不可对结果集排序(排序后会打乱原有次序)
    • 第三阶 获取查询结果落在字段名为用语的部分
数据地图--后台查询代码_第8张图片
Paste_Image.png
    1. 关键代码是ter_name 
    2. 为什么会有蓝色部分?如果只有term_name,假如没有输入用语,会有什么现象?
    • 第三阶 获取查询结果落在字段名为字段名以及字段备注的部分
数据地图--后台查询代码_第9张图片
Paste_Image.png
    1. 关键代码是colum_name,colum_comments
    2. 为什么蓝色部分也要加?思考一下。

你可能感兴趣的:(数据地图--后台查询代码)