using DS.Module.Core;
using DS.Module.Core.Data;
using DS.WMS.Core.TaskPlat.Dtos;
using DS.WMS.Core.TaskPlat.Entity;
using SqlSugar;
namespace DS.WMS.Core.TaskPlat.Interface
{
public interface ITaskAllocationService
{
///
/// 获取任务分配列表中已存在的船公司列表(用于查询)
///
Task>> GetContainsCarrierList();
///
/// 获取任务分配列表
///
/// 船公司Id(可选)
Task> GetList(long? carrierId);
///
/// 保存任务分配设置
///
Task Save(TaskAllocationtSetSaveDto saveDto);
///
/// 获取任务分配数据
///
/// 是否从缓存提取 true-从缓存读取 false-从数据库读取
/// 返回任务分配数据列表
Task>> GetAllList(bool isFromCache = true);
///
/// (单个任务类型)根据任务类型+海运出口订单Id查询任务分配的人员列表
///
/// 任务类型
/// 海运出口订单Id
/// 数据上下文(规则匹配时用到的数据来源)
/// 任务接收人列表
Task>> GetAllotUserBySeaExportId(TaskBaseTypeEnum taskType, long seaExportId, TaskFlowDataContext? dataContext = null);
///
/// (多个任务类型)根据任务类型列表+海运出口订单Id查询任务分配的人员列表
///
/// 任务类型列表
/// 海运出口订单Id
/// 数据上下文(规则匹配时用到的数据来源)
/// 指定任务类型对应的任务接收人列表
Task>>> GetAllotUserBySeaExportId(List taskTypeList, long seaExportId, TaskFlowDataContext? dataContext = null);
Task> GetAllotUserList(SqlSugarScopeProvider tenantDb, long taskId);
}
}