计算表格的总计

计算总和

pageAndOrder.addFooterSum(pageAndOrder.ClassName, WarehouseWarrantDetail.class.getName(), null);
        pageAndOrder.addFooterSum("ROUND(putNum,0)", null, "putNum");
        pageAndOrder.addFooterSum("putNum*price", null, "ztotalAmount");
        pageAndOrder.addFooterWhere("warehouseWarrant.id",vo.getWarehouseWarrantId());
        PagedQuery result = new PagedQuery();
        result.setSession(this.getCurrentSession());
        pageAndOrder.setFooter(result.getFooter(pageAndOrder));
        query = this.getCurrentSession().createSQLQuery("SELECT COUNT(*) "+sql.toString());

        if(StringUtil.isNotEmpty(vo.getProductName())){
            query.setParameter("proName", "%"+vo.getProductName()+"%");
        }
        if(StringUtil.isNotEmpty(vo.getBrandName())){
            query.setParameter("brandName", "%"+vo.getBrandName()+"%");
        }
        if(StringUtil.isNotEmpty(vo.getProductCode())){
            query.setParameter("code", "%"+vo.getProductCode()+"%");
        }
        if(StringUtil.isNotEmpty(vo.getNormModel())){
            query.setParameter("nromModel", "%"+vo.getNormModel().toUpperCase().replaceAll(" ", "")+"%");
        }
        if(StringUtil.isNotEmpty(vo.getCategoryName())){
            query.setParameter("categoryName", "%"+vo.getCategoryName()+"%");
        }
        pageAndOrder.setTotalRows(Integer.parseInt(query.uniqueResult().toString()));
### 使用Freemarker生成包含总计行的Word表格 为了实现在Word文档中创建带有总计行的表格,可以通过定义一个FTL模板来完成此操作。下面展示了一个具体的例子,该例子展示了如何通过遍历数据列表并计算特定列的总和,在表格底部添加总计行。 #### 定义数据模型 假设有一个Java对象`InvoiceItem`表示发票项,它有三个属性:描述(description),数量(quantity)以及单价(pricePerUnit)。另外还有一个名为`invoiceItems`的数据集合用于存储多个`InvoiceItem`实例。 ```java List<InvoiceItem> invoiceItems = Arrays.asList( new InvoiceItem("Product A", 2, 10), new InvoiceItem("Product B", 5, 20), ... ); ``` #### 创建FTL模板 接下来编写一个简单的FTL模板文件,用来渲染上述数据结构成Word中的表格形式: ```ftl <table> <tr> <th>Description</th><th>Quantity</th><th>Price Per Unit</th><th>Total Price</th> </tr> <#assign totalAmount=0 /> <#list invoiceItems as item> <tr> <td>${item.description}</td> <td align="right">${item.quantity}</td> <td align="right">$${item.pricePerUnit?string.currency}</td> <td align="right">$${(item.quantity * item.pricePerUnit)?string.currency}</td> <#-- 计算总价 --> <#assign totalAmount += (item.quantity * item.pricePerUnit)> </tr> </#list> <!-- 添加总计行 --> <tr style="font-weight:bold;"> <td colspan="3">Total:</td> <td align="right">$${totalAmount?string.currency}</td> </tr> </table> ``` 这段代码会迭代`invoiceItems`列表,并为每一项生成一行记录。同时还会累加每件商品的小计金额至变量`totalAmount`中以便于最终输出整个订单的总额[^1]。 当这个模板被处理后将会得到如下所示的结果(假设有两条记录): | Description | Quantity | Price Per Unit | Total Price | |-------------|----------|----------------|-------------| | Product A | 2 | $10 | $20 | | Product B | 5 | $20 | $100 | | **Total:** | | | **$120** | 这种做法不仅能够有效地管理复杂度较高的模板逻辑,还允许开发者轻松调整样式和其他细节而无需修改业务逻辑部分[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值