package com.bonus.material.clz.mapper;

import com.bonus.common.biz.domain.ProjectTreeNode;
import com.bonus.material.clz.domain.vo.MaterialSltAgreementInfo;
import com.bonus.material.clz.domain.vo.sltAgreementInfo.MaterialSltInfoVo;
import com.bonus.material.common.domain.vo.AgreementVo;
import com.bonus.material.settlement.domain.SltAgreementReduce;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author ma_sh
 * @create 2025/6/27 15:21
 */
public interface ClzSltAgreementInfoMapper {

    /**
     * 获取协议结算列表
     * @param bean
     * @return
     */
    List<MaterialSltAgreementInfo> getSltAgreementInfo4Project(MaterialSltAgreementInfo bean);

    Integer[] getProjectListByUnitIds(int unitId);

    List<ProjectTreeNode> getProjectList(int projectId);

    List<AgreementVo> getAgreementInfoById(@Param("unitIds") List<Integer> unitIds, @Param("projectId") int projectId);


    /**
     * 获取租赁列表
     * @param info
     * @return
     */
    List<MaterialSltAgreementInfo> getLeaseList(MaterialSltAgreementInfo info);

    /**
     * 获取丢失列表
     * @param info
     * @return
     */
    List<MaterialSltAgreementInfo> getLoseList(MaterialSltAgreementInfo info);

    /**
     * 获取减免费用列表
     * @param bean
     * @return
     */
    List<SltAgreementReduce> getReductionList(SltAgreementReduce bean);

    /**
     * 获取驳回数量
     * @param sltInfoVo
     * @return
     */
    int getRejectCount(MaterialSltInfoVo sltInfoVo);

    /**
     * 获取驳回id
     * @param sltInfoVo
     * @return
     */
    Long getRejectId(MaterialSltInfoVo sltInfoVo);

    /**
     * 更新驳回数量
     * @param sltInfoVo
     * @return
     */
    int updateRejectCount(MaterialSltInfoVo sltInfoVo);

    /**
     * 插入协议申请
     * @param sltInfoVo
     * @return
     */
    int insertSltAgreementApply(MaterialSltInfoVo sltInfoVo);

    /**
     * 插入协议申请详情
     * @param list
     * @param id
     */
    int insertSltAgreementDetailLease(@Param("list") List<MaterialSltAgreementInfo> list, @Param("id") Long id);

    /**
     * 插入协议申请详情
     * @param list
     * @param id
     * @return
     */
    int insertSltAgreementDetailLose(@Param("list") List<MaterialSltAgreementInfo> list, @Param("id") Long id);
}
