package com.ho.business.service;


import com.ho.business.entity.DeviceType;
import com.ho.business.entity.Station;
import com.ho.business.vo.req.*;
import com.ho.business.vo.resp.ProvinceStation;
import com.ho.business.vo.resp.StationRespVO;
import com.ho.business.vo.resp.cockpit.CockForStationResp;
import com.ho.business.vo.resp.station.NationStation;
import com.ho.business.vo.resp.station.StationResp;
import com.ho.common.tools.entity.SimpleUser;
import com.ho.common.tools.util.PageResult;
import com.ho.user.api.vo.req.QueryDeptReqVO;

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

/**
 * @author yule
 * @description 针对表【station】的数据库操作Service
 * @createDate 2022-08-25 16:03:40
 */
public interface StationService {

    Station selectById(Integer id);

    List<StationRespVO> selectByIds(List<Integer> ids,String lang);

    List<Station> selectStationsByIds(List<Integer> ids,String lang);

    Station insertStation(StationReqVO vo);

    Station selectByName(String name);

    List<Station> getByName(String name);

    void deletedByIds(List<Integer> ids);

    void update(StationPutReqVO vo);

    Station selectByNameAndId(String name, Integer id, Integer deptId);

    PageResult<StationRespVO> selectPage(StationPageReqVO stationPageReqVO, SimpleUser user);


    List<DeviceType> selectType();

    List<Station> selectAll();

    List<Station> selectByDeptIds(List<Integer> depts);

    List<Station> selectByDeptId(QueryDeptReqVO queryDeptReqVO);

    Station selectBySn(String sn);

    List<Station> selectByGroupId(Integer groupId);

    List<ProvinceStation> getProvinceStationList(SimpleUser user);

    CockForStationResp getStationCockpitValue(SimpleUser user);

    List<Station> selectByDimName(WorkOrderStationReqVO vo,SimpleUser user);

    //离线电站的个数
    List<Station> getOfflineStations(List<Station> stations);

    //查询需要统计运维数据的电站
    List<Station> selectStatistics(Integer deleted, Integer dailyCount);

    PageResult<StationRespVO> selectPageList(StationPageListReqVO stationPageReqVO);

    List<Station> selectByInverterFlag(Integer inverterFlag);

    Station selectByPrimaryKey(Integer id);

    List<Map<String,String>> getTermDictionary(String language);

    /**
     * 根据条件查询站点信息
     * @param vo
     * @return
     */
    List<Station> selectStationByCondition(StationPageReqVO vo);

    int updateStationList(List<Station> list);

    /**
     * 根据国家分组
     * @param user
     * @return
     */
    StationResp getNationStationList(SimpleUser user);
}
