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

import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zhaji
 * @description TODO
 * @date 2022-08-26 09:12:46
 */
@Mapper
public interface EkpSettleMapper {
	/**
	 * 获取结算信息
	 *
	 * @author zhaji
	 * @param id
	 * @return {@link SettleVo}
	 */
	SettleVo getSettle(String id);

	/**
	 * 获取结算信息
	 *
	 * @author zhaji
	 * @param id
	 * @return {@link SettleVo}
	 */
	DeptSettleVo getDeptSettle(String id);

	/**
	 * 获取结算信息
	 *
	 * @author zhaji
	 * @param id
	 * @return {@link SettleVo}
	 */
	DeptSettleVo getDeptYgSettle(String id);

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

	/**
	 * @Author fxj
	 * @Description 从商险订单明细中获取当前保单的结算状态--提前缴费专用
	 * @Date 10:17 2026/1/21
	 * @Param
	 * @return
	**/
	EkpSettleStatusVo getSettleStatusFromEkpAsso(@Param("id")String id);

	/**
	 * @Author fxj
	 * @Description 从商险订单明细中获取当前保单的结算状态--提前缴费专用
	 * @Date 10:17 2026/1/21
	 * @Param
	 * @return
	 **/
	List<EkpSettleStatusVo> getSettleStatusFromEkpAssoByIds(@Param("ids")List<String> ids);

	List<EkpInsuranceViewVo> selectSettleStatusBySettleNo(@Param("settleNo") String settleNo, @Param("payFlag") String payFlag);

	List<EkpSocialViewVo> selectSocialViewStatusBySettleNo(@Param("settleNo") String settleNo,@Param("payFlag") String payFlag);

	List<EkpSocialViewVo> selectFundViewBySettleNo(@Param("settleNo") String settleNo,@Param("payFlag") String payFlag);

	List<EkpInsuranceViewVo> selectFIncomelViewBySettleNo(@Param("settleNo") String settleNo);

	List<EkpInsuranceViewVo> selectIncomeViewBySettleNo(@Param("settleNo") String settleNo);

	List<EkpSocialViewVo> selectSalarylViewBySettleNo(@Param("settleNo") String settleNo,@Param("payFlag") String payFlag);

	EkpInsuranceDeptInfoVo getInsuranceEkpDeptInfo(@Param("deptNo") String deptNo);

	List<EkpInsuranceDeptInfoVo> getEkpDeptInfoByDeptNo(@Param("deptNoList") List<String> deptNoList);

	void deleteEkpInsuranceDetail(@Param("id")String id);

	List<EkpSettleStatusVo> getBalanceByInsuranceId(@Param("id")String id);

	void deleteEkpInsuranceDetailAsso(@Param("id")String id);

	void callBackBalance(@Param("id")String id);

	void deleteEkpManagerInfo(@Param("id")String id);

	void deleteEkpEkpRiskInfo(@Param("id")String id);
}
