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

import com.energy.manage.common.mapper.MyMapper;
import com.energy.manage.common.po.datatransfer.DataTransferPo;
import com.energy.manage.service.domain.dto.datatransfer.DataTransferDto;
import com.energy.manage.service.domain.vo.datatransfer.DataTransferBatchShortVo;
import com.energy.manage.service.domain.vo.datatransfer.DataTransferDataTimeVo;
import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 数据转换持久层
 * @author chy
 * @date 2024/5/20 15:04
 * @desc
 */
@Repository
public interface DataTransferMapper extends MyMapper<DataTransferPo>{

    /**
     * 获取当前角色所有进行过数据转的风场批次号
     * @param roleId
     * @return
     */
    List<String> selectAllWindFieldBtach(Integer roleId);


    /**
     * 查询转换数据组
     * @param fieldName
     * @param batchName
     * @return
     */
    List<DataTransferBatchShortVo> queryDataTransferGroup(@Param("fieldName") String fieldName,
                                                          @Param("batchName") String batchName,
                                                          @Param("roleId") Integer roleId);

    /**
     * 查询数据转换列表
     * @param dataTransferDto
     * @return
     */
    List<DataTransferVo> selectDataTransferListByCondition(DataTransferDto dataTransferDto);

    /**
     * 查询批次下数据转换信息
     * @param batchCode
     * @return
     */
    List<DataTransferVo> selectDataTransferListByBatchCode(@Param("batchCode") String batchCode);


    /**
     * 批量添加
     * @param poList
     * @return
     */
    int addDataTransferBatch(@Param("poList") List<DataTransferPo> poList);

    /**
     * 查询批次号下的数据转换列表
     * @param batchCode
     * @param transferType
     * @return
     */
    DataTransferPo selectByBatchCodeAndDataTransferType(@Param("batchCode") String batchCode,@Param("transferType") String transferType);


    /**
     * 更新数据转换
     * @param dataTransferPo
     * @return
     */
    int updateDataTransfer(DataTransferPo dataTransferPo);

    /**
     * 查询某种状态下的数据量
     * @param transferState
     * @return
     */
    int selectCountByTransferState(Integer transferState);

    /**
     * 查询数据转换中数据的起始时间和结束时间
     * @param batchCode
     * @return
     */
    DataTransferDataTimeVo selectDataTimeByBatchCodeAndType(@Param("batchCode") String batchCode,@Param("transferType") String transferType);
}
