using OrpaonVision.Core.Results;
using OrpaonVision.Model.Production;
namespace OrpaonVision.Core.Production;
///
/// 运行部件判定仓储接口。
///
public interface IRunPartJudgmentRepository
{
///
/// 创建部件判定。
///
/// 部件判定模型。
/// 取消令牌。
/// 创建结果。
Task> CreateAsync(RunPartJudgmentModel judgment, CancellationToken cancellationToken = default);
///
/// 更新部件判定。
///
/// 部件判定模型。
/// 取消令牌。
/// 更新结果。
Task> UpdateAsync(RunPartJudgmentModel judgment, CancellationToken cancellationToken = default);
///
/// 根据ID获取部件判定。
///
/// 判定ID。
/// 取消令牌。
/// 部件判定模型。
Task> GetByIdAsync(Guid judgmentId, CancellationToken cancellationToken = default);
///
/// 根据层级会话ID获取部件判定列表。
///
/// 层级会话ID。
/// 取消令牌。
/// 部件判定列表。
Task>> GetByLayerSessionIdAsync(Guid layerSessionId, CancellationToken cancellationToken = default);
///
/// 根据产品会话ID获取部件判定列表。
///
/// 产品会话ID。
/// 取消令牌。
/// 部件判定列表。
Task>> GetBySessionIdAsync(Guid sessionId, CancellationToken cancellationToken = default);
///
/// 根据结果获取部件判定列表。
///
/// 判定结果。
/// 取消令牌。
/// 部件判定列表。
Task>> GetByResultAsync(RunPartJudgmentResult result, CancellationToken cancellationToken = default);
///
/// 分页查询部件判定。
///
/// 页索引。
/// 页大小。
/// 产品类型编码(可选)。
/// 判定结果(可选)。
/// 开始时间(可选)。
/// 结束时间(可选)。
/// 取消令牌。
/// 分页结果。
Task>> GetPagedAsync(
int pageIndex,
int pageSize,
string? productTypeCode = null,
RunPartJudgmentResult? result = null,
DateTime? startTime = null,
DateTime? endTime = null,
CancellationToken cancellationToken = default);
///
/// 删除部件判定。
///
/// 判定ID。
/// 取消令牌。
/// 删除结果。
Task> DeleteAsync(Guid judgmentId, CancellationToken cancellationToken = default);
///
/// 批量删除部件判定。
///
/// 产品会话ID列表。
/// 取消令牌。
/// 删除结果。
Task> DeleteBySessionIdsAsync(List sessionIds, CancellationToken cancellationToken = default);
///
/// 批量删除层级会话的部件判定。
///
/// 层级会话ID列表。
/// 取消令牌。
/// 删除结果。
Task> DeleteByLayerSessionIdsAsync(List layerSessionIds, CancellationToken cancellationToken = default);
}