报表开发总结(1)

这里写图片描述
这里写图片描述
总结一下这四天做的两张报表,对于里面我新接触的和自己感觉重要的东西都会写出来。
前端用的是miniUI框架(不要问为什么,我从16年毕业到现在,这家公司我所在的项目前端都是miniUI或者easyUI)
后端技术是:spring mvc
数据库用的 :oralce
先简单分析一下这个报表,思路有两个:
(1)把整个展示当做一个datagrid,对于中间的那些中文,可以在数据库中查找出来,然后显示在界面。
(2)分两个datagird,来合并整个画面,这样做起来比较简单,在数据库中只需要每个datagrid各自执行各自的存储就可以,最后在画面进行显示就OK
我采用的是第二种做法,避免在数据库查找过多中文。。。。
下面总结我用到的前端后者后端应该注意的地方:
(1)界面查询条件接产单位,根据不同权限登录显示不同,比如权限为2的登录以后直接显示自己的单位名称,权限为1的登录,显示所有权限为2的单位名称,这里采用了JSTL中的<c:choose></c:choose>标签。
语法格式如下:

<c:choose>
    <c:when test="<boolean>"/>
        ...
    </c:when>
    <c:when test="<boolean>"/>
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

该标签相当于java中的switch,default相当于该标签中的<c:otherwise></c:otherwise>
其中<c:choose>和<c:otherwise>没有属性,<c:when>标签是有属性的。
(2)查询条件中统计年月,要求只可以查询当前年月之前的数据,所以此处有JS校验
当选择的是年月,采用了如下的JS校验:

var now = new Date();
			var month = (now.getMonth()+1)>10?(now.getMonth()+1):"0"+(now.getMonth()+1);
			var yf = now.getFullYear()+"-"+month;
			if(tjrq > yf ){
				mini.alert('不能查询本月之后的报表数据!');
		        return;
			}

其中var tjrq=mini.get('tjrq').getFormValue();获取。
对于选择年,不可以大于当前年,是采用了一个onDrawDate属性,具体如下:

 function onDrawDate(e) {
            var date = e.date;
            var d = new Date();
            if (date.getTime() > d.getTime()) {
                e.allowSelect = false;
            }
        }

(3)关于界面中的单元格合并问题,采用的是miniUI的方法,
需要注意如下事项:
(a)必须在datagrid中写 onLoad=“onLoad”,这样才可以触发合并单元格事件。
(b)必须在后面有mergeCells方法,否则只是触发事件,但是不可以达到合并单元格的效果。
(c)可以找规律,写循环来合并单元格,这样可以减少重复代码量。
代码如下:

function onLoad(e){
		var grid = e.sender;
		var merges = [
		              {rowIndex:1,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:1,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:1,columnIndex:11,rowSpan:1,colSpan:5},
		              
		             {rowIndex:2,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:2,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:2,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:3,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:3,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:3,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:4,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:4,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:4,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:5,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:5,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:5,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:6,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:6,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:6,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:7,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:7,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:7,columnIndex:11,rowSpan:1,colSpan:5},
		              
		              {rowIndex:8,columnIndex:1,rowSpan:1,colSpan:5},
		              {rowIndex:8,columnIndex:6,rowSpan:1,colSpan:5},
		              {rowIndex:8,columnIndex:11,rowSpan:1,colSpan:5}
		             ];
		
		   grid.mergeCells(merges);
	}     
	

(4)对于标题居中需要使用headerAlign="center"属性,从后台查找出来的数据默认是左对齐的,如果需要居中显示则需要使用align="center"属性

(5)这个界面我使用了两个mini-datagrid,所以在查找数据的时候可以这样搞,因为后台走的是两个不同的方法。

grid.load(param);
grid1.load(param);

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
报表开发的流程可以分为以下几个步骤: 1. 确定需求:首先需要与相关人员沟通,了解他们对报表的需求和期望。明确需要展示的数据内容、报表的格式和样式等。 2. 数据准备:根据需求,从系统中提取所需的数据。这可能涉及到数据库查询、数据清洗和转换等操作。 3. 设计报表结构:根据需求和数据准备的结果,设计报表的结构。这包括确定报表的布局、表头、表格、图表等元素的位置和样式。 4. 编写报表模板:使用报表开发工具,如基于.Net Framework的SwebDesigner或基于jeecg的开发工具,根据设计好的报表结构编写报表模板。这包括添加数据源、定义数据字段、设置表格样式等。 5. 数据填充:将准备好的数据填充到报表模板中。根据数据源和字段的对应关系,将数据填充到相应的位置。 6. 格式调整:根据实际需求,对报表进行格式调整。可以调整字体、颜色、边框等样式,以及添加合计行、分组等功能。 7. 预览和测试:在报表开发工具中预览和测试生成的报表。确保报表的数据准确性和样式符合要求。 8. 导出和发布:将生成的报表导出为常见的格式,如PDF、Excel等,或者将报表发布到系统中供用户访问和使用。 总结起来,报表开发的流程包括确定需求、数据准备、设计报表结构、编写报表模板、数据填充、格式调整、预览和测试、导出和发布等步骤。根据具体的开发工具和技术架构,可能会有一些差异。 #### 引用[.reference_title] - *1* *3* [盘点3个.Net开发的WMS仓库管理系统](https://blog.csdn.net/daremeself/article/details/129065364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java开发的wms仓库管理系统源码(PC+Android)](https://blog.csdn.net/weixin_39823269/article/details/111073030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值