package com.shkj.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.common.core.domain.Result;
import com.shkj.wms.domain.SysThirdExceptionRequest;

import java.util.Date;
import java.util.List;

/**
 * 第三方请求异常Service接口
 *
 * @author lch
 * @date 2023-02-02
 */
public interface ISysThirdExceptionRequestService extends IService<SysThirdExceptionRequest> {


    /**
     * 执行异常
     *
     * @param taskCode 请求
     * @return {@link Result}
     * @throws Exception 异常
     */
    Result executeException(String taskCode) throws InterruptedException;


    /**
     * 给设备下发命令时异常时，进行记录异常，并定时执行
      * @param orderCode 单号
     * @param type 请求类型
     * @param requestBody 请求的内容
     * @param responseBody 下发任务反馈的信息
     * @param isSuccess 是否成功标志
     * @param planTime 制定出库计划时，传入计划出库时间
     */
    void addException(String orderCode, String type, String requestBody, String responseBody, Boolean isSuccess, Date planTime,Integer layer);

    /**
     * 没有被任务id列表和秩序
     *
     * @param taskId  任务id
     * @param orderNo 订单没有
     * @return {@link List}<{@link SysThirdExceptionRequest}>
     */
    List<SysThirdExceptionRequest> getListByTaskIdAndOrderNo(Long taskId, String orderNo);

    SysThirdExceptionRequest getOneByOrderNo(String orderNo);

    /**
     * 做任务
     */
    void doTask();

}
