using DS.Module.Core;
using DS.Module.DjyServiceStatus;
using DS.WMS.Core.TaskPlat.Dtos;
using DS.WMS.Core.TaskPlat.Entity;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System.Linq.Expressions;
namespace DS.WMS.Core.TaskPlat.Interface
{
public interface ITaskManageService : ITaskManageBaseService
{
///
/// 取消任务(可批量)
///
/// 任务主键数组
/// 返回结果
Task> CancelTask(long[] ids);
///
/// 完成任务(可批量)
///
/// 任务主键数组
/// 返回结果
Task> CompleteTask(long[] ids);
///
/// 获取登陆人相关的任务统计信息
///
/// 返回回执
Task> GetCurrentTotalStat(GetCurrentTotalStatQueryDto querySearch);
///
/// 任务台台账列表查询
///
Task>> GetPageAsync(PageRequest querySearch);
///
/// 创建任务
///
/// 任务详情
///
///
/// 返回回执
Task InitTaskJob(TaskManageOrderMessageInfo info, IFormFile file = null, IFormFile modifyFile = null);
///
/// 工作流设置任务在个人下的状态
///
/// 主业务主键
/// 主业务类型
/// 业务状态
/// 状态发生时间
/// 要设置任务状态的人员列表
/// 子业务主键[可选,当不为空时表示设置子任务的个人状态]
/// 子业务类型
Task SetTaskUserStatus(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, TaskStatusEnum taskStatusEnum, DateTime? statusTime, List userInfos,
long? childBsno = null, TaskBaseTypeEnum? childTaskBaseTypeEnum = null);
///
/// 工作流设置任务状态
///
/// 业务主键
/// 业务类型
/// 业务状态
/// 状态发生时间
/// 完成任务前是否检查所有子任务是否完成
/// 任务描述
/// 用户Id列表,用于筛选指定用户下的任务[可选,当不为空时会设置此用户列表涉及到的相关任务的状态]
/// 子业务主键[可选,当不为空时表示设置子任务的状态]
/// 子业务类型
Task SetTaskStatusWithBsno(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, TaskStatusEnum taskStatusEnum, DateTime? statusTime,bool isCheckAllChildTaskComplete, string? taskDesc = null, List? userIdList = null,
long? childBsno = null, TaskBaseTypeEnum? childTaskBaseTypeEnum = null);
///
/// 工作流任务转交
///
/// 业务主键
/// 业务类型
/// 要转交的人员信息列表
/// 子业务主键[可选,当不为空时表示设置子任务的状态]
/// 子业务类型
Task TransferTask(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, List userInfos, SqlSugarScopeProvider? tenantDb = null,
long? childBsno = null, TaskBaseTypeEnum? childTaskBaseTypeEnum = null);
///
/// 工作流设置任务对象属性
///
/// 主任务业务主键
/// 主任务业务类型
/// 子任务业务主键[可选,当不为空时表示设置子任务的状态]
/// 子任务业务类型
/// 要修改的列
Task SetTaskBaseInfoPropertyWithBsno(long bsno, TaskBaseTypeEnum taskBaseTypeEnum,
long? childBsno = null, TaskBaseTypeEnum? childTaskBaseTypeEnum = null,
params Expression>[] columns);
///
/// 测试用
///
Task TestTaskFlow(string taskType, long taskId, int testType);
///
/// 领取任务到当前登陆人(可批量)
///
Task PullTask(long[] ids);
///
/// 任务台台账子任务列表查询
///
Task>> GetChildTaskList(long taskId);
}
}