package com.usky.fire.service;

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

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

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

    /**
     * 企业自主管理大屏统计-街镇数据查询
     *
     * @param moduleType 模块类型
     * @param dataType   数据类型
     * @param streetTown 街镇
     * @return
     */
    Object enterpriseStreetTown(String moduleType, String dataType, String streetTown);

    /**
     * 企业自主管理大屏统计(街镇)-定时逻辑
     */
    void enterpriseStreetTownTask();

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

    /**
     * 隐患告警查询
     *
     * @param companyIdList 单位ID
     * @return
     */
    int hiddenCount(List<String> companyIdList);

    /**
     * 最后6条数据查询
     *
     * @return
     */
    List<BscEnterpriseStreetTown> enterpriseStreetTownList(String streetTown);

    /**
     * 根据街镇获取单位ID
     *
     * @param streetTown 街镇
     * @return
     */
    List<String> companyIdList(String streetTown);

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

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

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

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

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