package com.zt.plat.module.erp.service.erp;

import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
import jakarta.validation.Valid;

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

/**
 * ERP合同映射 Service 接口
 *
 * @author 后台管理
 */
public interface ErpContractService {

    /**
     * 创建ERP合同映射
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    ErpContractRespVO createErpContract(@Valid ErpContractSaveReqVO createReqVO);

    /**
     * 更新ERP合同映射
     *
     * @param updateReqVO 更新信息
     */
    void updateErpContract(@Valid ErpContractSaveReqVO updateReqVO);

    /**
     * 删除ERP合同映射
     *
     * @param id 编号
     */
    void deleteErpContract(Long id);

    /**
    * 批量删除ERP合同映射
    *
    * @param ids 编号
    */
    void deleteErpContractListByIds(List<Long> ids);

    /**
     * 获得ERP合同映射
     *
     * @param id 编号
     * @return ERP合同映射
     */
    ErpContractDO getErpContract(Long id);

    /**
     * 获得ERP合同映射通过合同编号
     *
     * @param paperNumber 合同编号
     * @return ERP合同映射
     */
    ErpContractDO getErpContractByPaperNumber(String paperNumber);

    /**
     * 获得ERP合同映射分页
     *
     * @param pageReqVO 分页查询
     * @return ERP合同映射分页
     */
    PageResult<ErpContractDO> getErpContractPage(ErpContractPageReqVO pageReqVO);

    void callErpRfcInterface();

    /**
     * 合同提交ERP
     *
     * @param erpContractVO ERP合同映射数据
     * @return ERP合同映射
     */
    Map<String, String> submitErp(ErpContractSaveReqVO erpContractVO);
}