package cn.cecep.talroad.service;

import cn.cecep.talroad.common.core.web.domain.AjaxResults;
import cn.cecep.talroad.domain.BMainMonitorPointOperationLog;
import cn.cecep.talroad.domain.PcOutlet;
import cn.cecep.talroad.domain.analysis.SRaOverWaterPollutionTraceability;
import cn.cecep.talroad.domain.analysis.SRaWaterPermittedOnline;
import cn.cecep.talroad.vo.*;
import cn.cecep.talroad.vo.analysis.SRaRealTimeAnalysicComsitMonitorVo;
import cn.cecep.talroad.vo.query.*;
import cn.cecep.talroad.vo.query.analysis.SRaOverWaterPollutionTraceabilityQuery;
import cn.cecep.talroad.vo.query.analysis.SRaWaterPermittedOnlineQuery;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.text.ParseException;
import java.util.HashMap;
import java.util.List;

/**
 * 废气有组织、无组织排口Service接口
 *
 * @author szhpt
 * @date 2023-01-11*/
public interface IPcOutletService extends  IService<PcOutlet>
{
    /**
     * 查询废气有组织、无组织排口列表
     *
     * @param pcOutlet 废气有组织、无组织排口
     * @return 废气有组织、无组织排口集合
     */
    public List<PcOutlet> selectPcOutletList(PcOutlet pcOutlet);

    public List<PcOutlet> selectPointList(PcOutlet pcOutlet);

    List<PcOutlet> regulatoryEnterprises(String name);

    List<DropDownVO> queryMonitoringPointName(String factoryId, String pollutantType, String pollutantOutletType);

    List<DropDownVO> queryOutletName(String factoryId, String pollutantType, String pollutantOutletType);

    List<DropDownVO> queryOutletCode(String factoryId, String pollutantType, String pollutantOutletType);

    IPage<PcOutletGasVO> queryPcOutletGasList(PcOutletGasQuery pcOutletGasQuery, String factoryId);

    List<OutletNameVO> outletName(String factoryId, String pollutantType, String pollutantOutletType);

    AjaxResults updateOutletGas(List<PcOutletGasUpdateQuery> pcOutletGasUpdateQuery);

    AjaxResults cancelRelationship(List<PcOutletGasUpdateQuery> pcOutletGasUpdateQueryList);

    IPage<BMainMonitorPointOperationLog> queryMonitoringPointLog(MonitoringPointLogQuery monitoringPointLogQuery, String factoryId) throws ParseException;

    IPage<GasPEMonitoringPointVO> queryGasPEMonitoringPointList(String factoryId, GasPEMonitoringPointQuery gasPEMonitoringPointQuery);

    AjaxResults insertOrUpdateGasPEMonitoringPoint(List<GasPEMonitoringPointVO> gasPEMonitoringPointVO);

    AjaxResults deleteGasPEMonitoringPoint(List<GasPEMonitoringPointVO> gasPEMonitoringPointVOList);

    List<DropDownVO> queryMonitoringPointCode(String pollutantType,String factoryId);

    List<PcOutlet> manualMonitoring(String pollutantType);

    List<PcOutlet> manualMonitoringCode(String pollutantType, String code);

    IPage<SRaOverWaterPollutionTraceability> pageAndFactory(Page<PcOutlet> page, SRaOverWaterPollutionTraceabilityQuery query);

    List<HashMap<String, Object>> queryPcOutletList(String factoryId,Integer type, String monitorPointName);

    List<PcOutlet> selectByDevice(String deviceId);

    PcOutlet getInfo(String id);

    List<SRaWaterPermittedOnline> selectByOnlineAndSource(Page<SRaWaterPermittedOnline> page,  SRaWaterPermittedOnlineQuery lambdaQueryWrapper);

    List<SRaWaterPermittedOnline> selectBySource(Page<SRaWaterPermittedOnline> page, SRaWaterPermittedOnlineQuery lambdaQueryWrapper);

    List<HashMap<String, Object>> sourceOutlets(String factoryId, String type, String pollutantOutletType, String monitorPointName);

    IPage<SRaRealTimeAnalysicComsitMonitorVo> selectContrastPointList(SRaRealTimeAnalysicComsitMonitorVo pcOutlet);

    void editBatchCoordinate(PcOutlet[] pcOutletArr);

    List<PcOutletVo.PwxkGas> selectPwxkList(Page<PcOutletVo.PwxkGas> page, PcOutletQuery.PwxkGas query);

    List<PcOutletVo.PwxkWaterDirect> selectPwxkWaterDirect(Page<PcOutletVo.PwxkWaterDirect> page, PcOutletQuery.PwxkWaterDirect query);

    List<PcOutletVo.PwxkWaterIndirect> selectPwxkWaterIndirect(Page<PcOutletVo.PwxkWaterIndirect> page, PcOutletQuery.PwxkWaterIndirect query);
}
