问题描述
项目最初开发是采用SSH框架的,其中有个功能是从数据库表中获取数据,然后生成报表现在想对这个功能进行扩展,需要从另外的表中获取数据,生成同样格式的报表。即现在用户可以选择,是从表A中获取数据,还是从表B中获取数据,然后生成报表。我想请教各位高手,我是应当在DAO层、Service层中重新实现一遍生成报表的功能,还是在原来的代码当中加ifelse进行判断呢?我的困惑是,如果我重新实现了一遍生成报表的功能,就相当于重复造轮子,以后还要维护相同的两套代码;如果我直接修改原来的代码,那就破坏了原来的完整性,原来功能的安全没法得到保证。我该怎么做才是最好的呢?
解决方案
本帖最后由 yuge573691195 于 2015-01-06 15:34:06 编辑
解决方案二:
封装变化啊。
解决方案三:
可以抽取功能啊将报表要查询的表的名称动态给过去,然后动态的查询就可以了。写的sql中,表名也作为参数传过去,然后接收查询的数据列表,进行遍历填充报表。
解决方案四:
1.报表格式相同说明你构造报表的数据结构、样式、计算逻辑都不变。也就是说这些都可以保留,不用重写或者复制。2.只是你数据源变了而已,只需要改变数据源的获取,如果是一个库,就把表名、字段名集合(如果是视图也是一样)传进来,动态去查询你要的结果。你只需要改变你数据源的获取、数据与报表行列的映射关系即可。3.如果你用的第三方的报表,例如润乾等等,建议你重做一张,因为用第三方报表的好处就是,你要是不太关心样式,一个1年经验的一天能出50张(当然数据结构、逻辑需求都很清楚的情况下)。
时间: 2024-10-29 07:03:35