using FoodLabeling.Application.Contracts.Dtos.Common; using FoodLabeling.Application.Contracts.Dtos.Reports; using FoodLabeling.Application.Contracts.Dtos.UsAppLabeling; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Services; namespace FoodLabeling.Application.Contracts.IServices; /// /// Reports(Print Log / Label Report)管理端接口 /// public interface IReportsAppService : IApplicationService { /// /// Print Log 分页列表;角色 admin 可查全部,否则仅当前用户打印记录。 /// Task> GetPrintLogListAsync(ReportsPrintLogGetListInputVo input); /// /// Print Log 导出 PDF(筛选与列表一致,最多 5000 条) /// Task ExportPrintLogPdfAsync(ReportsPrintLogGetListInputVo input); /// /// Print Log 全量导出 Excel(筛选与列表一致;排序与列表 PrintedAt 规则一致;最多 5000 条) /// Task ExportPrintLogExcelAsync(ReportsPrintLogGetListInputVo input); /// /// 根据历史任务重打(与 App 入参一致);admin 可重打任意用户任务,否则仅本人任务。 /// Task ReprintPrintLogAsync(UsAppLabelReprintInputVo input); /// /// Label Report 统计(卡片 + 分类柱数据 + 7 日趋势 + Top 产品); /// admin 统计全部门店;非管理员仅统计 userlocation 绑定门店内全部打印任务(不按 CreatedBy 过滤)。 /// Task GetLabelReportAsync(ReportsLabelReportQueryInputVo input); /// /// Label Report 导出 PDF /// Task ExportLabelReportPdfAsync(ReportsLabelReportQueryInputVo input); /// /// 按模板统计打印标签数量(分页列表:模板名称 + 打印数)。 /// /// /// 统计 fl_label_print_task,按 TemplateId 分组;数据范围与 label-report 一致: /// 管理员可查全部门店(可按 Company/Region/Location 收窄);非管理员仅 userlocation 绑定门店内全部打印任务。 /// /// 示例请求: /// ```http /// GET /api/app/reports/template-print-stat-list?SkipCount=1&MaxResultCount=20&StartDate=2026-04-07&EndDate=2026-05-18 /// Authorization: Bearer {token} /// ``` /// /// 参数说明: /// - SkipCount / MaxResultCount: 分页(SkipCount 为 1-based 页码约定,与项目其它列表一致) /// - StartDate / EndDate: 统计区间(含起止日;默认近 30 天至今天) /// - PartnerId / GroupId / LocationId: 组织范围筛选 /// - Keyword: 模板名称模糊匹配 /// - Sorting: 可选 PrintedCount desc(默认按打印数降序) /// /// 分页与筛选条件 /// 各模板打印数量列表 /// 成功返回分页统计 /// 入参无效或未登录 /// 服务器错误 Task> GetTemplatePrintStatListAsync( ReportsTemplatePrintStatGetListInputVo input); }