最近公司有一个财务的项目,考虑再三后选用wabacus框架进程报表开发,刚开始的时候把wabacus框架整合进jeecms2012里面,因为jeecms2012的报表开发能力非常的薄弱,又不能导出EXCEL,而且要写一大堆的调用,反正开发过SSH的人都知道,那挺浪费时间的。之所以选择WABACUS是因为原来有看过示例,就配置一下XML文件,就可以生成一张报表,这比用SSH开发简单多了。
如一个比较复杂的报表如图:
示例代码:
<page id="doCashAccount1" js="/webresources/script/validate.js">
<report id="report1" title="现金收支平衡1" type="editablelist2" dataexport="richexcel" pagesize="-1" width="1000px" scrollwidth="1500px" >
<display>
<col column="id" displaytype="hidden"/>
<group label="出纳日记账" labelstyleproperty="style='background:;background-color:#CCFFCC;width:400px'" >
<col column="billDate" label="账单日1" clickorderby="true" >
<inputbox type="datepicker" jsvalidate="isNotEmpty(${invalid.isnotempty}),isDate({0}格式不对,必须为yyyy-MM-dd格式)"/>
</col>
<col column="className" label="项目" labelstyleproperty="style='background-color:#3399CC'"/>
<col column="summary" label="摘要" >
<inputbox jsvalidate="isNotEmpty({0}列不允许为空)"/>
</col>
<col column="income" label="收入" />
<col column="expenses" label="支出"/>
<col column="balance" label="余额"/>
</group>
<group label="公司/工程建造师出场费" labelstyleproperty="style='background:;background-color:#CC99FF;width:600px'">
<col column="bidOpenDate" label="开标日期" clickorderby="true" width="150px" datatype="date{yyyy-MM-dd}">
<inputbox type="datepicker2" dateformat="y-mm-dd"/>
</col>
<col column="projectName" label="工程名称" />
<col column="appearFees" label="金额(元)" datatype="float"/>
<col column="appExportDate" label="汇出日期" clickorderby="true" width="150px" datatype="date{yyyy-MM-dd}">
<inputbox type="datepicker2" dateformat="y-mm-dd"/>
</col>
<col column="constor" label="建造师" />
<col column="appAccount" label="账号" />
</group>
</display>
<sql>
<select>
<value>
<![CDATA[select a.id,a.isBeginning,a.companyId,a.billDate,a.summary,a.income,a.expenses,a.balance,
a.classId,a.creator,a.createDate,a.onYear,a.onMonth,
a.bidOpenDate,a.projectName,a.appearFees,a.appExportDate,a.constor,a.appAccount,
b.className
from t_cashaccounting a left join t_class b on a.classId=b.id where ifMove=1 and {#condition#}]]>
</value>
<condition name="txtyear" label="年份" defaultvalue="request{txtyear}">
<value>
<![CDATA[(a.onYear = #data# )]]>
</value>
<inputbox type="selectbox">
<option label="2012" value="2012"></option>
<option label="2013" value="2013"></option>
<option label="2014" value="2014"></option>
<option label="2015" value="2015"></option>
<option label="2016" value="2016"></option>
<option label="2017" value="2017"></option>
<option label="2018" value="2018"></option>
</inputbox>
</condition>
<condition name="txtmonth" label="月份" defaultvalue="request{txtmonth}">
<value>
<![CDATA[(a.onMonth = #data# )]]>
</value>
<inputbox type="selectbox">
<option label="一月" value="1"></option>
<option label="二月" value="2"></option>
<option label="三月" value="3"></option>
<option label="四月" value="4"></option>
<option label="五月" value="5"></option>
<option label="六月" value="6"></option>
<option label="七月" value="7"></option>
<option label="八月" value="8"></option>
<option label="九月" value="9"></option>
<option label="十月" value="10"></option>
<option label="十一月" value="11"></option>
<option label="十二月" value="12"></option>
</inputbox>
</condition>
<condition name="txtclass" label="项目">
<value>
<![CDATA[(a.classId = #data# )]]>
</value>
<inputbox type="selectbox">
<option label="全部" value=""></option>
<option source="@{select id,className from t_class}" label="className" value="id">
</option>
</inputbox>
</condition>
</select>
<update>
update t_cashaccounting( bidOpenDate=@{bidOpenDate},projectName=@{projectName},appearFees=@{appearFees},
appExportDate=@{appExportDate},
constor=@{constor},appAccount=@{appAccount}) where id=@{id};
</update>
</sql>
</report>
</page>
功能讲解如下:
1.可以对数据进行保存,这里面通过一个<update>配置SQL来对数据进行批量保存
2.可以选择部分列或全部列的内容进行导出操作,只要配置EXCEL导出属性即可
3.可以配置报表的查询条件,这里面还可以查询数据表罗列查询条件值,只要配置<condition>查询语句即可
4.表头可以无限制的,如二级表头、三级表头,这里面直接通过多个<group></group>对来实现
意见及建议:个人觉得这个wabacus的框架在开发统计报表时,比其它任何框架都有优势,而且要快得多,当然如果后期再加一个自动生成XML模板文件的话那就更快了,如果真的到了那一步的话,估计普通不懂开发的人都可以开发了。。