需求
用户在创建采购单,页面上明显统计出采购单中所有药品采购总量、采购金额总量。
总计范围:符合查询条件的所有记录的采购量、采购金额。
1.2 实现
1.2.1 dao
统计符合查询条件的采购单药品明细的采购量、采购金额。
实现思路:
对符合查询条件的采购单明细列表的采购量、采购金额求总和,注意不是对一页的数据求总计 。
select sum(nvl(yycgdmx.cgl, 0)) cgl, sum(nvl(yycgdmx.cgje, 0)) cgje
from yycgdmx2014 yycgdmx, yycgd2014 yycgd, useryy, ypxx, usergys
where yycgdmx.yycgdid = yycgd.id
and yycgd.useryyid = useryy.id
and yycgdmx.ypxxid = ypxx.id
and yycgdmx.usergysid = usergys.id
---指定采购单的id
and yycgdmx.yycgdid='2014101220'
mapper.xml
<!-- 采购单明细总计(采购量、采购金额) -->
<select id="findYycgdmxListSum" parameterType="yycg.business.pojo.vo.YycgdQueryVo"
resultType="yycg.business.pojo.vo.YycgdmxCustom">
select sum(nvl(yycgdmx.cgl, 0)) cgl, sum(nvl(yycgdmx.cgje, 0)) cgje
from yycgdmx${businessyear} yycgdmx, yycgd${businessyear} yycgd, useryy, ypxx, usergys
where yycgdmx.yycgdid = yycgd.id
and yycgd.useryyid = useryy.id
and yycgdmx.ypxxid = ypxx.id
and yycgdmx.usergysid = usergys.id
<!-- 只查询某个采购单下药品明细 -->
<include refid="query_yycgdmx_where" />
<!-- 采购单查询条件 -->
<include refid="query_yycgd_where" />
<!-- 药品查询条件 -->
<include refid="yycg.business.dao.mapper.YpxxMapperCustom.query_ypxx_where" />
</select>
Mapper.java
// 采购单药品明细查询列表金额总计(采购量,采购金额)
public List<YycgdmxCustom> findYycgdmxListSum(YycgdQueryVo yycgdQueryVo)
throws Exception;
1.2.2 service
接口功能:采购单明细总计
接口参数:采购单id、查询条件
// 采购单药品明细查询列表总计(采购量,采购金额)
@Override
public List<YycgdmxCustom> findYycgdmxListSum(String yycgdid,
YycgdQueryVo yycgdQueryVo) throws Exception {
yycgdQueryVo = yycgdQueryVo != null ? yycgdQueryVo : new YycgdQueryVo();
YycgdmxCustom yycgdmxCustom = yycgdQueryVo.getYycgdmxCustom();
yycgdmxCustom = yycgdmxCustom != null ? yycgdmxCustom
: new YycgdmxCustom();
yycgdmxCustom.setYycgdid(yycgdid);
yycgdQueryVo.setYycgdmxCustom(yycgdmxCustom);
String businessyear = yycgdid.substring(0, 4);
yycgdQueryVo.setBusinessyear(businessyear);
return yycgdMapperCustom.findYycgdmxListSum(yycgdQueryVo);
}
1.2.3 在datagrid中展示总计行
Datagird加载 的json中定义footer
1.2.4 action
在采购单修改action方法中,在采购单明细结果集json方法中,添加取总计结果集代码,将总计结果集添加datagrid的footer中。
实现方法:
在统一数据列表结果类(DataGridResultInfo)添加属性footer。
修改:CgdAction.java中queryYycgdmx_result方法。
if (total > 0) {
List<YycgdmxCustom> sumlist = cgdService.findYycgdmxListSum(id,
yycgdQueryVo);
dataGridResultInfo.setFooter(sumlist);
}
1.2.5 页面
在加载明细列表的方法中,添加:
在datagrid中对总计行的显示样式和普通行的显示样式不一样,如何区别?
使用普通行中不为空的字段(列),作为区别的标记。
例如: