package com.usky.fire.service;

import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.BscEnterpriseAutonomy;

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

/**
 * <p>
 * 企业自主管理大屏统计（全部） 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-10-09
 */
public interface BscEnterpriseAutonomyService extends CrudService<BscEnterpriseAutonomy> {

    Object enterprise(String moduleType, String dataType, String streetTown);

    /**
     * 企业自主管理大屏统计-全部单位数据查询
     *
     * @param moduleType 模块类型
     * @param dataType   数据类型
     * @return
     */
    Object enterpriseAutonomy(String moduleType, String dataType);

    /**
     * 企业自主管理大屏统计(全部)-定时逻辑
     */
    void enterpriseAutonomyTask();

    /**
     * 企业自主管理-企业经营情况-数据查询
     *
     * @param companyId 单位ID
     * @return
     */
    List<Map<String, Object>> erpData(String companyId);

    /**
     * 企业自主管理大屏统计(全部)-企业自主情况模块查询（定时）
     *
     * @return
     */
    Map<String, Object> enterpriseAutonomyData();

    /**
     * 最后6条数据查询
     *
     * @return
     */
    List<BscEnterpriseAutonomy> enterpriseAutonomyList();

    /**
     * 企业自主管理大屏统计(全部)-物联网设备情况模块查询（定时）
     *
     * @return
     */
    Object iotDevice();

    /**
     * 某状态设备数量统计
     *
     * @param deviceCodeList 设备编号
     * @param state          设备状态
     * @return
     */
    Integer deviceStateCount(List<String> deviceCodeList, Integer state);

    /**
     * 企业自主管理大屏统计(全部)-企业自主巡检情况模块查询（定时）
     *
     * @return
     */
    Object patrolInspection();

    /**
     * 巡检计划子ID查询
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return
     */
    List<Integer> planSonIdList(String startDate, String endDate);

    /**
     * 企业自主管理大屏统计(全部)-各街镇单位情况模块查询（定时）
     *
     * @return
     */
    Object streetCompany();

    Map<String, Object> iotDisposal(String streetTown, String startDate, String endDate);

    int alarmCount(List<String> companyIdList, Integer handlingStatus, String startDate, String endDate);

    List<Map<String, Object>> streetDynamic();

    /**
     * 企业自主管理-重点单位撒点-数据查询
     *
     * @param companyId 单位ID
     * @return
     */
    List<Map<String, Object>> scatterData(String companyId);
}
