package com.energy.manage.service.mappers.analysis;

import com.energy.manage.common.mapper.MyMapper;
import com.energy.manage.common.po.analysis.AnalysisResultPo;
import com.energy.manage.common.po.windfield.WindFieldPO;
import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
import com.energy.manage.service.domain.vo.analysis.AnalysisInfoVo;
import com.energy.manage.service.domain.vo.analysis.AnalysisResultVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author chy
 * @date 2024/5/23 13:03
 * @desc
 */
@Repository
public interface AnalysisResultMapper extends MyMapper<AnalysisResultPo> {

    /**
     * 查询分析结果
     * @param analysisResultDto
     * @return
     */
    List<AnalysisResultVo> selectByCondition(AnalysisResultDto analysisResultDto);


    /**
     * 根据风场编号查询分析结果
     * @param fieldCode
     * @return
     */
    List<AnalysisResultVo> selectByFieldCode(@Param("fieldCode") String fieldCode);


    /**
     * 查询分析中的数据量
     * @return
     */
    int selectAlasisingCount();

    /**
     * 查询风场最新批次的分析结果
     * @param fieldCodes
     * @return
     */
    List<AnalysisResultVo> selectLastBatchResultByFieldCode(@Param("fieldCodes") List<String> fieldCodes,
                                                            @Param("startTime") String startTime,
                                                            @Param("endTime") String endTime);


    /**
     * 分析结果风场列表
     * @param analysisResultDto
     * @return
     */
    List<WindFieldPO> selectFieldCode(AnalysisResultDto analysisResultDto);


    /**
     * 是否开启自动分析
     * @param batchCode
     * @return
     */
    int updateOnOffCall(@Param("batchCode")String batchCode, @Param("onOffCall") Integer onOffCall);

    /**
     * 更新为排队中状态
     * @param batchCode
     * @return
     */
    int updateAnalysisState(@Param("batchCode") String batchCode);

    /**
     * 数据筛选更新
     * @param analysisDto
     * @return
     */
    int updateByBatchCode(AnalysisDto analysisDto);

    /**
     * 查询风场下的分析编号
     * @param fieldCode
     * @return
     */
    List<AnalysisInfoVo> selectShortInfoByFieldCode(@Param("fieldCode") String fieldCode);

    /**
     * 根据分析编号查询分析结果
     * @param batchCode
     * @return
     */
    AnalysisResultPo selectByBatchCode(@Param("batchCode") String batchCode);


    /**
     * 查询排队中或运行中的分析数量
     * @return
     */
    int selectAnalysisingCount();

    /**
     * 查询运行中的分析数量
     * @return
     */
    int selectAnalysisProcessingCount();

}
