package com.usky.fire.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.BaseCompany;
import com.usky.fire.domain.DemCase;

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

/**
 * <p>
 * 设备案件 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-10-12
 */
public interface DemCaseService extends CrudService<DemCase> {

    /**
     * 企业自主管理-历史案件-列表查询
     *
     * @param streetTown  街镇
     * @param companyName 单位名称
     * @param deviceType  设备类型
     * @param id          主键ID
     * @param pageNum     当前页
     * @param pageSize    每页条数
     * @return
     */
    CommonPage<DemCase> caseList(String streetTown, String companyName, String deviceType, Integer id, Integer pageNum, Integer pageSize);

    /**
     * 企业自主管理-历史案件-统计
     *
     * @param streetTown 街镇
     * @param companyId  单位ID
     * @return
     */
    Map<String, Object> caseStatistics(String streetTown, String companyId);

    /**
     * 根据街镇单位ID查询不同状态下案件数据量
     *
     * @param streetTown 街镇
     * @param companyId  单位ID
     * @param caseFlag   0立案1派遣2处理3结案
     * @return
     */
    Integer caseCount(String streetTown, String companyId, Integer caseFlag);

    Integer caseCount1(String streetTown, String companyId, Integer caseFlag);

    /**
     * 根据设备状态获取设备数量
     *
     * @param deviceCodeList 设备编号
     * @param deviceStatus   设备状态（0：离线、1：正常、2：故障、3：告警）
     * @return
     */
    int deviceStatusCount(List<String> deviceCodeList, Integer deviceStatus);

    /**
     * 根据街区单位获取单位信息
     *
     * @param streetTown 街镇
     * @param companyId  单位ID
     * @return
     */
    List<BaseCompany> companyList(String streetTown, String companyId);

    /**
     * 根据街区单位获取不同类型的设备编号
     *
     * @param streetTown 街镇
     * @param companyId  单位ID
     * @param deviceTypeList 设备类型
     * @return
     */
    List<String> deviceList(String streetTown, String companyId,  List<Integer> deviceTypeList);
}
