package com.hdkj.lt.bf.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hdkj.lt.bf.entity.dto.FhzgPlanTransferSchemeCheckCountResultDTO;
import com.hdkj.lt.bf.entity.dto.FhzgPlanTransferSchemeCheckResultDTO;
import com.hdkj.lt.bf.entity.dto.FhzgPlanTransferSchemeDTO;
import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferScheme;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

/**
 * @author luorui
 * @date 2025/5/14 16:39
 * @discription 转供方案查询
 **/
@Mapper
public interface FhzgPlanTransferSchemeMapper extends BaseMapper<FhzgPlanTransferScheme> {

    /**
     * 根据计划和，方案类型（推荐方案/校验失败方案） 查询方案列表(schemeType 不传值时查询该计划下所有组合方案的区域子方案通过和不通过数量 )
     */
    List<FhzgPlanTransferSchemeDTO> getFhzgPlanTransferSchemeByPlanId(FhzgPlanTransferScheme fhzgPlanTransferScheme);

    /**
     * 根据故障查询故障转供信息
     *
     * @param fhzgPlanTransferScheme
     * @return
     */
    List<FhzgPlanTransferSchemeDTO> getFhzgFaultTransferSchemeByFaultId(FhzgPlanTransferScheme fhzgPlanTransferScheme);


    /**
     * 根据计划，统计方案通过和校验失败方案数量
     */
    List<FhzgPlanTransferSchemeCheckCountResultDTO> countSchemeCheckByPlanId(FhzgPlanTransferScheme fhzgPlanTransferScheme);

    /**
     * 根据计划，统计方案通过和校验失败方案数量(用每条记录的符合恢复情况判断，符合恢复>0就是推荐方案)
     */
    FhzgPlanTransferSchemeCheckResultDTO countSchemeTypeByPlanId(FhzgPlanTransferScheme fhzgPlanTransferScheme);

    /**
     * 更新单条方案状态
     */
    Integer updateFhzgPlanTransferSchemeState(@Param("id") Long id, @Param("schemeState") String schemeState);

    /**
     * 批量更新方案状态
     */
    Integer updateFhzgPlanTransferSchemeStateBatch(@Param("idList") Set<Long> idList, @Param("schemeState") String schemeState);

    String getLoadRecoveryByPlanId(@Param("schemeId") Long schemeId);

    List<Long> getShemeIdByPlanId(@Param("planId") Long planId);

    void updateEvaluationScore(@Param("schemeId") Long schemeId, @Param("score") BigDecimal score);

}
