package com.yifu.cloud.plus.v1.yifu.social.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeePreSocialListVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfoPre;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreSearchVo;

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

/**
 * 社保待购买表
 *
 * @author huych
 * @date 2025-09-30 16:40:07
 */
public interface TDispatchInfoPreService extends IService<TDispatchInfoPre> {
    /**
     * 社保待购买表简单分页查询
     * @param tDispatchInfoPre 社保待购买表
     * @return
     */
    IPage<TDispatchInfoPre> getTDispatchInfoPrePage(Page<TDispatchInfoPre> page, TDispatchInfoPreSearchVo tDispatchInfoPre);

	/**
	 * 社保待购买批量导出
	 * @param searchVo 社保待购买信息
	 * @return
	 */
    void listExport(HttpServletResponse response, TDispatchInfoPreSearchVo searchVo);

    List<TDispatchInfoPre> getNoPageList(TDispatchInfoPreSearchVo searchVo);

	List<TDispatchInfoPre> getNoPageListNew(TDispatchInfoPreSearchVo searchVo);

	/**
	 * 社保待购买单个/批量确认
	 * @param idList id集合
	 * @return
	 */
	R confirm(List<String> idList);

	/**
	 * 查询社保待购买数量
	 * @param searchVo 查询社保待购买vo
	 * @return
	 */
	long getDispatchInfoCount(TDispatchInfoPreSearchVo searchVo);

	/**
	 * 新增社保待购买信息
	 * @param preVo
	 * @return
	 */
	Boolean saveSocialPreInfo(EmployeeRegistrationPreVo preVo);

	/**
	 * 新增公积金待购买信息
	 * @param preVo
	 * @return
	 */
	Boolean saveFundPreInfo(EmployeeRegistrationPreVo preVo);

	/**
	 * 更新社保待购买前端客服信息
	 * @param updateVo
	 * @return
	 */
	void updateSocialPreCustomerName(EmployeeRegistrationCustomerUserUpdateVo updateVo);

	EmployeePreSocialListVo getSocialPreInfoList(String id);

	EmployeePreSocialListVo getSocialPreInfoStatus(String id);

	Boolean deleteUnProcessSocialPreInfo(String id);

	Boolean deleteUnProcessFundPreInfo(String id);

	/**
	 * 社保待购买信息单个/批量发起签署任务
	 * @param idList id集合
	 * @param type 1 手动 2 自动
	 * @return
	 */
	R dispatcherSocial(List<String> idList,String type);

	void pushWxConfrimMessage();

	void pushDisConfrimSocial();

	R dispatcherFund(List<String> idList, String s);

	EmployeePreSocialListVo getFundPreInfoList(String id);

	void listExportFund(HttpServletResponse response, TDispatchInfoPreSearchVo searchVo);

	EmployeePreSocialListVo getFundPreInfoStatus(String id);

	long getDispatchInfoFundCount(TDispatchInfoPreSearchVo searchVo);

	R confirmFund(List<String> idList);

	Boolean getFundPreStatus(String id);

    R<TDispatchInfoPre> getInfoByRegistId(String registId,String type);

	Boolean updateRefuseSocialPreInfo(String id);
	Boolean updateLeaveSocialPreInfo(String id);

	Boolean updateRefuseFundPreInfo(String id);
	Boolean updateLeaveFundPreInfo(String id);

	boolean judgeHaveProcessingSocialOrFund(BaseSearchVO paramVo);
}
