package com.energy.manage.service.service.windfield;

import com.energy.manage.common.base.Page;
import com.energy.manage.common.po.windfield.WindFieldPO;
import com.energy.manage.common.reponse.ResultResp;
import com.energy.manage.service.domain.dto.windfield.*;
import com.energy.manage.service.domain.vo.windfield.WindFieldNameVo;
import com.energy.manage.service.domain.vo.windfield.WindFieldPageVo;
import com.energy.manage.service.domain.vo.windfield.WindFieldVo;
import com.energy.manage.service.domain.vo.windrelation.WindRelationVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 风场信息业务层
 */
public interface WindFieldService {

    /**
     * 创建风场信息
     * @return
     */
    boolean createWindField(WindFieldDto windFieldDto,Integer roleId,Integer userId);


    /**
     * 导入风场信息
     * @param file
     * @param windFieldImportDataDto
     * @return
     */
    ResultResp windFieldImportData(MultipartFile file, WindFieldImportDataDto windFieldImportDataDto,Integer roleId,Integer userId);


    /**
     * 分页查询风场信息
     * @param windFieldPageDto
     * @return
     */
    Page<WindFieldPageVo> WindFieldListPage(WindFieldPageDto windFieldPageDto);


    /**
     * 删除企业下风场
     * @param companyCode
     * @return
     */
    boolean delWindFieldByCompanyCode(String companyCode);


    /**
     * 通过id删除风场
     * @param fieldCode
     * @return
     */
    boolean delWindFieldById(String fieldCode);

    /**
     * 修改状态
     * @param windFieldUpdateStateDto
     * @return
     */
    boolean updateWindFieldStateById(WindFieldUpdateStateDto windFieldUpdateStateDto);


    /**
     * 更新风场下风机数量
     * @return
     */
    boolean updateWindFieldNumber(String fieldCode);


    /**
     * 查询风场对象
     * @param windFieldCodeDto
     * @return
     */
    WindFieldVo getWindFieldVo(WindFieldCodeDto windFieldCodeDto);


    /**
     * 更新风场基本信息
     * @param windFieldUpdateDto
     * @return
     */
    boolean updateWindField(WindFieldUpdateDto windFieldUpdateDto);


    /**
     * 通过企业编号查询关联风场
     * @param companyCode
     * @return
     */
    List<WindFieldVo> getWindFieldVos(String companyCode);

    /**
     * 查询风场集合
     * @return
     */
    List<WindFieldNameVo> getWindFieldNames(Integer userId, Integer roleId);


    /**
     * 整体树结构
     * @return
     */
    List<Map<String, Object>> getWindFieldTree();


    /**
     * 通过风场名称查询对象
     * @param fieldName
     * @return
     */
    WindFieldPO getWindFieldPOByFieldName(String fieldName);



}
