package com.energy.manage.service.service.windenginegroup;


import com.energy.manage.common.base.Page;
import com.energy.manage.common.reponse.ResultResp;
import com.energy.manage.service.domain.dto.windenginegroup.*;
import com.energy.manage.service.domain.vo.cockpit.WindFieldGroupTowerVo;
import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupPageVo;
import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 机型管理
 */
public interface WindEngineGroupService {


    /**
     * 创建风机机组
     *
     * @param windEngineGroupCreateDto
     * @return
     */
    boolean createWindEngineGroup(WindEngineGroupCreateDto windEngineGroupCreateDto);


    /**
     * 导入风机数据
     *
     * @param file,fieldCode
     * @return
     */
    ResultResp windEngineGroupImportData(MultipartFile file, String fieldCode,Integer userId);

    /**
     * 导入风机数据(大唐使用，包含远景内部风机id属性，并对风机ID进行验证)
     * @param file
     * @param fieldCode
     * @param userId
     * @return
     */
    ResultResp windEngineGroupAndIdImportData(MultipartFile file, String fieldCode, Integer userId);


    /**
     * 风机分页查询
     *
     * @param windEngineGroupPageDto
     * @return
     */
    Page<WindEngineGroupPageVo> windEngineGrouPage(WindEngineGroupPageDto windEngineGroupPageDto);


    /**
     * 集合查询
     * @param windEngineGroupPageDto
     * @return
     */
    List<WindEngineGroupPageVo>  getWindEngineGroupListByFieldCode(WindEngineGroupPageDto windEngineGroupPageDto);

    /**
     * 集合查询
     * @param windEngineGroupPageDto
     * @return
     */
    Page<WindEngineGroupPageVo> getWindEngineGroupRatedListByFieldCodePage(WindEngineGroupPageDto windEngineGroupPageDto);

    /**
     * 通过风场code查询风机集合
     * @param fieldCode
     * @return
     */
    WindFieldGroupTowerVo getWindEngineGroupByFieldCode(String fieldCode,String batchCode);


    /**
     * 删除风机
     *
     * @param windEngineGroupCodeDto
     * @return
     */
    boolean delWindEngineGroup(WindEngineGroupCodeDto windEngineGroupCodeDto);


    /**
     * 更改状态
     *
     * @param windEngineGroupStateDto
     * @return
     */
    boolean updateStateWindEngineGroup(WindEngineGroupStateDto windEngineGroupStateDto);

    /**
     * 更新数据
     * @param windEngineGroupUpdateDto
     * @return
     */
    boolean updateWindEngineGroup(WindEngineGroupUpdateDto windEngineGroupUpdateDto);

    /**
     * 批量更新数据
     * @param windEngineGroupBathUpdateDto
     * @return
     */
    boolean updateWindEngineGroupList(WindEngineGroupBathUpdateDto windEngineGroupBathUpdateDto);

    /**
     * 查询风机对象
     *
     * @param windEngineGroupCodeDto
     * @return
     */
    WindEngineGroupVo getWindEngineGroup(WindEngineGroupCodeDto windEngineGroupCodeDto);

    /**
     * 通过风场code查询风机数量
     * @param fieldCode
     * @return
     */
    int getWindEngineGroupCountByField(String fieldCode);

    /**
     * 获取登录用户role能看到的风机
     * @param roleId
     * @return
     */
    List<WindEngineGroupVo> getWindEngineGroupByRoleId(Integer roleId);


    /**
     * 通过code查询未删除风机个数
     * @param engineName
     * @return
     */
    int getCountWindEngineGroupByCode(String engineName,String fieldCode);

}
