package com.sunxung.factoring.service.salescontractmanagement;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sunxung.factoring.entity.project.vo.BusinessProcessingTaskVo;
import com.sunxung.factoring.entity.project.vo.SearchBusinessProcessingTask;
import com.sunxung.factoring.entity.salescontractmanagement.CSalesContract;
import com.sunxung.factoring.entity.salescontractmanagement.CSalesContractBasicInfo;
import com.sunxung.factoring.entity.salescontractmanagement.CSalesContractGoodsInfo;
import com.sunxung.factoring.entity.salescontractmanagement.vo.SalesContractBasicVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @Description : 销售合同管理service层
 * @Author : L.Jia
 * @Date: 2021-09-03 15:56
 */

public interface SalesContractService extends IService<CSalesContract> {

    /**
     * 销售合同创建
     *
     * @param salesContractManagement
     */
    void doCreate(CSalesContract salesContractManagement);

    /**
     * 获取列表页信息
     *
     * @param id
     * @return
     */
    CSalesContract get(Long id);

    /**
     * 销售合同待处理列表页查询
     *
     * @param search
     * @return
     */
    List<BusinessProcessingTaskVo> findMyCompletedList(SearchBusinessProcessingTask search);

    /**
     * 销售合同根据权限查询所有
     *
     * @param search
     * @return
     */
    List<BusinessProcessingTaskVo> findAllList(SearchBusinessProcessingTask search);

    /**
     * 销售合同变更,返回taskId
     *
     * @param id
     */
    void change(Long id);

    /**
     * 导入货物信息
     *
     * @param file
     * @return
     */
    List<CSalesContractGoodsInfo> importGoodsInfo(MultipartFile file);

    /**
     * 根据业务编号查询销售合同管理信息
     *
     * @param businessNumber
     * @return
     */
    CSalesContract getByBusinessNumber(String businessNumber);

    /**
     * 下载销售合同货物信息模板
     *
     * @return
     */
    void downloadTemplateFile(HttpServletResponse response);

    /**
     * 通过业务编号查询销售合同基础信息
     *
     * @param businessNumber
     * @return
     */
    CSalesContractBasicInfo findByBusinessNumber(String businessNumber);

    /**
     * 通过销售合同主表id查询
     *
     * @param id
     * @return
     */
    SalesContractBasicVo getBasicInfoById(Long id);

    /**
     * 查询历史
     *
     * @param hisId
     * @return
     */
    SalesContractBasicVo getBasicInfoByHisId(Long hisId);


    /**
     * 根据id下载所有文件
     * @param id
     * @param response
     */
    void downloadAllSalesContractFile(Long id,HttpServletResponse response);

    /**
     * 出证下载
     * @param id
     * @param res
     */
    void downloadReportUrl(Long id, HttpServletResponse res) throws IOException;

    /**
     * 获取审核需要的信息
     * @param businessKey
     * @param model
     */
//    void getApprovalInfo(Long businessKey, Model model);
}
