package com.huatek.frame.base.service;

import com.huatek.frame.base.dto.ModelComponentDataDTO;
import com.huatek.frame.base.dto.ModelDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.NamedEntityGraph;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 模型 Service
 *
 * @date 2023-2-7 17:03:45
 */
public interface ModelService {

    /**
     * 同步模型列表
     *
     * @param originalNameList 模型名称列表
     * @return map map
     */
    Map<String, Object> updateModelList(List<String> originalNameList);

    /**
     * 分页查询模型列表
     *
     * @param dto 模型vo
     * @return map map
     */
    Map<String, Object> selectModelList(ModelDTO dto);

    /**
     * 分页查询模型列表
     *
     * @return map map
     */
    Map<String, Object> selectModelTypeList();

    /**
     * 更新模型信息
     *
     * @param dto 模型详细信息
     * @return map map
     */
    Map<String, Object> updateModel(ModelDTO dto);

    /**
     * 更新模型信息
     *
     * @param dto 模型详细信息
     * @return map map
     */
    Map<String, Object> updateModelParams(ModelDTO dto);

    /**
     * 查询部件信息
     *
     * @param modelType 模型类型
     * @return map map
     */
    Map<String, Object> selectDeviceListList(String modelType);

    /**
     * 查询装置数据项
     *
     * @param deviceCode 装置类型
     * @return map map
     */
    Map<String, Object> selectDataItemsByDeviceCode(String deviceCode, String amplType);

//    /**
//     * 模型装置配置
//     *
//     * @param dto 模型装置配置信息
//     * @return map map
//     *  */
//    Map<String, Object> addComponent(ComponentItemDataDTO dto);
//
//    /**
//     * 模型装置配置
//     *
//     * @param dto 模型装置配置
//     * @return map map
//     *  */
//    Map<String, Object> selectComponentDetail(ComponentItemDataDTO dto);

    /**
     * 查询站点信息
     *
     * @return map map
     */
    Map<String, Object> selectStationList();

    Map<String, Object> settingModelComponentData(ModelComponentDataDTO dto);

    Map<String, Object> selectComponentDataList(ModelComponentDataDTO dto);

    Map<String, Object> deleteModelComponentData(String[] ids);

    Map<String, Object> selectMainEquipmentListByModelType(String siteId, String modelType);

    Map<String, Object> selectSensors(String modelType, String mainTreeId, String deviceCode);

    Map<String, Object> selectRecentlyData(String mainEquipmentType, String mainTreeId);

    Map<String, Object> enableModelComponentData(String enableType, String[] ids);

    Map<String, Object> selectMasterStationDeviceListByModelType(String equipmentType, String id);

    Map<String, Object> selectMasterStation(String modelId);


}


