package com.qmth.distributed.print.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.distributed.print.business.entity.TBSyncTask;
import com.qmth.teachcloud.common.bean.result.SyncListResult;
import com.qmth.teachcloud.common.entity.SysUser;
import com.qmth.teachcloud.common.enums.PushTypeEnum;
import com.qmth.teachcloud.common.enums.TaskResultEnum;
import com.qmth.teachcloud.common.enums.TaskStatusEnum;

import java.util.Map;

/**
 * <p>
 * 同步数据 服务类
 * </p>
 */
public interface TBSyncTaskService extends IService<TBSyncTask> {

    TBSyncTask saveTask(Long schoolId, Long objectId, PushTypeEnum type);

    void updateStatusAndResultById(Long id, Long thirdRelateId, TaskStatusEnum status, TaskResultEnum result, String errorMessage);

    TBSyncTask savePushCommon(PushTypeEnum pushTypeEnum, Map map, SysUser sysUser);

    /**
     * 同步任务管理分页查询
     *
     * @param schoolId   学校id
     * @param status     任务状态
     * @param type       同步任务类型
     * @param result     任务结果
     * @param pageNumber 分页页数
     * @param pageSize   分页容量
     * @return 分页结果
     */
    IPage<SyncListResult> query(Long schoolId, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize);

    /**
     * 失败任务-重新同步
     *
     * @param id 任务ID
     */
    void resync(Long id);
}
