package cn.superdesk.uniorder.dubbo.facade.thirdpart.jd;

import cn.superdesk.uniorder.common.enums.scheduler.jd.ScheduleTaskAccountingStatusEnum;
import cn.superdesk.uniorder.common.enums.scheduler.jd.ScheduleTaskProcessStateEnum;
import cn.superdesk.uniorder.common.enums.scheduler.jd.ScheduleTaskRunStatusEnum;
import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.thirdpart.jd.SysQuartzScheduleTaskStatementOfAccountJd;
import cn.superdesk.uniorder.dto.param.thirdpart.jd.*;
import cn.superdesk.uniorder.dto.vo.thirdpart.jd.SysQuartzScheduleTaskStatementOfAccountJdHeadVo;
import cn.superdesk.uniorder.dto.vo.thirdpart.jd.SysQuartzScheduleTaskStatementOfAccountJdListItemVo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @Description: 定时任务-时刻任务-对账单
 * @Author: linjinyu
 * @Email linjinyu@avic-s.com
 * @CreateDate: 2021-10-12 11:29:24
 * @UpdateUser: linjinyuØ
 * @UpdateDate: 2021-10-12 11:29:24
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface DubboSysQuartzScheduleTaskStatementOfAccountJdService {

    /****************************************** extends BaseService 部分 start ******************************************/

    int insertSelective(SysQuartzScheduleTaskStatementOfAccountJd entity);

    int updateByPrimaryKeySelective(SysQuartzScheduleTaskStatementOfAccountJd entity);

    @Deprecated
    void deleteObj(Long id);

    SysQuartzScheduleTaskStatementOfAccountJd findById(Long id);

    @Deprecated
    PageInfo<SysQuartzScheduleTaskStatementOfAccountJd> findByPaging(Map<String, Object> conditions, Integer pageNun, Integer pageSize);

    @Deprecated
    List<SysQuartzScheduleTaskStatementOfAccountJd> findAll(Map<String, Object> queryMap);

    /****************************************** extends BaseService 部分   end ******************************************/


    int addSysQuartzScheduleTaskStatementOfAccountJd(SysQuartzScheduleTaskStatementOfAccountJdParam param, LoginSysUser loginSysUser);

    int updateSysQuartzScheduleTaskStatementOfAccountJd(SysQuartzScheduleTaskStatementOfAccountJdParam param, LoginSysUser loginSysUser);

    int deleteSysQuartzScheduleTaskStatementOfAccountJd(Long id, LoginSysUser loginSysUser);

    SysQuartzScheduleTaskStatementOfAccountJdListItemVo findListItemVoById(Long id, LoginSysUser loginSysUser);

    SysQuartzScheduleTaskStatementOfAccountJdListItemVo findListItemVoByBatchId(String batchId, LoginSysUser loginSysUser);

    R<List<SysQuartzScheduleTaskStatementOfAccountJd>> pageQuery(Map<String, Object> conditions, int pageNun, int pageSize);

    R<List<SysQuartzScheduleTaskStatementOfAccountJdListItemVo>> pageQueryGenericParam(SysQuartzScheduleTaskStatementOfAccountJdQueryCriteria queryCriteria, LoginSysUser loginSysUser);

    SysQuartzScheduleTaskStatementOfAccountJdHeadVo queryHeadGenericParam(SysQuartzScheduleTaskStatementOfAccountJdQueryCriteria queryCriteria, LoginSysUser loginSysUser);

    List<SysQuartzScheduleTaskStatementOfAccountJdListItemVo> queryGenericParam(SysQuartzScheduleTaskStatementOfAccountJdQueryCriteria queryCriteria, LoginSysUser loginSysUser);

    SysQuartzScheduleTaskStatementOfAccountJdListItemVo deQueueOneImportExcel(LoginSysUser loginSysUser);

    SysQuartzScheduleTaskStatementOfAccountJdListItemVo deQueueOneCompareOrderAndCheckUpThenReport(LoginSysUser loginSysUser);

    /**************************************** 操作 start ****************************************/

    int opSetRemark(SysQuartzScheduleTaskStatementOfAccountJdOpSetRemarkForm form, LoginSysUser loginSysUser);

    int opSetIsPause(SysQuartzScheduleTaskStatementOfAccountJdOpSetIsPauseForm form, LoginSysUser loginSysUser);

    /**************************************** 操作   end ****************************************/


    int towImportExcel(
            SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form,
            ScheduleTaskRunStatusEnum runStatusEnum, ScheduleTaskProcessStateEnum processStateEnum,
            LoginSysUser loginSysUser);

    int towCompareOrderAndCheckUpThenReport(
            SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form,
            ScheduleTaskRunStatusEnum runStatusEnum, ScheduleTaskAccountingStatusEnum statusEnum,
            LoginSysUser loginSysUser);

    /**************************************** 导入任务 start ****************************************/

    String asyncExcelImportFullVersion(SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form, LoginSysUser loginSysUser);

    String asyncExcelImportLiteVersion(SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form, LoginSysUser loginSysUser);

    /**************************************** 导入任务   end ****************************************/


    /****************************************** 检查任务 start ******************************************/

    String asyncCompareOrderAndCheckUpThenReport(SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form, LoginSysUser loginSysUser);

    String asyncCompareOrderAndCheckUpThenReportOnlyException(SysQuartzScheduleTaskStatementOfAccountJdRunExcelImportForm form, LoginSysUser loginSysUser);

    /****************************************** 检查任务 start ******************************************/

}
