using System.Collections.Generic; using System.Threading.Tasks; using MDL.Models; namespace DAL.Interfaces { /// /// 标签历史扫描记录仓储接口 /// public interface ILabelScanRepository { /// /// 创建标签扫描记录 /// /// 标签扫描记录实体 /// 创建的记录ID Task CreateAsync(LabelScanEntity entity); /// /// 根据中性面单单号获取标签扫描记录列表 /// /// 中性面单单号 /// 标签扫描记录列表 Task> GetByNeutralWaybillNumberAsync(string neutralWaybillNumber); Task> GetByNeutralWaybillNumbersAsync(List neutralWaybillNumbers); /// /// 根据参考号获取标签扫描记录列表 /// /// 参考号 /// 标签扫描记录列表 Task> GetByReferenceNumberAsync(string referenceNumber); /// /// 根据尾程跟踪单号获取标签扫描记录列表 /// /// 尾程跟踪单号 /// 标签扫描记录列表 Task> GetByFinalMileTrackingNumberAsync(string finalMileTrackingNumber); /// /// 根据客户ID获取标签扫描记录列表 /// /// 客户ID /// 标签扫描记录列表 Task> GetByCustomerIdAsync(int customerId); /// /// 根据客户ID和中性面单单号获取标签扫描记录列表 /// /// 客户ID /// 中性面单单号 /// 标签扫描记录列表 Task> GetByCustomerIdAndWaybillNumberAsync(int customerId, string neutralWaybillNumber); /// /// 统计客户的订单扫描次数 /// /// 客户ID /// 中性面单单号(可选,不提供则统计所有订单) /// 扫描次数 Task CountScansByCustomerAndWaybillAsync(int customerId, string neutralWaybillNumber = null); /// /// 获取客户的扫描记录分组统计 /// /// 客户ID /// 按订单分组的扫描统计信息 Task> GetScanStatsByCustomerAsync(int customerId); /// /// 更新标签扫描记录 /// /// 标签扫描记录实体 /// 是否更新成功 Task UpdateAsync(LabelScanEntity entity); /// /// 获取所有标签扫描记录 /// /// 标签扫描记录实体列表 Task> GetAllAsync(); /// /// 分页获取标签扫描记录 /// /// 页码 /// 每页大小 /// 排序字段 /// 排序顺序 /// 客户ID /// 参考号 /// 中性面单单号 /// 尾程跟踪单号 /// 扫描结果 /// 标签扫描记录DTO列表和总记录数 Task<(List, int)> GetByPageAsync(int page, int pageSize, string sortBy, string sortOrder, int? customerId, string referenceNumber, string neutralWaybillNumber, string finalMileTrackingNumber, int? result, string startCreatedAt, string endCreatedAt); /// /// 根据中性面单单号获取最新的扫描记录 /// /// 中性面单单号 /// 最新的标签扫描记录 Task GetLatestScanByWaybillAsync(string neutralWaybillNumber); /// /// 根据日期范围获取扫描记录 /// /// 开始日期 /// 结束日期 /// 标签扫描记录列表 Task> GetByDateRangeAsync(System.DateTime startDate, System.DateTime endDate); } }