模块管理常规功能自定义系统的设计与实现(34--终级阶段 综合查询[1])

综合查询(1)

前面已经架构好了一个销售管理系统,看看功能也挺多,也基本够用了。但是仔细分析一下就会发现,前面的设计都是属于数据操纵方面的,虽然有导航、筛选功能,但是对于统计分析来说还是远远不够用的。为了能够进行灵活的统计分析和查询,经过多次的改进,生成了我现在的综合查询体系。

整个综合查询体系包括以下几个方面的内容:

1、字段的选择;

2、查询条件的设置;

3、基准模块的选择;

4、聚合字段类型的设置;

5、多级分组的设置;

6、综合查询方案的管理;

7、图表分析;

8、数据导出;

整个综合查询中使用的表和字段定义与模块使用的完全一样,也是靠表间的上下级关系和所选择的字段来生成sql语句,但是要比模块操作的sql要更加复杂。对于许多人来说,这也许是你们见过的功能最强大的综合查询。

下面展示一下综合查询的主页面,介绍一下主页面。

在上图界面中:

1、最左边一块是一个导航区域,放置了当前选择的字段,还可以放置条件模块的具体值;

2、中间上面是一个toolbar ,里面包括查询方案的combo,里面放置了各种已经设置好的查询方案,“字段选择”按钮,是用来选择你要显示的字段的。“基准模块”是用于来确认你所选择的若干个模块中哪个作为主模块。后面还有保存,另存,删除都是方案的操作按钮。

3、下面一块为一个日期期间设定的菜单,后面跟着若干个模块,或者模块中的某个字段,可以用来设计查询条件。

4、再下面是条件显示grid,显示当前所设置的条件项目和条件值,以及满足条件的记录的个数。

5、下面一块是结果grid,在结果grid上面有一个toolbar,上面有的功能为:分组设置,是否显示明细,是否显示汇总,数据导出,打印和图表操作。最后还有一个grid自动列宽适应的按钮。

看上去很普通的一个界面,下面来分别讲讲各个部分有何功能。

一、字段的选择:一个查询方案的首要选择是字段,可以选择一个模块或几个模块中的字段。只有一个要求:所有的模块必须都有相互关系。如果二个模块找不到任何相关联的关系,那么就会是一个笛卡尔积了。在选择好了字段以后,会自动判断是否有这种情况的发生。选择字段的界面如下:

在上图中,你在左边模块列表中选择了一个模块,中间区域就会出来该模块的所有字段,并且会将已经选中的字段打勾。如果你点击右边的已选中的一个字段,那么中间区域也会自动展示该字段所在的模块的所有字段。上图中我们选择了订单中的5个字段,和订单明细列表中的7个字段。

下面来看看我单击右边的订单“商品”字段后的界面样子。

上面不同的字段,用不同的颜色来表示,黑色表示字符串型的,蓝色表示数值型,黄色表示日期型,绿色表示布尔型。

上面提到了不能够选择二个毫无关系的模块,下面我另外加个二个附件类型的字段,看看保存的时候有什么提示。

点击“确定返回” 按钮,就会弹出如下对话框:

第一步字段选择操作起来绝对简单,另外还可以对每个字段设置筛选条件,这个以后再说。再贴一张图,是选择了这些字段后的查询结果。以“订单明细”作为基准模块。(最上面的一张是以“订单”作为基准模块的)。

在上图中,单击“无锡太乙公司”显示如下:

模块管理常规功能自定义系统的设计与实现(34--终级阶段 综合查询[1])

时间: 2024-11-06 12:46:12

模块管理常规功能自定义系统的设计与实现(34--终级阶段 综合查询[1])的相关文章

模块管理常规功能自定义系统的设计与实现(36--终级阶段 综合查询[3])

综合查询(3)--查询条件的设置2 不仅仅对于模块才有这样方便的条件选择方式,对模块的字段也可以设置.例如对于"省份"中有个字段是"所属区域",这个字段不是一个manyToOne字段,而是一个字符串字段,里面就是存着"东北地区"."华北地区"等等这样的具体的字符串值.对于这样的字段也很容易将其放在toolbar上供选择.在模块字段中找到"所属区域"这个字段,修改字段的属性,让这个字段可以加到综合查询的too

模块管理常规功能自定义系统的设计与实现(33--权限设计[3])

权限设计(3) 三.字段的只读权限.对于可以修改记录的操作员,可以进一步限制哪些字段对于他是不可修改的.这个功能很少用到,是用户提出来的,我就顺便加了进去.实现这个功能也很简单建立只读字段角色,然后加入模块的字段,最后再将角色加到操作员上即可.前台在解释生成edit form 的时候,将这个字段的只读属性置为true即可.后台Hibernate在新增或保存的时候,可以把只读字段过滤掉,不能保存或不能修改即可. 四.字段的可视权限.有时候某些字段你不希望被某些群组的操作员看到,那么就设置一个隐藏字

模块管理常规功能自定义系统的设计与实现(28--多个模块之间的关联[4])

多个模块之间的关联(4) 前面搭建了客户以及客户父模块的一个分支,另一个分支是产品线,还有一个是业务员,然后这三条线归并到订单之上. 前面我贴了我要搭建系统的一张图,现在贴一下数据库的表和其之间的关系情况. 上图中表和我设计的简易销售管理系统是完全一致的.再看一下的模块图,稍微记下下其中的关系,对于看懂下面的内容很有必要. 对于业务员,产品,订单三条分支我建立的过程就不介绍了.现在来看看架构好的菜单: 再看看加好的各个模块的页面: 1.部门和业务员: 2.商品类别 3.商品 4?订单 订单明细

模块管理常规功能自定义系统的设计与实现(52--功能更新[2] 对百分比字段的操作)

功能更新(2)  对百分比字段的操作 百分比数据,或者是比率数据是一个比较难处理的字段,难点并不在于单条记录之中,而是在于汇总和分类汇总的时候. 先来看看我系统中的一个模块中的一个比率字段: 上图中的  已支付比例,这个字段是  已支付金额 / 结算金额,这个字段在此合同模块中可以作为一个计算字段来保存在数据库中,甚至可以不保存在数据库中,直接在bean里作为一个计算的属性. 现在问题就来了,如果要计算所有合同的已支付比例,那么就不是简单加起来的问题了,要把分子和分母分别加起来再除才会得到总计的

模块管理常规功能自定义系统的设计与实现(29--多个模块之间的关联[5])

多个模块之间的关联(5) 系统全部架构好了,下面来看看一个很远的关系,"省份","订单"之间的关联.在省份模块里显示该省的订单的个数以及金额和收款情况.跟前面的设计一样,给省份增加"附加字段". 然后把选入的字段加入到 grid 当中. 再来看看子模块市下面的菜单: 下面显示一下选择了订单菜单项的界面. 其他导航 以上为模块间关系的一个例子.上面有个缺点就是,我要看某个省份2013年度的订单汇总,在省份模块里就没有办法做到,这个问题放到以后去解决

模块管理常规功能自定义系统的设计与实现(23--二个模块之间的关联[1])

"省"."市"二个模块之间的关联的操作(1) 一. "市"模块定义好了,我们先来新增1个市,看看和"省"的关联操作. 上面显示了"市"的模块界面,在导航栏中为省份的导航,我们看到只有"江苏省"一个,其他的在哪里呢. 一个模块的父模块的导航有一个选项,叫"显示无记录的项目",此选项默认不选中,也就是说省里面还没有市的话,那个省将不放在导航列表中,看下图. 二.记录拖放操

模块管理常规功能自定义系统的设计与实现(22--第二个模块的加入)

模块"市"的设计与加入 现在重复加入"省"模块的过程,来加入市的模块. 1.建立数据表City CREATE TABLE [dbo].[City]( [tf_cityId] [nvarchar](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [tf_provinceId] [nvarchar](2) COLLATE Chinese_PRC_CI_AS NOT NULL, [tf_name] [nvarchar](50) COLLATE

模块管理常规功能自定义系统的设计与实现(37--终级阶段 综合查询[4])

综合查询(4)--查询条件的设置3 这节来看看日期字段如何设置查询条件.我对日期字段做了一个分类,使其可以按年,年季,年月,年月日的几种方式来设置条件.另外每一个模块可以设置一个日期字段,当该模块作为查询的基准模块时,在条件设置toolbar 上第一个菜单即是日期选择菜单,选择的值将会作为该日期字段的条件.例如对于"订单"模块,为其设置了日期字段为"tf_date". 在综合查询的模块中显示为以下: 上图是选中了基准模块为"订单"时,查询期间选择

模块管理常规功能自定义系统的设计与实现(24--二个模块之间的关联[2])

父子模块之间关联操作(2) 上一节介绍了子模块中对父模块的一些相关操作.这一节来看看父模块中对子模块可以进行什么样的操作. 一.进入子模块的时候,限定父模块值.选择一个"省"记录,查看省下面的所有市的记录. 在选择了"江苏省"记录之后,按toolbar上面的"市",会进入市模块的界面.(在前一节的基础上,我又给河北省和浙江省增加了市,在下面的界面中将会看不到) 二.加入子模块的记录和聚合字段.上节中介绍了可以将父模块中的字段加入到子模块的grid

模块管理常规功能自定义系统的设计与实现(21--第二阶段设计目标)

第二阶段设计目标 前面的章节讲了建立单个模块的各种功能,从现在开始要加入若干个具有关联的模块,使其协同工作.我设计了一个简易的销售管理系统,系统的结构如下图所示,从本节开始将逐步的搭建此系统. 在上图中,各模块之间都能通过一定的路径产生联系,而具有关联的二个模块具有直接的关系,例如省是市的父模块,市是省的子模块:客户单位是市的子模块也是省的子模块.这种上下级关系将会是处理的重点.各模块间的关系要明确,不能出现关系不明确或者循环引用的模块,那样权限的设置将会有问题. 例如有如下模块结构: 在上图中