package com.yifu.cloud.plus.v1.yifu.insurances.service.ekp;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.EkpInsurancesInfo;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;

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

/**
 * @author zhaji
 * @description TODO
 * @date 2022-08-26 09:25:36
 */
public interface EkpSettleService extends IService<TInsuranceTypeRate> {

	/**
	 * 新增保险公司
	 *
	 * @author zhaji
	 * @param id 新增类
	 * @return {@link R}
	 */
	SettleVo getSettle(String id);

	DeptSettleVo getDeptSettle(String id);

	EkpInsuranceDeptInfoVo getInsuranceEkpDeptInfo(String deptNo);

	// 根据项目编码获取EKP项目信息
	Map<String, EkpInsuranceDeptInfoVo> getEkpDeptInfoByDeptNo(List<String> deptNoList);

	DeptSettleVo getDeptYgSettle(String id);

	/**
	 * 从商险订单明细中获取当前保单的结算状态
	 *
	 * @author huyc
	 * @param id 新增类
	 * @return {@link R}
	 */
	EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetail(String id);

	/**
	 * 根据结算单编号查询商险视图信息
	 *
	 */
	List<EkpInsuranceViewVo> selectViewBySettleNo(String settleNo, String payFlag);

	 /**
	 * 根据结算单编号查询社保视图信息
	 *
	 */
	List<EkpSocialViewVo> selectSocialViewBySettleNo(String settleNo,String payFlag);
	/**
	 * 根据结算单编号查询公积金视图信息
	 *
	 */
	List<EkpSocialViewVo> selectFundViewBySettleNo(String settleNo,String payFlag);
	/**
	 * 根据结算单编号查询管理费视图信息
	 *
	 */
	List<EkpInsuranceViewVo> selectIncomelViewBySettleNo(String settleNo);
	/**
	 * 根据结算单编号查询风险金视图信息
	 *
	 */
	List<EkpInsuranceViewVo> selectFIncomelViewBySettleNo(String settleNo);
	/**
	 * 根据结算单编号查询薪资视图信息
	 *
	 */
	List<EkpSocialViewVo> selectSalarylViewBySettleNo(String settleNo,String payFlag);

	EkpSettleStatusVo getSettleStatusFromEkpInsuranceDetailAsso(String id);

	List<EkpSettleStatusVo> getSettleStatusFromEkpAssoByIds(List<String> ids);

	void deleteEkpInsuranceDetail(String id);

	void deleteEkpManagerInfo(String id);

	void deleteEkpEkpRiskInfo(String id);

	List<EkpSettleStatusVo> getBalanceByInsuranceId(String id);

	void deleteEkpInsuranceDetailAsso(String id);

	void callBackBalance(String id);
}
