Files
ledgerly/src/main/java/com/example/finance/service/StatisticsService.java
T
rosercode 1df6e23510 feat: 账单导入、统计维度扩展与收支记录增强
- 账单导入:新增支付宝账单解析/导入接口,按 external_no 去重;前端拖拽上传 + 预览确认弹窗
- 分类可选:category_id 允许为空,支持「未分类」筛选,新增按类型一键批量设置分类
- 备注隐藏:新增 remark_hidden 与切换接口,列表默认显示 ****** 并可单格查看/取消隐藏,导出同步隐藏
- 统计扩展:新增 /statistics/summary、/statistics/group,支持日/周/月/季/年/支付方式/分类/类型维度与时间范围过滤
- 收支记录:金额区间过滤、金额/交易时间列排序、分页快速跳转、本页收支结余汇总、交易时间列前置并合并创建时间提示
- 用户偏好:统计面板与列表的筛选条件持久化到 localStorage,进入自动还原
- 其他:新增默认分类种子脚本(含美容美发)、commons-csv 依赖、上传大小限制 10MB、Vite 监听 0.0.0.0
2026-09-17 13:19:59 +08:00

65 lines
2.1 KiB
Java

package com.example.finance.service;
import com.example.finance.dto.StatisticsQuery;
import com.example.finance.dto.StatisticsRangeQuery;
import com.example.finance.enums.StatisticsDimension;
import com.example.finance.vo.CategoryStatisticsVO;
import com.example.finance.vo.MonthlyStatisticsVO;
import com.example.finance.vo.StatisticsGroupVO;
import com.example.finance.vo.StatisticsSummaryVO;
import com.example.finance.vo.TrendStatisticsVO;
import java.util.List;
/**
* 统计服务接口,提供月度收支统计、分类统计和趋势分析功能。
*/
public interface StatisticsService {
/**
* 获取月度收支统计(总收入、总支出、结余、交易笔数)
*
* @param userId 用户ID
* @param query 统计查询条件(年份、月份)
* @return 月度统计结果
*/
MonthlyStatisticsVO getMonthlyStatistics(Long userId, StatisticsQuery query);
/**
* 获取分类维度的统计数据(各分类的金额、笔数、占比)
*
* @param userId 用户ID
* @param query 统计查询条件(年份、月份)
* @return 分类统计列表
*/
List<CategoryStatisticsVO> getCategoryStatistics(Long userId, StatisticsQuery query);
/**
* 获取每日收支趋势统计数据
*
* @param userId 用户ID
* @param query 统计查询条件(年份、月份)
* @return 按日排列的趋势统计列表
*/
List<TrendStatisticsVO> getTrendStatistics(Long userId, StatisticsQuery query);
/**
* 获取指定时间范围内的统计概览(收支汇总、日均、最大单笔、平均每笔)
*
* @param userId 用户ID
* @param query 时间范围查询条件
* @return 统计概览
*/
StatisticsSummaryVO getSummary(Long userId, StatisticsRangeQuery query);
/**
* 按指定维度对时间范围内的交易进行分组统计
*
* @param userId 用户ID
* @param query 时间范围查询条件
* @param dimension 统计维度
* @return 分组统计列表
*/
List<StatisticsGroupVO> getGroup(Long userId, StatisticsRangeQuery query, StatisticsDimension dimension);
}