/*** 按单位分类汇总指定日期范围内的交易数据* @param startDate 开始日期* @param endDate 结束日期* @return 按单位分类的汇总结果*/public List<UnitSummary> summarizeByUnit(Date startDate, Date endDate) {String sql = "SELECT " +" unit_code, " +" unit_name, " +" COUNT(*) as transaction_count, " +" SUM(amount) as total_amount, " +" AVG(amount) as avg_amount " +"FROM transaction_records " +"WHERE transaction_date BETWEEN :startDate AND :endDate " +"GROUP BY unit_code, unit_name " +"ORDER BY total_amount DESC";Map<String, Object> params = new HashMap<>();params.put("startDate", startDate);params.put("endDate", endDate);return namedParameterJdbcTemplate.query(sql, params, new RowMapper<UnitSummary>() {@Overridepublic UnitSummary mapRow(ResultSet rs, int rowNum) throws SQLException {UnitSummary summary = new UnitSummary();summary.setUnitCode(rs.getString("unit_code"));summary.setUnitName(rs.getString("unit_name"));summary.setTransactionCount(rs.getInt("transaction_count"));summary.setTotalAmount(rs.getBigDecimal("total_amount"));summary.setAvgAmount(rs.getBigDecimal("avg_amount"));return summary;}});}/*** 批量查询并分类汇总(组合操作)* @param startDate 开始日期* @param endDate 结束日期* @return 包含原始记录和汇总结果的对象*/public TransactionSummaryResult getTransactionSummary(Date startDate, Date endDate) {List<TransactionRecord> records = findRecordsByDateRange(startDate, endDate);List<UnitSummary> summaries = summarizeByUnit(startDate, endDate);return new TransactionSummaryResult(records, summaries);}
}// 组合查询结果类
@Data
@AllArgsConstructor
public class TransactionSummaryResult {private List<TransactionRecord> records;private List<UnitSummary> summaries;
}